src: Yearly copyright bump
[quassel.git] / src / uisupport / graphicalui.h
index f6a4cf6..a266658 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   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;
@@ -29,28 +31,25 @@ class ToolBarActionProvider;
 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
@@ -60,10 +59,10 @@ public:
     //! 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 ContextMenuActionProvidercontextMenuActionProvider();
+    inline static ToolBarActionProvidertoolBarActionProvider();
+    inline static UiStyleuiStyle();
+    inline static QWidgetmainWidget();
 
     //! Force the main widget to the front and focus it (may not work in all window systems)
     static void activateMainWidget();
@@ -78,8 +77,11 @@ public:
     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
@@ -99,25 +101,21 @@ protected:
      */
     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;
@@ -127,14 +125,29 @@ private:
 #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;
+}