From 68ec5db2bd8a5a13e094d22abbee41be3c2be93a Mon Sep 17 00:00:00 2001 From: craig Date: Mon, 13 Feb 2012 21:04:25 +0000 Subject: [PATCH] Re-enalbe delayed save, destroying window foces ave to be called --- gui/mainwindow.cpp | 2 +- gui/settings.cpp | 33 +++++++++++++++++++++++++-------- gui/settings.h | 10 +++++++++- 3 files changed, 35 insertions(+), 10 deletions(-) diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index 5c53295ed..42a31a64f 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -907,7 +907,7 @@ MainWindow::~MainWindow() } Settings::self()->saveHiddenPages(hiddenPages); streamsPage->save(); - Settings::self()->save(); + Settings::self()->save(true); disconnect(MPDConnection::self(), 0, 0, 0); if (Settings::self()->stopOnExit()) { emit stop(); diff --git a/gui/settings.cpp b/gui/settings.cpp index a6542c84a..cc63c9e4e 100644 --- a/gui/settings.cpp +++ b/gui/settings.cpp @@ -34,6 +34,7 @@ #include "kwallet.h" #include #include +#include K_GLOBAL_STATIC(Settings, instance) #endif @@ -52,7 +53,8 @@ Settings * Settings::self() } Settings::Settings() - : ver(-1) + : timer(0) + , ver(-1) #ifdef ENABLE_KDE_SUPPORT , cfg(KGlobal::config(), "General") , wallet(0) @@ -507,13 +509,28 @@ void Settings::saveStopFadeDuration(int v) SET_VALUE("stopFadeDuration", v); } -void Settings::save() +void Settings::save(bool force) { - SET_VALUE("version", PACKAGE_VERSION); - #ifdef ENABLE_KDE_SUPPORT - KGlobal::config()->sync(); - #else - cfg.sync(); - #endif + if (force) { + SET_VALUE("version", PACKAGE_VERSION); + #ifdef ENABLE_KDE_SUPPORT + KGlobal::config()->sync(); + #else + cfg.sync(); + #endif + if (timer) { + timer->stop(); + } + } else { + if (!timer) { + timer=new QTimer(this); + connect(timer, SIGNAL(timeout()), this, SLOT(actualSave())); + } + timer->start(30*1000); + } } +void Settings::actualSave() +{ + save(true); +} diff --git a/gui/settings.h b/gui/settings.h index f6b855760..e3fdc2d8b 100644 --- a/gui/settings.h +++ b/gui/settings.h @@ -36,8 +36,12 @@ class Wallet; #define CANTATA_MAKE_VERSION(a, b, c) (((a) << 16) | ((b) << 8) | (c)) +class QTimer; + class Settings : public QObject { + Q_OBJECT + public: enum Constants { @@ -125,13 +129,17 @@ public: void saveDevicesView(int v); #endif void saveStopFadeDuration(int v); - void save(); + void save(bool force=false); #ifdef ENABLE_KDE_SUPPORT bool openWallet(); #endif +private Q_SLOTS: + void actualSave(); + private: QString mpdDirSetting; + QTimer *timer; int ver; #ifdef ENABLE_KDE_SUPPORT KConfigGroup cfg;