Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
17c9ab5fb5 | ||
|
|
f6c39ab684 | ||
|
|
e48d8e52d2 |
@@ -62,6 +62,7 @@ void ActionManager::setupAction(MainWindow *mainWindow)
|
|||||||
CREATE_NEW_ACTION(mainWindow, actionCopyFilePath);
|
CREATE_NEW_ACTION(mainWindow, actionCopyFilePath);
|
||||||
CREATE_NEW_THEMEICON_ACTION(mainWindow, actionPaste, edit-paste);
|
CREATE_NEW_THEMEICON_ACTION(mainWindow, actionPaste, edit-paste);
|
||||||
CREATE_NEW_THEMEICON_ACTION(mainWindow, actionTrash, edit-delete);
|
CREATE_NEW_THEMEICON_ACTION(mainWindow, actionTrash, edit-delete);
|
||||||
|
CREATE_NEW_ACTION(mainWindow, actionToggleStayOnTop);
|
||||||
CREATE_NEW_ACTION(mainWindow, actionToggleProtectMode);
|
CREATE_NEW_ACTION(mainWindow, actionToggleProtectMode);
|
||||||
CREATE_NEW_ACTION(mainWindow, actionToggleAvoidResetTransform);
|
CREATE_NEW_ACTION(mainWindow, actionToggleAvoidResetTransform);
|
||||||
CREATE_NEW_ACTION(mainWindow, actionSettings);
|
CREATE_NEW_ACTION(mainWindow, actionSettings);
|
||||||
@@ -104,6 +105,7 @@ void ActionManager::retranslateUi(MainWindow *mainWindow)
|
|||||||
actionCopyFilePath->setText(QCoreApplication::translate("MainWindow", "Copy &File Path", nullptr));
|
actionCopyFilePath->setText(QCoreApplication::translate("MainWindow", "Copy &File Path", nullptr));
|
||||||
actionPaste->setText(QCoreApplication::translate("MainWindow", "&Paste", nullptr));
|
actionPaste->setText(QCoreApplication::translate("MainWindow", "&Paste", nullptr));
|
||||||
actionTrash->setText(QCoreApplication::translate("MainWindow", "Move to Trash", nullptr));
|
actionTrash->setText(QCoreApplication::translate("MainWindow", "Move to Trash", nullptr));
|
||||||
|
actionToggleStayOnTop->setText(QCoreApplication::translate("MainWindow", "Stay on top", nullptr));
|
||||||
actionToggleProtectMode->setText(QCoreApplication::translate("MainWindow", "Protected mode", nullptr));
|
actionToggleProtectMode->setText(QCoreApplication::translate("MainWindow", "Protected mode", nullptr));
|
||||||
actionToggleAvoidResetTransform->setText(QCoreApplication::translate("MainWindow", "Keep transformation", "The 'transformation' means the flip/rotation status that currently applied to the image view"));
|
actionToggleAvoidResetTransform->setText(QCoreApplication::translate("MainWindow", "Keep transformation", "The 'transformation' means the flip/rotation status that currently applied to the image view"));
|
||||||
actionSettings->setText(QCoreApplication::translate("MainWindow", "Configure...", nullptr));
|
actionSettings->setText(QCoreApplication::translate("MainWindow", "Configure...", nullptr));
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ public:
|
|||||||
QAction *actionCopyFilePath;
|
QAction *actionCopyFilePath;
|
||||||
QAction *actionPaste;
|
QAction *actionPaste;
|
||||||
QAction *actionTrash;
|
QAction *actionTrash;
|
||||||
|
QAction *actionToggleStayOnTop;
|
||||||
QAction *actionToggleProtectMode;
|
QAction *actionToggleProtectMode;
|
||||||
QAction *actionToggleAvoidResetTransform;
|
QAction *actionToggleAvoidResetTransform;
|
||||||
QAction *actionSettings;
|
QAction *actionSettings;
|
||||||
|
|||||||
@@ -52,6 +52,10 @@ MainWindow::MainWindow(QWidget *parent)
|
|||||||
, m_pm(new PlaylistManager(this))
|
, m_pm(new PlaylistManager(this))
|
||||||
, m_fileSystemWatcher(new QFileSystemWatcher(this))
|
, m_fileSystemWatcher(new QFileSystemWatcher(this))
|
||||||
{
|
{
|
||||||
|
if (Settings::instance()->stayOnTop()) {
|
||||||
|
this->setWindowFlag(Qt::WindowStaysOnTopHint);
|
||||||
|
}
|
||||||
|
|
||||||
this->setAttribute(Qt::WA_TranslucentBackground, true);
|
this->setAttribute(Qt::WA_TranslucentBackground, true);
|
||||||
this->setMinimumSize(350, 330);
|
this->setMinimumSize(350, 330);
|
||||||
this->setWindowIcon(QIcon(u":/icons/app-icon.svg"_s));
|
this->setWindowIcon(QIcon(u":/icons/app-icon.svg"_s));
|
||||||
@@ -441,6 +445,10 @@ void MainWindow::contextMenuEvent(QContextMenuEvent *event)
|
|||||||
|
|
||||||
QAction * trash = m_am->actionTrash;
|
QAction * trash = m_am->actionTrash;
|
||||||
|
|
||||||
|
QAction * stayOnTopMode = m_am->actionToggleStayOnTop;
|
||||||
|
stayOnTopMode->setCheckable(true);
|
||||||
|
stayOnTopMode->setChecked(stayOnTop());
|
||||||
|
|
||||||
QAction * protectedMode = m_am->actionToggleProtectMode;
|
QAction * protectedMode = m_am->actionToggleProtectMode;
|
||||||
protectedMode->setCheckable(true);
|
protectedMode->setCheckable(true);
|
||||||
protectedMode->setChecked(m_protectedMode);
|
protectedMode->setChecked(m_protectedMode);
|
||||||
@@ -475,6 +483,7 @@ void MainWindow::contextMenuEvent(QContextMenuEvent *event)
|
|||||||
menu->addAction(m_am->actionFitByWidth);
|
menu->addAction(m_am->actionFitByWidth);
|
||||||
#endif // 0
|
#endif // 0
|
||||||
menu->addSeparator();
|
menu->addSeparator();
|
||||||
|
menu->addAction(stayOnTopMode);
|
||||||
menu->addAction(protectedMode);
|
menu->addAction(protectedMode);
|
||||||
menu->addAction(avoidResetTransform);
|
menu->addAction(avoidResetTransform);
|
||||||
menu->addSeparator();
|
menu->addSeparator();
|
||||||
@@ -571,11 +580,22 @@ void MainWindow::toggleProtectedMode()
|
|||||||
updateGalleryButtonsVisibility();
|
updateGalleryButtonsVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::toggleStayOnTop()
|
||||||
|
{
|
||||||
|
setWindowFlag(Qt::WindowStaysOnTopHint, !stayOnTop());
|
||||||
|
show();
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::toggleAvoidResetTransform()
|
void MainWindow::toggleAvoidResetTransform()
|
||||||
{
|
{
|
||||||
m_graphicsView->setAvoidResetTransform(!m_graphicsView->avoidResetTransform());
|
m_graphicsView->setAvoidResetTransform(!m_graphicsView->avoidResetTransform());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MainWindow::stayOnTop() const
|
||||||
|
{
|
||||||
|
return windowFlags().testFlag(Qt::WindowStaysOnTopHint);
|
||||||
|
}
|
||||||
|
|
||||||
bool MainWindow::canPaste() const
|
bool MainWindow::canPaste() const
|
||||||
{
|
{
|
||||||
const QMimeData * clipboardData = QApplication::clipboard()->mimeData();
|
const QMimeData * clipboardData = QApplication::clipboard()->mimeData();
|
||||||
@@ -780,6 +800,11 @@ void MainWindow::on_actionAnimationNextFrame_triggered()
|
|||||||
m_graphicsView->scene()->skipAnimationFrame(1);
|
m_graphicsView->scene()->skipAnimationFrame(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::on_actionToggleStayOnTop_triggered()
|
||||||
|
{
|
||||||
|
toggleStayOnTop();
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::on_actionToggleProtectMode_triggered()
|
void MainWindow::on_actionToggleProtectMode_triggered()
|
||||||
{
|
{
|
||||||
toggleProtectedMode();
|
toggleProtectedMode();
|
||||||
|
|||||||
@@ -62,7 +62,9 @@ protected slots:
|
|||||||
void closeWindow();
|
void closeWindow();
|
||||||
void updateWidgetsPosition();
|
void updateWidgetsPosition();
|
||||||
void toggleProtectedMode();
|
void toggleProtectedMode();
|
||||||
|
void toggleStayOnTop();
|
||||||
void toggleAvoidResetTransform();
|
void toggleAvoidResetTransform();
|
||||||
|
bool stayOnTop() const;
|
||||||
bool canPaste() const;
|
bool canPaste() const;
|
||||||
void quitAppAction(bool force = false);
|
void quitAppAction(bool force = false);
|
||||||
void toggleFullscreen();
|
void toggleFullscreen();
|
||||||
@@ -95,6 +97,7 @@ private slots:
|
|||||||
void on_actionCopyFilePath_triggered();
|
void on_actionCopyFilePath_triggered();
|
||||||
void on_actionPaste_triggered();
|
void on_actionPaste_triggered();
|
||||||
void on_actionTrash_triggered();
|
void on_actionTrash_triggered();
|
||||||
|
void on_actionToggleStayOnTop_triggered();
|
||||||
void on_actionToggleProtectMode_triggered();
|
void on_actionToggleProtectMode_triggered();
|
||||||
void on_actionToggleAvoidResetTransform_triggered();
|
void on_actionToggleAvoidResetTransform_triggered();
|
||||||
void on_actionSettings_triggered();
|
void on_actionSettings_triggered();
|
||||||
|
|||||||
@@ -45,6 +45,11 @@ Settings *Settings::instance()
|
|||||||
return m_settings_instance;
|
return m_settings_instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Settings::stayOnTop() const
|
||||||
|
{
|
||||||
|
return m_qsettings->value("stay_on_top", true).toBool();
|
||||||
|
}
|
||||||
|
|
||||||
bool Settings::useLightCheckerboard() const
|
bool Settings::useLightCheckerboard() const
|
||||||
{
|
{
|
||||||
return m_qsettings->value("use_light_checkerboard", false).toBool();
|
return m_qsettings->value("use_light_checkerboard", false).toBool();
|
||||||
@@ -96,6 +101,12 @@ Qt::HighDpiScaleFactorRoundingPolicy Settings::hiDpiScaleFactorBehavior() const
|
|||||||
return QEnumHelper::fromString<Qt::HighDpiScaleFactorRoundingPolicy>(result, Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
|
return QEnumHelper::fromString<Qt::HighDpiScaleFactorRoundingPolicy>(result, Qt::HighDpiScaleFactorRoundingPolicy::PassThrough);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Settings::setStayOnTop(bool on)
|
||||||
|
{
|
||||||
|
m_qsettings->setValue("stay_on_top", on);
|
||||||
|
m_qsettings->sync();
|
||||||
|
}
|
||||||
|
|
||||||
void Settings::setUseLightCheckerboard(bool light)
|
void Settings::setUseLightCheckerboard(bool light)
|
||||||
{
|
{
|
||||||
m_qsettings->setValue("use_light_checkerboard", light);
|
m_qsettings->setValue("use_light_checkerboard", light);
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ public:
|
|||||||
|
|
||||||
static Settings *instance();
|
static Settings *instance();
|
||||||
|
|
||||||
|
bool stayOnTop() const;
|
||||||
bool useLightCheckerboard() const;
|
bool useLightCheckerboard() const;
|
||||||
bool loopGallery() const;
|
bool loopGallery() const;
|
||||||
bool svgTiny12Only() const;
|
bool svgTiny12Only() const;
|
||||||
@@ -42,6 +43,7 @@ public:
|
|||||||
WindowSizeBehavior initWindowSizeBehavior() const;
|
WindowSizeBehavior initWindowSizeBehavior() const;
|
||||||
Qt::HighDpiScaleFactorRoundingPolicy hiDpiScaleFactorBehavior() const;
|
Qt::HighDpiScaleFactorRoundingPolicy hiDpiScaleFactorBehavior() const;
|
||||||
|
|
||||||
|
void setStayOnTop(bool on);
|
||||||
void setUseLightCheckerboard(bool light);
|
void setUseLightCheckerboard(bool light);
|
||||||
void setLoopGallery(bool on);
|
void setLoopGallery(bool on);
|
||||||
void setSvgTiny12Only(bool on);
|
void setSvgTiny12Only(bool on);
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
SettingsDialog::SettingsDialog(QWidget *parent)
|
SettingsDialog::SettingsDialog(QWidget *parent)
|
||||||
: QDialog(parent)
|
: QDialog(parent)
|
||||||
|
, m_stayOnTop(new QCheckBox)
|
||||||
, m_useLightCheckerboard(new QCheckBox)
|
, m_useLightCheckerboard(new QCheckBox)
|
||||||
, m_loopGallery(new QCheckBox)
|
, m_loopGallery(new QCheckBox)
|
||||||
, m_svgTiny12Only(new QCheckBox)
|
, m_svgTiny12Only(new QCheckBox)
|
||||||
@@ -118,6 +119,7 @@ SettingsDialog::SettingsDialog(QWidget *parent)
|
|||||||
hidpiDropDown.append(hidpiOption.second);
|
hidpiDropDown.append(hidpiOption.second);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
settingsForm->addRow(tr("Stay on top when start-up"), m_stayOnTop);
|
||||||
settingsForm->addRow(tr("Use light-color checkerboard"), m_useLightCheckerboard);
|
settingsForm->addRow(tr("Use light-color checkerboard"), m_useLightCheckerboard);
|
||||||
settingsForm->addRow(tr("Loop the loaded gallery"), m_loopGallery);
|
settingsForm->addRow(tr("Loop the loaded gallery"), m_loopGallery);
|
||||||
settingsForm->addRow(tr("Limit SVG support to SVG Tiny 1.2"), m_svgTiny12Only);
|
settingsForm->addRow(tr("Limit SVG support to SVG Tiny 1.2"), m_svgTiny12Only);
|
||||||
@@ -126,6 +128,7 @@ SettingsDialog::SettingsDialog(QWidget *parent)
|
|||||||
settingsForm->addRow(tr("Default window size"), m_initWindowSizeBehavior);
|
settingsForm->addRow(tr("Default window size"), m_initWindowSizeBehavior);
|
||||||
settingsForm->addRow(tr("HiDPI scale factor rounding policy"), m_hiDpiRoundingPolicyBehavior);
|
settingsForm->addRow(tr("HiDPI scale factor rounding policy"), m_hiDpiRoundingPolicyBehavior);
|
||||||
|
|
||||||
|
m_stayOnTop->setChecked(Settings::instance()->stayOnTop());
|
||||||
m_useLightCheckerboard->setChecked(Settings::instance()->useLightCheckerboard());
|
m_useLightCheckerboard->setChecked(Settings::instance()->useLightCheckerboard());
|
||||||
m_loopGallery->setChecked(Settings::instance()->loopGallery());
|
m_loopGallery->setChecked(Settings::instance()->loopGallery());
|
||||||
m_svgTiny12Only->setChecked(Settings::instance()->svgTiny12Only());
|
m_svgTiny12Only->setChecked(Settings::instance()->svgTiny12Only());
|
||||||
@@ -155,6 +158,10 @@ SettingsDialog::SettingsDialog(QWidget *parent)
|
|||||||
# define QT_CHECKSTATE int
|
# define QT_CHECKSTATE int
|
||||||
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 7, 0)
|
#endif // QT_VERSION >= QT_VERSION_CHECK(6, 7, 0)
|
||||||
|
|
||||||
|
connect(m_stayOnTop, &QCHECKBOX_CHECKSTATECHANGED, this, [ = ](QT_CHECKSTATE state){
|
||||||
|
Settings::instance()->setStayOnTop(state == Qt::Checked);
|
||||||
|
});
|
||||||
|
|
||||||
connect(m_useLightCheckerboard, &QCHECKBOX_CHECKSTATECHANGED, this, [ = ](QT_CHECKSTATE state){
|
connect(m_useLightCheckerboard, &QCHECKBOX_CHECKSTATECHANGED, this, [ = ](QT_CHECKSTATE state){
|
||||||
Settings::instance()->setUseLightCheckerboard(state == Qt::Checked);
|
Settings::instance()->setUseLightCheckerboard(state == Qt::Checked);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ signals:
|
|||||||
public slots:
|
public slots:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
QCheckBox * m_stayOnTop = nullptr;
|
||||||
QCheckBox * m_useLightCheckerboard = nullptr;
|
QCheckBox * m_useLightCheckerboard = nullptr;
|
||||||
QCheckBox * m_loopGallery = nullptr;
|
QCheckBox * m_loopGallery = nullptr;
|
||||||
QCheckBox * m_svgTiny12Only = nullptr;
|
QCheckBox * m_svgTiny12Only = nullptr;
|
||||||
|
|||||||
Reference in New Issue
Block a user