diff --git a/bin/hpdf.pro b/bin/hpdf.pro index dd71b8c..1aaeb27 100644 --- a/bin/hpdf.pro +++ b/bin/hpdf.pro @@ -9,13 +9,15 @@ LIBS += -L/usr/lib -lpoppler-qt5 HEADERS += \ ../src/pdf_factory.h \ ../src/pdf_file.h \ - ../src/pdf_page_widget.h + ../src/pdf_page_widget.h \ + ../src/table_view.h SOURCES += \ ../src/main.cpp \ ../src/pdf_factory.cpp \ ../src/pdf_file.cpp \ - ../src/pdf_page_widget.cpp + ../src/pdf_page_widget.cpp \ + ../src/table_view.cpp RESOURCES += hpdf.qrc diff --git a/bin/hpdf.qrc b/bin/hpdf.qrc index 2703623..6565f04 100644 --- a/bin/hpdf.qrc +++ b/bin/hpdf.qrc @@ -1,12 +1,13 @@ - - - ../img/cut.png - ../img/myeditor.png - ../img/open.png - ../img/paste.png - ../img/save.png - ../img/copy.png - ../img/new.png - ../img/saveas.png - + + + ../img/cut.png + ../img/open.png + ../img/paste.png + ../img/copy.png + ../img/new.png + ../img/export.png + ../img/exportall.png + ../img/pdffactory.png + ../img/about.png + diff --git a/img/copy.png b/img/copy.png index 4ce1158..e7b293b 100644 Binary files a/img/copy.png and b/img/copy.png differ diff --git a/img/cut.png b/img/cut.png index 23e1387..73affd6 100644 Binary files a/img/cut.png and b/img/cut.png differ diff --git a/img/img.jpg b/img/img.jpg new file mode 100644 index 0000000..0f3a66b Binary files /dev/null and b/img/img.jpg differ diff --git a/img/myeditor.png b/img/myeditor.png deleted file mode 100644 index 0baef17..0000000 Binary files a/img/myeditor.png and /dev/null differ diff --git a/img/new.png b/img/new.png index 2913d69..d64dbeb 100644 Binary files a/img/new.png and b/img/new.png differ diff --git a/img/open.png b/img/open.png index 03a100b..999e701 100644 Binary files a/img/open.png and b/img/open.png differ diff --git a/img/paste.png b/img/paste.png index 1fccb4b..ccc8e3b 100644 Binary files a/img/paste.png and b/img/paste.png differ diff --git a/img/hpdf.png b/img/pdffactory.png similarity index 100% rename from img/hpdf.png rename to img/pdffactory.png diff --git a/img/save.png b/img/save.png deleted file mode 100644 index 7fe1511..0000000 Binary files a/img/save.png and /dev/null differ diff --git a/img/saveas.png b/img/saveas.png deleted file mode 100644 index f08182b..0000000 Binary files a/img/saveas.png and /dev/null differ diff --git a/src/pdf_factory.cpp b/src/pdf_factory.cpp index 283e2b7..4356bab 100644 --- a/src/pdf_factory.cpp +++ b/src/pdf_factory.cpp @@ -2,6 +2,7 @@ #include #include "pdf_factory.h" #include "pdf_file.h" +#include "table_view.h" #include "pdf_page_widget.h" PDFFactory::PDFFactory(void) { @@ -32,13 +33,19 @@ void PDFFactory::createWidgets(void) { layout->addWidget(ribbon); /* Create main area (table). */ - pdfTableView = new QWidget(); - pdfTableView->setLayout(new QVBoxLayout()); + pdfTableView = new TableView(); + /*pdfTableView->setLayout(new QVBoxLayout());*/ /*pdfTableView->setMinimumSize(1000, 1000);*/ pdfTableView->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - scrollArea = new QScrollArea(); - scrollArea->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - layout->addWidget(scrollArea); + + pdfSplitter = new QSplitter(); + /* TODO: change pdfPreview widget. */ + pdfPreview = new QWidget(); + pdfPreview->setMinimumWidth(100); + pdfSplitter->setOrientation(Qt::Horizontal); + pdfSplitter->addWidget(pdfTableView); + pdfSplitter->addWidget(pdfPreview); + layout->addWidget(pdfSplitter); /*PDFFile* pdfFile = new PDFFile("/home/docs/loa.pdf"); PDFPageWidget* pdfPage = new PDFPageWidget(); @@ -58,13 +65,13 @@ void PDFFactory::createActions(void) { connect(openAction, SIGNAL(triggered()), this, SLOT(open())); exportAction = new QAction(tr("&Export"), this); - exportAction->setIcon(QIcon(":/img/save.png")); + exportAction->setIcon(QIcon(":/img/export.png")); exportAction->setShortcut(tr("Ctrl+S")); exportAction->setStatusTip(tr("Export the selected frame to a new PDF")); /*connect(saveAction, SIGNAL(triggered()), this, SLOT(save()))*/ exportAllAction = new QAction(tr("Combine all and export"), this); - exportAllAction->setIcon(QIcon(":/img/saveas.png")); + exportAllAction->setIcon(QIcon(":/img/exportall.png")); exportAllAction->setShortcut(tr("Shift+Ctrl+S")); exportAllAction->setStatusTip(tr("Combine all and export as one PDF")); /*connect(saveAsAction, SIGNAL(triggered()), this, SLOT(saveAs()))*/ diff --git a/src/pdf_factory.h b/src/pdf_factory.h index efacb54..f005ba3 100644 --- a/src/pdf_factory.h +++ b/src/pdf_factory.h @@ -1,10 +1,12 @@ #pragma once #include +#include "table_view.h" class QAction; class QWidget; class QTabWidget; class QScrollArea; +class QSplitter; class PDFFactory : public QMainWindow { Q_OBJECT @@ -36,9 +38,11 @@ private: QWidget* centralWidget; - QTabWidget* ribbon; - QScrollArea* scrollArea; - QWidget* pdfTableView; + QTabWidget* ribbon; + QScrollArea* scrollArea; + TableView* pdfTableView; + QSplitter* pdfSplitter; + QWidget* pdfPreview; QToolBar* fileToolBar; QToolBar* editToolBar; diff --git a/src/pdf_page_widget.cpp b/src/pdf_page_widget.cpp index 4a09511..a0f279c 100644 --- a/src/pdf_page_widget.cpp +++ b/src/pdf_page_widget.cpp @@ -4,7 +4,52 @@ PDFPageWidget::PDFPageWidget(QWidget* parent) : QWidget(parent) { - this->resize(500, 600); + /* Resize widget. */ + this->resize(500, 500); + this->setMinimumHeight(500); + + this->setMouseTracking(true); + this->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + + /* Initialize buttons. */ + /*button = new QPushButton(); + QPushButton* btn = new QPusBbutton(); + QGridLayout* lo = new QGridLayout(); + btn->setFixedSize(100, 100); + qDebug() << btn->geometry(); + *lo->addWidget(btn);*/ + + QVBoxLayout* vbox = new QVBoxLayout(this); + QHBoxLayout* hbox = new QHBoxLayout(); + + btn1 = new QPushButton("", this); + btn1->setObjectName("new"); + btn2 = new QPushButton("", this); + btn2->setObjectName("open"); + + QPixmap pm, pm2; + pm.load("../img/new.png"); + pm2.load("../img/open.png"); + + btn1->setIcon(pm); + btn2->setIcon(pm2); + btn1->hide(); + btn2->hide(); + + hbox->addWidget(btn1, 1, Qt::AlignRight); + hbox->addWidget(btn2, 0, Qt::AlignLeft); + + vbox->addStretch(1); + vbox->addLayout(hbox); + + this->setLayout(vbox); + + this->setPageImage(new QImage("../img/img.jpg")); +} + +void PDFPageWidget::setButton(QPushButton* btn) { + button = btn; + update(); } void PDFPageWidget::setPageImage(QImage* pageImage) { @@ -13,8 +58,18 @@ void PDFPageWidget::setPageImage(QImage* pageImage) { update(); } -void PDFPageWidget::paintEvent(QPaintEvent* event) { - QPainter painter(this); - painter.drawPixmap(QRect(0, 0, pixmap.width(), pixmap.height()), pixmap); +void PDFPageWidget::leaveEvent(QEvent* event) { + btn1->hide(); + btn2->hide(); +} + +void PDFPageWidget::enterEvent(QEvent* event) { + btn1->show(); + btn2->show(); +} + +void PDFPageWidget::paintEvent(QPaintEvent* event) { + QPainter painter(this); + painter.drawPixmap(QRect(0, 0, width(), height()), pixmap); } diff --git a/src/pdf_page_widget.h b/src/pdf_page_widget.h index bb3e35d..a79c159 100644 --- a/src/pdf_page_widget.h +++ b/src/pdf_page_widget.h @@ -1,5 +1,7 @@ #pragma once #include +#include +#include class QImage; class QPixmap; @@ -10,12 +12,19 @@ class PDFPageWidget : public QWidget { public: PDFPageWidget(QWidget* parent = 0); void setPageImage(QImage* pageImage); + void setButton(QPushButton* btn); + /*void setButtonImage(QImage* pageImage);*/ protected: void paintEvent(QPaintEvent* event); + void enterEvent(QEvent* event); + void leaveEvent(QEvent* event); private: + /*QVector buttons;*/ + QPushButton* button; QImage* image; QPixmap pixmap; + QPushButton* btn1, *btn2; }; diff --git a/src/table_view.cpp b/src/table_view.cpp new file mode 100644 index 0000000..a83c069 --- /dev/null +++ b/src/table_view.cpp @@ -0,0 +1,46 @@ +#include +#include +#include +#include "table_view.h" +#include "pdf_page_widget.h" + +PDFPageWidget* test[10]; + +TableView::TableView(QWidget* parent) : QWidget(parent) { + outerLayout = new QVBoxLayout(); + scrollArea = new QScrollArea(); + frame = new QFrame(scrollArea); + layout = new QVBoxLayout(); + + setLayout(outerLayout); + outerLayout->addWidget(scrollArea); + scrollArea->setWidget(frame); + frame->setLayout(layout); + frame->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); + int i = 0; + + /* TODO: Page widget is placed for testing only. + * To remove pagewidget and add filewidgets later, + * use QVector files to store files. + */ + for(i = 0; i < 10; i++) { + test[i] = new PDFPageWidget(); + test[i]->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored); + + layout->addWidget(test[i]); + } + /* End TODO. */ + frame->adjustSize(); +} + +void TableView::paintEvent(QPaintEvent* event) { + frame->adjustSize(); + int newWidth = width(); + + for(int i = 0; i < 10; i++) { + test[i]->resize(newWidth, test[i]->height()); + } + + frame->resize(newWidth, frame->height()); +} + diff --git a/src/table_view.h b/src/table_view.h new file mode 100644 index 0000000..e1e4ca0 --- /dev/null +++ b/src/table_view.h @@ -0,0 +1,31 @@ +#pragma once +#include +#include +#include +#include +#include +#include +#include "pdf_page_widget.h" +#include "pdf_file.h" + +class QPushButton; +class QWidget; +class QScrollArea; + +class TableView : public QWidget { + Q_OBJECT +public: + TableView(QWidget* parent = 0); + QVector files; + +protected: + +private: + QScrollArea* scrollArea; + QVBoxLayout* layout; + QFrame* frame; + QVBoxLayout* outerLayout; + + void paintEvent(QPaintEvent* event); +}; +