mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
3.0 KiB
112 lines
3.0 KiB
/* |
|
SPDX-FileCopyrightText: 2019 David Edmundson <[email protected]> |
|
|
|
SPDX-License-Identifier: LGPL-2.0-or-later |
|
*/ |
|
|
|
#pragma once |
|
|
|
#include "kworkspace_export.h" |
|
#include <QObject> |
|
|
|
/** |
|
* Public facing API for SessionManagement |
|
*/ |
|
class KWORKSPACE_EXPORT SessionManagement : public QObject |
|
{ |
|
Q_OBJECT |
|
Q_PROPERTY(State state READ state NOTIFY stateChanged) |
|
|
|
Q_PROPERTY(bool canShutdown READ canShutdown NOTIFY canShutdownChanged) |
|
Q_PROPERTY(bool canReboot READ canReboot NOTIFY canRebootChanged) |
|
Q_PROPERTY(bool canLogout READ canLogout NOTIFY canLogoutChanged) |
|
Q_PROPERTY(bool canSuspend READ canSuspend NOTIFY canSuspendChanged) |
|
Q_PROPERTY(bool canHibernate READ canHibernate NOTIFY canHibernateChanged) |
|
Q_PROPERTY(bool canSwitchUser READ canSwitchUser NOTIFY canSwitchUserChanged) |
|
Q_PROPERTY(bool canLock READ canLock NOTIFY canLockChanged) |
|
Q_PROPERTY(bool canSaveSession READ canSaveSession NOTIFY canSaveSessionChanged) |
|
|
|
public: |
|
enum class State { |
|
/** |
|
* The backend is loading canXyz functions may not represent the true state |
|
*/ |
|
Loading, |
|
/** |
|
* All loaded |
|
*/ |
|
Ready, |
|
/** |
|
* Error creating a suitable backend, no actions will be available |
|
*/ |
|
Error, |
|
}; |
|
Q_ENUM(State) |
|
|
|
enum class ConfirmationMode { |
|
/** |
|
* Obey the user's confirmation setting. |
|
*/ |
|
Default = -1, |
|
/** |
|
* Don't confirm, shutdown without asking. |
|
*/ |
|
Skip = 0, |
|
/** |
|
* Always confirm, ask even if the user turned it off. |
|
*/ |
|
ForcePrompt = 1, |
|
}; |
|
Q_ENUM(ConfirmationMode) |
|
|
|
SessionManagement(QObject *parent = nullptr); |
|
~SessionManagement() override = default; |
|
|
|
State state() const; |
|
|
|
bool canShutdown() const; |
|
bool canReboot() const; |
|
bool canLogout() const; |
|
bool canSuspend() const; |
|
bool canHybridSuspend() const; |
|
bool canHibernate() const; |
|
bool canSwitchUser() const; |
|
bool canLock() const; |
|
bool canSaveSession() const; |
|
|
|
public Q_SLOTS: |
|
/** |
|
* These requestX methods will either launch a prompt to shutdown or |
|
* The user may cancel it at any point in the process |
|
*/ |
|
void requestShutdown(ConfirmationMode = ConfirmationMode::Default); |
|
void requestReboot(ConfirmationMode = ConfirmationMode::Default); |
|
void requestLogout(ConfirmationMode = ConfirmationMode::Default); |
|
|
|
void suspend(); |
|
void hybridSuspend(); |
|
void hibernate(); |
|
|
|
void switchUser(); |
|
void lock(); |
|
|
|
void saveSession(); |
|
|
|
Q_SIGNALS: |
|
void stateChanged(); |
|
void canShutdownChanged(); |
|
void canRebootChanged(); |
|
void canLogoutChanged(); |
|
void canSuspendChanged(); |
|
void canHybridSuspendChanged(); |
|
void canHibernateChanged(); |
|
void canSwitchUserChanged(); |
|
void canLockChanged(); |
|
void canSaveSessionChanged(); |
|
|
|
void aboutToSuspend(); |
|
void resumingFromSuspend(); |
|
|
|
private: |
|
void *d; // unused, just reserving the space in case we go ABI stable |
|
};
|
|
|