File indexing completed on 2024-05-12 05:37:17

0001 /*
0002     SPDX-FileCopyrightText: 2010 Chani Armitage <chani@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QHash>
0010 
0011 #include <Plasma5Support/DataEngine>
0012 #include <Plasma5Support/Service>
0013 
0014 #include "ActivityData.h"
0015 #include "ActivityRankingInterface.h"
0016 
0017 class QDBusServiceWatcher;
0018 
0019 class ActivityService;
0020 
0021 namespace KActivities
0022 {
0023 class Controller;
0024 class Info;
0025 }
0026 
0027 class ActivityEngine : public Plasma5Support::DataEngine
0028 {
0029     Q_OBJECT
0030 
0031 public:
0032     ActivityEngine(QObject *parent);
0033     Plasma5Support::Service *serviceForSource(const QString &source) override;
0034     void init();
0035 
0036 public Q_SLOTS:
0037     void activityAdded(const QString &id);
0038     void activityRemoved(const QString &id);
0039     void currentActivityChanged(const QString &id);
0040 
0041     void activityDataChanged();
0042     void activityStateChanged();
0043 
0044     void disableRanking();
0045     void enableRanking();
0046     void rankingChanged(const QStringList &topActivities, const ActivityDataList &activities);
0047     void activityScoresReply(QDBusPendingCallWatcher *watcher);
0048 
0049 private:
0050     void insertActivity(const QString &id);
0051     void setActivityScores(const ActivityDataList &activities);
0052 
0053     KActivities::Controller *m_activityController;
0054     QHash<QString, KActivities::Info *> m_activities;
0055     QStringList m_runningActivities;
0056     QString m_currentActivity;
0057 
0058     org::kde::ActivityManager::ActivityRanking *m_activityRankingClient;
0059     QDBusServiceWatcher *m_watcher;
0060     QHash<QString, qreal> m_activityScores;
0061 
0062     friend class ActivityService;
0063 };