PowerMan: Add extension

pull/21/head
reionwong 4 years ago
parent 1daa31c44b
commit 4eeb7f4212

@ -31,8 +31,12 @@ Application::Application(QObject *parent)
, m_dimDisplayAction(new DimDisplayAction) , m_dimDisplayAction(new DimDisplayAction)
{ {
m_closeScreenTimeout = m_settings.value("CloseScreenTimeout", 600).toInt(); m_closeScreenTimeout = m_settings.value("CloseScreenTimeout", 600).toInt();
m_sleepWhenClosedScreen = m_settings.value("SleepWhenClosedScreen", false).toBool();
m_lockWhenClosedScreen = m_settings.value("LockWhenClosedScreen", true).toBool();
m_dimDisplayAction->setTimeout(m_closeScreenTimeout); m_dimDisplayAction->setTimeout(m_closeScreenTimeout);
m_dimDisplayAction->setSleep(m_sleepWhenClosedScreen);
m_dimDisplayAction->setLock(m_lockWhenClosedScreen);
QDBusConnection::sessionBus().registerService(QStringLiteral("com.cutefish.PowerManager")); QDBusConnection::sessionBus().registerService(QStringLiteral("com.cutefish.PowerManager"));
QDBusConnection::sessionBus().registerObject(QStringLiteral("/PowerManager"), this); QDBusConnection::sessionBus().registerObject(QStringLiteral("/PowerManager"), this);
@ -43,4 +47,22 @@ void Application::setDimDisplayTimeout(int timeout)
{ {
m_closeScreenTimeout = timeout; m_closeScreenTimeout = timeout;
m_dimDisplayAction->setTimeout(timeout); m_dimDisplayAction->setTimeout(timeout);
m_settings.setValue("CloseScreenTimeout", timeout);
}
void Application::setSleepWhenClosedScreen(bool enabled)
{
m_sleepWhenClosedScreen = enabled;
m_dimDisplayAction->setSleep(enabled);
m_settings.setValue("SleepWhenClosedScreen", enabled);
}
void Application::setLockWhenClosedScreen(bool lock)
{
m_lockWhenClosedScreen = lock;
m_dimDisplayAction->setLock(lock);
m_settings.setValue("LockWhenClosedScreen", lock);
} }

@ -39,6 +39,8 @@ public:
explicit Application(QObject *parent = nullptr); explicit Application(QObject *parent = nullptr);
void setDimDisplayTimeout(int timeout); void setDimDisplayTimeout(int timeout);
void setSleepWhenClosedScreen(bool enabled);
void setLockWhenClosedScreen(bool lock);
private: private:
LidWatcher *m_lidWatcher; LidWatcher *m_lidWatcher;
@ -46,6 +48,8 @@ private:
QSettings m_settings; QSettings m_settings;
int m_closeScreenTimeout; int m_closeScreenTimeout;
bool m_sleepWhenClosedScreen;
bool m_lockWhenClosedScreen;
DimDisplayAction *m_dimDisplayAction; DimDisplayAction *m_dimDisplayAction;
}; };

@ -4,5 +4,13 @@
<method name="setDimDisplayTimeout"> <method name="setDimDisplayTimeout">
<arg name="value" type="i" direction="in"/> <arg name="value" type="i" direction="in"/>
</method> </method>
<method name="setSleepWhenClosedScreen">
<arg name="value" type="b" direction="in"/>
</method>
<method name="setLockWhenClosedScreen">
<arg name="value" type="b" direction="in"/>
</method>
</interface> </interface>
</node> </node>

@ -23,6 +23,7 @@
#include <QTimer> #include <QTimer>
#include <QDBusPendingCall> #include <QDBusPendingCall>
#include <QX11Info> #include <QX11Info>
#include <QProcess>
#include <QDebug> #include <QDebug>
#include <X11/Xlib.h> #include <X11/Xlib.h>
@ -66,6 +67,22 @@ void DimDisplayAction::onIdleTimeout(int msec)
if (sec == m_dimOnIdleTime) { if (sec == m_dimOnIdleTime) {
m_iface.asyncCall("setValue", QVariant::fromValue(0)); m_iface.asyncCall("setValue", QVariant::fromValue(0));
// Sleep
if (m_sleep) {
QDBusInterface iface("com.cutefish.Session",
"/Session",
"com.cutefish.Session", QDBusConnection::sessionBus());
if (iface.isValid()) {
iface.call("suspend");
}
}
if (m_lock) {
QProcess::startDetached("cutefish-screenlocker", QStringList());
}
} else if (sec == (m_dimOnIdleTime * 3 / 4)) { } else if (sec == (m_dimOnIdleTime * 3 / 4)) {
const int newBrightness = qRound(m_oldScreenBrightness / 8.0); const int newBrightness = qRound(m_oldScreenBrightness / 8.0);
m_iface.asyncCall("setValue", QVariant::fromValue(newBrightness)); m_iface.asyncCall("setValue", QVariant::fromValue(newBrightness));
@ -94,3 +111,13 @@ void DimDisplayAction::setTimeout(int timeout)
registerIdleTimeout(m_dimOnIdleTime / 2); registerIdleTimeout(m_dimOnIdleTime / 2);
registerIdleTimeout(m_dimOnIdleTime); registerIdleTimeout(m_dimOnIdleTime);
} }
void DimDisplayAction::setSleep(bool sleep)
{
m_sleep = sleep;
}
void DimDisplayAction::setLock(bool lock)
{
m_lock = lock;
}

@ -34,12 +34,16 @@ public:
void onWakeupFromIdle() override; void onWakeupFromIdle() override;
void onIdleTimeout(int msec) override; void onIdleTimeout(int msec) override;
void setTimeout(int timeout) override; void setTimeout(int timeout) override;
void setSleep(bool sleep);
void setLock(bool lock);
private: private:
QDBusInterface m_iface; QDBusInterface m_iface;
int m_dimOnIdleTime = 0; int m_dimOnIdleTime = 0;
int m_oldScreenBrightness = 0; int m_oldScreenBrightness = 0;
bool m_dimmed = false; bool m_dimmed = false;
bool m_sleep = false;
bool m_lock = false;
}; };
#endif // DIMDISPLAYACTION_H #endif // DIMDISPLAYACTION_H

Loading…
Cancel
Save