X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fqtuiapplication.h;h=7819b35b5f718039e09f724cad9bbf48ee80acd1;hp=514c37f1c5c7680069565b5f5eabc2504594af37;hb=HEAD;hpb=f64ac93b92faeb2fd8f9c411168e04e8501bd6e8 diff --git a/src/qtui/qtuiapplication.h b/src/qtui/qtuiapplication.h index 514c37f1..75f10e3f 100644 --- a/src/qtui/qtuiapplication.h +++ b/src/qtui/qtuiapplication.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2015 by the Quassel Project * + * Copyright (C) 2005-2022 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -18,54 +18,66 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#ifndef QTUIAPPLICATION_H_ -#define QTUIAPPLICATION_H_ +#pragma once -#ifdef HAVE_KDE4 -# include -#else -# include -#endif +#include "qtui-export.h" +#include + +#include #include +#include "client.h" +#include "qtuisettings.h" #include "quassel.h" #include "uisettings.h" class QtUi; -#ifdef HAVE_KDE4 -class QtUiApplication : public KApplication, public Quassel -{ -#else -class QtUiApplication : public QApplication, public Quassel +class QTUI_EXPORT QtUiApplication : public QApplication { -#endif - Q_OBJECT public: - QtUiApplication(int &, char **); - ~QtUiApplication(); - virtual bool init(); + QtUiApplication(int&, char**); + + virtual void init(); void resumeSessionIfPossible(); inline bool isAboutToQuit() const { return _aboutToQuit; } -#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 + void commitData(QSessionManager& manager); + void saveState(QSessionManager& manager); protected: - virtual void quit(); + virtual Quassel::QuitHandler quitHandler(); private: - bool _aboutToQuit; -}; + /** + * Migrate settings if necessary 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); -#endif +protected: + std::unique_ptr _client; + +private: + bool _aboutToQuit{false}; +};