[Add] File selection.

This commit is contained in:
Rtch90 2014-12-18 15:19:56 +00:00
parent 30714e7aab
commit 7d27339267
5 changed files with 81 additions and 20 deletions

View File

@ -1,6 +1,5 @@
#include <QtWidgets> #include <QtWidgets>
#include <QtGlobal> #include <QtGlobal>
#include "pdf_file_widget.h" #include "pdf_file_widget.h"
#include "pdf_page_widget.h" #include "pdf_page_widget.h"
@ -45,8 +44,9 @@ void PagesContainerWidget::dropEvent(QDropEvent* event) {
event->acceptProposedAction(); event->acceptProposedAction();
} }
PDFFileWidget::PDFFileWidget(QWidget* parent) { PDFFileWidget::PDFFileWidget(QWidget* parent) :QFrame(parent) {
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
setFrameStyle(QFrame::Box);
topLayout = new QGridLayout(); topLayout = new QGridLayout();
@ -68,11 +68,43 @@ PDFFileWidget::PDFFileWidget(QWidget* parent) {
setLayout(topLayout); setLayout(topLayout);
setCollapsed(false); setCollapsed(false);
selected = false;
connect(&tgen, SIGNAL(updateThumbnail(QImage,PDFPageWidget*)), this, connect(&tgen, SIGNAL(updateThumbnail(QImage,PDFPageWidget*)), this,
SLOT(updateThumbnail(QImage,PDFPageWidget*))); SLOT(updateThumbnail(QImage,PDFPageWidget*)));
} }
void PDFFileWidget::setAncestor(QWidget* ancestor) {
this->ancestor = ancestor;
connect(this, SIGNAL(fileClicked(PDFFileWidget*, QMouseEvent*)), ancestor,
SLOT(fileClicked(PDFFileWidget*, QMouseEvent*)));
}
void PDFFileWidget::setSelected(bool select) {
selected = select;
update();
}
void PDFFileWidget::mousePressEvent(QMouseEvent* event) {
emit fileClicked(this, event);
}
void PDFFileWidget::paintEvent(QPaintEvent* event) {
QPalette palette = this->palette();
QPalette labelPalette = fileNameLabel->palette();
if(selected) {
palette.setColor(foregroundRole(), palette.color(QPalette::Highlight));
labelPalette.setColor(foregroundRole(), palette.color(QPalette::Highlight));
} else {
palette.setColor(foregroundRole(), palette.color(QPalette::Dark));
labelPalette.setColor(foregroundRole(), palette.color(QPalette::Text));
}
this->setPalette(palette);
fileNameLabel->setPalette(labelPalette);
QFrame::paintEvent(event);
}
void PDFFileWidget::updateThumbnail(QImage img, PDFPageWidget* pw) { void PDFFileWidget::updateThumbnail(QImage img, PDFPageWidget* pw) {
pw->setThumbnail(img); pw->setThumbnail(img);
} }
@ -92,10 +124,6 @@ void PDFFileWidget::collapsedButtonClick(void) {
setCollapsed(!collapsed); setCollapsed(!collapsed);
} }
void PDFFileWidget::pageClickedHandler(QMouseEvent*, QImage) {
}
void PDFFileWidget::setDocument(Poppler::Document* document, QString fileName) { void PDFFileWidget::setDocument(Poppler::Document* document, QString fileName) {
document->setRenderHint(Poppler::Document::TextAntialiasing); document->setRenderHint(Poppler::Document::TextAntialiasing);
Poppler::Document* doc = Poppler::Document::load(fileName); Poppler::Document* doc = Poppler::Document::load(fileName);

View File

@ -1,5 +1,6 @@
#pragma once #pragma once
#include <QWidget> #include <QWidget>
#include <QFrame>
#include <poppler-qt5.h> #include <poppler-qt5.h>
#include "pdf_page_widget.h" #include "pdf_page_widget.h"
#include "thumbgen.h" #include "thumbgen.h"
@ -16,8 +17,9 @@ class QPoint;
class QDragEnterEvent; class QDragEnterEvent;
class QDropEvent; class QDropEvent;
class QMouseEvent; class QMouseEvent;
class PDFPageWidget; class QPaintEvent;
class ThumbGen; class ThumbGen;
class PDFPageWidget;
class PagesContainerWidget : public QWidget { class PagesContainerWidget : public QWidget {
Q_OBJECT Q_OBJECT
@ -37,27 +39,29 @@ private:
int getPagesCount() const; int getPagesCount() const;
}; };
class PDFFileWidget : public QWidget { class PDFFileWidget : public QFrame {
Q_OBJECT Q_OBJECT
Q_PROPERTY(bool collapsed READ isCollapsed WRITE setCollapsed) Q_PROPERTY(bool collapsed READ isCollapsed WRITE setCollapsed)
public: public:
PDFFileWidget(QWidget* parent = 0); PDFFileWidget(QWidget* parent = 0);
void setAncestor(QWidget* ancestor) { this->ancestor = ancestor; } void setAncestor(QWidget* ancestor);
void setDocument(Poppler::Document* document, QString fileName); void setDocument(Poppler::Document* document, QString fileName);
int removeChild(PDFPageWidget* child); int removeChild(PDFPageWidget* child);
void insertChildAt(PDFPageWidget* child, int pos); void insertChildAt(PDFPageWidget* child, int pos);
void setSelected(bool select);
bool isSelected(void) { return selected; }
bool isCollapsed(void) { return collapsed; } bool isCollapsed(void) { return collapsed; }
void setCollapsed(bool collapsed); void setCollapsed(bool collapsed);
protected: protected:
void mousePressEvent(QMouseEvent* event);
void paintEvent(QPaintEvent* event);
private slots: private slots:
void collapsedButtonClick(); void collapsedButtonClick();
void pageClickedHandler(QMouseEvent*, QImage);
void updateThumbnail(QImage, PDFPageWidget*); void updateThumbnail(QImage, PDFPageWidget*);
private: private:
@ -70,10 +74,9 @@ private:
QScrollArea* scrollArea; QScrollArea* scrollArea;
QWidget* ancestor; QWidget* ancestor;
bool collapsed; bool collapsed;
bool selected;
signals: signals:
void pageClicked(QMouseEvent*, QImage); void fileClicked(PDFFileWidget*, QMouseEvent*);
void pageClicked(QMouseEvent*, Poppler::Page*);
void previewUpdate(Poppler::Page*);
}; };

View File

@ -15,12 +15,12 @@ class PDFPageWidget : public QFrame {
Q_OBJECT Q_OBJECT
public: public:
PDFPageWidget(QWidget* parent = 0); PDFPageWidget(QWidget* parent = 0);
QSize sizeHint(void) const;
void setThumbnail(QImage pageImage); void setThumbnail(QImage pageImage);
void setPopplerPage(Poppler::Page*); void setPopplerPage(Poppler::Page*);
void setButton(QPushButton* btn); void setButton(QPushButton* btn);
QSize sizeHint() const;
/*void setButtonImage(QImage* pageImage);*/
void setAncestor(QWidget* ancestor); void setAncestor(QWidget* ancestor);
void setFather(QWidget* father); void setFather(QWidget* father);
QWidget* getFather() { return father; } QWidget* getFather() { return father; }
@ -52,8 +52,8 @@ private:
bool selected; bool selected;
signals: signals:
void pageClicked(PDFPageWidget* sender, QMouseEvent* event, QString); void pageClicked(PDFPageWidget*, QMouseEvent*, QString);
void pageDropped(PDFPageWidget* sender, QDropEvent* event, QString, QString); void pageDropped(PDFPageWidget*, QDropEvent*, QString, QString);
void previewUpdate(Poppler::Page*); void previewUpdate(Poppler::Page*);
}; };

View File

@ -16,6 +16,7 @@ PDFTableWidget::PDFTableWidget(QWidget* parent) : QFrame(parent) {
scrollArea = new QScrollArea(); scrollArea = new QScrollArea();
scrollArea->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); scrollArea->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
scrollArea->setWidgetResizable(true); scrollArea->setWidgetResizable(true);
scrollArea->setFrameStyle(QFrame::Plain);
containerLayout = new QVBoxLayout(); containerLayout = new QVBoxLayout();
containerWidget = new QWidget(); containerWidget = new QWidget();
@ -57,6 +58,31 @@ void PDFTableWidget::registerPage(PDFPageWidget* child) {
child->registerName(name); child->registerName(name);
} }
void PDFTableWidget::fileClicked(PDFFileWidget* sender, QMouseEvent* event) {
if(event->button() == Qt::LeftButton) {
if(event->modifiers() != Qt::LeftButton) {
for(int i = 0; i < selectedFiles.size(); i++) {
selectedFiles.at(i)->setSelected(false);
}
selectedFiles.clear();
if(!sender->isSelected()) {
sender->setSelected(true);
selectedFiles.append(sender);
}
} else {
if(!sender->isSelected()) {
sender->setSelected(true);
selectedFiles.append(sender);
} else {
sender->setSelected(false);
selectedFiles.remove(selectedFiles.indexOf(sender));
}
}
}
}
void PDFTableWidget::pageClicked(PDFPageWidget* sender, QMouseEvent* event, QString path) { void PDFTableWidget::pageClicked(PDFPageWidget* sender, QMouseEvent* event, QString path) {
if(event->button() == Qt::LeftButton) { if(event->button() == Qt::LeftButton) {
/* Handle selection. */ /* Handle selection. */

View File

@ -23,6 +23,7 @@ public:
protected: protected:
PDFJam pdfJam; PDFJam pdfJam;
private: private:
QVBoxLayout* outerLayout; QVBoxLayout* outerLayout;
QScrollArea* scrollArea; QScrollArea* scrollArea;
@ -40,10 +41,13 @@ signals:
void previewUpdate(Poppler::Page*); void previewUpdate(Poppler::Page*);
private slots: private slots:
void pageClicked(PDFPageWidget* sender, QMouseEvent* event, QString path); void pageClicked(PDFPageWidget*, QMouseEvent*, QString);
void pageDropped(PDFPageWidget* sender, QDropEvent* event, QString, QString); void pageDropped(PDFPageWidget*, QDropEvent*, QString, QString);
void fileClicked(PDFFileWidget*, QMouseEvent*);
private: private:
QVector<PDFPageWidget*> selectedPages; QVector<PDFPageWidget*> selectedPages;
QVector<PDFFileWidget*> selectedFiles;
}; };