File indexing completed on 2024-05-12 16:59:20
0001 /* 0002 * SPDX-FileCopyrightText: 2010-2016 Ivan Cukic <ivan.cukic@kde.org> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #ifndef ACTIVITIES_P_H 0008 #define ACTIVITIES_P_H 0009 0010 // Self 0011 #include "Activities.h" 0012 0013 // Qt 0014 #include <QReadWriteLock> 0015 #include <QString> 0016 #include <QTimer> 0017 0018 // KDE 0019 #include <kconfig.h> 0020 #include <kconfiggroup.h> 0021 0022 class KSMServer; 0023 0024 class Activities::Private : public QObject 0025 { 0026 Q_OBJECT 0027 0028 public: 0029 Private(Activities *parent); 0030 ~Private() override; 0031 0032 // Loads the last activity 0033 // the user has used 0034 void loadLastActivity(); 0035 0036 // If the current activity is not running, 0037 // make some other activity current 0038 void ensureCurrentActivityIsRunning(); 0039 0040 public Q_SLOTS: 0041 bool setCurrentActivity(const QString &activity); 0042 bool previousActivity(); 0043 bool nextActivity(); 0044 void updateSortedActivityList(); 0045 0046 public: 0047 void setActivityState(const QString &activity, Activities::State state); 0048 0049 // Configuration 0050 class KDE4ConfigurationTransitionChecker 0051 { 0052 public: 0053 KDE4ConfigurationTransitionChecker(); 0054 } kde4ConfigurationTransitionChecker; 0055 QTimer configSyncTimer; 0056 KConfig config; 0057 0058 // Interface to the session management 0059 KSMServer *ksmserver; 0060 0061 QHash<QString, Activities::State> activities; 0062 QVector<ActivityInfo> sortedActivities; 0063 QReadWriteLock activitiesLock; 0064 QString currentActivity; 0065 0066 public: 0067 inline KConfigGroup activityNameConfig() 0068 { 0069 return KConfigGroup(&config, "activities"); 0070 } 0071 0072 inline KConfigGroup activityDescriptionConfig() 0073 { 0074 return KConfigGroup(&config, "activities-descriptions"); 0075 } 0076 0077 inline KConfigGroup activityIconConfig() 0078 { 0079 return KConfigGroup(&config, "activities-icons"); 0080 } 0081 0082 inline KConfigGroup mainConfig() 0083 { 0084 return KConfigGroup(&config, "main"); 0085 } 0086 0087 inline QString activityName(const QString &activity) 0088 { 0089 return activityNameConfig().readEntry(activity, QString()); 0090 } 0091 0092 inline QString activityDescription(const QString &activity) 0093 { 0094 return activityDescriptionConfig().readEntry(activity, QString()); 0095 } 0096 0097 inline QString activityIcon(const QString &activity) 0098 { 0099 return activityIconConfig().readEntry(activity, QString()); 0100 } 0101 0102 public Q_SLOTS: 0103 // Schedules config syncing to be done after 0104 // a predefined time interval 0105 void scheduleConfigSync(); 0106 0107 // Immediately syncs the configuration file 0108 void configSync(); 0109 0110 QString addActivity(const QString &name); 0111 void removeActivity(const QString &activity); 0112 void activitySessionStateChanged(const QString &activity, int state); 0113 0114 private: 0115 Activities *const q; 0116 }; 0117 0118 #endif // ACTIVITIES_P_H