File indexing completed on 2024-06-16 05:09:58
0001 /* 0002 SPDX-FileCopyrightText: 2015 Eike Hein <hein@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "abstractentry.h" 0010 0011 #include <QObject> 0012 0013 class SessionManagement; 0014 0015 class SystemEntry : public QObject, public AbstractEntry 0016 { 0017 Q_OBJECT 0018 0019 public: 0020 enum Action { 0021 NoAction = 0, 0022 LockSession, 0023 LogoutSession, 0024 SaveSession, 0025 SwitchUser, 0026 Suspend, 0027 Hibernate, 0028 Reboot, 0029 Shutdown, 0030 }; 0031 0032 explicit SystemEntry(AbstractModel *owner, Action action); 0033 explicit SystemEntry(AbstractModel *owner, const QString &id); 0034 ~SystemEntry(); 0035 0036 Action action() const; 0037 0038 EntryType type() const override 0039 { 0040 return RunnableType; 0041 } 0042 0043 bool isValid() const override; 0044 0045 QString icon() const override; 0046 QString iconName() const; 0047 QString name() const override; 0048 QString group() const override; 0049 QString description() const override; 0050 0051 QString id() const override; 0052 0053 bool run(const QString &actionId = QString(), const QVariant &argument = QVariant()) override; 0054 0055 Q_SIGNALS: 0056 void isValidChanged() const; 0057 void sessionManagementStateChanged(); 0058 0059 private Q_SLOTS: 0060 void refresh(); 0061 0062 private: 0063 bool m_initialized; 0064 0065 Action m_action; 0066 bool m_valid; 0067 0068 static int s_instanceCount; 0069 static SessionManagement *s_sessionManagement; 0070 };