[Fix] Fixed singular selection.
This commit is contained in:
parent
cf26c34e91
commit
26852c5771
@ -12,7 +12,7 @@ PDFPageWidget::PDFPageWidget(QWidget* parent) :
|
||||
/* Resize widget. */
|
||||
this->resize(150, 150);
|
||||
this->setMinimumSize(150, 150);
|
||||
this->setMinimumSize(150, 150);
|
||||
this->setMaximumSize(150, 150);
|
||||
this->setAutoFillBackground(true);
|
||||
|
||||
this->setMouseTracking(true);
|
||||
@ -44,25 +44,16 @@ PDFPageWidget::PDFPageWidget(QWidget* parent) :
|
||||
this->setLayout(vbox);
|
||||
}
|
||||
|
||||
void PDFPageWidget::dragEnterEvent(QDragEnterEvent* event) {
|
||||
event->acceptProposedAction();
|
||||
}
|
||||
|
||||
void PDFPageWidget::dropEvent(QDropEvent* event) {
|
||||
emit droppedPage(event->mimeData()->text(), path);
|
||||
event->acceptProposedAction();
|
||||
}
|
||||
|
||||
void PDFPageWidget::setAncestor(QWidget* ancestor) {
|
||||
this->ancestor = ancestor;
|
||||
((PDFTableWidget*)ancestor)->registerPage(this);
|
||||
connect(this, SIGNAL(pageClicked(QMouseEvent*,QString)), ancestor,
|
||||
SLOT(pageClicked(QMouseEvent*,QString)));
|
||||
|
||||
connect(this, SIGNAL(previewUpdate(Poppler::Page*)), ancestor,
|
||||
SIGNAL(previewUpdate(Poppler::Page*)));
|
||||
connect(this, SIGNAL(droppedPage(QString, QString)), ancestor,
|
||||
SLOT(droppedPage(QString,QString)));
|
||||
|
||||
connect(this, SIGNAL(pageClicked(PDFPageWidget*, QMouseEvent*, QString)),
|
||||
ancestor, SLOT(pageClicked(PDFPageWidget*, QMouseEvent*, QString)));
|
||||
connect(this, SIGNAL(pageDropped(PDFPageWidget*, QDropEvent*, QString,QString)),
|
||||
ancestor, SLOT(pageDropped(PDFPageWidget*, QDropEvent*, QString,QString)));
|
||||
}
|
||||
|
||||
void PDFPageWidget::setFather(QWidget* father) {
|
||||
@ -86,9 +77,14 @@ void PDFPageWidget::setThumbnail(QImage pageImage) {
|
||||
update();
|
||||
}
|
||||
|
||||
void PDFPageWidget::setSelected(bool select) {
|
||||
selected = select;
|
||||
update();
|
||||
}
|
||||
|
||||
void PDFPageWidget::mousePressEvent(QMouseEvent* event) {
|
||||
if(pPage != NULL) {
|
||||
emit pageClicked(event, path);
|
||||
emit pageClicked(this, event, path);
|
||||
emit previewUpdate(pPage);
|
||||
|
||||
selected = !selected;
|
||||
@ -96,6 +92,15 @@ void PDFPageWidget::mousePressEvent(QMouseEvent* event) {
|
||||
}
|
||||
}
|
||||
|
||||
void PDFPageWidget::dragEnterEvent(QDragEnterEvent* event) {
|
||||
event->acceptProposedAction();
|
||||
}
|
||||
|
||||
void PDFPageWidget::dropEvent(QDropEvent* event) {
|
||||
emit pageDropped(this, event, event->mimeData()->text(), path);
|
||||
event->acceptProposedAction();
|
||||
}
|
||||
|
||||
void PDFPageWidget::leaveEvent(QEvent* event) {
|
||||
btn1->hide();
|
||||
btn2->hide();
|
||||
|
@ -26,6 +26,9 @@ public:
|
||||
QWidget* getFather() { return father; }
|
||||
void registerName(QString name) { path = name; }
|
||||
|
||||
void setSelected(bool select);
|
||||
bool isSelected(void) { return selected; }
|
||||
|
||||
protected:
|
||||
void paintEvent(QPaintEvent* event);
|
||||
void enterEvent(QEvent* event);
|
||||
@ -49,8 +52,8 @@ private:
|
||||
bool selected;
|
||||
|
||||
signals:
|
||||
void pageClicked(QMouseEvent* event, QString path);
|
||||
void pageClicked(PDFPageWidget* sender, QMouseEvent* event, QString);
|
||||
void pageDropped(PDFPageWidget* sender, QDropEvent* event, QString, QString);
|
||||
void previewUpdate(Poppler::Page*);
|
||||
void droppedPage(QString, QString);
|
||||
};
|
||||
|
||||
|
@ -57,9 +57,21 @@ void PDFTableWidget::registerPage(PDFPageWidget* child) {
|
||||
child->registerName(name);
|
||||
}
|
||||
|
||||
void PDFTableWidget::pageClicked(QMouseEvent* event, QString path) {
|
||||
void PDFTableWidget::pageClicked(PDFPageWidget* sender, QMouseEvent* event, QString path) {
|
||||
if(event->button() == Qt::LeftButton) {
|
||||
/* Left click to start dragging. */
|
||||
/* Handle selection. */
|
||||
for(int i = 0; i < selectedPages.size(); i++) {
|
||||
selectedPages.at(i)->setSelected(false);
|
||||
}
|
||||
|
||||
selectedPages.clear();
|
||||
|
||||
if(!sender->isSelected()) {
|
||||
sender->setSelected(true);
|
||||
selectedPages.append(sender);
|
||||
}
|
||||
|
||||
/* Handle drag. */
|
||||
QDrag* drag = new QDrag(this);
|
||||
QMimeData* mimeData = new QMimeData();
|
||||
|
||||
@ -67,11 +79,12 @@ void PDFTableWidget::pageClicked(QMouseEvent* event, QString path) {
|
||||
drag->setMimeData(mimeData);
|
||||
drag->setPixmap(QPixmap(":/img/copy.png"));
|
||||
|
||||
Qt::DropAction dropAction = drag->exec();
|
||||
drag->exec();
|
||||
}
|
||||
}
|
||||
|
||||
void PDFTableWidget::droppedPage(QString pathFrom, QString pathTo) {
|
||||
void PDFTableWidget::pageDropped(PDFPageWidget* sender, QDropEvent* event,
|
||||
QString pathFrom, QString pathTo) {
|
||||
/*
|
||||
* We have dragged the page and dropped it.
|
||||
* So we'll handle backend operations here.
|
||||
|
@ -11,6 +11,7 @@ class QVBoxLayout;
|
||||
class QString;
|
||||
class QScrollArea;
|
||||
class QMouseEvent;
|
||||
class QPoint;
|
||||
class PDFFileWidget;
|
||||
|
||||
class PDFTableWidget : public QFrame {
|
||||
@ -39,7 +40,10 @@ signals:
|
||||
void previewUpdate(Poppler::Page*);
|
||||
|
||||
private slots:
|
||||
void pageClicked(QMouseEvent*, QString path);
|
||||
void droppedPage(QString pathFrom, QString pathTo);
|
||||
void pageClicked(PDFPageWidget* sender, QMouseEvent* event, QString path);
|
||||
void pageDropped(PDFPageWidget* sender, QDropEvent* event, QString, QString);
|
||||
|
||||
private:
|
||||
QVector<PDFPageWidget*> selectedPages;
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user