/***************************************************************************
- * Copyright (C) 2005-2016 by the Quassel Project *
+ * Copyright (C) 2005-2020 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
***************************************************************************/
-#ifndef GRAPHICALUI_H_
-#define GRAPHICALUI_H_
+#pragma once
+
+#include "uisupport-export.h"
#include "abstractui.h"
+#include "singleton.h"
class ActionCollection;
class ContextMenuActionProvider;
class UiStyle;
#ifdef Q_OS_WIN
-# include <windows.h>
+# include <windows.h>
#endif
#ifdef Q_OS_MAC
-#include <Carbon/Carbon.h>
+# include <Carbon/Carbon.h>
#endif
-class GraphicalUi : public AbstractUi
+class UISUPPORT_EXPORT GraphicalUi : public AbstractUi, protected Singleton<GraphicalUi>
{
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
- * create appropriate Action objects using GraphicalUi::actionCollection(cat)->add\<Action\>().
- * @param category The category (default: "General")
- */
- static ActionCollection *actionCollection(const QString &category = "General", const QString &translatedCategory = QString());
- static QHash<QString, ActionCollection *> actionCollections();
+ * actions (and thus, shortcuts). Widgets providing application-wide shortcuts should
+ * create appropriate Action objects using GraphicalUi::actionCollection(cat)->add\<Action\>().
+ * @param category The category (default: "General")
+ */
+ static ActionCollection* actionCollection(const QString& category = "General", const QString& translatedCategory = QString());
+ static QHash<QString, ActionCollection*> actionCollections();
//! Load custom shortcuts from ShortcutSettings
/** @note This method assumes that all configurable actions are defined when being called
//! Save custom shortcuts to ShortcutSettings
static void saveShortcuts();
- inline static ContextMenuActionProvider *contextMenuActionProvider();
- inline static ToolBarActionProvider *toolBarActionProvider();
- inline static UiStyle *uiStyle();
- inline static QWidget *mainWidget();
+ inline static ContextMenuActionProvider* contextMenuActionProvider();
+ inline static ToolBarActionProvider* toolBarActionProvider();
+ inline static UiStyle* uiStyle();
+ inline static QWidget* mainWidget();
//! Force the main widget to the front and focus it (may not work in all window systems)
static void activateMainWidget();
static bool isMainWidgetVisible();
protected:
+ GraphicalUi(QObject* parent = nullptr);
+ void init() override;
+
//! This is the widget we associate global actions with, typically the main window
- void setMainWidget(QWidget *);
+ void setMainWidget(QWidget*);
//! Check if the mainWidget is visible and optionally toggle its visibility
/** With KDE integration, we check if the mainWidget is (partially) obscured in order to determine if
*/
virtual inline bool isHidingMainWidgetAllowed() const;
- void setContextMenuActionProvider(ContextMenuActionProvider *);
- void setToolBarActionProvider(ToolBarActionProvider *);
- void setUiStyle(UiStyle *);
+ void setContextMenuActionProvider(ContextMenuActionProvider*);
+ void setToolBarActionProvider(ToolBarActionProvider*);
+ void setUiStyle(UiStyle*);
- virtual bool eventFilter(QObject *obj, QEvent *event);
+ bool eventFilter(QObject* obj, QEvent* event) override;
protected slots:
- virtual void disconnectedFromCore();
+ void disconnectedFromCore() override;
private:
- static inline GraphicalUi *instance();
-
- static GraphicalUi *_instance;
- static QWidget *_mainWidget;
- static QHash<QString, ActionCollection *> _actionCollections;
- static ContextMenuActionProvider *_contextMenuActionProvider;
- static ToolBarActionProvider *_toolBarActionProvider;
- static UiStyle *_uiStyle;
- static bool _onAllDesktops;
+ static QWidget* _mainWidget;
+ static QHash<QString, ActionCollection*> _actionCollections;
+ static ContextMenuActionProvider* _contextMenuActionProvider;
+ static ToolBarActionProvider* _toolBarActionProvider;
+ static UiStyle* _uiStyle;
#ifdef Q_OS_WIN
DWORD _dwTickCount;
#endif
};
-
// inlines
-GraphicalUi *GraphicalUi::instance() { return _instance; }
-ContextMenuActionProvider *GraphicalUi::contextMenuActionProvider() { return _contextMenuActionProvider; }
-ToolBarActionProvider *GraphicalUi::toolBarActionProvider() { return _toolBarActionProvider; }
-UiStyle *GraphicalUi::uiStyle() { return _uiStyle; }
-QWidget *GraphicalUi::mainWidget() { return _mainWidget; }
-bool GraphicalUi::isHidingMainWidgetAllowed() const { return false; }
+ContextMenuActionProvider* GraphicalUi::contextMenuActionProvider()
+{
+ return _contextMenuActionProvider;
+}
-#endif
+ToolBarActionProvider* GraphicalUi::toolBarActionProvider()
+{
+ return _toolBarActionProvider;
+}
+
+UiStyle* GraphicalUi::uiStyle()
+{
+ return _uiStyle;
+}
+
+QWidget* GraphicalUi::mainWidget()
+{
+ return _mainWidget;
+}
+
+bool GraphicalUi::isHidingMainWidgetAllowed() const
+{
+ return false;
+}