[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 <QtGlobal>
#include "pdf_file_widget.h"
#include "pdf_page_widget.h"
@ -45,8 +44,9 @@ void PagesContainerWidget::dropEvent(QDropEvent* event) {
event->acceptProposedAction();
}
PDFFileWidget::PDFFileWidget(QWidget* parent) {
PDFFileWidget::PDFFileWidget(QWidget* parent) :QFrame(parent) {
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
setFrameStyle(QFrame::Box);
topLayout = new QGridLayout();
@ -68,11 +68,43 @@ PDFFileWidget::PDFFileWidget(QWidget* parent) {
setLayout(topLayout);
setCollapsed(false);
selected = false;
connect(&tgen, SIGNAL(updateThumbnail(QImage,PDFPageWidget*)), this,
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) {
pw->setThumbnail(img);
}
@ -92,10 +124,6 @@ void PDFFileWidget::collapsedButtonClick(void) {
setCollapsed(!collapsed);
}
void PDFFileWidget::pageClickedHandler(QMouseEvent*, QImage) {
}
void PDFFileWidget::setDocument(Poppler::Document* document, QString fileName) {
document->setRenderHint(Poppler::Document::TextAntialiasing);
Poppler::Document* doc = Poppler::Document::load(fileName);

View File

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

View File

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

View File

@ -16,6 +16,7 @@ PDFTableWidget::PDFTableWidget(QWidget* parent) : QFrame(parent) {
scrollArea = new QScrollArea();
scrollArea->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
scrollArea->setWidgetResizable(true);
scrollArea->setFrameStyle(QFrame::Plain);
containerLayout = new QVBoxLayout();
containerWidget = new QWidget();
@ -57,6 +58,31 @@ void PDFTableWidget::registerPage(PDFPageWidget* child) {
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) {
if(event->button() == Qt::LeftButton) {
/* Handle selection. */

View File

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