Skip to content

Commit 5f4aaea

Browse files
authored
chore: adapt to Qt6 (linuxdeepin#120)
as title Log: as title
1 parent de142a7 commit 5f4aaea

File tree

16 files changed

+167
-204
lines changed

16 files changed

+167
-204
lines changed

CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
1010
endif ()
1111
include(GNUInstallDirs)
1212

13+
set(QT_VERSION_MAJOR 6)
14+
set(DTK_VERSION_MAJOR 6)
15+
1316
macro(install_symlink filepath wantsdir)
1417
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/link/${wantsdir}/)
1518
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_INSTALL_PREFIX}/lib/systemd/user/${filepath} ${PROJECT_BINARY_DIR}/link/${wantsdir}/${filepath})

dbus/types/sessionpathlist.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@
1313

1414
typedef QList<SessionPath> SessionPathList;
1515

16+
inline bool operator !=(const SessionPathList &list1, const SessionPathList &list2)
17+
{
18+
return list1.size() != list2.size() || list1 != list2;
19+
}
20+
1621
Q_DECLARE_METATYPE(SessionPathList)
1722

1823
void registerSessionPathListMetaType();

debian/control

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,16 @@ Maintainer: Deepin Packages Builder <[email protected]>
55
Build-Depends:
66
cmake,
77
debhelper-compat (= 11),
8-
libdtkcore-dev (>=5.4.14),
9-
libdtkcore5-bin,
8+
libdtk6core-dev,
9+
libdtk6core-bin,
1010
libglib2.0-dev,
11-
libgsettings-qt-dev,
1211
libsecret-1-dev,
1312
libsystemd-dev,
1413
libx11-dev,
1514
libxcursor-dev,
1615
libxfixes-dev,
1716
pkg-config,
18-
qtbase5-dev,
17+
qt6-base-dev,
1918
Standards-Version: 4.1.3
2019
Homepage: https://www.deepin.org
2120

src/CMakeLists.txt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1-
find_package(DtkTools REQUIRED)
1+
# SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd.
2+
#
3+
# SPDX-License-Identifier: CC0-1.0
4+
5+
find_package(Dtk${DTK_VERSION_MAJOR} REQUIRED COMPONENTS Tools)
26

37
set(CMAKE_INCLUDE_CURRENT_DIR ON)
48

@@ -9,13 +13,13 @@ set(CMAKE_CXX_FLAGS "-W -Wall -fPIC -fstack-protector-all -z relro -z noexecstac
913
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/dbusinterface/)
1014
set(QT_DBUS_INTERFACE_INCLUDE ${PROJECT_BINARY_DIR}/dbusinterface/)
1115

12-
macro(qt5_add_dbus_interface_fix srcs xml class file)
16+
macro(qt_add_dbus_interface_fix srcs xml class file)
1317
execute_process(COMMAND ${DTK_XML2CPP} -c ${class} -p ${PROJECT_BINARY_DIR}/dbusinterface/${file} ${PROJECT_SOURCE_DIR}/dbus/interface/${xml})
1418
list(APPEND ${srcs}
1519
${PROJECT_BINARY_DIR}/dbusinterface/${file}.h
1620
${PROJECT_BINARY_DIR}/dbusinterface/${file}.cpp
1721
)
18-
endmacro(qt5_add_dbus_interface_fix)
22+
endmacro(qt_add_dbus_interface_fix)
1923

2024
# qtdbusextended
2125
set(DBUS_INCLUDE ${PROJECT_SOURCE_DIR}/dbus/)

