189 lines
7.4 KiB
Diff
189 lines
7.4 KiB
Diff
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
|
||
|