Another fix to theme scheduler saving.
[jspeed] / src / themeselector.cpp
index f559d63..eef6df0 100644 (file)
@@ -33,7 +33,8 @@
 #include "settings.h"
 #include "themeschedulersettings.h"
 
-ThemeSelector::ThemeSelector(QWidget* parent): QDialog(parent), buttonClicked_(false), themeScheduler_(0)
+ThemeSelector::ThemeSelector(QWidget* parent): QDialog(parent),
+buttonClicked_(false), themeSelected_(false), themeScheduler_(0)
 {
     setWindowTitle(tr("Select theme"));
 
@@ -49,8 +50,8 @@ ThemeSelector::ThemeSelector(QWidget* parent): QDialog(parent), buttonClicked_(f
     buttons->addButton(saveButton, QDialogButtonBox::AcceptRole);
 
     selector_ = new ThemePicker(tr("Theme"), this);
-    connect(selector_, SIGNAL(clicked(bool)), this, SLOT(enableDisableScheduler()));
-    connect(selector_, SIGNAL(selected()), this, SLOT(disableScheduler()));
+    connect(selector_, SIGNAL(clicked(bool)), this, SLOT(setButtonClicked()));
+    connect(selector_, SIGNAL(selected()), this, SLOT(setThemeSelected()));
 
     QPushButton* loadButton = new QPushButton(tr("Import"));
     connect(loadButton, SIGNAL(clicked(bool)), this, SLOT(loadFromFile()));
@@ -76,6 +77,15 @@ void ThemeSelector::saveTheme()
     QString theme = selector_->value().toString();
     Settings::instance().setValue("theme", theme);
     hide();
+
+    if(buttonClicked_ && themeSelected_ && ThemeScheduler::instance().isEnabled())
+    {
+        QMaemo5InformationBox::information(this, tr("Disabling theme scheduler..."), 1000);
+        ThemeScheduler::instance().setEnabled(false);
+        themeSelected_ = false;
+        buttonClicked_ = false;
+    }
+
     emit themeChanged();
 }
 
@@ -99,29 +109,31 @@ void ThemeSelector::openScheduler()
     if(!themeScheduler_)
     {
         themeScheduler_ = new ThemeSchedulerSettings(this);
-        connect(themeScheduler_, SIGNAL(themeChanged()), this, SIGNAL(themeChanged()));
+        connect(themeScheduler_, SIGNAL(themeChanged()), this, SLOT(onThemeChanged()));
     }
 
     themeScheduler_->show();
 }
 
-void ThemeSelector::enableDisableScheduler()
+void ThemeSelector::setButtonClicked()
 {
     buttonClicked_ = true;
 }
 
-void ThemeSelector::disableScheduler()
+void ThemeSelector::setThemeSelected()
 {
-    if(buttonClicked_ && ThemeScheduler::instance().isEnabled())
-    {
-        QMaemo5InformationBox::information(this, tr("Disabling theme scheduler..."), 1000);
-        ThemeScheduler::instance().setEnabled(false);
-    }
+    themeSelected_ = true;
 }
 
-void ThemeSelector::setVisible(bool visible)
+void ThemeSelector::onThemeChanged()
 {
     buttonClicked_ = false;
+    themeSelected_ = false;
+    emit themeChanged();
+}
+
 
+void ThemeSelector::setVisible(bool visible)
+{
     QDialog::setVisible(visible);
 }