X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fuisupport%2Fgraphicalui.cpp;h=6bccbc70d1bbe62732437229b3ced955da348222;hb=61c8d84d1c849373e0f115dc748ed45cff95287d;hp=5d9a4198260954bedc4a03dbbc5e554e13a32879;hpb=2e9492d9ef198bde37da1f858602ab9624c0a12a;p=quassel.git diff --git a/src/uisupport/graphicalui.cpp b/src/uisupport/graphicalui.cpp index 5d9a4198..6bccbc70 100644 --- a/src/uisupport/graphicalui.cpp +++ b/src/uisupport/graphicalui.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2010 by the Quassel Project * + * Copyright (C) 2005-2012 by the Quassel Project * * devel@quassel-irc.org * * * * This contains code from KStatusNotifierItem, part of the KDE libs * @@ -24,7 +24,9 @@ #include "graphicalui.h" #include "actioncollection.h" +#include "uisettings.h" #include "contextmenuactionprovider.h" +#include "toolbaractionprovider.h" #ifdef Q_WS_X11 # include @@ -48,27 +50,47 @@ GraphicalUi::GraphicalUi(QObject *parent) : AbstractUi(parent) { #ifdef Q_WS_WIN _dwTickCount = 0; - mainWidget()->installEventFilter(this); #endif - } -GraphicalUi::~GraphicalUi() { +void GraphicalUi::init() { #ifdef Q_WS_WIN - mainWidget()->removeEventFilter(this); + mainWidget()->installEventFilter(this); #endif } -ActionCollection *GraphicalUi::actionCollection(const QString &category) { +ActionCollection *GraphicalUi::actionCollection(const QString &category, const QString &translatedCategory) { if(_actionCollections.contains(category)) return _actionCollections.value(category); ActionCollection *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 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; } @@ -85,6 +107,12 @@ void GraphicalUi::setUiStyle(UiStyle *style) { _uiStyle = style; } +void GraphicalUi::disconnectedFromCore() { + _contextMenuActionProvider->disconnectedFromCore(); + _toolBarActionProvider->disconnectedFromCore(); + AbstractUi::disconnectedFromCore(); +} + bool GraphicalUi::eventFilter(QObject *obj, QEvent *event) { #ifdef Q_WS_WIN if(obj == mainWidget() && event->type() == QEvent::ActivationChange) { @@ -103,9 +131,13 @@ bool GraphicalUi::checkMainWidgetVisibility(bool perform) { // therefore we watch for activation event and use our stopwatch :) if(GetTickCount() - _dwTickCount < 300) { // we were active in the last 300ms -> hide it - minimizeRestore(false); + if(perform) + minimizeRestore(false); + return false; } else { - minimizeRestore(true); + if(perform) + minimizeRestore(true); + return true; } #elif defined(HAVE_KDE) && defined(Q_WS_X11) @@ -169,7 +201,7 @@ bool GraphicalUi::checkMainWidgetVisibility(bool perform) { } #else - if(!mainWidget()->isVisible() || mainWidget()->isMinimized()) { + if(!mainWidget()->isVisible() || mainWidget()->isMinimized() || !mainWidget()->isActiveWindow()) { if(perform) minimizeRestore(true); return true; @@ -184,6 +216,10 @@ bool GraphicalUi::checkMainWidgetVisibility(bool perform) { return true; } +bool GraphicalUi::isMainWidgetVisible() { + return !instance()->checkMainWidgetVisibility(false); +} + void GraphicalUi::minimizeRestore(bool show) { if(show) activateMainWidget();