diff --git a/dbus/devices/audio/src/audio.cpp b/dbus/devices/audio/src/audio.cpp index 090b189da48c2ee99020b41810b2acdf689f8344..be4a5c25afa5601ca6b823ecebf22fd4500cba06 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 c6e91ec2da2ffb713c910eb540fc256ebab16b17..815c8b910a993ac4ceee343bd9466a269d4d268c 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 24fa68439ce2f053d7e2178fcc84d65b3d073d36..01484d6873ff53e816997d7d6a1c2eb56b3cc895 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 e5f3cbe36c3e2db7b8d23f7a02f5a48c5a16eb0a..e7ef5e5ab5400859c0637850c36cab059c524ad2 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 d24a0375a0a27e7c9d22ae19962e3bef928c99ea..be02a90648151db570d847f0bbc669ab9995e2f3 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 fdc9f18e8304b8434c998a078e18b208b361cf9d..424db224dfb38cddada606d12e8654d0314623ec 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 ca009de072c7b8b8463e1da638a69b0c5dfd9d3a..0880f366d87c16f4933a7e08392d3e6d41f6d45c 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 0f1df93408b0ce86d6f2f2ed7a39085e775edea6..5c88cdff9cc9f1ed8ba3d671fdd0a857dc8fa659 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 130ec457d00a8836820e0648fd850775b1d4c460..ae6bf41141e1c1c352b41ce6250e07a425514283 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/devices/touchpad/src/touchpad.h b/dbus/devices/touchpad/src/touchpad.h index 1411bf94fcf7473e0c6493782fd577830f75c204..618a4c47a030dfae8dd5b5d6964fba2587547dd9 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{ diff --git a/dbus/navigations/ukui_navigations/src/navigations.h b/dbus/navigations/ukui_navigations/src/navigations.h index e340850d0a936288f1f98299062d33ed83c8cede..f027e6d653a0dcffe8bd459ccdd7617cdae08175 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 4c2b0aeb961df1022f33449f72c01d58f03f70a1..f7cd4773d1a07785bde93c923651b7eea9ad7343 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 f4777a599f6304afd68623cc0db13650638e1c3c..14ec70835c2b0903cb85b06d5b6bd23120429ffe 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 a205e4315eae24fc0b50afa1bc4b3bc1b46959f3..d81ae14336eda0bf10ad12f0419885813c4443e9 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 6cab83408e0040698f5c431da00bf5ba7fe76b14..8dd40f632b07acf7ce262fae655e3ce9ae493790 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;