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 };