kiran-screensaver/0000-feature-idle-lock-add-idle-activation-lock-gsettings-a7ecb4a2.patch
kylinsecos_admin aeb8f3020c First submission of source code
将补丁内容更改到tar里

Signed-off-by: kylinsecos_admin <gitee@kylinos.com.cn>
2022-01-25 09:26:22 +08:00

189 lines
7.4 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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