File indexing completed on 2024-05-19 05:37:49
0001 /* 0002 SPDX-FileCopyrightText: 2009 Chani Armitage <chani@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-only 0005 */ 0006 0007 #include "activityjob.h" 0008 0009 #include <KLocalizedString> 0010 #include <QDebug> 0011 #include <plasmaactivities/controller.h> 0012 0013 #include <QDBusConnection> 0014 #include <QDBusMessage> 0015 0016 ActivityJob::ActivityJob(KActivities::Controller *controller, const QString &id, const QString &operation, QMap<QString, QVariant> ¶meters, QObject *parent) 0017 : ServiceJob(parent->objectName(), operation, parameters, parent) 0018 , m_activityController(controller) 0019 , m_id(id) 0020 { 0021 } 0022 0023 ActivityJob::~ActivityJob() 0024 { 0025 } 0026 0027 void ActivityJob::start() 0028 { 0029 const QString operation = operationName(); 0030 if (operation == QLatin1String("add")) { 0031 // I wonder how well plasma will handle this... 0032 QString name = parameters()[QStringLiteral("Name")].toString(); 0033 if (name.isEmpty()) { 0034 name = i18n("unnamed"); 0035 } 0036 const QString activityId = m_activityController->addActivity(name).result(); 0037 setResult(activityId); 0038 return; 0039 } 0040 if (operation == QLatin1String("remove")) { 0041 QString id = parameters()[QStringLiteral("Id")].toString(); 0042 m_activityController->removeActivity(id); 0043 setResult(true); 0044 return; 0045 } 0046 0047 // m_id is needed for the rest 0048 if (m_id.isEmpty()) { 0049 setResult(false); 0050 return; 0051 } 0052 if (operation == QLatin1String("setCurrent")) { 0053 m_activityController->setCurrentActivity(m_id); 0054 setResult(true); 0055 return; 0056 } 0057 if (operation == QLatin1String("stop")) { 0058 m_activityController->stopActivity(m_id); 0059 setResult(true); 0060 return; 0061 } 0062 if (operation == QLatin1String("start")) { 0063 m_activityController->startActivity(m_id); 0064 setResult(true); 0065 return; 0066 } 0067 if (operation == QLatin1String("setName")) { 0068 m_activityController->setActivityName(m_id, parameters()[QStringLiteral("Name")].toString()); 0069 setResult(true); 0070 return; 0071 } 0072 if (operation == QLatin1String("setIcon")) { 0073 m_activityController->setActivityIcon(m_id, parameters()[QStringLiteral("Icon")].toString()); 0074 setResult(true); 0075 return; 0076 } 0077 if (operation == QLatin1String("toggleActivityManager")) { 0078 QDBusMessage message = QDBusMessage::createMethodCall(QStringLiteral("org.kde.plasmashell"), 0079 QStringLiteral("/PlasmaShell"), 0080 QStringLiteral("org.kde.PlasmaShell"), 0081 QStringLiteral("toggleActivityManager")); 0082 QDBusConnection::sessionBus().call(message, QDBus::NoBlock); 0083 setResult(true); 0084 return; 0085 } 0086 setResult(false); 0087 }