+#include "toolbaractionprovider.h"
+
+#ifdef Q_WS_X11
+# include <QX11Info>
+#endif
+
+QWidget *GraphicalUi::_mainWidget = nullptr;
+QHash<QString, ActionCollection *> GraphicalUi::_actionCollections;
+ContextMenuActionProvider *GraphicalUi::_contextMenuActionProvider = nullptr;
+ToolBarActionProvider *GraphicalUi::_toolBarActionProvider = nullptr;
+UiStyle *GraphicalUi::_uiStyle = nullptr;
+
+
+GraphicalUi::GraphicalUi(QObject *parent) : AbstractUi(parent), Singleton<GraphicalUi>(this)
+{
+ Q_INIT_RESOURCE(pics);
+ Q_INIT_RESOURCE(hicolor_icons);
+#ifdef EMBED_DATA
+ Q_INIT_RESOURCE(icons);
+ Q_INIT_RESOURCE(iconthemes);
+#endif
+
+#ifdef Q_OS_WIN
+ _dwTickCount = 0;
+#endif
+#ifdef Q_OS_MAC
+ GetFrontProcess(&_procNum);
+#endif
+}
+
+
+void GraphicalUi::init()
+{
+#ifdef Q_OS_WIN
+ mainWidget()->installEventFilter(this);
+#endif
+}
+
+
+ActionCollection *GraphicalUi::actionCollection(const QString &category, const QString &translatedCategory)
+{
+ if (_actionCollections.contains(category))
+ return _actionCollections.value(category);
+ auto *coll = new ActionCollection(_mainWidget);
+
+ if (!translatedCategory.isEmpty())
+ coll->setProperty("Category", translatedCategory);
+ else
+ coll->setProperty("Category", category);
+
+ if (_mainWidget)
+ coll->addAssociatedWidget(_mainWidget);
+ _actionCollections.insert(category, coll);
+ return coll;
+}
+
+
+QHash<QString, ActionCollection *> GraphicalUi::actionCollections()
+{
+ return _actionCollections;
+}
+
+
+void GraphicalUi::loadShortcuts()
+{
+ foreach(ActionCollection *coll, actionCollections())
+ coll->readSettings();
+}
+
+
+void GraphicalUi::saveShortcuts()
+{
+ ShortcutSettings s;
+ s.clear();
+ foreach(ActionCollection *coll, actionCollections())
+ coll->writeSettings();
+}
+
+
+void GraphicalUi::setMainWidget(QWidget *widget)
+{
+ _mainWidget = widget;
+}
+
+
+void GraphicalUi::setContextMenuActionProvider(ContextMenuActionProvider *provider)
+{
+ _contextMenuActionProvider = provider;
+}
+