File indexing completed on 2024-05-05 17:45:01
0001 /* 0002 SPDX-FileCopyrightText: 2009 Jan Gerrit Marker <jangerrit@weiler-marker.com> 0003 SPDX-FileCopyrightText: 2020 Alexander Lohnau <alexander.lohnau@gmx.de> 0004 0005 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0006 */ 0007 0008 #pragma once 0009 0010 #include <QReadWriteLock> 0011 #include <QTimer> 0012 0013 #include <KRunner/AbstractRunner> 0014 0015 #include "config_keys.h" 0016 class QAction; 0017 0018 namespace KSysGuard 0019 { 0020 class Processes; 0021 class Process; 0022 } 0023 0024 class KillRunner : public Plasma::AbstractRunner 0025 { 0026 Q_OBJECT 0027 0028 public: 0029 KillRunner(QObject *parent, const KPluginMetaData &metaData, const QVariantList &args); 0030 ~KillRunner() override; 0031 0032 void match(Plasma::RunnerContext &context) override; 0033 void run(const Plasma::RunnerContext &context, const Plasma::QueryMatch &match) override; 0034 void reloadConfiguration() override; 0035 0036 private Q_SLOTS: 0037 void prep(); 0038 void cleanup(); 0039 0040 private: 0041 /** The trigger word */ 0042 QString m_triggerWord; 0043 0044 /** How to sort */ 0045 Sort m_sorting; 0046 0047 /** process lister */ 0048 KSysGuard::Processes *m_processes; 0049 0050 /** lock for initializing m_processes */ 0051 QReadWriteLock m_prepLock; 0052 0053 /** timer for retrying the cleanup due to lock contention */ 0054 QTimer m_delayedCleanupTimer; 0055 0056 /** Reuse actions */ 0057 QList<QAction *> m_actionList; 0058 0059 /** Reuse value */ 0060 bool m_hasTrigger; 0061 };