X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fgraphicalui.h;h=a266658a94f389b535ab7f18c5be859b2756c847;hp=e35b3cec2a3ad95c288c1d87a8257e5e4d5c38b2;hb=a95ad2de573027f9bee36db972bcae4195168d0c;hpb=1cb02004ee5973b89368bd84f234d4652794690d diff --git a/src/uisupport/graphicalui.h b/src/uisupport/graphicalui.h index e35b3cec..a266658a 100644 --- a/src/uisupport/graphicalui.h +++ b/src/uisupport/graphicalui.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2015 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 * @@ -18,10 +18,12 @@ * 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,25 +31,25 @@ class ToolBarActionProvider; class UiStyle; #ifdef Q_OS_WIN -# include +# include +#endif +#ifdef Q_OS_MAC +# include #endif -class GraphicalUi : public AbstractUi +class UISUPPORT_EXPORT GraphicalUi : public AbstractUi, protected Singleton { 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\(). - * @param category The category (default: "General") - */ - static ActionCollection *actionCollection(const QString &category = "General", const QString &translatedCategory = QString()); - static QHash actionCollections(); + * actions (and thus, shortcuts). Widgets providing application-wide shortcuts should + * create appropriate Action objects using GraphicalUi::actionCollection(cat)->add\(). + * @param category The category (default: "General") + */ + static ActionCollection* actionCollection(const QString& category = "General", const QString& translatedCategory = QString()); + static QHash actionCollections(); //! Load custom shortcuts from ShortcutSettings /** @note This method assumes that all configurable actions are defined when being called @@ -57,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 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(); @@ -75,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 @@ -96,39 +101,53 @@ 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 _actionCollections; - static ContextMenuActionProvider *_contextMenuActionProvider; - static ToolBarActionProvider *_toolBarActionProvider; - static UiStyle *_uiStyle; - static bool _onAllDesktops; + static QWidget* _mainWidget; + static QHash _actionCollections; + static ContextMenuActionProvider* _contextMenuActionProvider; + static ToolBarActionProvider* _toolBarActionProvider; + static UiStyle* _uiStyle; #ifdef Q_OS_WIN DWORD _dwTickCount; #endif +#ifdef Q_OS_MAC + ProcessSerialNumber _procNum; +#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; +}