Skip to content

Commit fe18144

Browse files
feat(app): pause automatic thumbnail reordering (#86)
Closes #86
1 parent a00c028 commit fe18144

2 files changed

Lines changed: 76 additions & 2 deletions

File tree

src/app/MainWindow.cpp

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include <QDir>
1111
#include <QFileDialog>
1212
#include <QFileSystemModel>
13+
#include <QMenu>
1314
#include <QMessageBox>
1415
#include <QResource>
1516
#include <QScrollBar>
@@ -295,6 +296,12 @@ MainWindow::MainWindow()
295296
});
296297
connect(sortingOrderBtn, &QToolButton::clicked, this,
297298
[this](bool) { pageOrderingChanged(m_stages->filterAt(m_curFilter)->selectedPageOrder()); });
299+
connect(pauseSortingBtn, &QToolButton::toggled, this, [this](bool) {
300+
if (!isProjectLoaded()) {
301+
return;
302+
}
303+
resetThumbSequence(currentPageOrderProvider(), ThumbnailSequence::KEEP_SELECTION);
304+
});
298305
connect(deviationHighlightingBtn, &QToolButton::clicked, this, [this, &settings](bool checked) {
299306
settings.setHighlightDeviationEnabled(checked);
300307
m_thumbSequence->invalidateAllThumbnails();
@@ -599,6 +606,10 @@ bool MainWindow::compareFiles(const QString& fpath1, const QString& fpath2) {
599606
}
600607

601608
std::shared_ptr<const PageOrderProvider> MainWindow::currentPageOrderProvider() const {
609+
if (pauseSortingBtn->isChecked()) {
610+
return nullptr;
611+
}
612+
602613
const int idx = sortOptions->currentIndex();
603614
if (idx < 0) {
604615
return nullptr;
@@ -623,6 +634,11 @@ void MainWindow::updateSortOptions() {
623634

624635
sortOptions->setVisible(sortOptions->count() > 0);
625636

637+
pauseSortingBtn->setEnabled(sortOptions->count() > 0);
638+
if (sortOptions->count() == 0) {
639+
pauseSortingBtn->setChecked(false);
640+
}
641+
626642
if (sortOptions->count() > 0) {
627643
sortOptions->setCurrentIndex(filter->selectedPageOrder());
628644
}
@@ -1016,7 +1032,8 @@ void MainWindow::pageContextMenuRequested(const PageInfo& pageInfo_, const QPoin
10161032
goToPage(pageInfo.id());
10171033
}
10181034

1019-
QMenu menu;
1035+
// Parent widget helps correct multi-monitor placement (issue #75).
1036+
QMenu menu(thumbView);
10201037

10211038
auto& iconProvider = IconProvider::getInstance();
10221039
QAction* insBefore = menu.addAction(iconProvider.getIcon("insert-before"), tr("Insert before ..."));
@@ -1041,7 +1058,7 @@ void MainWindow::pastLastPageContextMenuRequested(const QPoint& screenPos) {
10411058
return;
10421059
}
10431060

1044-
QMenu menu;
1061+
QMenu menu(thumbView);
10451062
menu.addAction(IconProvider::getInstance().getIcon("insert-here"), tr("Insert here ..."));
10461063

10471064
if (menu.exec(screenPos)) {
@@ -2157,6 +2174,7 @@ void MainWindow::setupIcons() {
21572174
gotoPageBtn->setIcon(iconProvider.getIcon("right-pointing"));
21582175
selectionModeBtn->setIcon(iconProvider.getIcon("checkbox-styled"));
21592176
thumbColumnViewBtn->setIcon(iconProvider.getIcon("column-view"));
2177+
pauseSortingBtn->setIcon(iconProvider.getIcon("stop"));
21602178
sortingOrderBtn->setIcon(iconProvider.getIcon("sorting-order"));
21612179
deviationHighlightingBtn->setIcon(iconProvider.getIcon("six-spoked-asterisk"));
21622180
diminishThumbnailsBtn->setIcon(iconProvider.getIcon("diminishing-glass"));

src/app/MainWindow.ui

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -713,6 +713,62 @@ QToolButton:pressed {
713713
</property>
714714
</widget>
715715
</item>
716+
<item>
717+
<widget class="QToolButton" name="pauseSortingBtn">
718+
<property name="sizePolicy">
719+
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
720+
<horstretch>0</horstretch>
721+
<verstretch>0</verstretch>
722+
</sizepolicy>
723+
</property>
724+
<property name="minimumSize">
725+
<size>
726+
<width>22</width>
727+
<height>22</height>
728+
</size>
729+
</property>
730+
<property name="maximumSize">
731+
<size>
732+
<width>22</width>
733+
<height>22</height>
734+
</size>
735+
</property>
736+
<property name="toolTip">
737+
<string>Pause automatic thumbnail reordering while thumbnails refresh.</string>
738+
</property>
739+
<property name="styleSheet">
740+
<string notr="true">QToolButton:!hover {
741+
padding: 0;
742+
border: none;
743+
background-color: transparent;
744+
}
745+
746+
QToolButton:hover {
747+
padding: 0;
748+
border: 1px solid palette(highlight);
749+
background-color: palette(base);
750+
}
751+
752+
QToolButton:pressed {
753+
padding: 0;
754+
border: 1px solid palette(highlight);
755+
background-color: palette(alternative-base);
756+
}</string>
757+
</property>
758+
<property name="text">
759+
<string notr="true"/>
760+
</property>
761+
<property name="iconSize">
762+
<size>
763+
<width>16</width>
764+
<height>16</height>
765+
</size>
766+
</property>
767+
<property name="checkable">
768+
<bool>true</bool>
769+
</property>
770+
</widget>
771+
</item>
716772
<item>
717773
<widget class="QToolButton" name="sortingOrderBtn">
718774
<property name="sizePolicy">

0 commit comments

Comments
 (0)