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