Warning, file /plasma/plasma-workspace/systemmonitor/kdedksysguard.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002     SPDX-FileCopyrightText: 2014 Vishesh Handa <me@vhanda.in>
0003     SPDX-FileCopyrightText: 2006 Aaron Seigo <aseigo@kde.org>
0004 
0005     SPDX-License-Identifier: LGPL-2.0-only
0006 */
0007 
0008 #include "kdedksysguard.h"
0009 
0010 #include <QAction>
0011 #include <QProcess>
0012 #include <QStandardPaths>
0013 #include <QTimer>
0014 
0015 #include <KLocalizedString>
0016 #include <KPluginFactory>
0017 
0018 #include <KActionCollection>
0019 #include <KGlobalAccel>
0020 #include <QDBusConnection>
0021 #include <QDBusConnectionInterface>
0022 
0023 K_PLUGIN_CLASS_WITH_JSON(KDEDKSysGuard, "ksysguard.json")
0024 
0025 KDEDKSysGuard::KDEDKSysGuard(QObject *parent, const QVariantList &)
0026     : KDEDModule(parent)
0027 {
0028     QTimer::singleShot(0, this, &KDEDKSysGuard::init);
0029 }
0030 
0031 KDEDKSysGuard::~KDEDKSysGuard()
0032 {
0033 }
0034 
0035 void KDEDKSysGuard::init()
0036 {
0037     KActionCollection *actionCollection = new KActionCollection(this);
0038 
0039     QAction *action = actionCollection->addAction(QStringLiteral("Show System Activity"));
0040     action->setText(i18n("Show System Activity"));
0041     connect(action, &QAction::triggered, this, &KDEDKSysGuard::showTaskManager);
0042 
0043     KGlobalAccel::self()->setGlobalShortcut(action, QKeySequence(Qt::CTRL | Qt::Key_Escape));
0044 }
0045 
0046 void KDEDKSysGuard::showTaskManager()
0047 {
0048     QDBusConnection con = QDBusConnection::sessionBus();
0049     QDBusConnectionInterface *interface = con.interface();
0050     if (interface->isServiceRegistered(QStringLiteral("org.kde.systemmonitor"))) {
0051         QDBusMessage msg = QDBusMessage::createMethodCall(QStringLiteral("org.kde.systemmonitor"),
0052                                                           QStringLiteral("/"),
0053                                                           QStringLiteral("org.qtproject.Qt.QWidget"),
0054                                                           QStringLiteral("close"));
0055 
0056         con.asyncCall(msg);
0057     } else {
0058         const QString exe = QStandardPaths::findExecutable(QStringLiteral("systemmonitor"));
0059         QProcess::startDetached(exe, QStringList());
0060     }
0061 }
0062 
0063 #include "kdedksysguard.moc"