From 68d4bb443f6689f802caacd630f43786d4da93e5 Mon Sep 17 00:00:00 2001 From: Rtch90 Date: Thu, 18 Dec 2014 12:31:20 +0000 Subject: [PATCH] [Change] Remove file before an mkdir. --- src/pdf_jam.cpp | 13 +++---------- src/pdf_jam.h | 20 +++++++++++++++++--- src/pdf_page_widget.cpp | 18 +++++++++++++++++- src/pdf_page_widget.h | 2 ++ src/pdf_preview_widget.cpp | 24 ++++++++++++------------ src/pdf_table_widget.cpp | 1 + src/pdf_table_widget.h | 3 ++- 7 files changed, 54 insertions(+), 27 deletions(-) diff --git a/src/pdf_jam.cpp b/src/pdf_jam.cpp index 138e215..ab3a31e 100644 --- a/src/pdf_jam.cpp +++ b/src/pdf_jam.cpp @@ -7,11 +7,11 @@ PDFJam::PDFJam(void) { } -#if 0 + /* Ensure the folder exists. */ void PDFJam::makeFolder(QString path) { - QString tmp = "mkdir -p %1"; - int value = system(tmp.arg(path).toStdString().c_str()); + QString tmp = "mksir -p %1 && rm %2*"; + int value = system(tmp.arg(path).arg(path).toStdString().c_str()); if(value != 0) qDebug() << "ERROR: Failed to make " << path; } @@ -61,11 +61,4 @@ void PDFJam::run(void) { /*system("echo 'tata' > /tmp/test.txt");*/ } -#endif - -void PDFJam::run(void) { - -} - - diff --git a/src/pdf_jam.h b/src/pdf_jam.h index e0014a3..57aa390 100644 --- a/src/pdf_jam.h +++ b/src/pdf_jam.h @@ -1,14 +1,28 @@ #pragma once +#include +#include +#include +#include -class PDFJam {/*: public QThread {*/ - /*Q_OBJECT*/ +class PDFPageWidget; +class QImage; + +class PDFJam : public QThread { + Q_OBJECT public: PDFJam(void); + void pushCommand(QString); + void loadFile(QString fileName, int, int); + void makeFolder(QString); + protected: void run(void); private: - volatile bool stopped; + QVector cmdQueue; + QString nextCommand(void); + bool isQueueEmpty(void); + QMutex mutex; }; diff --git a/src/pdf_page_widget.cpp b/src/pdf_page_widget.cpp index a80c115..b58f8ce 100644 --- a/src/pdf_page_widget.cpp +++ b/src/pdf_page_widget.cpp @@ -12,6 +12,7 @@ PDFPageWidget::PDFPageWidget(QWidget* parent) : this->resize(150, 150); this->setMinimumSize(150, 150); this->setMinimumSize(150, 150); + this->setAutoFillBackground(true); this->setMouseTracking(true); this->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); @@ -79,7 +80,7 @@ void PDFPageWidget::setPopplerPage(Poppler::Page* pp) { void PDFPageWidget::setThumbnail(QImage pageImage) { image = pageImage; pixmap = QPixmap::fromImage(image); - pixmap = pixmap.scaled(size(), Qt::KeepAspectRatio); + pixmap = pixmap.scaled(size() - QSize(6,6), Qt::KeepAspectRatio); update(); } @@ -88,20 +89,35 @@ void PDFPageWidget::mousePressEvent(QMouseEvent* event) { if(pPage != NULL) { emit pageClicked(event, path); emit previewUpdate(pPage); + + selected = !selected; + update(); } } void PDFPageWidget::leaveEvent(QEvent* event) { btn1->hide(); btn2->hide(); + + this->setFrameStyle(QFrame::Plain); } void PDFPageWidget::enterEvent(QEvent* event) { btn1->show(); btn2->show(); + + this->setFrameStyle(QFrame::StyledPanel | QFrame::Raised); } void PDFPageWidget::paintEvent(QPaintEvent* event) { + QPalette palette = this->palette(); + if(selected) + palette.setColor(backgroundRole(), palette.color(QPalette::Highlight)); + else + palette.setColor(backgroundRole(), palette.color(QPalette::AlternateBase)); + this->setPalette(palette); + + QFrame::paintEvent(event); QPainter painter(this); painter.drawPixmap(QRect((size().width() - pixmap.width()) / 2, (size().height() - pixmap.height()) / 2, diff --git a/src/pdf_page_widget.h b/src/pdf_page_widget.h index f27cd92..bdb8697 100644 --- a/src/pdf_page_widget.h +++ b/src/pdf_page_widget.h @@ -46,6 +46,8 @@ private: QPixmap pixmap; QPushButton* btn1, *btn2; + bool selected = false; + signals: void pageClicked(QMouseEvent* event, QString path); void previewUpdate(Poppler::Page*); diff --git a/src/pdf_preview_widget.cpp b/src/pdf_preview_widget.cpp index 5d8b1d7..b75fd32 100644 --- a/src/pdf_preview_widget.cpp +++ b/src/pdf_preview_widget.cpp @@ -12,21 +12,20 @@ void PDFPreviewWidget::setImage(QImage image) { } void PDFPreviewWidget::regenImage(void) { - if(pPage != NULL) { - double dpi; - double dpi2; - QSize targetSize = this->size(); - QSizeF oriSize = pPage->pageSizeF(); - double oriDpi = 72; - dpi = targetSize.height() / (float)oriSize.height()*72; - dpi2 = targetSize.width() / (float)oriSize.width()*72; - dpi = dpirenderToImage(dpi, dpi); - } + double dpi; + double dpi2; + QSize targetSize = this->size(); + QSizeF oriSize = pPage->pageSizeF(); + double oriDpi = 72; + dpi = targetSize.height() / (float)oriSize.height()*72; + dpi2 = targetSize.width() / (float)oriSize.width()*72; + dpi = dpirenderToImage(dpi, dpi); } void PDFPreviewWidget::previewUpdate(Poppler::Page* pp) { pPage = pp; + qDebug() << "Set new popler page" << pp; regenImage(); update(); } @@ -36,7 +35,8 @@ void PDFPreviewWidget::pageClicked(QMouseEvent* mouseEvent, QImage image) { } void PDFPreviewWidget::resizeEvent(QResizeEvent* event) { - regenImage(); + if(pPage != NULL) + regenImage(); } void PDFPreviewWidget::paintEvent(QPaintEvent* event) { diff --git a/src/pdf_table_widget.cpp b/src/pdf_table_widget.cpp index 1cd02c2..f3c247b 100644 --- a/src/pdf_table_widget.cpp +++ b/src/pdf_table_widget.cpp @@ -39,6 +39,7 @@ void PDFTableWidget::loadFile(QString fileName) { PDFFileWidget* fileWidget = new PDFFileWidget(); fileWidget->setAncestor(this); fileWidget->setDocument(doc, fileName); + pdfJam.loadFile(fileName, files.size()-1, doc->numPages()); fileWidgets.append(fileWidget); diff --git a/src/pdf_table_widget.h b/src/pdf_table_widget.h index d529578..417f513 100644 --- a/src/pdf_table_widget.h +++ b/src/pdf_table_widget.h @@ -3,6 +3,7 @@ #include #include +#include "pdf_jam.h" #include "pdf_page_widget.h" class QImage; @@ -20,7 +21,7 @@ public: void registerPage(PDFPageWidget* child); protected: - + PDFJam pdfJam; private: QVBoxLayout* outerLayout; QScrollArea* scrollArea;