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
|
|||
|
|
|