From a197bacb9b891ec6504c39682cd92c4e1fd4bcbb Mon Sep 17 00:00:00 2001 From: kylin-bot Date: Fri, 29 May 2026 17:24:01 +0800 Subject: [PATCH 1/2] apply patch 5331 --- dbus/devices/touchpad/src/touchpad.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dbus/devices/touchpad/src/touchpad.h b/dbus/devices/touchpad/src/touchpad.h index 1411bf9..618a4c4 100644 --- a/dbus/devices/touchpad/src/touchpad.h +++ b/dbus/devices/touchpad/src/touchpad.h @@ -34,6 +34,10 @@ using namespace UKUI; +#ifndef DEFINE_PROPERTY +#define DEFINE_PROPERTY(type, name) Q_PROPERTY(type name READ Get##name WRITE Set##name NOTIFY name##Changed) +#endif + using OnKeyChanged = std::function; class TouchpadManager : public QObject ,QDBusContext{ -- Gitee From 08a2e67698f9bb47289adcdb09da45496f13f334 Mon Sep 17 00:00:00 2001 From: kylin-bot Date: Fri, 29 May 2026 17:24:37 +0800 Subject: [PATCH 2/2] apply patch 5332 --- dbus/devices/audio/src/audio.cpp | 26 ++++++++++ dbus/devices/mouse/src/mouse.cpp | 8 ++++ dbus/devices/network/src/lan.cpp | 2 + dbus/devices/network/src/wifi.cpp | 2 + dbus/devices/power/src/power.cpp | 10 ++++ dbus/devices/screen/src/screen.cpp | 48 +++++++++++++++++++ dbus/devices/screen/src/screen.h | 24 +++++----- dbus/devices/screen/src/screen_abstract.h | 4 +- dbus/devices/screen/src/screen_gamma.cpp | 2 +- .../ukui_navigations/src/navigations.h | 4 +- dbus/ui/font/font.cpp | 6 +++ dbus/ui/panel/src/panel_config.cpp | 4 +- dbus/ui/theme/theme.cpp | 47 +++++++++++++++++- dbus/ui/theme/theme.h | 7 ++- 14 files changed, 174 insertions(+), 20 deletions(-) diff --git a/dbus/devices/audio/src/audio.cpp b/dbus/devices/audio/src/audio.cpp index 090b189..be4a5c2 100644 --- a/dbus/devices/audio/src/audio.cpp +++ b/dbus/devices/audio/src/audio.cpp @@ -105,7 +105,9 @@ int Audio::getSinkVolume() } if (!reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(reply.error().type(), reply.error().message()); + } return -1; } @@ -125,7 +127,9 @@ bool Audio::getSinkMute() } if (!reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(reply.error().type(), reply.error().message()); + } return false; } @@ -153,7 +157,9 @@ QString Audio::getSinkDevice() "getDefaultOutputDevice"); if (!reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(reply.error().type(), reply.error().message()); + } return "NULL"; } @@ -176,7 +182,9 @@ int Audio::getSourceVolume() } if (!reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(reply.error().type(), reply.error().message()); + } return -1; } @@ -196,7 +204,9 @@ bool Audio::getSourceMute() } if (!reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(reply.error().type(), reply.error().message()); + } return false; } @@ -224,7 +234,9 @@ QString Audio::getSourceDevice() "getDefaultInputDevice"); if (!reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(reply.error().type(), reply.error().message()); + } return "NULL"; } @@ -249,7 +261,9 @@ bool Audio::setSinkVolume(int volume) "setDefaultOutputVolume", volume); if (!reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(reply.error().type(), reply.error().message()); + } return false; } @@ -274,7 +288,9 @@ bool Audio::setSinkMute(bool mute) "setDefaultOutputMuteState", mute); if (!reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(reply.error().type(), reply.error().message()); + } return false; } @@ -299,7 +315,9 @@ bool Audio::setSinkDevice(QString cardName, QString portName) "setDefaultOutputDevice", cardName); if (!reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(reply.error().type(), reply.error().message()); + } return false; } @@ -323,7 +341,9 @@ bool Audio::setSourceVolume(int volume) "setDefaultInputVolume", volume); if (!reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(reply.error().type(), reply.error().message()); + } return false; } @@ -347,7 +367,9 @@ bool Audio::setSourceMute(bool mute) "setDefaultInputMuteState", mute); if (!reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(reply.error().type(), reply.error().message()); + } return false; } @@ -372,7 +394,9 @@ bool Audio::setSourceDevice(QString cardName, QString portName) "setDefaultInputDevice", cardName); if (!reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(reply.error().type(), reply.error().message()); + } return false; } @@ -406,7 +430,9 @@ QDBusMessage Audio::dbusMethodCall(const QString& destination, const QString& pa if (reply.type() == QDBusMessage::ErrorMessage) { qWarning() << QString("[DBusCall] Method failed! dest=%1, method=%2, errName=%3, errMsg=%4") .arg(destination, method, reply.errorName(), reply.errorMessage()); + if (calledFromDBus()) { sendErrorReply(reply.errorName(), reply.errorMessage()); + } } return reply; diff --git a/dbus/devices/mouse/src/mouse.cpp b/dbus/devices/mouse/src/mouse.cpp index c6e91ec..815c8b9 100644 --- a/dbus/devices/mouse/src/mouse.cpp +++ b/dbus/devices/mouse/src/mouse.cpp @@ -215,14 +215,18 @@ void MouseManager::SetLocatePointer(const int locatePointer) PEEK_AND_SET(C_LOCATE_POINTER, false); PEEK_AND_SET(C_SHAKE_POINTER, true); } else { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::InvalidArgs, QStringLiteral("The machine does not support the args")); + } } } void MouseManager::SetMotionAcceleration(const double motionAcceleration) { if (motionAcceleration > 10 || motionAcceleration < 1) { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::InvalidArgs, QStringLiteral("The machine does not support the args")); + } return; } PEEK_AND_SET(C_MOTION_ACCELERATION, motionAcceleration); @@ -243,7 +247,9 @@ void MouseManager::SetCursorSize(const int cursorSize) const QSet canSetSize = {24, 36, 48}; if (!canSetSize.contains(cursorSize)) { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::InvalidArgs, QStringLiteral("The machine does not support the args")); + } return; } PEEK_AND_SET(C_CURSOR_SIZE, cursorSize); @@ -252,7 +258,9 @@ void MouseManager::SetCursorSize(const int cursorSize) void MouseManager::SetDoubleClick(const int doubleClick) { if (doubleClick > 1000 || doubleClick < 170) { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::InvalidArgs, QStringLiteral("The machine does not support the args")); + } return; } diff --git a/dbus/devices/network/src/lan.cpp b/dbus/devices/network/src/lan.cpp index 24fa684..01484d6 100644 --- a/dbus/devices/network/src/lan.cpp +++ b/dbus/devices/network/src/lan.cpp @@ -71,7 +71,9 @@ bool Lan::IsEnable() { QDBusReply reply = callNetworkMethod("getWiredMainSwitchBtnState"); if (false == reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::Failed,QString("ukui-framework dbus method call failed.")); + } } return reply.value(); } diff --git a/dbus/devices/network/src/wifi.cpp b/dbus/devices/network/src/wifi.cpp index e5f3cbe..e7ef5e5 100644 --- a/dbus/devices/network/src/wifi.cpp +++ b/dbus/devices/network/src/wifi.cpp @@ -71,7 +71,9 @@ bool Wifi::IsEnable() { QDBusReply reply = callNetworkMethod("getWirelessSwitchBtnState"); if (false == reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::Failed,QString("ukui-framework dbus method call failed.")); + } } return reply.value(); } diff --git a/dbus/devices/power/src/power.cpp b/dbus/devices/power/src/power.cpp index d24a037..be02a90 100644 --- a/dbus/devices/power/src/power.cpp +++ b/dbus/devices/power/src/power.cpp @@ -138,7 +138,9 @@ int UkuiPowerInterface::GetBatteryState() { QVariant reply = getBatteryProperty("State"); if (!reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(QDBusError::Failed, "Failed to get Battery State"); + } return -1; } @@ -149,7 +151,9 @@ int UkuiPowerInterface::BatteryPercentage() { QVariant reply = getBatteryProperty("Percentage"); if (!reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(QDBusError::Failed, "Failed to get Battery Percentage"); + } return -1; } @@ -160,7 +164,9 @@ int UkuiPowerInterface::TimeToFull() { QVariant reply = getBatteryProperty("TimeToFull"); if (!reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(QDBusError::Failed, "Failed to get Time To Full"); + } return -1; } @@ -171,7 +177,9 @@ int UkuiPowerInterface::TimeToEmpty() { QVariant reply = getBatteryProperty("TimeToEmpty"); if (!reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(QDBusError::Failed, "Failed to get Time To Empty"); + } return -1; } @@ -254,7 +262,9 @@ int UkuiPowerInterface::GetPowerSaveLevel() QDBusReply reply = iface.call("getPowersaveLevel"); if (!reply.isValid()) { qDebug() << "Failed to get powersaveLevel"; + if (calledFromDBus()) { sendErrorReply(QDBusError::Failed, "Failed to get power save Level"); + } return -1; // 返回一个表示错误的值 } diff --git a/dbus/devices/screen/src/screen.cpp b/dbus/devices/screen/src/screen.cpp index fdc9f18..424db22 100644 --- a/dbus/devices/screen/src/screen.cpp +++ b/dbus/devices/screen/src/screen.cpp @@ -78,7 +78,9 @@ Screen::~Screen() bool Screen::SetScreenBrightness(QString name, uint screenBrightness) { if (Screen::eBrightnessControl::Unknown == m_brightControlByUPM) { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::Failed, QStringLiteral("The machine does not support")); + } return false; } @@ -88,7 +90,9 @@ bool Screen::SetScreenBrightness(QString name, uint screenBrightness) uint Screen::GetScreenBrightness(QString name) { if (Screen::eBrightnessControl::Unknown == m_brightControlByUPM) { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::Failed, QStringLiteral("The machine does not support")); + } return 100; } @@ -100,14 +104,18 @@ uint Screen::GetScreenBrightness(QString name) } } + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::Failed, QStringLiteral("can't find the screen:%1").arg(name)); + } return 100; } bool Screen::SetScreensBrightness(OutputGammaInfoList outputsInfo) { if (Screen::eBrightnessControl::Unknown == m_brightControlByUPM) { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::Failed, QStringLiteral("The machine does not support")); + } return false; } @@ -117,7 +125,9 @@ bool Screen::SetScreensBrightness(OutputGammaInfoList outputsInfo) bool Screen::SetAllScreenSameBrightness(uint brighenss) { if (Screen::eBrightnessControl::Unknown == m_brightControlByUPM) { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::Failed, QStringLiteral("The machine does not support")); + } return false; } @@ -127,7 +137,9 @@ bool Screen::SetAllScreenSameBrightness(uint brighenss) OutputGammaInfoList Screen::GetAllScreenBrightness() { if (Screen::eBrightnessControl::Unknown == m_brightControlByUPM) { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::Failed, QStringLiteral("The machine does not support")); + } return OutputGammaInfoList(); } @@ -141,7 +153,9 @@ bool Screen::SetPrimaryScreenBrightness(uint screenBrightness) { QDBusReply reply = callBrighenss("setPrimaryBrightness", screenBrightness); if (false == reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::Failed, QStringLiteral("call dbus error.")); + } return false; } @@ -152,7 +166,9 @@ uint Screen::GetPrimaryScreenBrightness() { QDBusReply reply = callBrighenss("getPrimaryBrightness"); if (false == reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::Failed, QStringLiteral("call dbus error")); + } return 0; } @@ -162,13 +178,17 @@ uint Screen::GetPrimaryScreenBrightness() bool Screen::IncreaseBuiltinScreenBrightness() { if (Screen::eBrightnessControl::PowerManager != m_brightControlByUPM) { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::Failed, QStringLiteral("The machine does not support dimming.")); + } return false; } QDBusReply reply = callMediaKeys("externalDoAction", Screen::eShutcutKey::IncreaseBrightness, MY_NAME); if (false == reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::Failed, QStringLiteral("The machine does not support dimming.")); + } return false; } @@ -178,13 +198,17 @@ bool Screen::IncreaseBuiltinScreenBrightness() bool Screen::DecreaseBuiltinBrightness() { if (Screen::eBrightnessControl::PowerManager != m_brightControlByUPM) { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::Failed, QStringLiteral("The machine does not support dimming.")); + } return false; } QDBusReply reply = callMediaKeys("externalDoAction", Screen::eShutcutKey::DecreaseBrightness, MY_NAME); if (false == reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::Failed, QStringLiteral("externalDoAction call error.")); + } return false; } @@ -195,7 +219,9 @@ QString Screen::GetScreenMode() { QDBusReply reply = callXrandr("getScreenMode", MY_NAME); if (false == reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::Failed, QStringLiteral("call dbus error")); + } return ""; } @@ -206,7 +232,9 @@ bool Screen::SetScreenMode(const QString &mode) { QDBusReply reply = callXrandr("setScreenMode", mode, MY_NAME); if (false == reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::Failed, QStringLiteral("call dbus error")); + } return false; } @@ -217,7 +245,9 @@ bool Screen::SetScreensParam(const QString &screenParam) { QDBusReply reply = callXrandr("setScreensParam", MY_NAME, screenParam); if (false == reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::Failed, QStringLiteral("call dbus error")); + } return false; } @@ -228,7 +258,9 @@ QString Screen::GetScreensParam() { QDBusReply reply = callXrandr("getScreensParam", MY_NAME); if (false == reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::Failed, QStringLiteral("call dbus error")); + } return ""; } @@ -243,6 +275,10 @@ bool Screen::SetEyeCareEnabled(bool state) return false; } m_pColorGsettingsManager->set(UKUI_SETTINGS_DAEMON_COLOR_MAIN_SWITCH, state); + + if (state) { + m_pColorGsettingsManager->set(UKUI_SETTINGS_DAEMON_COLOR_MAIN_SWITCH, state); + } return ret.isEmpty(); } @@ -259,6 +295,10 @@ bool Screen::SetNightModeEnable(bool state) return false; } m_pColorGsettingsManager->set(UKUI_SETTINGS_DAEMON_COLOR_NIGHT_MODE, state); + + if (state) { + m_pColorGsettingsManager->set(UKUI_SETTINGS_DAEMON_COLOR_MAIN_SWITCH, state); + } return ret.isEmpty(); } @@ -271,7 +311,9 @@ bool Screen::SetScreenScale(double scale) { QDBusReply reply = callXrandr("SetScreenScale",scale); if (false == reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(reply.error().type(), reply.error().message()); + } return false; } @@ -282,7 +324,9 @@ double Screen::GetScreenScale() { QDBusReply reply = callXrandr(__FUNCTION__); if (false == reply.isValid()) { + if (calledFromDBus()) { sendErrorReply(reply.error().type(), reply.error().message()); + } return false; } @@ -292,7 +336,9 @@ double Screen::GetScreenScale() bool Screen::IsAutoBrightnessEnable() { if (!m_pAutoGsettingsManager->get(UKUI_SETTINGS_AUTO_BRIGHTNESS_HAD_SENSOR).toBool()) { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::Failed, QStringLiteral("The machine does not support")); + } return false; } @@ -302,7 +348,9 @@ bool Screen::IsAutoBrightnessEnable() void Screen::SetAutoBrightBrightnessEnable(bool enable) { if (!m_pAutoGsettingsManager->get(UKUI_SETTINGS_AUTO_BRIGHTNESS_HAD_SENSOR).toBool()) { + if (calledFromDBus()) { sendErrorReply(QDBusError::ErrorType::Failed, QStringLiteral("The machine does not support")); + } return; } diff --git a/dbus/devices/screen/src/screen.h b/dbus/devices/screen/src/screen.h index ca009de..0880f36 100644 --- a/dbus/devices/screen/src/screen.h +++ b/dbus/devices/screen/src/screen.h @@ -33,10 +33,10 @@ class Screen: public QObject, QDBusContext Q_CLASSINFO("D-Bus Interface", ORG_UKUI_FRAMEWORK_SCREEN_INTERFACE) public: enum eScreenMode { - primaryScreenOnlyMode = 0, - mirrorScreenMode, - extensionMode, - secondaryScreenOnlyMode, + firstScreenMode = 0, + cloneScreenMode, + extendScreenMode, + secondScreenMode, showKDS, ERROR = 0x99}; @@ -121,10 +121,10 @@ public Q_SLOTS: bool DecreaseBuiltinBrightness(); /** * @brief getScreenMode 获取显示器显示模式 - * primaryScreenOnlyMode = 0, 第一屏幕 - * mirrorScreenMode =,镜像屏幕 - * extensionMode,扩展 - * secondaryScreenOnlyMode,第二屏 + * firstScreenMode = 0,第一屏幕 + cloneScreenMode,镜像屏幕 + extendScreenMode,扩展 + secondScreenMode,第二屏 * @return 显示模式 */ QString GetScreenMode(); @@ -132,10 +132,10 @@ public Q_SLOTS: /** * @brief setScreenMode 设置显示模式 * @param mode 指定模式 - * primaryScreenOnlyMode = 0, 第一屏幕 - * mirrorScreenMode =,镜像屏幕 - * extensionMode,扩展 - * secondaryScreenOnlyMode,第二屏 + firstScreenMode = 0,第一屏幕 + cloneScreenMode,镜像屏幕 + extendScreenMode,扩展 + secondScreenMode,第二屏 * @return 设置标记,0失败,1成功 */ bool SetScreenMode(const QString &mode); diff --git a/dbus/devices/screen/src/screen_abstract.h b/dbus/devices/screen/src/screen_abstract.h index 0f1df93..5c88cdf 100644 --- a/dbus/devices/screen/src/screen_abstract.h +++ b/dbus/devices/screen/src/screen_abstract.h @@ -96,10 +96,10 @@ private: #define PEEK_RESULT_BOOL(a) AbstractResult ret = a;\ if (ret.errorMsg.isEmpty()) { \ - ret.value.toBool(); \ + return true; \ } \ sendErrorReply(QDBusError::ErrorType::Failed, (ret.errorMsg)); \ - return ret.value.toBool(); + return false; #define PEEK_RESULT_INT(a) AbstractResult ret = a;\ if (ret.errorMsg.isEmpty()) { \ diff --git a/dbus/devices/screen/src/screen_gamma.cpp b/dbus/devices/screen/src/screen_gamma.cpp index 130ec45..ae6bf41 100644 --- a/dbus/devices/screen/src/screen_gamma.cpp +++ b/dbus/devices/screen/src/screen_gamma.cpp @@ -82,7 +82,7 @@ AbstractResult ScreenGamma::setScreensBrightness(OutputGammaInfoList outputsInfo AbstractResult ScreenGamma::setAllScreenSameBrightness(uint brighenss) { AbstractResult ret; - QDBusReply reply = callGamma("setAllScreenBrightness", MY_NAME, (int)brighenss); + QDBusReply reply = callGamma("setAllScreenBrightness", MY_NAME, (int)brighenss); if (false == reply.isValid()) { ret.errorMsg = reply.error().message(); return ret; diff --git a/dbus/navigations/ukui_navigations/src/navigations.h b/dbus/navigations/ukui_navigations/src/navigations.h index e340850..f027e6d 100644 --- a/dbus/navigations/ukui_navigations/src/navigations.h +++ b/dbus/navigations/ukui_navigations/src/navigations.h @@ -31,7 +31,9 @@ if (m_processPool->startProcess(a, b)) { \ return; \ } \ - sendErrorReply(QDBusError::ErrorType::NoReply, QStringLiteral("The app start error.")); + if (calledFromDBus()) { \ + sendErrorReply(QDBusError::ErrorType::NoReply, QStringLiteral("The app start error.")); \ + } #define Peek_app(a) \ diff --git a/dbus/ui/font/font.cpp b/dbus/ui/font/font.cpp index 4c2b0ae..f7cd477 100644 --- a/dbus/ui/font/font.cpp +++ b/dbus/ui/font/font.cpp @@ -90,7 +90,9 @@ bool Font::SetFontSize(double size) bool Font::SetFontSizeWithString(QString size) { if (!m_fontSizeMap.contains(size)) { + if (calledFromDBus()) { sendErrorReply(QDBusError::InvalidArgs, tr("size %1 are invalid args").arg(size)); + } return false; } QString sizeString = QString::number(m_fontSizeMap[size]); @@ -101,7 +103,9 @@ bool Font::SetFontSizeWithString(QString size) bool Font::SetFontSizeWithType(QString size) { if (!m_fontSizeMap.contains(size)) { + if (calledFromDBus()) { sendErrorReply(QDBusError::InvalidArgs, tr("size %1 are invalid args").arg(size)); + } return false; } @@ -113,7 +117,9 @@ bool Font::SetFontSizeWithType(QString size) QString Font::GetFontSizeWithType() { if (!m_fontSizeMap.values().contains(FontSize)) { + if (calledFromDBus()) { sendErrorReply(QDBusError::InvalidArgs, tr("size %1 are invalid type").arg(FontSize)); + } return ""; } diff --git a/dbus/ui/panel/src/panel_config.cpp b/dbus/ui/panel/src/panel_config.cpp index f4777a5..14ec708 100644 --- a/dbus/ui/panel/src/panel_config.cpp +++ b/dbus/ui/panel/src/panel_config.cpp @@ -21,6 +21,7 @@ #include #include +#include ConfigUkPanel::ConfigUkPanel(QObject *parent) { @@ -360,7 +361,8 @@ void ConfigUkPanel::connectToSource() QString display(qgetenv(displayEnv.toUtf8().data())); QUrl address(QStringLiteral("local:ukui-panel-config-") + - QString(qgetenv("USER")) + display); + QString(qgetenv("USER")) + QStringLiteral("-") + QString::number(getuid()) + + QStringLiteral("-") + display); qDebug() << "ukui-framework connect to source:" << m_qroNode.connectToNode(address); m_pIrep = m_qroNode.acquireDynamic("RemoteConfig"); diff --git a/dbus/ui/theme/theme.cpp b/dbus/ui/theme/theme.cpp index a205e43..d81ae14 100644 --- a/dbus/ui/theme/theme.cpp +++ b/dbus/ui/theme/theme.cpp @@ -97,6 +97,11 @@ void Theme::unstableSwitchGlobalTheme(int themeIndex) { default: return; } + m_pstyleGsettingsManager->set(UKUI_STYLE_SETTINGS_KEY_WIDGET_NAME, qtWidgetTheme); + m_pstyleGsettingsManager->set(UKUI_STYLE_SETTINGS_KEY_STYLE_NAME, qtStyleName); + m_pstyleGsettingsManager->set(UKUI_STYLE_SETTINGS_KEY_ICON_NAME, iconThemeName); + m_pstyleGsettingsManager->set(UKUI_STYLE_SETTINGS_KEY_THEME_COLOR, qtColor); + m_pstyleGsettingsManager->set(UKUI_STYLE_SETTINGS_KEY_WINDOWS_RADIUS, windowRadius); m_pstyleGsettingsManager->set(UKUI_STYLE_SETTINGS_KEY_WIDGET_NAME, qtWidgetTheme); m_pstyleGsettingsManager->set(UKUI_STYLE_SETTINGS_KEY_STYLE_NAME, qtStyleName); @@ -151,7 +156,10 @@ Theme::Theme(QObject *parent): m_psoundGSettingsManager = new GsettingsManager(this, KEY_SOUNDS_SCHEMA, soundChangedHandler()); //soundSettings SoundThemeName = m_psoundGSettingsManager->get(UKUI_SOUND_KEY_THEME_NAME).toString(); - } + + m_pBackgroundGsettingsManager = new GsettingsManager(this, MATE_SETTINGS_SCHEMA_ID, backgroundChangedHandler()); + BackgroundPicture = m_pBackgroundGsettingsManager->get(BACKGROUND_PICTRURE_FILENAME).toString(); +} Theme::~Theme() { @@ -367,6 +375,29 @@ bool Theme::SetSoundThemeName(const QString &soundThemeName) return true; } +bool Theme::SetBackgroundPicture(const QString &backgroundPicture) +{ + if (!g_themeServiceAvailable) { + if (calledFromDBus()) { + sendErrorReply(QDBusError::InvalidService, tr("Theme service is not available")); + } + return false; + } + + QMimeDatabase mimeDb; + QMimeType mime = mimeDb.mimeTypeForFile(backgroundPicture); + if (mime.name().startsWith("image/")) { + m_pBackgroundGsettingsManager->set(BACKGROUND_PICTRURE_FILENAME, backgroundPicture); + } else { + if (calledFromDBus()) { + sendErrorReply(QDBusError::InvalidArgs, tr("Invalid theme name: %1, is't picture").arg(backgroundPicture)); + } + return false; + } + + return true; +} + /** * @brief setUserModified * 更新主题自定义状态,在用户设置全局主题后设置为false, @@ -474,6 +505,15 @@ QHash Theme::soundChangedHandler() return m_soundSettingsChangedHandlers; } +QHash Theme::backgroundChangedHandler() +{ + m_backgroundSettingsChangedHandlers[MATE_SETTINGS_SCHEMA_ID] = [this] { + BackgroundPicture = m_pBackgroundGsettingsManager->get(BACKGROUND_PICTRURE_FILENAME).toString(); + emit BackgroundPictureChanged(); + }; + return m_backgroundSettingsChangedHandlers; +} + int Theme::GetThemeMode() const { return ThemeMode; @@ -534,3 +574,8 @@ const QString Theme::GetQtThemeColor() const { return QtThemeColor; } + +const QString Theme::GetBackgroundPicture() const +{ + return BackgroundPicture; +} diff --git a/dbus/ui/theme/theme.h b/dbus/ui/theme/theme.h index 6cab834..8dd40f6 100644 --- a/dbus/ui/theme/theme.h +++ b/dbus/ui/theme/theme.h @@ -171,6 +171,7 @@ public Q_SLOTS: */ Q_INVOKABLE bool SetWindowRadius(QString newWindowRadius); + Q_INVOKABLE bool SetBackgroundPicture(const QString &backgroundPicture); const QString GetGlobalThemeName() const; @@ -192,6 +193,7 @@ public Q_SLOTS: int GetThemeMode() const; + const QString GetBackgroundPicture() const; signals: void ThemeModeChanged(); void QtStyleNameChanged(); @@ -204,13 +206,13 @@ signals: void WindowRadiusChanged(); void QtThemeColorChanged(); void UserCustomizedChanged(); + void BackgroundPictureChanged(); private: void unstableSwitchGlobalTheme(int themeIndex); void setUserModified(bool modified); void initThemeMode(); - private: QString GlobalThemeName; @@ -224,7 +226,8 @@ private: QString CursorThemeName; QString SoundThemeName; QString WindowRadius; - + QString BackgroundPicture; + int SystemFontSize = 10; bool UserCustomized = false; -- Gitee