Another fix to theme scheduler saving.
authoreshe <jessehakanen@gmail.com>
Tue, 27 Jul 2010 15:20:04 +0000 (16:20 +0100)
committereshe <jessehakanen@gmail.com>
Tue, 27 Jul 2010 15:20:04 +0000 (16:20 +0100)
src/themeselector.cpp
src/themeselector.h

index f559d63..eef6df0 100644 (file)
@@ -33,7 +33,8 @@
 #include "settings.h"
 #include "themeschedulersettings.h"
 
 #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"));
 
 {
     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);
     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()));
 
     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();
     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();
 }
 
     emit themeChanged();
 }
 
@@ -99,29 +109,31 @@ void ThemeSelector::openScheduler()
     if(!themeScheduler_)
     {
         themeScheduler_ = new ThemeSchedulerSettings(this);
     if(!themeScheduler_)
     {
         themeScheduler_ = new ThemeSchedulerSettings(this);
-        connect(themeScheduler_, SIGNAL(themeChanged()), this, SIGNAL(themeChanged()));
+        connect(themeScheduler_, SIGNAL(themeChanged()), this, SLOT(onThemeChanged()));
     }
 
     themeScheduler_->show();
 }
 
     }
 
     themeScheduler_->show();
 }
 
-void ThemeSelector::enableDisableScheduler()
+void ThemeSelector::setButtonClicked()
 {
     buttonClicked_ = true;
 }
 
 {
     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;
 {
     buttonClicked_ = false;
+    themeSelected_ = false;
+    emit themeChanged();
+}
+
 
 
+void ThemeSelector::setVisible(bool visible)
+{
     QDialog::setVisible(visible);
 }
     QDialog::setVisible(visible);
 }
index 05ce869..8292128 100644 (file)
@@ -42,11 +42,13 @@ private slots:
     void saveTheme();
     void loadFromFile();
     void openScheduler();
     void saveTheme();
     void loadFromFile();
     void openScheduler();
-    void enableDisableScheduler();
-    void disableScheduler();
+    void setButtonClicked();
+    void setThemeSelected();
+    void onThemeChanged();
 
 private:
     bool buttonClicked_;
 
 private:
     bool buttonClicked_;
+    bool themeSelected_;
     ThemePicker* selector_;
     ThemeSchedulerSettings* themeScheduler_;
 };
     ThemePicker* selector_;
     ThemeSchedulerSettings* themeScheduler_;
 };