hpdf/src/pdf_factory.cpp
2014-12-19 15:37:49 +00:00

156 lines
5.2 KiB
C++

#include <QtWidgets>
#include <QtGlobal>
#include "pdf_factory.h"
#include "pdf_table_widget.h"
#include "pdf_preview_widget.h"
#include "pdf_page_widget.h"
PDFFactory::PDFFactory(void) {
createWidgets();
createActions();
createToolBars();
createRibbon();
createStatusBar();
}
/* Create the shit we need for our window. */
void PDFFactory::createWidgets(void) {
/* Set central widget to be the container root. */
centralWidget = new QWidget();
QVBoxLayout* layout = new QVBoxLayout();
layout->setContentsMargins(2, 2, 2, 2);
centralWidget->setLayout(layout);
setCentralWidget(centralWidget);
/* Create ribbon. */
ribbon = new QTabWidget();
ribbon->addTab(new QWidget(), tr("File"));
ribbon->addTab(new QWidget(), tr("Edit"));
ribbon->addTab(new QWidget(), tr("View"));
ribbon->addTab(new QWidget(), tr("Help"));
ribbon->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
ribbon->setFixedHeight(100);
layout->addWidget(ribbon);
/* Create main area (table). */
pdfTableView = new PDFTableWidget();
pdfPreview = new PDFPreviewWidget();
pdfPreview->setMinimumWidth(100);
splitter = new QSplitter();
splitter->setOrientation(Qt::Horizontal);
splitter->addWidget(pdfTableView);
splitter->addWidget(pdfPreview);
QList<int> splitterWidgetSizes;
splitterWidgetSizes << 900 << 400;
splitter->setSizes(splitterWidgetSizes);
splitter->setStretchFactor(0, 1);
splitter->setStretchFactor(1, 0.5);
layout->addWidget(splitter);
connect(pdfTableView, SIGNAL(previewUpdate(Poppler::Page*)), pdfPreview,
SLOT(previewUpdate(Poppler::Page*)));
setWindowIcon(QIcon(":/img/hpdf.png"));
setWindowTitle(tr("HPDF"));
setGeometry(0, 0, 1300, 650);
}
void PDFFactory::createActions(void) {
openAction = new QAction(tr("&Open"), this);
openAction->setIcon(QIcon(":/img/open.png"));
openAction->setShortcut(tr("Ctrl+O"));
openAction->setStatusTip(tr("Open a PDF"));
connect(openAction, SIGNAL(triggered()), this, SLOT(openFile()));
exportAction = new QAction(tr("&Export a single file"), this);
exportAction->setIcon(QIcon(":/img/export.png"));
exportAction->setShortcut(tr("Ctrl+S"));
exportAction->setStatusTip(tr("Export the selected file to a new PDF"));
/*connect(saveAction, SIGNAL(triggered()), this, SLOT(save()))*/
exportAllAction = new QAction(tr("Combine all"), this);
exportAllAction->setIcon(QIcon(":/img/exportall.png"));
exportAllAction->setShortcut(tr("Shift+Ctrl+S"));
exportAllAction->setStatusTip(tr("Export all to multiple PDF files"));
/*connect(saveAsAction, SIGNAL(triggered()), this, SLOT(saveAs()))*/
cutAction = new QAction(tr("C&ut"), this);
cutAction->setIcon(QIcon(":/img/cut.png"));
cutAction->setShortcut(tr("Ctrl+X"));
cutAction->setStatusTip(tr("Cut selected contents to clipboard"));
/*connect(cutAction, SIGNAL(triggered()), this, SLOT(cut()))*/
copyAction = new QAction(tr("&Copy"), this);
copyAction->setIcon(QIcon(":/img/copy.png"));
copyAction->setShortcut(tr("Ctrl+C"));
copyAction->setStatusTip(tr("Copy selected contents to clipboard"));
/*connect(copyAction, SIGNAL(triggered()), this, SLOT(copy()))*/
pasteAction = new QAction(tr("&Paste"), this);
pasteAction->setIcon(QIcon(":/img/paste.png"));
pasteAction->setShortcut(tr("Ctrl+V"));
pasteAction->setStatusTip(tr("Paste clipboard's contents into current selection"));
/*connect(pasteAction, SIGNAL(triggered()), this, SLOT(paste()))*/
aboutAction = new QAction(tr("A&bout"), this);
aboutAction->setIcon(QIcon(":/img/about.png"));
aboutAction->setStatusTip(tr("About this program"));
}
void PDFFactory::createToolBars() {
fileToolBar = new QToolBar(tr("File"));
fileToolBar->addAction(openAction);
fileToolBar->addAction(exportAction);
fileToolBar->addAction(exportAllAction);
fileToolBar->setIconSize(QSize(48, 48));
editToolBar = new QToolBar(tr("Edit"));
editToolBar->addAction(cutAction);
editToolBar->addAction(copyAction);
editToolBar->addAction(pasteAction);
editToolBar->setIconSize(QSize(48, 48));
helpToolBar = new QToolBar(tr("Help"));
helpToolBar->addAction(aboutAction);
helpToolBar->setIconSize(QSize(48, 48));
}
void PDFFactory::createRibbon(void) {
QWidget* tabFile = ribbon->widget(0);
QVBoxLayout* layoutTabFile = new QVBoxLayout();
layoutTabFile->setContentsMargins(2, 0, 2, 0);
layoutTabFile->addWidget(fileToolBar);
tabFile->setLayout(layoutTabFile);
QWidget* tabEdit = ribbon->widget(1);
QVBoxLayout* layoutTabEdit = new QVBoxLayout();
layoutTabEdit->setContentsMargins(2, 0, 2, 0);
layoutTabEdit->addWidget(editToolBar);
tabEdit->setLayout(layoutTabEdit);
QWidget* tabHelp = ribbon->widget(3);
QVBoxLayout* layoutTabHelp = new QVBoxLayout();
layoutTabHelp->setContentsMargins(2, 0, 2, 0);
layoutTabHelp->addWidget(helpToolBar);
tabHelp->setLayout(layoutTabHelp);
}
void PDFFactory::createStatusBar(void) {
statusBar()->showMessage(tr(""));
}
void PDFFactory::openFile(void) {
QStringList fileNames = QFileDialog::getOpenFileNames(this,
tr("Open PDF file"), ".",
tr("PDF file (*.pdf)"));
for(int i = 0; i < fileNames.size(); i++) {
QString fileName = fileNames.at(i);
if(!fileName.isEmpty()) {
pdfTableView->loadFile(fileName);
}
}
}