#include "types.h"
#include "util.h"
-QtUi *QtUi::_instance = nullptr;
MainWin *QtUi::_mainWin = nullptr;
QList<AbstractNotificationBackend *> QtUi::_notificationBackends;
QList<AbstractNotificationBackend::Notification> QtUi::_notifications;
+namespace {
+
+QtUi *_instance{nullptr};
+
+}
+
+
+QtUi *QtUi::instance()
+{
+ if (!_instance) {
+ _instance = new QtUi();
+ }
+ return _instance;
+}
+
+
QtUi::QtUi()
: GraphicalUi()
, _systemIconTheme{QIcon::themeName()}
{
- if (_instance != nullptr) {
- qWarning() << "QtUi has been instantiated again!";
- return;
- }
- _instance = this;
-
if (Quassel::isOptionSet("icontheme")) {
_systemIconTheme = Quassel::optionValue("icontheme");
QIcon::setThemeName(_systemIconTheme);
Q_OBJECT
public:
- QtUi();
~QtUi();
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();
void useSystemTrayChanged(const QVariant &);
private:
+ QtUi();
+
/**
* Sets up icon theme handling.
*/
void setupIconTheme();
private:
- static QtUi *_instance;
static MainWin *_mainWin;
static QList<AbstractNotificationBackend *> _notificationBackends;
static QList<AbstractNotificationBackend::Notification> _notifications;
bool _useSystemTray;
};
-
-QtUi *QtUi::instance() { return _instance ? _instance : new QtUi(); }
QtUiStyle *QtUi::style() { return qobject_cast<QtUiStyle *>(uiStyle()); }
MainWin *QtUi::mainWindow() { return _mainWin; }
throw ExitException{EXIT_FAILURE, tr("Could not load or upgrade client settings!")};
}
- Client::init(new QtUi());
+ Client::init(QtUi::instance());
// Init UI only after the event loop has started
// TODO Qt5: Make this a lambda
# include <KWindowSystem>
#endif
-GraphicalUi *GraphicalUi::_instance = 0;
QWidget *GraphicalUi::_mainWidget = 0;
QHash<QString, ActionCollection *> GraphicalUi::_actionCollections;
ContextMenuActionProvider *GraphicalUi::_contextMenuActionProvider = 0;
UiStyle *GraphicalUi::_uiStyle = 0;
bool GraphicalUi::_onAllDesktops = false;
+namespace {
+
+GraphicalUi *_instance{nullptr};
+
+}
+
+
+GraphicalUi *GraphicalUi::instance() {
+ return _instance;
+}
+
+
GraphicalUi::GraphicalUi(QObject *parent) : AbstractUi(parent)
{
Q_ASSERT(!_instance);
Q_OBJECT
public:
- GraphicalUi(QObject *parent = 0);
- virtual void init();
-
//! Access global ActionCollections.
/** These ActionCollections are associated with the main window, i.e. they contain global
* actions (and thus, shortcuts). Widgets providing application-wide shortcuts should
static bool isMainWidgetVisible();
protected:
+ GraphicalUi(QObject *parent = 0);
+ virtual void init();
+
//! This is the widget we associate global actions with, typically the main window
void setMainWidget(QWidget *);
virtual void disconnectedFromCore();
private:
- static inline GraphicalUi *instance();
+ static GraphicalUi *instance();
- static GraphicalUi *_instance;
static QWidget *_mainWidget;
static QHash<QString, ActionCollection *> _actionCollections;
static ContextMenuActionProvider *_contextMenuActionProvider;
// inlines
-GraphicalUi *GraphicalUi::instance() { return _instance; }
ContextMenuActionProvider *GraphicalUi::contextMenuActionProvider() { return _contextMenuActionProvider; }
ToolBarActionProvider *GraphicalUi::toolBarActionProvider() { return _toolBarActionProvider; }
UiStyle *GraphicalUi::uiStyle() { return _uiStyle; }