File indexing completed on 2024-05-12 05:37:16

0001 /*
0002     SPDX-FileCopyrightText: 2009 Chani Armitage <chani@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QButtonGroup>
0010 #include <QHash>
0011 #include <plasma/containmentactions.h>
0012 
0013 class SessionManagement;
0014 
0015 class ContextMenu : public Plasma::ContainmentActions
0016 {
0017     Q_OBJECT
0018 public:
0019     ContextMenu(QObject *parent, const QVariantList &args);
0020     ~ContextMenu() override;
0021 
0022     void restore(const KConfigGroup &) override;
0023 
0024     QList<QAction *> contextualActions() override;
0025     QAction *action(const QString &name);
0026 
0027     QWidget *createConfigurationInterface(QWidget *parent) override;
0028     void configurationAccepted() override;
0029     void save(KConfigGroup &config) override;
0030 
0031 public Q_SLOTS:
0032     void openTerminal();
0033     void runCommand();
0034     void startLogout();
0035     void configureDisplays();
0036 
0037 private:
0038     QAction *m_openTerminalAction = nullptr;
0039     QAction *m_runCommandAction = nullptr;
0040     QAction *m_lockScreenAction = nullptr;
0041     QAction *m_logoutAction = nullptr;
0042     QAction *m_configureDisplaysAction = nullptr;
0043     QAction *m_separator1 = nullptr;
0044     QAction *m_separator2 = nullptr;
0045     QAction *m_separator3 = nullptr;
0046 
0047     // action name and whether it is enabled or not
0048     QHash<QString, bool> m_actions;
0049     QStringList m_actionOrder;
0050     QButtonGroup *m_buttons = nullptr;
0051     SessionManagement *const m_session;
0052 };