File indexing completed on 2025-03-16 05:04:33
0001 /* 0002 KWin - the KDE window manager 0003 This file is part of the KDE project. 0004 0005 SPDX-FileCopyrightText: 2013 Martin Gräßlin <mgraesslin@kde.org> 0006 0007 SPDX-License-Identifier: GPL-2.0-or-later 0008 */ 0009 #pragma once 0010 0011 #include <QObject> 0012 #include <QStringList> 0013 #include <kwin_export.h> 0014 0015 #include <PlasmaActivities/Controller> 0016 0017 namespace KActivities 0018 { 0019 class Controller; 0020 } 0021 0022 namespace KWin 0023 { 0024 class Window; 0025 0026 class KWIN_EXPORT Activities : public QObject 0027 { 0028 Q_OBJECT 0029 0030 public: 0031 explicit Activities(); 0032 0033 bool stop(const QString &id); 0034 bool start(const QString &id); 0035 void setCurrent(const QString &activity); 0036 /** 0037 * Adds/removes window \a window to/from \a activity. 0038 * 0039 * Takes care of transients as well. 0040 */ 0041 void toggleWindowOnActivity(Window *window, const QString &activity, bool dont_activate); 0042 0043 QStringList running() const; 0044 QStringList all() const; 0045 const QString ¤t() const; 0046 const QString &previous() const; 0047 0048 static QString nullUuid(); 0049 0050 KActivities::Controller::ServiceStatus serviceStatus() const; 0051 0052 Q_SIGNALS: 0053 /** 0054 * This signal is emitted when the global 0055 * activity is changed 0056 * @param id id of the new current activity 0057 */ 0058 void currentChanged(const QString &id); 0059 /** 0060 * This signal is emitted when a new activity is added 0061 * @param id id of the new activity 0062 */ 0063 void added(const QString &id); 0064 /** 0065 * This signal is emitted when the activity 0066 * is removed 0067 * @param id id of the removed activity 0068 */ 0069 void removed(const QString &id); 0070 0071 private Q_SLOTS: 0072 void slotServiceStatusChanged(); 0073 void slotRemoved(const QString &activity); 0074 void slotCurrentChanged(const QString &newActivity); 0075 void reallyStop(const QString &id); // dbus deadlocks suck 0076 0077 private: 0078 QString m_previous; 0079 QString m_current; 0080 KActivities::Controller *m_controller; 0081 }; 0082 0083 inline QStringList Activities::all() const 0084 { 0085 return m_controller->activities(); 0086 } 0087 0088 inline const QString &Activities::current() const 0089 { 0090 return m_current; 0091 } 0092 0093 inline const QString &Activities::previous() const 0094 { 0095 return m_previous; 0096 } 0097 0098 inline QStringList Activities::running() const 0099 { 0100 return m_controller->activities(KActivities::Info::Running); 0101 } 0102 0103 inline QString Activities::nullUuid() 0104 { 0105 // cloned from kactivities/src/lib/core/consumer.cpp 0106 return QStringLiteral("00000000-0000-0000-0000-000000000000"); 0107 } 0108 0109 }