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