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> &parameters, 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 }