src/dde-session-ctl/CMakeLists.txt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
1-
#find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED)
2-
find_package(Qt5 COMPONENTS Core DBus REQUIRED)
1+
# SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
2+
#
3+
# SPDX-License-Identifier: CC0-1.0
4+
5+
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core DBus)
36
set(CMAKE_AUTOUIC ON)
47
set(CMAKE_AUTOMOC ON)
58
set(CMAKE_AUTORCC ON)
6-
qt5_add_dbus_interface(DBUS_SOURCES
9+
qt_add_dbus_interface(DBUS_SOURCES
710
../../dbus/adaptor/org.deepin.dde.Session1.xml
811
Session
912
)
1013

1114
add_executable(dde-session-ctl
12-
main.cpp
13-
${DBUS_SOURCES}
14-
../../dbus/adaptor/org.deepin.dde.Session1.xml
15+
main.cpp
16+
${DBUS_SOURCES}
17+
../../dbus/adaptor/org.deepin.dde.Session1.xml
1518
)
1619
target_link_libraries(dde-session-ctl
1720
Qt${QT_VERSION_MAJOR}::Core

src/dde-session/CMakeLists.txt

Lines changed: 34 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,55 @@
1-
#find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED)
2-
find_package(Qt5 COMPONENTS Core Concurrent DBus REQUIRED)
3-
find_package(DtkCore REQUIRED)
1+
# SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd.
2+
#
3+
# SPDX-License-Identifier: CC0-1.0
4+
5+
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Concurrent DBus REQUIRED)
6+
find_package(Dtk${DTK_VERSION_MAJOR} REQUIRED COMPONENTS Core)
47
set(CMAKE_AUTOUIC ON)
58
set(CMAKE_AUTOMOC ON)
69
set(CMAKE_AUTORCC ON)
710
find_package(PkgConfig REQUIRED)
811
pkg_check_modules(Systemd REQUIRED IMPORTED_TARGET libsystemd)
9-
pkg_check_modules(QGSettings REQUIRED IMPORTED_TARGET gsettings-qt)
1012
pkg_check_modules(GLIB2 REQUIRED IMPORTED_TARGET glib-2.0)
1113
pkg_check_modules(GIO2 REQUIRED IMPORTED_TARGET gio-2.0)
1214
pkg_check_modules(XCURSOR REQUIRED IMPORTED_TARGET xcursor)
1315
pkg_check_modules(XFIXES REQUIRED IMPORTED_TARGET xfixes)
1416
pkg_check_modules(X11 REQUIRED IMPORTED_TARGET x11)
1517

1618
# dbus adaptor
17-
qt5_add_dbus_adaptor(ADAPTER_SOURCES
19+
qt_add_dbus_adaptor(ADAPTER_SOURCES
1820
../../dbus/adaptor/org.deepin.dde.Session1.xml
1921
impl/session.h
20-
Session)
21-
qt5_add_dbus_adaptor(ADAPTER_SOURCES
22+
Session
23+
)
24+
qt_add_dbus_adaptor(ADAPTER_SOURCES
2225
../../dbus/adaptor/org.deepin.dde.SessionManager1.xml
2326
impl/sessionmanager.h
24-
SessionManager)
25-
qt5_add_dbus_adaptor(ADAPTER_SOURCES
27+
SessionManager
28+
)
29+
qt_add_dbus_adaptor(ADAPTER_SOURCES
2630
../../dbus/adaptor/org.deepin.dde.Inhibitor1.xml
2731
impl/inhibitor.h
28-
Inhibitor)
29-
qt5_add_dbus_adaptor(ADAPTER_SOURCES
32+
Inhibitor
33+
)
34+
qt_add_dbus_adaptor(ADAPTER_SOURCES
3035
../../dbus/adaptor/org.deepin.dde.WMSwitcher1.xml
3136
impl/wmswitcher.h
32-
WMSwitcher)
37+
WMSwitcher
38+
)
3339

3440
# dbus interface
35-
qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.deepin.dde.PowerManager1.xml PowerManager org_deepin_dde_PowerManager1)
36-
qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.deepin.dde.Bluetooth1.xml Bluetooth org_deepin_dde_Bluetooth1)
37-
qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.deepin.dde.Daemon1.xml SessionDaemon org_deepin_dde_Daemon1)
38-
qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.login1.Manager.xml Login1Manager org_freedesktop_login1_Manager)
39-
qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.login1.Session.xml Login1Session org_freedesktop_login1_Session)
40-
qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.login1.User.xml Login1User org_freedesktop_login1_User)
41-
qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.DBus.xml DBus org_freedesktop_DBus)
42-
qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.systemd1.Manager.xml Systemd1Manager org_freedesktop_systemd1_Manager)
43-
qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.systemd1.Job.xml Systemd1Job org_freedesktop_systemd1_Job)
44-
qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.deepin.dde.Audio1.xml Audio1 org_deepin_dde_Audio1)
45-
qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.deepin.dde.Audio1.Sink.xml Sink org_deepin_dde_Audio1_Sink)
46-
qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.deepin.dde.SoundThemePlayer1.xml SoundThemePlayer org_deepin_dde_SoundThemePlayer1)
47-
qt5_add_dbus_interface_fix(INTERFACE_SOURCES com.deepin.wm.xml DeepinWm com_deepin_Wm)
41+
qt_add_dbus_interface_fix(INTERFACE_SOURCES org.deepin.dde.PowerManager1.xml PowerManager org_deepin_dde_PowerManager1)
42+
qt_add_dbus_interface_fix(INTERFACE_SOURCES org.deepin.dde.Bluetooth1.xml Bluetooth org_deepin_dde_Bluetooth1)
43+
qt_add_dbus_interface_fix(INTERFACE_SOURCES org.deepin.dde.Daemon1.xml SessionDaemon org_deepin_dde_Daemon1)
44+
qt_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.login1.Manager.xml Login1Manager org_freedesktop_login1_Manager)
45+
qt_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.login1.Session.xml Login1Session org_freedesktop_login1_Session)
46+
qt_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.login1.User.xml Login1User org_freedesktop_login1_User)
47+
qt_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.DBus.xml DBus org_freedesktop_DBus)
48+
qt_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.systemd1.Manager.xml Systemd1Manager org_freedesktop_systemd1_Manager)
49+
qt_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.systemd1.Job.xml Systemd1Job org_freedesktop_systemd1_Job)
50+
qt_add_dbus_interface_fix(INTERFACE_SOURCES org.deepin.dde.Audio1.xml Audio1 org_deepin_dde_Audio1)
51+
qt_add_dbus_interface_fix(INTERFACE_SOURCES org.deepin.dde.Audio1.Sink.xml Sink org_deepin_dde_Audio1_Sink)
52+
qt_add_dbus_interface_fix(INTERFACE_SOURCES com.deepin.wm.xml DeepinWm com_deepin_Wm)
4853

