/***************************************************************************
- * Copyright (C) 2005-2013 by the Quassel Project *
+ * Copyright (C) 2005-2018 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 ToolBarActionProvider;
class UiStyle;
-#ifdef Q_WS_WIN
+#ifdef Q_OS_WIN
# include <windows.h>
#endif
+#ifdef Q_OS_MAC
+#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
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 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;
-#ifdef Q_WS_WIN
+#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; }
-
-#endif