Save code by using newly-added KActivities::Consumer signal.

Reviewers: #plasma, davidedmundson

Subscribers: plasma-devel

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D1774
wilder-5.14
Eike Hein 10 years ago
parent ad36c6dba6
commit a246d0eada
  1. 46
      libtaskmanager/activityinfo.cpp
  2. 2
      libtaskmanager/activityinfo.h

@ -31,13 +31,9 @@ public:
Private(ActivityInfo *q);
~Private();
QHash<QString, KActivities::Info *> activityInfos;
static int instanceCount;
static KActivities::Consumer* activityConsumer;
void refreshActivityInfos();
private:
ActivityInfo *q;
};
@ -57,42 +53,10 @@ ActivityInfo::Private::~Private()
if (!instanceCount) {
delete activityConsumer;
activityConsumer = nullptr;
}
}
void ActivityInfo::Private::refreshActivityInfos()
{
QMutableHashIterator<QString, KActivities::Info *> it(activityInfos);
// Cull invalid activities.
while (it.hasNext()) {
it.next();
if (!it.value()->isValid()) {
delete it.value();
it.remove();
}
}
// Find new activities and start listening for changes in their state.
foreach(const QString &activity, activityConsumer->activities()) {
if (!activityInfos.contains(activity)) {
KActivities::Info *info = new KActivities::Info(activity, q);
// By connecting to ourselves, we will immediately clean up when an
// activity's state transitions to Invalid.
connect(info, SIGNAL(stateChanged(KActivities::Info::State)),
q, SLOT(refreshActivityInfos()));
activityInfos.insert(activity, info);
}
}
// Activity list or activity state changes -> number of running
// activities may have changed.
q->numberOfRunningActivitiesChanged();
}
ActivityInfo::ActivityInfo(QObject *parent) : QObject(parent)
, d(new Private(this))
{
@ -100,12 +64,10 @@ ActivityInfo::ActivityInfo(QObject *parent) : QObject(parent)
d->activityConsumer = new KActivities::Consumer();
}
d->refreshActivityInfos();
connect(d->activityConsumer, &KActivities::Consumer::currentActivityChanged,
this, &ActivityInfo::currentActivityChanged);
connect(d->activityConsumer, SIGNAL(activitiesChanged(QStringList)),
this, SLOT(refreshActivityInfos()));
connect(d->activityConsumer, &KActivities::Consumer::runningActivitiesChanged,
this, &ActivityInfo::numberOfRunningActivitiesChanged);
}
ActivityInfo::~ActivityInfo()
@ -139,5 +101,3 @@ QString ActivityInfo::activityName(const QString &id)
}
}
#include "moc_activityinfo.cpp"

@ -89,8 +89,6 @@ Q_SIGNALS:
private:
class Private;
QScopedPointer<Private> d;
Q_PRIVATE_SLOT(d, void refreshActivityInfos())
};
}

Loading…
Cancel
Save