From 37a85d24acdd9a5fd6fbe941cec951c8b86f2345 Mon Sep 17 00:00:00 2001 From: eshe Date: Tue, 27 Jul 2010 16:20:04 +0100 Subject: [PATCH] Another fix to theme scheduler saving. --- src/themeselector.cpp | 36 ++++++++++++++++++++++++------------ src/themeselector.h | 6 ++++-- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/themeselector.cpp b/src/themeselector.cpp index f559d63..eef6df0 100644 --- a/src/themeselector.cpp +++ b/src/themeselector.cpp @@ -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); } diff --git a/src/themeselector.h b/src/themeselector.h index 05ce869..8292128 100644 --- a/src/themeselector.h +++ b/src/themeselector.h @@ -42,11 +42,13 @@ private slots: void saveTheme(); void loadFromFile(); void openScheduler(); - void enableDisableScheduler(); - void disableScheduler(); + void setButtonClicked(); + void setThemeSelected(); + void onThemeChanged(); private: bool buttonClicked_; + bool themeSelected_; ThemePicker* selector_; ThemeSchedulerSettings* themeScheduler_; }; -- 1.7.9.5