1 /*
2     SPDX-FileCopyrightText: 2010-2016 Ivan Cukic <ivan.cukic(at)kde.org>
3 
4     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5 */
6 
7 #include "consumer.h"
8 #include "consumer_p.h"
9 #include "manager_p.h"
10 
11 #include "debug_p.h"
12 
13 namespace KActivities
14 {
ConsumerPrivate()15 ConsumerPrivate::ConsumerPrivate()
16     : cache(ActivitiesCache::self())
17 {
18 }
19 
setServiceStatus(Consumer::ServiceStatus status)20 void ConsumerPrivate::setServiceStatus(Consumer::ServiceStatus status)
21 {
22     Q_EMIT serviceStatusChanged(status);
23 }
24 
Consumer(QObject * parent)25 Consumer::Consumer(QObject *parent)
26     : QObject(parent)
27     , d(new ConsumerPrivate())
28 {
29     connect(d->cache.get(), &KActivities::ActivitiesCache::currentActivityChanged, this, &Consumer::currentActivityChanged);
30     connect(d->cache.get(), &KActivities::ActivitiesCache::activityAdded, this, &Consumer::activityAdded);
31     connect(d->cache.get(), &KActivities::ActivitiesCache::activityRemoved, this, &Consumer::activityRemoved);
32     connect(d->cache.get(), &KActivities::ActivitiesCache::serviceStatusChanged, this, &Consumer::serviceStatusChanged);
33 
34     connect(d->cache.get(), &ActivitiesCache::activityListChanged, this, [=]() {
35         Q_EMIT activitiesChanged(activities());
36     });
37     connect(d->cache.get(), &ActivitiesCache::runningActivityListChanged, this, [=]() {
38         Q_EMIT runningActivitiesChanged(runningActivities());
39     });
40 
41     // connect(d->cache.get(), SIGNAL(activityStateChanged(QString,int)),
42     //         this, SIGNAL(activityStateChanged(QString,int)));
43 }
44 
~Consumer()45 Consumer::~Consumer()
46 {
47     qCDebug(KAMD_CORELIB) << "Killing the consumer";
48 }
49 
currentActivity() const50 QString Consumer::currentActivity() const
51 {
52     return d->cache->m_currentActivity;
53 }
54 
activities(Info::State state) const55 QStringList Consumer::activities(Info::State state) const
56 {
57     QStringList result;
58 
59     result.reserve(d->cache->m_activities.size());
60 
61     for (const auto &info : std::as_const(d->cache->m_activities)) {
62         if (info.state == state) {
63             result << info.id;
64         }
65     }
66 
67     return result;
68 }
69 
activities() const70 QStringList Consumer::activities() const
71 {
72     QStringList result;
73 
74     result.reserve(d->cache->m_activities.size());
75 
76     for (const auto &info : std::as_const(d->cache->m_activities)) {
77         result << info.id;
78     }
79 
80     return result;
81 }
82 
runningActivities() const83 QStringList Consumer::runningActivities() const
84 {
85     QStringList result;
86 
87     result.reserve(d->cache->m_activities.size());
88 
89     for (const auto &info : std::as_const(d->cache->m_activities)) {
90         if (info.state == Info::Running || info.state == Info::Stopping) {
91             result << info.id;
92         }
93     }
94 
95     return result;
96 }
97 
serviceStatus()98 Consumer::ServiceStatus Consumer::serviceStatus()
99 {
100     return d->cache->m_status;
101 }
102 
103 } // namespace KActivities
104