Changeset View
Changeset View
Standalone View
Standalone View
daemon/powerdevilpowermanagement.cpp
Show All 39 Lines | |||||
40 | class PowerManagement::Private | 40 | class PowerManagement::Private | ||
41 | { | 41 | { | ||
42 | public: | 42 | public: | ||
43 | Private(PowerManagement *q); | 43 | Private(PowerManagement *q); | ||
44 | void update(); | 44 | void update(); | ||
45 | void setCanSuspend(bool set); | 45 | void setCanSuspend(bool set); | ||
46 | void setCanHibernate(bool set); | 46 | void setCanHibernate(bool set); | ||
47 | void setCanHybridSuspend(bool set); | 47 | void setCanHybridSuspend(bool set); | ||
48 | void setCanSuspendThenHibernate(bool set); | ||||
48 | 49 | | |||
49 | bool serviceRegistered; | 50 | bool serviceRegistered; | ||
50 | bool canSuspend; | 51 | bool canSuspend; | ||
52 | bool canSuspendThenHibernate; | ||||
51 | bool canHibernate; | 53 | bool canHibernate; | ||
52 | bool canHybridSuspend; | 54 | bool canHybridSuspend; | ||
53 | QScopedPointer<QDBusServiceWatcher> fdoPowerServiceWatcher; | 55 | QScopedPointer<QDBusServiceWatcher> fdoPowerServiceWatcher; | ||
54 | 56 | | |||
55 | private: | 57 | private: | ||
56 | void updateProperty(const QString &dbusName, void (Private::*setter)(bool)); | 58 | void updateProperty(const QString &dbusName, void (Private::*setter)(bool)); | ||
57 | PowerManagement *q; | 59 | PowerManagement *q; | ||
58 | }; | 60 | }; | ||
59 | 61 | | |||
60 | PowerManagement::Private::Private(PowerManagement *q) | 62 | PowerManagement::Private::Private(PowerManagement *q) | ||
61 | : serviceRegistered(false) | 63 | : serviceRegistered(false) | ||
62 | , canSuspend(false) | 64 | , canSuspend(false) | ||
65 | , canSuspendThenHibernate(false) | ||||
63 | , canHibernate(false) | 66 | , canHibernate(false) | ||
64 | , canHybridSuspend(false) | 67 | , canHybridSuspend(false) | ||
65 | , fdoPowerServiceWatcher(new QDBusServiceWatcher(s_fdoPowerService, QDBusConnection::sessionBus(), QDBusServiceWatcher::WatchForUnregistration | QDBusServiceWatcher::WatchForRegistration)) | 68 | , fdoPowerServiceWatcher(new QDBusServiceWatcher(s_fdoPowerService, QDBusConnection::sessionBus(), QDBusServiceWatcher::WatchForUnregistration | QDBusServiceWatcher::WatchForRegistration)) | ||
66 | , q(q) | 69 | , q(q) | ||
67 | { | 70 | { | ||
68 | } | 71 | } | ||
69 | 72 | | |||
70 | void PowerManagement::Private::update() | 73 | void PowerManagement::Private::update() | ||
71 | { | 74 | { | ||
72 | serviceRegistered = true; | 75 | serviceRegistered = true; | ||
73 | updateProperty(QStringLiteral("CanSuspend"), &Private::setCanSuspend); | 76 | updateProperty(QStringLiteral("CanSuspend"), &Private::setCanSuspend); | ||
77 | updateProperty(QStringLiteral("CanSuspendThenHibernate"), &Private::setCanSuspendThenHibernate); | ||||
74 | updateProperty(QStringLiteral("CanHibernate"), &Private::setCanHibernate); | 78 | updateProperty(QStringLiteral("CanHibernate"), &Private::setCanHibernate); | ||
75 | updateProperty(QStringLiteral("CanHybridSuspend"), &Private::setCanHybridSuspend); | 79 | updateProperty(QStringLiteral("CanHybridSuspend"), &Private::setCanHybridSuspend); | ||
76 | } | 80 | } | ||
77 | 81 | | |||
78 | void PowerManagement::Private::updateProperty(const QString &dbusName, void (Private::*setter)(bool)) | 82 | void PowerManagement::Private::updateProperty(const QString &dbusName, void (Private::*setter)(bool)) | ||
79 | { | 83 | { | ||
80 | QDBusMessage message = QDBusMessage::createMethodCall(s_fdoPowerService, | 84 | QDBusMessage message = QDBusMessage::createMethodCall(s_fdoPowerService, | ||
81 | s_fdoPowerPath, | 85 | s_fdoPowerPath, | ||
Show All 20 Lines | |||||
102 | { | 106 | { | ||
103 | if (canSuspend == set) { | 107 | if (canSuspend == set) { | ||
104 | return; | 108 | return; | ||
105 | } | 109 | } | ||
106 | canSuspend = set; | 110 | canSuspend = set; | ||
107 | Q_EMIT q->canSuspendChanged(); | 111 | Q_EMIT q->canSuspendChanged(); | ||
108 | } | 112 | } | ||
109 | 113 | | |||
114 | void PowerManagement::Private::setCanSuspendThenHibernate(bool set) | ||||
115 | { | ||||
116 | if (canSuspendThenHibernate == set) { | ||||
117 | return; | ||||
118 | } | ||||
119 | canSuspendThenHibernate = set; | ||||
120 | Q_EMIT q->canSuspendThenHibernateChanged(); | ||||
121 | } | ||||
122 | | ||||
110 | void PowerManagement::Private::setCanHybridSuspend(bool set) | 123 | void PowerManagement::Private::setCanHybridSuspend(bool set) | ||
111 | { | 124 | { | ||
112 | if (canHybridSuspend == set) { | 125 | if (canHybridSuspend == set) { | ||
113 | return; | 126 | return; | ||
114 | } | 127 | } | ||
115 | canHybridSuspend = set; | 128 | canHybridSuspend = set; | ||
116 | Q_EMIT q->canHybridSuspendChanged(); | 129 | Q_EMIT q->canHybridSuspendChanged(); | ||
117 | } | 130 | } | ||
Show All 9 Lines | |||||
127 | { | 140 | { | ||
128 | connect(d->fdoPowerServiceWatcher.data(), &QDBusServiceWatcher::serviceRegistered, this, [this] { d->update(); }); | 141 | connect(d->fdoPowerServiceWatcher.data(), &QDBusServiceWatcher::serviceRegistered, this, [this] { d->update(); }); | ||
129 | connect(d->fdoPowerServiceWatcher.data(), &QDBusServiceWatcher::serviceUnregistered, this, | 142 | connect(d->fdoPowerServiceWatcher.data(), &QDBusServiceWatcher::serviceUnregistered, this, | ||
130 | [this] { | 143 | [this] { | ||
131 | d->serviceRegistered = false; | 144 | d->serviceRegistered = false; | ||
132 | d->setCanSuspend(false); | 145 | d->setCanSuspend(false); | ||
133 | d->setCanHibernate(false); | 146 | d->setCanHibernate(false); | ||
134 | d->setCanHybridSuspend(false); | 147 | d->setCanHybridSuspend(false); | ||
148 | d->setCanSuspendThenHibernate(false); | ||||
135 | } | 149 | } | ||
136 | ); | 150 | ); | ||
137 | 151 | | |||
138 | // check whether the service is registered | 152 | // check whether the service is registered | ||
139 | QDBusMessage message = QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.DBus"), | 153 | QDBusMessage message = QDBusMessage::createMethodCall(QStringLiteral("org.freedesktop.DBus"), | ||
140 | QStringLiteral("/"), | 154 | QStringLiteral("/"), | ||
141 | QStringLiteral("org.freedesktop.DBus"), | 155 | QStringLiteral("org.freedesktop.DBus"), | ||
142 | QStringLiteral("ListNames")); | 156 | QStringLiteral("ListNames")); | ||
Show All 40 Lines | 186 | { | |||
183 | QDBusConnection::sessionBus().asyncCall(message); | 197 | QDBusConnection::sessionBus().asyncCall(message); | ||
184 | } | 198 | } | ||
185 | 199 | | |||
186 | void PowerManagement::hybridSuspend() | 200 | void PowerManagement::hybridSuspend() | ||
187 | { | 201 | { | ||
188 | // FIXME: Whether there is a support of this mode? | 202 | // FIXME: Whether there is a support of this mode? | ||
189 | } | 203 | } | ||
190 | 204 | | |||
205 | void PowerManagement::suspendThenHibernate() | ||||
206 | { | ||||
207 | if (!d->serviceRegistered) { | ||||
ngraham: space after `if` | |||||
208 | return; | ||||
209 | } | ||||
210 | if (!d->canSuspendThenHibernate) { | ||||
ngraham: space after `if` | |||||
211 | return; | ||||
212 | } | ||||
213 | QDBusMessage message = QDBusMessage::createMethodCall(s_fdoPowerService, | ||||
214 | s_fdoPowerPath, | ||||
215 | s_fdoPowerService, | ||||
216 | QStringLiteral("SuspendThenHibernate")); | ||||
217 | QDBusConnection::sessionBus().asyncCall(message); | ||||
218 | } | ||||
219 | | ||||
191 | bool PowerManagement::canSuspend() const | 220 | bool PowerManagement::canSuspend() const | ||
192 | { | 221 | { | ||
193 | return d->canSuspend; | 222 | return d->canSuspend; | ||
194 | } | 223 | } | ||
195 | 224 | | |||
196 | bool PowerManagement::canHibernate() const | 225 | bool PowerManagement::canHibernate() const | ||
197 | { | 226 | { | ||
198 | return d->canHibernate; | 227 | return d->canHibernate; | ||
199 | } | 228 | } | ||
200 | 229 | | |||
201 | bool PowerManagement::canHybridSuspend() const | 230 | bool PowerManagement::canHybridSuspend() const | ||
202 | { | 231 | { | ||
203 | return d->canHybridSuspend; | 232 | return d->canHybridSuspend; | ||
204 | } | 233 | } | ||
205 | 234 | | |||
235 | bool PowerManagement::canSuspendThenHibernate() const | ||||
236 | { | ||||
237 | return d->canSuspendThenHibernate; | ||||
238 | } | ||||
239 | | ||||
206 | } // namespace PowerDevil | 240 | } // namespace PowerDevil | ||
207 | 241 | | |||
208 | #include "powerdevilpowermanagement.moc" | 242 | #include "powerdevilpowermanagement.moc" |
space after if