X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fqtuiapplication.h;h=e5e5d0787a58f21768d39ac01628343ed78ac8c2;hp=d4f8774ababf310609c156bf44065f23afe706d4;hb=a113f73e5f8ce89c3df5c42d55528404fc7a2294;hpb=f824db0e31b54969e0b7fa0b5405b1e9173d482c diff --git a/src/qtui/qtuiapplication.h b/src/qtui/qtuiapplication.h index d4f8774a..e5e5d078 100644 --- a/src/qtui/qtuiapplication.h +++ b/src/qtui/qtuiapplication.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-09 by the Quassel Project * + * Copyright (C) 2005-2016 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,13 +15,13 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef QTUIAPPLICATION_H_ #define QTUIAPPLICATION_H_ -#ifdef HAVE_KDE +#ifdef HAVE_KDE4 # include #else # include @@ -30,31 +30,65 @@ #include #include "quassel.h" -#include "sessionsettings.h" +#include "uisettings.h" +#include "qtuisettings.h" class QtUi; -#ifdef HAVE_KDE -class QtUiApplication : public KApplication, public Quassel { +#ifdef HAVE_KDE4 +class QtUiApplication : public KApplication, public Quassel +{ #else -class QtUiApplication : public QApplication, public Quassel { +class QtUiApplication : public QApplication, public Quassel +{ #endif - Q_OBJECT + Q_OBJECT - public: - QtUiApplication(int &, char **); - ~QtUiApplication(); - virtual bool init(); +public: + QtUiApplication(int &, char **); + ~QtUiApplication(); + virtual bool init(); - void resumeSessionIfPossible(); - virtual void saveState(QSessionManager & manager); + void resumeSessionIfPossible(); + inline bool isAboutToQuit() const { return _aboutToQuit; } -signals: - void saveStateToSession(const QString &sessionId); - void saveStateToSessionSettings(SessionSettings &s); // FIXME refs in signals won't probably work - void resumeFromSession(const QString sessionId); - void resumeFromSessionSettings(SessionSettings &s); +#if (QT_VERSION < QT_VERSION_CHECK(5, 0, 0)) + void commitData(QSessionManager &manager) override; + void saveState(QSessionManager &manager) override; +#else + void commitData(QSessionManager &manager); + void saveState(QSessionManager &manager); +#endif + +protected: + virtual void quit(); + +private: + /** + * Migrate settings if neccessary and possible + * + * If unsuccessful (major version changed, minor version upgrade failed), returning false, the + * settings are in an unknown state and the client should quit. + * + * @return True if settings successfully migrated, otherwise false + */ + bool migrateSettings(); + + /** + * Migrate from one minor settings version to the next + * + * Settings can only be migrated one version at a time. Start from the current version, calling + * this function for each intermediate version up until the latest version. + * + * @param[in] settings Current settings instance + * @param[in] newVersion Next target version for migration, at most 1 from the current version + * @return True if minor revision of settings successfully migrated, otherwise false + */ + bool applySettingsMigration(QtUiSettings settings, const uint newVersion); + + bool _aboutToQuit; }; + #endif