4954
file(GLOB_RECURSE DBUS_TYPES ${PROJECT_SOURCE_DIR}/dbus/types/*)
5055

@@ -74,26 +79,25 @@ add_executable(dde-session
7479
${ADAPTER_SOURCES}
7580
${INTERFACE_SOURCES}
7681
${DBUS_TYPES}
77-
)
82+
)
7883

7984
target_link_libraries(dde-session
8085
Qt${QT_VERSION_MAJOR}::Core
8186
Qt${QT_VERSION_MAJOR}::DBus
8287
Qt${QT_VERSION_MAJOR}::Concurrent
8388
PkgConfig::Systemd
84-
${DtkCore_LIBRARIES}
89+
Dtk${DTK_VERSION_MAJOR}::Core
8590
PkgConfig::GLIB2
8691
PkgConfig::GIO2
87-
PkgConfig::QGSettings
8892
PkgConfig::XCURSOR
8993
PkgConfig::XFIXES
9094
PkgConfig::X11
91-
)
95+
)
9296

9397
target_include_directories(dde-session PUBLIC
9498
../
9599
${QT_DBUS_INTERFACE_INCLUDE}
96100
${DBUS_INCLUDE}
97-
)
101+
)
98102

99103
install(TARGETS dde-session DESTINATION ${CMAKE_INSTALL_BINDIR})

src/dde-session/environmentsmanager.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,16 @@ void EnvironmentsManager::init()
7474

7575
void EnvironmentsManager::createGeneralEnvironments()
7676
{
77-
double scaleFactor = Utils::SettingValue("com.deepin.xsettings", QByteArray(), "scale-factor", 1.0).toDouble();
77+
double scaleFactor = 1.0;
78+
QDBusInterface dbusInterface("org.deepin.dde.XSettings1", "/org/deepin/dde/XSettings1",
79+
"org.deepin.dde.XSettings1", QDBusConnection::sessionBus());
80+
if (dbusInterface.isValid()) {
81+
QDBusReply<double> scaleFactorReply = dbusInterface.call("GetScaleFactor");
82+
if (scaleFactorReply.isValid()) {
83+
scaleFactor = scaleFactorReply.value();
84+
}
85+
}
86+
7887
auto envs = QProcessEnvironment::systemEnvironment();
7988
auto keys = envs.keys();
8089

src/dde-session/impl/sessionmanager.cpp

Lines changed: 47 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,10 @@
88
#include "utils/dconf.h"
99
#include "utils/utils.h"
1010
#include "org_deepin_dde_Audio1_Sink.h"
11-
#include "org_deepin_dde_SoundThemePlayer1.h"
1211

1312
#include <QCoreApplication>
1413
#include <QDBusReply>
1514
#include <QDBusObjectPath>
16-
#include <QGSettings>
1715
#include <QStandardPaths>
1816
#include <QJsonDocument>
1917

@@ -89,6 +87,14 @@ SessionManager::SessionManager(QObject *parent)
8987
if (canPlayEvent("desktop-login")) {
9088
playLoginSound();
9189
}
90+
91+
auto appearanceConfig = DConfig::create("org.deepin.dde.appearance", "org.deepin.dde.appearance", QString(), this);
92+
m_soundTheme = appearanceConfig->value("Sound_Theme", "deepin").toString();
93+
connect(appearanceConfig, &DConfig::valueChanged, this, [this, appearanceConfig] (const QString &key) {
94+
if (key == "Sound_Theme") {
95+
m_soundTheme = appearanceConfig->value("Sound_Theme", "deepin").toString();
96+
}
97+
});
9298
}
9399

94100
SessionManager::~SessionManager()
@@ -667,15 +673,14 @@ void SessionManager::preparePlayShutdownSound()
667673
{
668674
const QString &soundFile = "/tmp/deepin-shutdown-sound.json";
669675

670-
const QString &soundTheme = Utils::SettingValue(APPEARANCE_SCHEMA, QByteArray(), APPEARANCE_SOUND_THEME_KEY, QString()).toString();
671676
const QString &event = "system-shutdown";
672677
bool canPlay = canPlayEvent(event);
673678
QString device; // TODO
674679

675680
QJsonObject obj;
676681
obj["Event"] = event;
677682
obj["CanPlay"] = canPlay;
678-
obj["Theme"] = soundTheme;
683+
obj["Theme"] = m_soundTheme;
679684
obj["Device"] = device;
680685

681686
QFile file(soundFile);
@@ -693,15 +698,38 @@ bool SessionManager::canPlayEvent(const QString &event)
693698
return false;
694699
}
695700

696-
if (!Utils::SettingValue(SOUND_EFFECT_SCHEMA, QByteArray(), SOUND_EFFECT_ENABLED_KEY, false).toBool()) {
701+
const QString service = "org.deepin.dde.SoundEffect1";
702+
const QString path = "/org/deepin/dde/SoundEffect1";
703+
const QString interface = "org.freedesktop.DBus.Properties";
704+
const QString methodInterface = "org.deepin.dde.SoundEffect1";
705+
706+
QDBusInterface dbusInterface(service, path, interface, QDBusConnection::sessionBus());
707+
if (!dbusInterface.isValid()) {
697708
return false;
698709
}
699710

700-
if (!Utils::SettingValue(SOUND_EFFECT_SCHEMA, QByteArray(), event, false).toBool()) {
711+
QDBusReply<bool> enabledReply = dbusInterface.call("Get", service, "Enabled");
712+
if (enabledReply.isValid()) {
713+
if (!enabledReply.value()) {
714+
return false;
715+
}
716+
} else {
717+
qWarning() << "Failed to call Get:" << enabledReply.error().message();
701718
return false;
702719
}
703720

704-
return true;
721+
QDBusInterface methodInterfaceObj(service, path, methodInterface, QDBusConnection::sessionBus());
722+
if (!methodInterfaceObj.isValid()) {
723+
return false;
724+
}
725+
726+
QDBusReply<bool> isSoundEnabledReply = methodInterfaceObj.call("IsSoundEnabled", event);
727+
if (isSoundEnabledReply.isValid()) {
728+
return isSoundEnabledReply.value();
729+
}
730+
731+
qWarning() << "Failed to call IsSoundEnabled:" << event << isSoundEnabledReply.error().message();
732+
return false;
705733
}
706734

707735
void SessionManager::playLoginSound()
@@ -735,14 +763,7 @@ void SessionManager::playLoginSound()
735763
return;
736764

737765
qInfo() << "play system sound: desktop-login";
738-
auto soundTheme = Utils::SettingValue(APPEARANCE_SCHEMA, QByteArray(), APPEARANCE_SOUND_THEME_KEY, QString()).toString();
739-
org::deepin::dde::SoundThemePlayer1 inter("org.deepin.dde.SoundThemePlayer1", "/org/deepin/dde/SoundThemePlayer1", QDBusConnection::systemBus(), this);
740-
QDBusPendingReply<> reply = inter.Play(soundTheme, "desktop-login", QString());
741-
if (reply.isError()) {
742-
qWarning() << "failed to play login sound, error: " << reply.error().name();
743-
} else {
744-
qDebug() << "success to play system sound: desktop-login";
745-
}
766+
playSound("desktop-login");
746767

747768
// 播放后创建文件
748769
QFile file(markFile);
@@ -776,13 +797,7 @@ void SessionManager::playLogoutSound()
776797
// 始终在注销前退出pulseaudio服务
777798
stopPulseAudioService();
778799

779-
auto soundTheme = Utils::SettingValue(APPEARANCE_SCHEMA, QByteArray(), APPEARANCE_SOUND_THEME_KEY, QString()).toString();
780-
org::deepin::dde::SoundThemePlayer1 inter("org.deepin.dde.SoundThemePlayer1", "/org/deepin/dde/SoundThemePlayer1", QDBusConnection::systemBus(), this);
781-
// TODO device?
782-
QDBusReply<void> reply = inter.Play(soundTheme, "desktop-logout", "");
783-
if (!reply.isValid()) {
784-
qWarning() << "failed to play logout sound, error: " << reply.error().name();
785-
}
800+
playSound("desktop-logout");
786801
}
787802

788803
void SessionManager::setDPMSMode(bool on)
@@ -880,6 +895,16 @@ void SessionManager::emitCurrentUidChanged(QString uid)
880895
// 这个属性不会变化
881896
}
882897

898+
inline void SessionManager::playSound(const QString &event)
899+
{
900+
QDBusInterface soundPlayerInter("org.deepin.dde.SoundThemePlayer1", "/org/deepin/dde/SoundThemePlayer1",
901+
"org.deepin.dde.SoundThemePlayer1", QDBusConnection::systemBus());
902+
QDBusMessage reply = soundPlayerInter.call("Play", m_soundTheme, event, QString());
903+
if (reply.type() == QDBusMessage::ErrorMessage) {
904+
qWarning() << "Failed to call Play:" << event << reply.errorMessage();
905+
}
906+
}
907+
883908
void SessionManager::handleLoginSessionLocked()
884909
{
885910
qDebug() << "login session locked." << locked();

src/dde-session/impl/sessionmanager.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,8 @@ public Q_SLOTS:
113113
void emitCurrentSessionPathChanged(QDBusObjectPath);
114114
void emitCurrentUidChanged(QString);
115115

116+
void playSound(const QString &event);
117+
116118
private Q_SLOTS:
117119
void handleLoginSessionLocked();
118120
void handleLoginSessionUnlocked();
@@ -126,6 +128,7 @@ private Q_SLOTS:
126128
private:
127129
bool m_locked;
128130
QString m_currentUid;
131+
QString m_soundTheme;
129132
int m_stage;
130133
QDBusObjectPath m_currentSessionPath;
131134

src/dde-session/main.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ int main(int argc, char *argv[])
131131
OthersManager().init();
132132
});
133133

134+
#if 0 //TODO has no 'com.deepin.dde.startdde' gsetting
134135
// cpu iowait状态检测
135136
if (Utils::SettingValue("com.deepin.dde.startdde", QByteArray(), "iowait-enabled", false).toBool()) {
136137
QtConcurrent::run([] {
@@ -140,6 +141,8 @@ int main(int argc, char *argv[])
140141
} else {
141142
qInfo() << "iowait watcher disabled";
142143
}
144+
#endif
145+
qInfo() << "iowait watcher disabled";
143146

144147
QtConcurrent::run([&session](){
145148
qInfo()<< "systemd service pipe thread id: " << QThread::currentThreadId();

0 commit comments

Comments
 (0)