#include <tuple>
#include <vector>
-#include <QStringList>
+#include <QList>
+#include <QObject>
+#include <QString>
#if QT_VERSION >= 0x050000
# include <QTemporaryDir>
public:
QtUi();
- ~QtUi();
+ ~QtUi() override;
MessageModel *createMessageModel(QObject *parent) override;
AbstractMessageProcessor *createMessageProcessor(QObject *parent) override;
- inline static QtUi *instance();
+ static QtUi *instance();
inline static QtUiStyle *style();
inline static MainWin *mainWindow();
+ QString debugLog() const;
+
static bool haveSystemTray();
/* Notifications */
*/
std::vector<std::pair<QString, QString>> availableIconThemes() const;
+ /**
+ * Determine the system icon theme set when Quassel was started.
+ *
+ * This property stores the icon theme initially configured in Qt when starting up (may be empty on platforms
+ * not supporting system icon themes). If the --icontheme option is given, uses that.
+ *
+ * Since Qt does not support notifications on theme changes, this property will not be updated when the theme
+ * changes at runtime.
+ *
+ * @returns The system icon theme at startup time
+ */
+ QString systemIconTheme() const;
+
public slots:
void init() override;
void setupIconTheme();
private:
- static QtUi *_instance;
- static MainWin *_mainWin;
static QList<AbstractNotificationBackend *> _notificationBackends;
static QList<AbstractNotificationBackend::Notification> _notifications;
+ std::unique_ptr<MainWin> _mainWin;
+
QString _systemIconTheme;
#if QT_VERSION >= 0x050000
bool _useSystemTray;
};
-
-QtUi *QtUi::instance() { return _instance ? _instance : new QtUi(); }
QtUiStyle *QtUi::style() { return qobject_cast<QtUiStyle *>(uiStyle()); }
-MainWin *QtUi::mainWindow() { return _mainWin; }
+MainWin *QtUi::mainWindow() { return instance()->_mainWin.get(); }