kiran-screensaver/0000-feature-idle-lock-add-idle-activation-lock-gsettings-a7ecb4a2.patch

189 lines
7.4 KiB
Diff
Raw Normal View History

From a7ecb4a280029c94d743dd20a23baac75f20c930 Mon Sep 17 00:00:00 2001
From: liuxinhao <liuxinhao@kylinos.com.cn>
Date: Tue, 21 Dec 2021 15:51:41 +0800
Subject: [PATCH] feature(idle lock): add idle-activation-lock gsettings option
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 添加空闲时是否锁定屏幕GSettings配置项
---
...com.kylinsec.kiran.screensaver.gschema.xml | 8 +++----
src/idle-watcher/idle-watcher-mate.cpp | 1 +
src/manager.cpp | 12 +++++++---
src/prefs.cpp | 23 +++++++++++--------
src/prefs.h | 6 ++++-
src/view/window.cpp | 2 +-
6 files changed, 33 insertions(+), 19 deletions(-)
diff --git a/data/com.kylinsec.kiran.screensaver.gschema.xml b/data/com.kylinsec.kiran.screensaver.gschema.xml
index d5d77e6..17b6f20 100644
--- a/data/com.kylinsec.kiran.screensaver.gschema.xml
+++ b/data/com.kylinsec.kiran.screensaver.gschema.xml
@@ -5,10 +5,10 @@
<default>"/usr/lib64/kiran-screensaver/libkiran-screensaver-dialog.so"</default>
</key>
-<!-- <key name="idle-activation-lock" type="b">-->
-<!-- <default>true</default>-->
-<!-- <description>空闲时是否锁定</description>-->
-<!-- </key>-->
+ <key name="idle-activation-lock" type="b">
+ <default>true</default>
+ <description>空闲时是否锁定</description>
+ </key>
<key name="can-logout" type="b">
<default>true</default>
diff --git a/src/idle-watcher/idle-watcher-mate.cpp b/src/idle-watcher/idle-watcher-mate.cpp
index f562022..0cba668 100644
--- a/src/idle-watcher/idle-watcher-mate.cpp
+++ b/src/idle-watcher/idle-watcher-mate.cpp
@@ -97,6 +97,7 @@ bool IdleWatcherMate::setIdleDetectionActive(bool idleDetectionActive)
m_idle = false;
m_idleNotice = false;
+ //NOTE:由于空闲预告阶段会抓取鼠标键盘到屏幕外,所以空闲预告阶段不会出现设置空闲检测的情况,暂时不需要考虑特殊情况
if(m_idleTimerID != 0)
{
killTimer(m_idleTimerID);
diff --git a/src/manager.cpp b/src/manager.cpp
index 8c26da9..87041ca 100644
--- a/src/manager.cpp
+++ b/src/manager.cpp
@@ -137,9 +137,15 @@ bool Manager::initIdleWatcher()
connect(m_idleWatcher,&IdleWatcher::idleChanged,this, &Manager::onWatcherIdleChanged,Qt::DirectConnection);
connect(m_idleWatcher,&IdleWatcher::idleNoticeChanged,this, &Manager::onWatcherIdleNoticeChanged,Qt::DirectConnection);
- m_idleWatcher->setEnabled(true);
- m_idleWatcher->setIdleDetectionActive(true);
-
+ m_idleWatcher->setEnabled(m_prefs->getIdleActivationLock());
+ m_idleWatcher->setIdleDetectionActive(m_prefs->getIdleActivationLock());
+
+ //连接至GSettings变化判断是否开启空闲时锁屏,同步空闲监控器状态
+ connect(m_prefs,&Prefs::idleActivationLockChanged,[this](bool idleActivationLock){
+ KLOG_DEBUG() << "prefs idle activation lock changed:" << idleActivationLock << " update idle watcher enable";
+ m_idleWatcher->setEnabled(idleActivationLock);
+ m_idleWatcher->setIdleDetectionActive(idleActivationLock);
+ });
return true;
}
diff --git a/src/prefs.cpp b/src/prefs.cpp
index bd34bbd..3e654a9 100644
--- a/src/prefs.cpp
+++ b/src/prefs.cpp
@@ -26,11 +26,11 @@
}
#define SCHEMA_KIRAN_SCREENSAVER "com.kylinsec.kiran.screensaver"
-#define KEY_IDLE_ACTIVATION_LOCK "idle-activation-lock"
-#define KEY_CAN_LOGOUT "can-logout"
-#define KEY_CAN_USER_SWITCH "can-user-switch"
-#define KEY_ENABLE_ANIMATION "enable-animation"
-#define KEY_SCREENSAVER_LOCKER "screensaver-locker"
+#define KEY_IDLE_ACTIVATION_LOCK "idleActivationLock"
+#define KEY_CAN_LOGOUT "canLogout"
+#define KEY_CAN_USER_SWITCH "canUserSwitch"
+#define KEY_ENABLE_ANIMATION "enableAnimation"
+#define KEY_SCREENSAVER_LOCKER "screensaverLocker"
using namespace Kiran::ScreenSaver;
@@ -58,7 +58,7 @@ bool Prefs::init()
KLOG_WARNING() << "can't connect screensaver settings changed!";
}
- //m_idleActivationLock = m_screensaverSettings->get(KEY_IDLE_ACTIVATION_LOCK).toBool();
+ m_idleActivationLock = m_screensaverSettings->get(KEY_IDLE_ACTIVATION_LOCK).toBool();
m_canLogout = m_screensaverSettings->get(KEY_CAN_LOGOUT).toBool();
m_canUserSwitch = m_screensaverSettings->get(KEY_CAN_USER_SWITCH).toBool();
m_enableAnimation = m_screensaverSettings->get(KEY_ENABLE_ANIMATION).toBool();
@@ -66,7 +66,7 @@ bool Prefs::init()
///输出设置项
KLOG_DEBUG() << "load kiran-screensaver prefs:";
- //KLOG_DEBUG() << "\t" KEY_IDLE_ACTIVATION_LOCK << m_idleActivationLock;
+ KLOG_DEBUG() << "\t" KEY_IDLE_ACTIVATION_LOCK << m_idleActivationLock;
KLOG_DEBUG() << "\t" KEY_CAN_LOGOUT << m_canLogout;
KLOG_DEBUG() << "\t" KEY_CAN_USER_SWITCH << m_canUserSwitch;
KLOG_DEBUG() << "\t" KEY_ENABLE_ANIMATION << m_enableAnimation;
@@ -91,14 +91,12 @@ bool Prefs::getCanUserSwitch() const
return m_canUserSwitch;
}
-/*
void Prefs::setIdleActivationLock(bool idleActivationLock)
{
RETURN_IF_SAME(m_idleActivationLock, idleActivationLock);
m_idleActivationLock = idleActivationLock;
m_screensaverSettings->set(KEY_IDLE_ACTIVATION_LOCK, m_idleActivationLock);
}
-*/
void Prefs::setCanLogout(bool canLogout)
{
@@ -117,7 +115,7 @@ void Prefs::setCanUserSwitch(bool canUserSwitch)
void Prefs::handleGSettingsChanged(const QString& key)
{
const QMap<QString, bool*> boolKeyMap = {
- //{KEY_IDLE_ACTIVATION_LOCK, &m_idleActivationLock},
+ {KEY_IDLE_ACTIVATION_LOCK, &m_idleActivationLock},
{KEY_CAN_LOGOUT, &m_canLogout},
{KEY_CAN_USER_SWITCH, &m_canUserSwitch},
{KEY_ENABLE_ANIMATION,&m_enableAnimation}
@@ -128,6 +126,11 @@ void Prefs::handleGSettingsChanged(const QString& key)
{
*boolIter.value() = m_screensaverSettings->get(boolIter.key()).toBool();
}
+ qInfo() << "keyChanged" << key;
+ if( key == KEY_IDLE_ACTIVATION_LOCK )
+ {
+ emit idleActivationLockChanged(m_idleActivationLock);
+ }
}
bool Prefs::getEnableAnimation() const
diff --git a/src/prefs.h b/src/prefs.h
index 797bdfe..30431d3 100644
--- a/src/prefs.h
+++ b/src/prefs.h
@@ -30,6 +30,7 @@ namespace ScreenSaver
{
class Prefs : public QObject
{
+ Q_OBJECT
public:
static Prefs* getInstance();
~Prefs() override;
@@ -48,8 +49,11 @@ public:
QString getLockerPluginPath() const;
+signals:
+ void idleActivationLockChanged(bool idleActivationLock);
+
private:
- //void setIdleActivationLock(bool idleActivationLock);
+ void setIdleActivationLock(bool idleActivationLock);
void setCanLogout(bool canLogout);
void setCanUserSwitch(bool canUserSwitch);
void setEnableAnimation(bool enableAnimation);
diff --git a/src/view/window.cpp b/src/view/window.cpp
index b05dd81..c826e97 100644
--- a/src/view/window.cpp
+++ b/src/view/window.cpp
@@ -80,7 +80,7 @@ void Window::setScreen(QScreen *screen)
{
setObjectName(QString("screen_background_%1").arg(screen->name()));
connect(screen, &QScreen::geometryChanged,
- this, &Window::handleScreenGeometryChanged);
+ this, &Window::handleScreenGeometryChanged );
}
else
{
--
2.27.0