/
screensavercontrol.cpp
42 lines (36 loc) · 1.5 KB
/
screensavercontrol.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include "screensavercontrol.h"
#include <QDebug>
#include <QProcess>
#include <QDBusConnection>
#include <QDBusMessage>
#include <dgiosettings.h>
#define DESKTOP_CAN_SCREENSAVER "DESKTOP_CAN_SCREENSAVER"
bool needShowScreensaver()
{
//1 判断环境变量
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
if ((env.contains(DESKTOP_CAN_SCREENSAVER) && env.value(DESKTOP_CAN_SCREENSAVER).startsWith("N")))
{
qDebug() << "System environment variables do not support screen savers";
return false;
}
#ifndef DISABLE_SCREENSAVER
//2 判断是否安装屏保程序
QDBusMessage msg = QDBusMessage::createMethodCall("org.freedesktop.DBus", "/org/freedesktop/DBus", "org.freedesktop.DBus", "ListActivatableNames");
QDBusMessage response = QDBusConnection::sessionBus().call(msg);
if(response.type() == QDBusMessage::ReplyMessage
&& response.arguments().takeFirst().toList().contains("com.deepin.ScreenSaver")){
qDebug() << "com.deepin.ScreenSaver is ok";
}else {
qDebug() << "The screen saver is uninstalled";
return false;
}
#endif
//3 Gsetting 判断屏保是否可用...
DGioSettings desktopSettings("com.deepin.dde.filemanager.desktop", "/com/deepin/dde/filemanager/desktop/");
if (desktopSettings.keys().contains("show-screen-saver") && false == desktopSettings.value("show-screen-saver").toBool()) {
qDebug() << "Gsetting show-screen-saver is false";
return false;
}
return true;
}