/
devicestate_p.h
117 lines (90 loc) · 3.2 KB
/
devicestate_p.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/*!
* @file devicestate_p.h
* @brief Contains DeviceStatePrivate
<p>
Copyright (c) 2009-2011 Nokia Corporation
Copyright (c) 2015 - 2020 Jolla Ltd.
Copyright (c) 2020 Open Mobile Platform LLC.
@author Timo Olkkonen <ext-timo.p.olkkonen@nokia.com>
@scope Private
This file is part of SystemSW QtAPI.
SystemSW QtAPI is free software; you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License
version 2.1 as published by the Free Software Foundation.
SystemSW QtAPI is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with SystemSW QtAPI. If not, see <http://www.gnu.org/licenses/>.
</p>
*/
#ifndef DEVICESTATE_P_H
#define DEVICESTATE_P_H
#include "devicestate.h"
#include "ipcinterface_p.h"
#include "dsme/dsme_dbus_if.h"
#include <QMutex>
class QDBusServiceWatcher;
#define SIGNAL_SYSTEM_STATE 0
namespace DeviceState
{
class DeviceStatePrivate : public QObject
{
Q_OBJECT
public:
DeviceStatePrivate() {
connectCount[SIGNAL_SYSTEM_STATE] = 0;
userManagerWatcher = nullptr;
}
~DeviceStatePrivate() {
}
QMutex connectMutex;
size_t connectCount[1];
QDBusServiceWatcher *userManagerWatcher;
Q_SIGNALS:
void systemStateChanged(DeviceState::DeviceState::StateIndication what);
void nextUserChanged(uint uid);
private Q_SLOTS:
void emitShutdown() {
emit systemStateChanged(DeviceState::Shutdown);
}
void emitThermalShutdown(QString thermalState) {
// TODO: hardcoded "fatal"
if (thermalState == "fatal") {
emit systemStateChanged(DeviceState::ThermalStateFatal);
}
}
void emitBatteryShutdown() {
emit systemStateChanged(DeviceState::BatteryStateEmpty);
}
void emitSaveData() {
emit systemStateChanged(DeviceState::SaveData);
}
void emitShutdownDenied(QString reqType, QString reason) {
// XXX: Move hardcoded strings somewere else
if (reason == "usb") {
if (reqType == "shutdown") {
emit systemStateChanged(DeviceState::ShutdownDeniedUSB);
} else if (reqType == "reboot") {
emit systemStateChanged(DeviceState::RebootDeniedUSB);
}
}
}
void emitStateChangeInd(QString state) {
// TODO: hardcoded "REBOOT"
if (state == "REBOOT") {
emit systemStateChanged(DeviceState::Reboot);
}
}
void emitUserSwitching(uint uid) {
emit nextUserChanged(uid);
emit systemStateChanged(DeviceState::UserSwitching);
}
void emitUserSwitchingFailed(uint uid) {
Q_UNUSED(uid)
emit systemStateChanged(DeviceState::UserSwitchingFailed);
}
};
}
#endif // DEVICESTATE_P_H