From 9d69186ec727702f31633d87c2bd86551048a964 Mon Sep 17 00:00:00 2001 From: zhaoyingzhen Date: Thu, 23 Jan 2025 16:58:24 +0800 Subject: [PATCH] chore: adapt to Qt6 as title Log: as title --- CMakeLists.txt | 3 + dbus/types/sessionpathlist.h | 5 + debian/control | 7 +- src/CMakeLists.txt | 10 +- src/dde-session-ctl/CMakeLists.txt | 15 ++- src/dde-session/CMakeLists.txt | 64 ++++++----- src/dde-session/environmentsmanager.cpp | 11 +- src/dde-session/impl/sessionmanager.cpp | 69 ++++++++---- src/dde-session/impl/sessionmanager.h | 3 + src/dde-session/main.cpp | 3 + src/utils/utils.h | 104 ------------------ tools/dde-login-reminder/CMakeLists.txt | 12 +- tools/dde-login-reminder/main.cpp | 10 +- tools/dde-version-checker/CMakeLists.txt | 7 +- tools/dde-xsettings-checker/CMakeLists.txt | 12 +- .../xsettingschecker.cpp | 36 ++++-- 16 files changed, 167 insertions(+), 204 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9745499..56d083e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,9 @@ if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) endif () include(GNUInstallDirs) +set(QT_VERSION_MAJOR 6) +set(DTK_VERSION_MAJOR 6) + macro(install_symlink filepath wantsdir) file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/link/${wantsdir}/) execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_INSTALL_PREFIX}/lib/systemd/user/${filepath} ${PROJECT_BINARY_DIR}/link/${wantsdir}/${filepath}) diff --git a/dbus/types/sessionpathlist.h b/dbus/types/sessionpathlist.h index 03a1eb2..111ee77 100644 --- a/dbus/types/sessionpathlist.h +++ b/dbus/types/sessionpathlist.h @@ -13,6 +13,11 @@ typedef QList SessionPathList; +inline bool operator !=(const SessionPathList &list1, const SessionPathList &list2) +{ + return list1.size() != list2.size() || list1 != list2; +} + Q_DECLARE_METATYPE(SessionPathList) void registerSessionPathListMetaType(); diff --git a/debian/control b/debian/control index f2607e5..d5b89b8 100644 --- a/debian/control +++ b/debian/control @@ -5,17 +5,16 @@ Maintainer: Deepin Packages Builder Build-Depends: cmake, debhelper-compat (= 11), - libdtkcore-dev (>=5.4.14), - libdtkcore5-bin, + libdtk6core-dev, + libdtk6core-bin, libglib2.0-dev, - libgsettings-qt-dev, libsecret-1-dev, libsystemd-dev, libx11-dev, libxcursor-dev, libxfixes-dev, pkg-config, - qtbase5-dev, + qt6-base-dev, Standards-Version: 4.1.3 Homepage: https://www.deepin.org diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 833bbde..4391b48 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,4 +1,8 @@ -find_package(DtkTools REQUIRED) +# SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd. +# +# SPDX-License-Identifier: CC0-1.0 + +find_package(Dtk${DTK_VERSION_MAJOR} REQUIRED COMPONENTS Tools) set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -9,13 +13,13 @@ set(CMAKE_CXX_FLAGS "-W -Wall -fPIC -fstack-protector-all -z relro -z noexecstac file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/dbusinterface/) set(QT_DBUS_INTERFACE_INCLUDE ${PROJECT_BINARY_DIR}/dbusinterface/) -macro(qt5_add_dbus_interface_fix srcs xml class file) +macro(qt_add_dbus_interface_fix srcs xml class file) execute_process(COMMAND ${DTK_XML2CPP} -c ${class} -p ${PROJECT_BINARY_DIR}/dbusinterface/${file} ${PROJECT_SOURCE_DIR}/dbus/interface/${xml}) list(APPEND ${srcs} ${PROJECT_BINARY_DIR}/dbusinterface/${file}.h ${PROJECT_BINARY_DIR}/dbusinterface/${file}.cpp ) -endmacro(qt5_add_dbus_interface_fix) +endmacro(qt_add_dbus_interface_fix) # qtdbusextended set(DBUS_INCLUDE ${PROJECT_SOURCE_DIR}/dbus/) diff --git a/src/dde-session-ctl/CMakeLists.txt b/src/dde-session-ctl/CMakeLists.txt index 33fd3a0..491bbc5 100644 --- a/src/dde-session-ctl/CMakeLists.txt +++ b/src/dde-session-ctl/CMakeLists.txt @@ -1,17 +1,20 @@ -#find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) -find_package(Qt5 COMPONENTS Core DBus REQUIRED) +# SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +# +# SPDX-License-Identifier: CC0-1.0 + +find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core DBus) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) -qt5_add_dbus_interface(DBUS_SOURCES +qt_add_dbus_interface(DBUS_SOURCES ../../dbus/adaptor/org.deepin.dde.Session1.xml Session ) add_executable(dde-session-ctl - main.cpp - ${DBUS_SOURCES} - ../../dbus/adaptor/org.deepin.dde.Session1.xml + main.cpp + ${DBUS_SOURCES} + ../../dbus/adaptor/org.deepin.dde.Session1.xml ) target_link_libraries(dde-session-ctl Qt${QT_VERSION_MAJOR}::Core diff --git a/src/dde-session/CMakeLists.txt b/src/dde-session/CMakeLists.txt index 0aa1275..c5c9dca 100644 --- a/src/dde-session/CMakeLists.txt +++ b/src/dde-session/CMakeLists.txt @@ -1,12 +1,14 @@ -#find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) -find_package(Qt5 COMPONENTS Core Concurrent DBus REQUIRED) -find_package(DtkCore REQUIRED) +# SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +# +# SPDX-License-Identifier: CC0-1.0 + +find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Concurrent DBus REQUIRED) +find_package(Dtk${DTK_VERSION_MAJOR} REQUIRED COMPONENTS Core) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) find_package(PkgConfig REQUIRED) pkg_check_modules(Systemd REQUIRED IMPORTED_TARGET libsystemd) -pkg_check_modules(QGSettings REQUIRED IMPORTED_TARGET gsettings-qt) pkg_check_modules(GLIB2 REQUIRED IMPORTED_TARGET glib-2.0) pkg_check_modules(GIO2 REQUIRED IMPORTED_TARGET gio-2.0) pkg_check_modules(XCURSOR REQUIRED IMPORTED_TARGET xcursor) @@ -14,37 +16,40 @@ pkg_check_modules(XFIXES REQUIRED IMPORTED_TARGET xfixes) pkg_check_modules(X11 REQUIRED IMPORTED_TARGET x11) # dbus adaptor -qt5_add_dbus_adaptor(ADAPTER_SOURCES +qt_add_dbus_adaptor(ADAPTER_SOURCES ../../dbus/adaptor/org.deepin.dde.Session1.xml impl/session.h - Session) -qt5_add_dbus_adaptor(ADAPTER_SOURCES + Session +) +qt_add_dbus_adaptor(ADAPTER_SOURCES ../../dbus/adaptor/org.deepin.dde.SessionManager1.xml impl/sessionmanager.h - SessionManager) -qt5_add_dbus_adaptor(ADAPTER_SOURCES + SessionManager +) +qt_add_dbus_adaptor(ADAPTER_SOURCES ../../dbus/adaptor/org.deepin.dde.Inhibitor1.xml impl/inhibitor.h - Inhibitor) -qt5_add_dbus_adaptor(ADAPTER_SOURCES + Inhibitor +) +qt_add_dbus_adaptor(ADAPTER_SOURCES ../../dbus/adaptor/org.deepin.dde.WMSwitcher1.xml impl/wmswitcher.h - WMSwitcher) + WMSwitcher +) # dbus interface -qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.deepin.dde.PowerManager1.xml PowerManager org_deepin_dde_PowerManager1) -qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.deepin.dde.Bluetooth1.xml Bluetooth org_deepin_dde_Bluetooth1) -qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.deepin.dde.Daemon1.xml SessionDaemon org_deepin_dde_Daemon1) -qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.login1.Manager.xml Login1Manager org_freedesktop_login1_Manager) -qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.login1.Session.xml Login1Session org_freedesktop_login1_Session) -qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.login1.User.xml Login1User org_freedesktop_login1_User) -qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.DBus.xml DBus org_freedesktop_DBus) -qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.systemd1.Manager.xml Systemd1Manager org_freedesktop_systemd1_Manager) -qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.systemd1.Job.xml Systemd1Job org_freedesktop_systemd1_Job) -qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.deepin.dde.Audio1.xml Audio1 org_deepin_dde_Audio1) -qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.deepin.dde.Audio1.Sink.xml Sink org_deepin_dde_Audio1_Sink) -qt5_add_dbus_interface_fix(INTERFACE_SOURCES org.deepin.dde.SoundThemePlayer1.xml SoundThemePlayer org_deepin_dde_SoundThemePlayer1) -qt5_add_dbus_interface_fix(INTERFACE_SOURCES com.deepin.wm.xml DeepinWm com_deepin_Wm) +qt_add_dbus_interface_fix(INTERFACE_SOURCES org.deepin.dde.PowerManager1.xml PowerManager org_deepin_dde_PowerManager1) +qt_add_dbus_interface_fix(INTERFACE_SOURCES org.deepin.dde.Bluetooth1.xml Bluetooth org_deepin_dde_Bluetooth1) +qt_add_dbus_interface_fix(INTERFACE_SOURCES org.deepin.dde.Daemon1.xml SessionDaemon org_deepin_dde_Daemon1) +qt_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.login1.Manager.xml Login1Manager org_freedesktop_login1_Manager) +qt_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.login1.Session.xml Login1Session org_freedesktop_login1_Session) +qt_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.login1.User.xml Login1User org_freedesktop_login1_User) +qt_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.DBus.xml DBus org_freedesktop_DBus) +qt_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.systemd1.Manager.xml Systemd1Manager org_freedesktop_systemd1_Manager) +qt_add_dbus_interface_fix(INTERFACE_SOURCES org.freedesktop.systemd1.Job.xml Systemd1Job org_freedesktop_systemd1_Job) +qt_add_dbus_interface_fix(INTERFACE_SOURCES org.deepin.dde.Audio1.xml Audio1 org_deepin_dde_Audio1) +qt_add_dbus_interface_fix(INTERFACE_SOURCES org.deepin.dde.Audio1.Sink.xml Sink org_deepin_dde_Audio1_Sink) +qt_add_dbus_interface_fix(INTERFACE_SOURCES com.deepin.wm.xml DeepinWm com_deepin_Wm) file(GLOB_RECURSE DBUS_TYPES ${PROJECT_SOURCE_DIR}/dbus/types/*) @@ -74,26 +79,25 @@ add_executable(dde-session ${ADAPTER_SOURCES} ${INTERFACE_SOURCES} ${DBUS_TYPES} - ) +) target_link_libraries(dde-session Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::DBus Qt${QT_VERSION_MAJOR}::Concurrent PkgConfig::Systemd - ${DtkCore_LIBRARIES} + Dtk${DTK_VERSION_MAJOR}::Core PkgConfig::GLIB2 PkgConfig::GIO2 - PkgConfig::QGSettings PkgConfig::XCURSOR PkgConfig::XFIXES PkgConfig::X11 - ) +) target_include_directories(dde-session PUBLIC ../ ${QT_DBUS_INTERFACE_INCLUDE} ${DBUS_INCLUDE} - ) +) install(TARGETS dde-session DESTINATION ${CMAKE_INSTALL_BINDIR}) diff --git a/src/dde-session/environmentsmanager.cpp b/src/dde-session/environmentsmanager.cpp index 8eb5d52..ffba1d5 100644 --- a/src/dde-session/environmentsmanager.cpp +++ b/src/dde-session/environmentsmanager.cpp @@ -74,7 +74,16 @@ void EnvironmentsManager::init() void EnvironmentsManager::createGeneralEnvironments() { - double scaleFactor = Utils::SettingValue("com.deepin.xsettings", QByteArray(), "scale-factor", 1.0).toDouble(); + double scaleFactor = 1.0; + QDBusInterface dbusInterface("org.deepin.dde.XSettings1", "/org/deepin/dde/XSettings1", + "org.deepin.dde.XSettings1", QDBusConnection::sessionBus()); + if (dbusInterface.isValid()) { + QDBusReply scaleFactorReply = dbusInterface.call("GetScaleFactor"); + if (scaleFactorReply.isValid()) { + scaleFactor = scaleFactorReply.value(); + } + } + auto envs = QProcessEnvironment::systemEnvironment(); auto keys = envs.keys(); diff --git a/src/dde-session/impl/sessionmanager.cpp b/src/dde-session/impl/sessionmanager.cpp index a9b7ed0..1eecea0 100644 --- a/src/dde-session/impl/sessionmanager.cpp +++ b/src/dde-session/impl/sessionmanager.cpp @@ -8,12 +8,10 @@ #include "utils/dconf.h" #include "utils/utils.h" #include "org_deepin_dde_Audio1_Sink.h" -#include "org_deepin_dde_SoundThemePlayer1.h" #include #include #include -#include #include #include @@ -89,6 +87,14 @@ SessionManager::SessionManager(QObject *parent) if (canPlayEvent("desktop-login")) { playLoginSound(); } + + auto appearanceConfig = DConfig::create("org.deepin.dde.appearance", "org.deepin.dde.appearance", QString(), this); + m_soundTheme = appearanceConfig->value("Sound_Theme", "deepin").toString(); + connect(appearanceConfig, &DConfig::valueChanged, this, [this, appearanceConfig] (const QString &key) { + if (key == "Sound_Theme") { + m_soundTheme = appearanceConfig->value("Sound_Theme", "deepin").toString(); + } + }); } SessionManager::~SessionManager() @@ -667,7 +673,6 @@ void SessionManager::preparePlayShutdownSound() { const QString &soundFile = "/tmp/deepin-shutdown-sound.json"; - const QString &soundTheme = Utils::SettingValue(APPEARANCE_SCHEMA, QByteArray(), APPEARANCE_SOUND_THEME_KEY, QString()).toString(); const QString &event = "system-shutdown"; bool canPlay = canPlayEvent(event); QString device; // TODO @@ -675,7 +680,7 @@ void SessionManager::preparePlayShutdownSound() QJsonObject obj; obj["Event"] = event; obj["CanPlay"] = canPlay; - obj["Theme"] = soundTheme; + obj["Theme"] = m_soundTheme; obj["Device"] = device; QFile file(soundFile); @@ -693,15 +698,38 @@ bool SessionManager::canPlayEvent(const QString &event) return false; } - if (!Utils::SettingValue(SOUND_EFFECT_SCHEMA, QByteArray(), SOUND_EFFECT_ENABLED_KEY, false).toBool()) { + const QString service = "org.deepin.dde.SoundEffect1"; + const QString path = "/org/deepin/dde/SoundEffect1"; + const QString interface = "org.freedesktop.DBus.Properties"; + const QString methodInterface = "org.deepin.dde.SoundEffect1"; + + QDBusInterface dbusInterface(service, path, interface, QDBusConnection::sessionBus()); + if (!dbusInterface.isValid()) { return false; } - if (!Utils::SettingValue(SOUND_EFFECT_SCHEMA, QByteArray(), event, false).toBool()) { + QDBusReply enabledReply = dbusInterface.call("Get", service, "Enabled"); + if (enabledReply.isValid()) { + if (!enabledReply.value()) { + return false; + } + } else { + qWarning() << "Failed to call Get:" << enabledReply.error().message(); return false; } - return true; + QDBusInterface methodInterfaceObj(service, path, methodInterface, QDBusConnection::sessionBus()); + if (!methodInterfaceObj.isValid()) { + return false; + } + + QDBusReply isSoundEnabledReply = methodInterfaceObj.call("IsSoundEnabled", event); + if (isSoundEnabledReply.isValid()) { + return isSoundEnabledReply.value(); + } + + qWarning() << "Failed to call IsSoundEnabled:" << event << isSoundEnabledReply.error().message(); + return false; } void SessionManager::playLoginSound() @@ -735,14 +763,7 @@ void SessionManager::playLoginSound() return; qInfo() << "play system sound: desktop-login"; - auto soundTheme = Utils::SettingValue(APPEARANCE_SCHEMA, QByteArray(), APPEARANCE_SOUND_THEME_KEY, QString()).toString(); - org::deepin::dde::SoundThemePlayer1 inter("org.deepin.dde.SoundThemePlayer1", "/org/deepin/dde/SoundThemePlayer1", QDBusConnection::systemBus(), this); - QDBusPendingReply<> reply = inter.Play(soundTheme, "desktop-login", QString()); - if (reply.isError()) { - qWarning() << "failed to play login sound, error: " << reply.error().name(); - } else { - qDebug() << "success to play system sound: desktop-login"; - } + playSound("desktop-login"); // 播放后创建文件 QFile file(markFile); @@ -776,13 +797,7 @@ void SessionManager::playLogoutSound() // 始终在注销前退出pulseaudio服务 stopPulseAudioService(); - auto soundTheme = Utils::SettingValue(APPEARANCE_SCHEMA, QByteArray(), APPEARANCE_SOUND_THEME_KEY, QString()).toString(); - org::deepin::dde::SoundThemePlayer1 inter("org.deepin.dde.SoundThemePlayer1", "/org/deepin/dde/SoundThemePlayer1", QDBusConnection::systemBus(), this); - // TODO device? - QDBusReply reply = inter.Play(soundTheme, "desktop-logout", ""); - if (!reply.isValid()) { - qWarning() << "failed to play logout sound, error: " << reply.error().name(); - } + playSound("desktop-logout"); } void SessionManager::setDPMSMode(bool on) @@ -880,6 +895,16 @@ void SessionManager::emitCurrentUidChanged(QString uid) // 这个属性不会变化 } +inline void SessionManager::playSound(const QString &event) +{ + QDBusInterface soundPlayerInter("org.deepin.dde.SoundThemePlayer1", "/org/deepin/dde/SoundThemePlayer1", + "org.deepin.dde.SoundThemePlayer1", QDBusConnection::systemBus()); + QDBusMessage reply = soundPlayerInter.call("Play", m_soundTheme, event, QString()); + if (reply.type() == QDBusMessage::ErrorMessage) { + qWarning() << "Failed to call Play:" << event << reply.errorMessage(); + } +} + void SessionManager::handleLoginSessionLocked() { qDebug() << "login session locked." << locked(); diff --git a/src/dde-session/impl/sessionmanager.h b/src/dde-session/impl/sessionmanager.h index 13a0639..a6c8aea 100644 --- a/src/dde-session/impl/sessionmanager.h +++ b/src/dde-session/impl/sessionmanager.h @@ -113,6 +113,8 @@ public Q_SLOTS: void emitCurrentSessionPathChanged(QDBusObjectPath); void emitCurrentUidChanged(QString); + void playSound(const QString &event); + private Q_SLOTS: void handleLoginSessionLocked(); void handleLoginSessionUnlocked(); @@ -126,6 +128,7 @@ private Q_SLOTS: private: bool m_locked; QString m_currentUid; + QString m_soundTheme; int m_stage; QDBusObjectPath m_currentSessionPath; diff --git a/src/dde-session/main.cpp b/src/dde-session/main.cpp index 3511b83..94fd2b9 100644 --- a/src/dde-session/main.cpp +++ b/src/dde-session/main.cpp @@ -131,6 +131,7 @@ int main(int argc, char *argv[]) OthersManager().init(); }); +#if 0 //TODO has no 'com.deepin.dde.startdde' gsetting // cpu iowait状态检测 if (Utils::SettingValue("com.deepin.dde.startdde", QByteArray(), "iowait-enabled", false).toBool()) { QtConcurrent::run([] { @@ -140,6 +141,8 @@ int main(int argc, char *argv[]) } else { qInfo() << "iowait watcher disabled"; } +#endif + qInfo() << "iowait watcher disabled"; QtConcurrent::run([&session](){ qInfo()<< "systemd service pipe thread id: " << QThread::currentThreadId(); diff --git a/src/utils/utils.h b/src/utils/utils.h index 2709ba6..0e8bb82 100644 --- a/src/utils/utils.h +++ b/src/utils/utils.h @@ -5,7 +5,6 @@ #ifndef UTILS_H #define UTILS_H -#include #include // system services @@ -23,10 +22,6 @@ #define SOUND_EFFECT_ENABLED_KEY "enabled" #define SOUND_EFFECT_PLAYER_KEY "player" -// appearance -#define APPEARANCE_SCHEMA "com.deepin.dde.appearance" -#define APPEARANCE_SOUND_THEME_KEY "sound-theme" - // macro funtions #define EXEC_COMMAND(cmd, args) \ QProcess p;\ @@ -39,105 +34,6 @@ namespace Utils { const bool IS_WAYLAND_DISPLAY = qgetenv("XDG_SESSION_TYPE").startsWith("wayland"); - -/** - * @brief SettingsPtr 根据给定信息返回一个QGSettings指针 - * @param schema_id The id of the schema - * @param path If non-empty, specifies the path for a relocatable schema - * @param parent 创建指针的付对象 - * @return - */ -inline QGSettings *SettingsPtr(const QString &schema_id, const QByteArray &path = QByteArray(), QObject *parent = nullptr) -{ - if (QGSettings::isSchemaInstalled(schema_id.toUtf8())) { - QGSettings *settings = new QGSettings(schema_id.toUtf8(), path, parent); - return settings; - } - qDebug() << "Cannot find gsettings, schema_id:" << schema_id; - return nullptr; -} - -/** - * @brief SettingsPtr 根据给定信息返回一个QGSettings指针 - * @param module 传入QGSettings构造函数时,会添加"com.deepin.dde.dock.module."前缀 - * @param path If non-empty, specifies the path for a relocatable schema - * @param parent 创建指针的付对象 - * @return - */ -inline const QGSettings *ModuleSettingsPtr(const QString &module, const QByteArray &path = QByteArray(), QObject *parent = nullptr) -{ - return SettingsPtr("com.deepin.dde.dock.module." + module, path, parent); -} - -/* convert 'some-key' to 'someKey' or 'SomeKey'. - * the second form is needed for appending to 'set' for 'setSomeKey' - */ -inline QString qtify_name(const char *name) -{ - bool next_cap = false; - QString result; - - while (*name) { - if (*name == '-') { - next_cap = true; - } else if (next_cap) { - result.append(QChar(*name).toUpper().toLatin1()); - next_cap = false; - } else { - result.append(*name); - } - - name++; - } - - return result; -} - -/** - * @brief SettingValue 根据给定信息返回获取的值 - * @param schema_id The id of the schema - * @param path If non-empty, specifies the path for a relocatable schema - * @param key 对应信息的key值 - * @param fallback 如果找不到信息,返回此默认值 - * @example Utils::SettingValue("com.deepin.dde.startdde", QByteArray(), "quick-black-screen", false).toBool() - */ -inline const QVariant SettingValue(const QString &schema_id, const QByteArray &path = QByteArray(), const QString &key = QString(), const QVariant &fallback = QVariant()) -{ - const QGSettings *settings = SettingsPtr(schema_id, path); - - if (settings && ((settings->keys().contains(key)) || settings->keys().contains(qtify_name(key.toUtf8().data())))) { - QVariant v = settings->get(key); - delete settings; - return v; - } else{ - qDebug() << "gsettings not exists, schema_id:" << schema_id - << " path:" << path << " key:" << key - << "Use fallback value:" << fallback; - // 如果settings->keys()不包含key则会存在内存泄露,所以需要释放 - if (settings) - delete settings; - - return fallback; - } -} - -inline bool SettingSaveValue(const QString &schema_id, const QByteArray &path, const QString &key, const QVariant &value) -{ - QGSettings *settings = SettingsPtr(schema_id, path); - - if (settings && ((settings->keys().contains(key)) || settings->keys().contains(qtify_name(key.toUtf8().data())))) { - settings->set(key, value); - delete settings; - return true; - } else{ - qDebug() << "gsettings not exists, schema_id:" << schema_id - << " path:" << path << " key:" << key; - if (settings) - delete settings; - - return false; - } -} } #endif // UTILS_H diff --git a/tools/dde-login-reminder/CMakeLists.txt b/tools/dde-login-reminder/CMakeLists.txt index e2bb227..28deb44 100644 --- a/tools/dde-login-reminder/CMakeLists.txt +++ b/tools/dde-login-reminder/CMakeLists.txt @@ -3,11 +3,10 @@ set(BIN_NAME dde-login-reminder) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) -#find_package(QT NAMES Qt6 Qt5 COMPONENTS Core Network REQUIRED) -find_package(Qt5 COMPONENTS Core Network DBus REQUIRED) + +find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Network DBus REQUIRED) find_package(PkgConfig REQUIRED) -pkg_check_modules(QGSettings REQUIRED IMPORTED_TARGET gsettings-qt) message(${PROJECT_SOURCE_DIR}) @@ -16,18 +15,17 @@ add_executable(${BIN_NAME} loginreminderinfo.h loginreminderinfo.cpp ${PROJECT_SOURCE_DIR}/src/utils/utils.h - ) +) target_link_libraries(${BIN_NAME} Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::DBus Qt${QT_VERSION_MAJOR}::Network - PkgConfig::QGSettings - ) +) target_include_directories(${BIN_NAME} PUBLIC ${PROJECT_SOURCE_DIR}/src/utils - ) +) install(TARGETS ${BIN_NAME} DESTINATION bin) diff --git a/tools/dde-login-reminder/main.cpp b/tools/dde-login-reminder/main.cpp index 23f7b32..8660b8e 100644 --- a/tools/dde-login-reminder/main.cpp +++ b/tools/dde-login-reminder/main.cpp @@ -16,10 +16,11 @@ int start() { qDebug() << "login reminder init"; - +#if 0 + // TODO has no 'com.deepin.dde.startdde' gsetting if (!Utils::SettingValue("com.deepin.dde.startdde", QByteArray(), "login-reminder", false).toBool()) return 0; - +#endif // 登录后展示横幅通知信息 QDBusInterface userInter("org.deepin.dde.Accounts1", QString("/org/deepin/dde/Accounts1/User%1").arg(getuid()), "org.deepin.dde.Accounts1.User", QDBusConnection::systemBus()); QDBusPendingReply reply = userInter.call("GetReminderInfo"); @@ -67,7 +68,7 @@ int start() const QString ¤tLoginTime = info.CurrentLogin.Time.left(QString("yyyy-MM-dd hh:mm:ss").length()); const QString &address = (info.CurrentLogin.Address == "0.0.0.0") ? getFirstIpAddress() : info.CurrentLogin.Address; QString body = QString("%1 %2 %3").arg(info.Username).arg(address).arg(currentLoginTime); - int daysLeft = info.spent.LastChange + info.spent.Max - int(QDateTime::currentDateTime().toTime_t() / SECONDS_PER_DAY); + int daysLeft = info.spent.LastChange + info.spent.Max - int(QDateTime::currentSecsSinceEpoch() / SECONDS_PER_DAY); if ((info.spent.Max != -1) && (info.spent.Warn != -1) && (info.spent.Warn > daysLeft)) { body += " " + QString(QObject::tr("Your password will expire in %1 days")).arg(daysLeft); } @@ -113,5 +114,6 @@ int main(int argc, char *argv[]) registerLoginReminderInfoMetaType(); - return start(); + return 0; + // return start(); } diff --git a/tools/dde-version-checker/CMakeLists.txt b/tools/dde-version-checker/CMakeLists.txt index 901d6ba..53c0d5e 100644 --- a/tools/dde-version-checker/CMakeLists.txt +++ b/tools/dde-version-checker/CMakeLists.txt @@ -1,7 +1,6 @@ set(BIN_NAME dde-version-checker) -#find_package(QT NAMES Qt6 Qt5 COMPONENTS Core REQUIRED) -find_package(Qt5 COMPONENTS Core REQUIRED) +find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core REQUIRED) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) @@ -10,11 +9,11 @@ message(${PROJECT_SOURCE_DIR}) add_executable(${BIN_NAME} main.cpp - ) +) target_link_libraries(${BIN_NAME} Qt${QT_VERSION_MAJOR}::Core - ) +) install(TARGETS ${BIN_NAME} DESTINATION bin) diff --git a/tools/dde-xsettings-checker/CMakeLists.txt b/tools/dde-xsettings-checker/CMakeLists.txt index 2cde299..afdd0b2 100644 --- a/tools/dde-xsettings-checker/CMakeLists.txt +++ b/tools/dde-xsettings-checker/CMakeLists.txt @@ -4,10 +4,8 @@ set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) -#find_package(QT NAMES Qt6 Qt5 COMPONENTS Core DBus REQUIRED) -find_package(Qt5 COMPONENTS Core DBus REQUIRED) +find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core DBus REQUIRED) find_package(PkgConfig REQUIRED) -pkg_check_modules(QGSettings REQUIRED IMPORTED_TARGET gsettings-qt) pkg_check_modules(GLIB2 REQUIRED IMPORTED_TARGET glib-2.0) pkg_check_modules(GIO2 REQUIRED IMPORTED_TARGET gio-2.0) pkg_check_modules(XCURSOR REQUIRED IMPORTED_TARGET xcursor) @@ -21,24 +19,22 @@ add_executable(${BIN_NAME} ${PROJECT_SOURCE_DIR}/src/dde-session/impl/iowait/xcursor_remap.h ${PROJECT_SOURCE_DIR}/src/dde-session/impl/iowait/xcursor_remap.c ${PROJECT_SOURCE_DIR}/src/utils/utils.h - ) +) target_link_libraries(${BIN_NAME} Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::DBus - PkgConfig::QGSettings PkgConfig::GLIB2 PkgConfig::GIO2 - PkgConfig::QGSettings PkgConfig::XCURSOR PkgConfig::XFIXES PkgConfig::X11 - ) +) target_include_directories(${BIN_NAME} PUBLIC ${PROJECT_SOURCE_DIR}/src/dde-session/impl/iowait ${PROJECT_SOURCE_DIR}/src/utils - ) +) install(TARGETS ${BIN_NAME} DESTINATION bin) diff --git a/tools/dde-xsettings-checker/xsettingschecker.cpp b/tools/dde-xsettings-checker/xsettingschecker.cpp index 6e369ab..9439492 100644 --- a/tools/dde-xsettings-checker/xsettingschecker.cpp +++ b/tools/dde-xsettings-checker/xsettingschecker.cpp @@ -15,7 +15,6 @@ extern "C" { #include #include -#include #include #include #include @@ -50,18 +49,33 @@ void XSettingsChecker::initQtTheme() // icon-theme QString iconTheme = settings.value("IconThemeName").toString(); - if (iconTheme.isEmpty()) { - iconTheme = Utils::SettingValue("com.deepin.dde.appearance", QByteArray(), "icon-theme", QString()).toString(); - settings.setValue("IconThemeName", iconTheme); - qDebug() << "set icon theme name in qt theme: " << iconTheme; - } - // font size double fontSize = settings.value("FontSize").toDouble(); - if (fontSize - 0 < (1e-6)) { - fontSize = Utils::SettingValue("com.deepin.dde.appearance", QByteArray(), "font-size", 0.0).toDouble(); - settings.setValue("FontSize", fontSize); - qDebug() << "set font size in qt theme: " << fontSize; + + if (iconTheme.isEmpty() || fontSize - 0 < (1e-6)) { + QDBusInterface dbusInterface("org.deepin.dde.Appearance1", "/org/deepin/dde/Appearance1", + "org.freedesktop.DBus.Properties", QDBusConnection::sessionBus()); + if (!dbusInterface.isValid()) { + return; + } + + if (iconTheme.isEmpty()) { + QDBusPendingReply iconThemeReply = dbusInterface.call("Get", "org.deepin.dde.Appearance1", "IconTheme"); + if (iconThemeReply.isValid()) { + iconTheme = iconThemeReply.value(); + settings.setValue("IconThemeName", iconTheme); + qDebug() << "set icon theme name in dbus: " << iconTheme; + } + } + + if (fontSize - 0 < (1e-6)) { + QDBusPendingReply fontSizeReply = dbusInterface.call("Get", "org.deepin.dde.Appearance1", "fontSize");; + if (fontSizeReply.isValid()) { + fontSize = fontSizeReply.value(); + settings.setValue("FontSize", fontSize); + qDebug() << "set font size in dbus: " << fontSize; + } + } } }