/***************************************************************************
- * Copyright (C) 2005-2018 by the Quassel Project *
+ * Copyright (C) 2005-2020 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This contains code from KStatusNotifierItem, part of the KDE libs *
#include "graphicalui.h"
#include "actioncollection.h"
-#include "uisettings.h"
#include "contextmenuactionprovider.h"
#include "toolbaractionprovider.h"
+#include "uisettings.h"
#ifdef Q_WS_X11
-# include <QX11Info>
+# include <QX11Info>
#endif
-QWidget *GraphicalUi::_mainWidget = 0;
-QHash<QString, ActionCollection *> GraphicalUi::_actionCollections;
-ContextMenuActionProvider *GraphicalUi::_contextMenuActionProvider = 0;
-ToolBarActionProvider *GraphicalUi::_toolBarActionProvider = 0;
-UiStyle *GraphicalUi::_uiStyle = 0;
-
+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
-GraphicalUi::GraphicalUi(QObject *parent) : AbstractUi(parent), Singleton<GraphicalUi>(this)
-{
#ifdef Q_OS_WIN
_dwTickCount = 0;
#endif
#endif
}
-
void GraphicalUi::init()
{
#ifdef Q_OS_WIN
#endif
}
-
-ActionCollection *GraphicalUi::actionCollection(const QString &category, const QString &translatedCategory)
+ActionCollection* GraphicalUi::actionCollection(const QString& category, const QString& translatedCategory)
{
if (_actionCollections.contains(category))
return _actionCollections.value(category);
- ActionCollection *coll = new ActionCollection(_mainWidget);
+ auto* coll = new ActionCollection(_mainWidget);
if (!translatedCategory.isEmpty())
coll->setProperty("Category", translatedCategory);
return coll;
}
-
-QHash<QString, ActionCollection *> GraphicalUi::actionCollections()
+QHash<QString, ActionCollection*> GraphicalUi::actionCollections()
{
return _actionCollections;
}
-
void GraphicalUi::loadShortcuts()
{
- foreach(ActionCollection *coll, actionCollections())
- coll->readSettings();
+ foreach (ActionCollection* coll, actionCollections())
+ coll->readSettings();
}
-
void GraphicalUi::saveShortcuts()
{
ShortcutSettings s;
s.clear();
- foreach(ActionCollection *coll, actionCollections())
- coll->writeSettings();
+ foreach (ActionCollection* coll, actionCollections())
+ coll->writeSettings();
}
-
-void GraphicalUi::setMainWidget(QWidget *widget)
+void GraphicalUi::setMainWidget(QWidget* widget)
{
_mainWidget = widget;
}
-
-void GraphicalUi::setContextMenuActionProvider(ContextMenuActionProvider *provider)
+void GraphicalUi::setContextMenuActionProvider(ContextMenuActionProvider* provider)
{
_contextMenuActionProvider = provider;
}
-
-void GraphicalUi::setToolBarActionProvider(ToolBarActionProvider *provider)
+void GraphicalUi::setToolBarActionProvider(ToolBarActionProvider* provider)
{
_toolBarActionProvider = provider;
}
-
-void GraphicalUi::setUiStyle(UiStyle *style)
+void GraphicalUi::setUiStyle(UiStyle* style)
{
_uiStyle = style;
}
-
void GraphicalUi::disconnectedFromCore()
{
_contextMenuActionProvider->disconnectedFromCore();
AbstractUi::disconnectedFromCore();
}
-
-bool GraphicalUi::eventFilter(QObject *obj, QEvent *event)
+bool GraphicalUi::eventFilter(QObject* obj, QEvent* event)
{
#ifdef Q_OS_WIN
if (obj == mainWidget() && event->type() == QEvent::ActivationChange) {
return AbstractUi::eventFilter(obj, event);
}
-
// NOTE: Window activation stuff seems to work just fine in Plasma 5 without requiring X11 hacks.
// TODO: Evaluate cleaning all this up once we can get rid of Qt4/KDE4
bool GraphicalUi::checkMainWidgetVisibility(bool perform)
{
+ bool needsActivation{true};
+
#ifdef Q_OS_WIN
// the problem is that we lose focus when the systray icon is activated
// and we don't know the former active window
// therefore we watch for activation event and use our stopwatch :)
if (GetTickCount() - _dwTickCount < 300) {
// we were active in the last 300ms -> hide it
- if (perform)
- minimizeRestore(false);
- return false;
- }
- else {
- if (perform)
- minimizeRestore(true);
- return true;
+ needsActivation = false;
}
-
#else
-
- if (!mainWidget()->isVisible() || mainWidget()->isMinimized() || !mainWidget()->isActiveWindow()) {
- if (perform)
- minimizeRestore(true);
- return true;
- }
- else {
- if (perform)
- minimizeRestore(false);
- return false;
+ if (mainWidget()->isVisible() && !mainWidget()->isMinimized() && mainWidget()->isActiveWindow()) {
+ needsActivation = false;
}
-
#endif
- return true;
+ if (perform) {
+ minimizeRestore(needsActivation);
+ }
+ return needsActivation;
}
-
bool GraphicalUi::isMainWidgetVisible()
{
return !instance()->checkMainWidgetVisibility(false);
}
-
void GraphicalUi::minimizeRestore(bool show)
{
if (show)
hideMainWidget();
}
-
void GraphicalUi::activateMainWidget()
{
#ifdef Q_WS_X11
#endif
}
-
void GraphicalUi::hideMainWidget()
{
if (instance()->isHidingMainWidgetAllowed())
#endif
}
-
void GraphicalUi::toggleMainWidget()
{
instance()->checkMainWidgetVisibility(true);