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(ActivityInfo *q);
~Private(); ~Private();
QHash<QString, KActivities::Info *> activityInfos;
static int instanceCount; static int instanceCount;
static KActivities::Consumer* activityConsumer; static KActivities::Consumer* activityConsumer;
void refreshActivityInfos();
private: private:
ActivityInfo *q; ActivityInfo *q;
}; };
@ -57,42 +53,10 @@ ActivityInfo::Private::~Private()
if (!instanceCount) { if (!instanceCount) {
delete activityConsumer; 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) ActivityInfo::ActivityInfo(QObject *parent) : QObject(parent)
, d(new Private(this)) , d(new Private(this))
{ {
@ -100,12 +64,10 @@ ActivityInfo::ActivityInfo(QObject *parent) : QObject(parent)
d->activityConsumer = new KActivities::Consumer(); d->activityConsumer = new KActivities::Consumer();
} }
d->refreshActivityInfos();
connect(d->activityConsumer, &KActivities::Consumer::currentActivityChanged, connect(d->activityConsumer, &KActivities::Consumer::currentActivityChanged,
this, &ActivityInfo::currentActivityChanged); this, &ActivityInfo::currentActivityChanged);
connect(d->activityConsumer, SIGNAL(activitiesChanged(QStringList)), connect(d->activityConsumer, &KActivities::Consumer::runningActivitiesChanged,
this, SLOT(refreshActivityInfos())); this, &ActivityInfo::numberOfRunningActivitiesChanged);
} }
ActivityInfo::~ActivityInfo() ActivityInfo::~ActivityInfo()
@ -139,5 +101,3 @@ QString ActivityInfo::activityName(const QString &id)
} }
} }
#include "moc_activityinfo.cpp"

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

Loading…
Cancel
Save