From 94dcdc31a4e9f414fcf62e91b6a5d0e204800917 Mon Sep 17 00:00:00 2001 From: Rob Scheepmaker Date: Thu, 2 Apr 2009 16:40:28 +0000 Subject: [PATCH] Expand/collapse group icon responds to theme changes. svn path=/trunk/KDE/kdelibs/; revision=948255 --- extendergroup.cpp | 28 +++++++++++++++++++--------- extendergroup.h | 1 + private/extendergroup_p.h | 1 + 3 files changed, 21 insertions(+), 9 deletions(-) diff --git a/extendergroup.cpp b/extendergroup.cpp index c07abb940..7aa358f65 100644 --- a/extendergroup.cpp +++ b/extendergroup.cpp @@ -17,6 +17,8 @@ * Boston, MA 02110-1301 USA */ +#include "extendergroup.h" + #include #include #include @@ -24,8 +26,8 @@ #include "applet.h" #include "extender.h" -#include "extendergroup.h" #include "extenderitem.h" +#include "theme.h" #include "private/extendergroup_p.h" @@ -43,29 +45,24 @@ ExtenderGroup::ExtenderGroup(Extender *parent, uint groupId) config().writeEntry("isGroup", true); - //TODO: monitor for change in theme - Plasma::Svg *svg = new Plasma::Svg(this); - svg->setImagePath("widgets/configuration-icons"); - svg->resize(); - QAction *expand = new QAction(this); - expand->setIcon(QIcon(svg->pixmap("restore"))); expand->setVisible(true); expand->setToolTip(i18n("Show this group.")); connect(expand, SIGNAL(triggered()), this, SLOT(expandGroup())); addAction("expand", expand); QAction *collapse = new QAction(this); - collapse->setIcon(QIcon(svg->pixmap("collapse"))); collapse->setVisible(false); collapse->setToolTip(i18n("Hide this group.")); connect(collapse, SIGNAL(triggered()), this, SLOT(collapseGroup())); addAction("collapse", collapse); + d->themeChanged(); + QString groupName; foreach (ExtenderItem *item, extender()->attachedItems()) { groupName = item->config().readEntry("group", ""); - if (groupName != "" && groupName == name()) { + if (!groupName.isEmpty() && groupName == name()) { item->setGroup(this); } } @@ -74,6 +71,9 @@ ExtenderGroup::ExtenderGroup(Extender *parent, uint groupId) hide(); extender()->itemRemovedEvent(this); } + + connect(Plasma::Theme::defaultTheme(), SIGNAL(themeChanged()), + this, SLOT(themeChanged())); } ExtenderGroup::~ExtenderGroup() @@ -169,6 +169,16 @@ void ExtenderGroupPrivate::removeItemFromGroup(Plasma::ExtenderItem *item) } } +void ExtenderGroupPrivate::themeChanged() +{ + Plasma::Svg *svg = new Plasma::Svg(q); + svg->setImagePath("widgets/configuration-icons"); + svg->resize(); + + q->action("expand")->setIcon(QIcon(svg->pixmap("restore"))); + q->action("collapse")->setIcon(QIcon(svg->pixmap("collapse"))); +} + } // Plasma namespace #include "extendergroup.moc" diff --git a/extendergroup.h b/extendergroup.h index 175784629..7e131c18f 100644 --- a/extendergroup.h +++ b/extendergroup.h @@ -93,6 +93,7 @@ class PLASMA_EXPORT ExtenderGroup : public ExtenderItem Q_PRIVATE_SLOT(d, void addItemToGroup(Plasma::ExtenderItem *item)) Q_PRIVATE_SLOT(d, void removeItemFromGroup(Plasma::ExtenderItem *item)) + Q_PRIVATE_SLOT(d, void themeChanged()) friend class ExtenderItem; }; diff --git a/private/extendergroup_p.h b/private/extendergroup_p.h index 02c7440bd..1e89ff202 100644 --- a/private/extendergroup_p.h +++ b/private/extendergroup_p.h @@ -34,6 +34,7 @@ class ExtenderGroupPrivate void addItemToGroup(Plasma::ExtenderItem *item); void removeItemFromGroup(Plasma::ExtenderItem *item); + void themeChanged(); Plasma::ExtenderGroup *q; bool collapsed;