[Add] File selection.
This commit is contained in:
parent
30714e7aab
commit
7d27339267
@ -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);
|
||||
|
@ -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*);
|
||||
};
|
||||
|
||||
|
@ -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*);
|
||||
};
|
||||
|
||||
|
@ -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. */
|
||||
|
@ -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;
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user