diff --git a/src/Gui/KSMainWindow.h b/src/Gui/KSMainWindow.h --- a/src/Gui/KSMainWindow.h +++ b/src/Gui/KSMainWindow.h @@ -31,6 +31,7 @@ #include "PlatformBackends/ImageGrabber.h" #include "ExportMenu.h" #include "KSWidget.h" +#include "SpectacleConfig.h" class KSMainWindow : public QDialog { @@ -41,6 +42,10 @@ explicit KSMainWindow(bool onClickAvailable, QWidget *parent = 0); ~KSMainWindow(); + private: + + SaveMode saveButtonMode() const; + private slots: void captureScreenshot(ImageGrabber::GrabMode mode, int timeout, bool includePointer, bool includeDecorations); diff --git a/src/Gui/KSMainWindow.cpp b/src/Gui/KSMainWindow.cpp --- a/src/Gui/KSMainWindow.cpp +++ b/src/Gui/KSMainWindow.cpp @@ -106,6 +106,12 @@ KSMainWindow::~KSMainWindow() {} +SaveMode KSMainWindow::saveButtonMode() const +{ + const SpectacleConfig *cfgManager = SpectacleConfig::instance(); + return cfgManager->useDynamicSaveButton() ? cfgManager->lastUsedSaveMode() : SaveMode::SaveAs; +} + // GUI init void KSMainWindow::init() @@ -225,18 +231,13 @@ QAction *actionSave = KStandardAction::save(this, &KSMainWindow::save, this); QAction *actionSaveAs = KStandardAction::saveAs(this, &KSMainWindow::saveAs, this); - // static or dynamic - SpectacleConfig *cfgManager = SpectacleConfig::instance(); - int switchState = cfgManager->useDynamicSaveButton() ? cfgManager->lastUsedSaveMode() : 0; - // put the actions in order - switch (switchState) { - case 0: - default: + switch (saveButtonMode()) { + case SaveMode::SaveAs: mSaveButton->setDefaultAction(actionSaveAs); mSaveMenu->addAction(actionSave); break; - case 1: + case SaveMode::Save: mSaveButton->setDefaultAction(actionSave); mSaveMenu->addAction(actionSaveAs); break; @@ -339,7 +340,7 @@ void KSMainWindow::save() { - SpectacleConfig::instance()->setLastUsedSaveMode(1); + SpectacleConfig::instance()->setLastUsedSaveMode(SaveMode::Save); buildSaveMenu(); if (SpectacleConfig::instance()->quitAfterSaveOrCopyChecked()) { @@ -354,7 +355,7 @@ void KSMainWindow::saveAs() { - SpectacleConfig::instance()->setLastUsedSaveMode(0); + SpectacleConfig::instance()->setLastUsedSaveMode(SaveMode::SaveAs); buildSaveMenu(); if (SpectacleConfig::instance()->quitAfterSaveOrCopyChecked()) { diff --git a/src/SpectacleConfig.h b/src/SpectacleConfig.h --- a/src/SpectacleConfig.h +++ b/src/SpectacleConfig.h @@ -27,6 +27,11 @@ #include #include +enum SaveMode { + SaveAs, + Save +}; + class SpectacleConfig : public QObject { Q_OBJECT @@ -85,8 +90,8 @@ bool useLightRegionMaskColour() const; void setUseLightRegionMaskColour(bool enabled); - int lastUsedSaveMode() const; - void setLastUsedSaveMode(int index); + SaveMode lastUsedSaveMode() const; + void setLastUsedSaveMode(SaveMode mode); QString autoSaveFilenameFormat() const; void setAutoSaveFilenameFormat(const QString &format); diff --git a/src/SpectacleConfig.cpp b/src/SpectacleConfig.cpp --- a/src/SpectacleConfig.cpp +++ b/src/SpectacleConfig.cpp @@ -197,14 +197,14 @@ // last used save mode -int SpectacleConfig::lastUsedSaveMode() const +SaveMode SpectacleConfig::lastUsedSaveMode() const { - return mGuiConfig.readEntry(QStringLiteral("lastUsedSaveMode"), 0); + return static_cast(mGuiConfig.readEntry(QStringLiteral("lastUsedSaveMode"), 0)); } -void SpectacleConfig::setLastUsedSaveMode(int index) +void SpectacleConfig::setLastUsedSaveMode(SaveMode mode) { - mGuiConfig.writeEntry(QStringLiteral("lastUsedSaveMode"), index); + mGuiConfig.writeEntry(QStringLiteral("lastUsedSaveMode"), static_cast(mode)); mGuiConfig.sync(); }