178 lines
7.2 KiB
Diff
178 lines
7.2 KiB
Diff
From f393efb6424a9d8f7352d2dbc0a6df174d8a2e55 Mon Sep 17 00:00:00 2001
|
|
From: meizhigang <meizhigang@kylinsec.com.cn>
|
|
Date: Wed, 21 Feb 2024 10:50:01 +0800
|
|
Subject: [PATCH] feature(appearance):Add support reset default font
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
- 添加支持重置默认字体功能
|
|
|
|
Related #20203
|
|
---
|
|
include/error-i.h | 2 +
|
|
lib/base/error.cpp | 2 +
|
|
plugins/appearance/appearance-manager.cpp | 14 +++++++
|
|
plugins/appearance/appearance-manager.h | 2 +
|
|
...ylinsec.Kiran.SessionDaemon.Appearance.xml | 7 ++++
|
|
plugins/appearance/font/appearance-font.cpp | 40 +++++++++++++++++++
|
|
plugins/appearance/font/appearance-font.h | 1 +
|
|
7 files changed, 68 insertions(+)
|
|
|
|
diff --git a/include/error-i.h b/include/error-i.h
|
|
index 9a81d3c..1b73db5 100644
|
|
--- a/include/error-i.h
|
|
+++ b/include/error-i.h
|
|
@@ -104,7 +104,9 @@ extern "C"
|
|
ERROR_APPEARANCE_THEME_TYPE_INVALID = 0xA0100,
|
|
ERROR_APPEARANCE_FONT_TYPE_INVALID_1,
|
|
ERROR_APPEARANCE_FONT_TYPE_INVALID_2,
|
|
+ ERROR_APPEARANCE_FONT_TYPE_INVALID_3,
|
|
ERROR_APPEARANCE_FONT_TYPE_UNSUPPORTED,
|
|
+ ERROR_APPEARANCE_RESET_FONT_FAILED,
|
|
ERROR_APPEARANCE_SET_BACKGROUND_FAILED,
|
|
ERROR_APPEARANCE_SET_LOCKSCREEN_BACKGROUND_FAILED,
|
|
|
|
diff --git a/lib/base/error.cpp b/lib/base/error.cpp
|
|
index 341dfb5..e98d173 100644
|
|
--- a/lib/base/error.cpp
|
|
+++ b/lib/base/error.cpp
|
|
@@ -239,6 +239,7 @@ std::string CCError::get_error_desc(CCErrorCode error_code, bool attach_error_co
|
|
break;
|
|
case CCErrorCode::ERROR_APPEARANCE_FONT_TYPE_INVALID_1:
|
|
case CCErrorCode::ERROR_APPEARANCE_FONT_TYPE_INVALID_2:
|
|
+ case CCErrorCode::ERROR_APPEARANCE_FONT_TYPE_INVALID_3:
|
|
error_desc = _("Invalid font type.");
|
|
break;
|
|
case CCErrorCode::ERROR_APPEARANCE_FONT_TYPE_UNSUPPORTED:
|
|
@@ -402,6 +403,7 @@ std::string CCError::get_error_desc(CCErrorCode error_code, bool attach_error_co
|
|
case CCErrorCode::ERROR_DISPLAY_SAVE_CREATE_FILE_FAILED:
|
|
case CCErrorCode::ERROR_DISPLAY_WRITE_CONF_FILE_FAILED:
|
|
case CCErrorCode::ERROR_DISPLAY_NO_ENABLED_MONITOR:
|
|
+ case CCErrorCode::ERROR_APPEARANCE_RESET_FONT_FAILED:
|
|
case CCErrorCode::ERROR_APPEARANCE_SET_BACKGROUND_FAILED:
|
|
case CCErrorCode::ERROR_APPEARANCE_SET_LOCKSCREEN_BACKGROUND_FAILED:
|
|
case CCErrorCode::ERROR_SYSTEMINFO_JSON_ASSIGN_FAILED:
|
|
diff --git a/plugins/appearance/appearance-manager.cpp b/plugins/appearance/appearance-manager.cpp
|
|
index 4b67205..f1fc6fa 100644
|
|
--- a/plugins/appearance/appearance-manager.cpp
|
|
+++ b/plugins/appearance/appearance-manager.cpp
|
|
@@ -113,6 +113,20 @@ void AppearanceManager::SetFont(gint32 type, const Glib::ustring& font, MethodIn
|
|
invocation.ret();
|
|
}
|
|
|
|
+void AppearanceManager::ResetFont(gint32 type, MethodInvocation& invocation)
|
|
+{
|
|
+ if (type < 0 || type >= int32_t(AppearanceFontType::APPEARANCE_FONT_TYPE_LAST))
|
|
+ {
|
|
+ DBUS_ERROR_REPLY_AND_RET(CCErrorCode::ERROR_APPEARANCE_FONT_TYPE_INVALID_3);
|
|
+ }
|
|
+
|
|
+ if (!this->appearance_font_.reset_font(AppearanceFontType(type)))
|
|
+ {
|
|
+ DBUS_ERROR_REPLY_AND_RET(CCErrorCode::ERROR_APPEARANCE_RESET_FONT_FAILED);
|
|
+ }
|
|
+ invocation.ret();
|
|
+}
|
|
+
|
|
void AppearanceManager::SetDesktopBackground(const Glib::ustring& desktop_background, MethodInvocation& invocation)
|
|
{
|
|
if (desktop_background != this->desktop_background_get() &&
|
|
diff --git a/plugins/appearance/appearance-manager.h b/plugins/appearance/appearance-manager.h
|
|
index 89ed9df..e6c4ab5 100644
|
|
--- a/plugins/appearance/appearance-manager.h
|
|
+++ b/plugins/appearance/appearance-manager.h
|
|
@@ -48,6 +48,8 @@ protected:
|
|
virtual void GetFont(gint32 type, MethodInvocation& invocation);
|
|
// 设置类型为type的字体
|
|
virtual void SetFont(gint32 type, const Glib::ustring& font, MethodInvocation& invocation);
|
|
+ // 重置默认字体
|
|
+ virtual void ResetFont(gint32 type, MethodInvocation& invocation);
|
|
// 设置桌面背景
|
|
virtual void SetDesktopBackground(const Glib::ustring& desktop_background, MethodInvocation& invocation);
|
|
// 设置锁屏背景
|
|
diff --git a/plugins/appearance/com.kylinsec.Kiran.SessionDaemon.Appearance.xml b/plugins/appearance/com.kylinsec.Kiran.SessionDaemon.Appearance.xml
|
|
index 889ee87..71a67bc 100644
|
|
--- a/plugins/appearance/com.kylinsec.Kiran.SessionDaemon.Appearance.xml
|
|
+++ b/plugins/appearance/com.kylinsec.Kiran.SessionDaemon.Appearance.xml
|
|
@@ -58,6 +58,13 @@
|
|
<description>Set the font for the type.</description>
|
|
</method>
|
|
|
|
+ <method name="ResetFont">
|
|
+ <arg type="i" name="type" direction="in">
|
|
+ <summary>The font type that contains application font, document font, desktop font and monospace font, etc.</summary>
|
|
+ </arg>
|
|
+ <description>Reset the font for the type.</description>
|
|
+ </method>
|
|
+
|
|
<method name="SetDesktopBackground">
|
|
<arg type="s" name="desktop_background" direction="in">
|
|
<summary>File path of desktop background.</summary>
|
|
diff --git a/plugins/appearance/font/appearance-font.cpp b/plugins/appearance/font/appearance-font.cpp
|
|
index cb169d4..e56d572 100644
|
|
--- a/plugins/appearance/font/appearance-font.cpp
|
|
+++ b/plugins/appearance/font/appearance-font.cpp
|
|
@@ -129,6 +129,46 @@ bool AppearanceFont::set_font(AppearanceFontType type, const std::string& font)
|
|
return true;
|
|
}
|
|
|
|
+bool AppearanceFont::reset_font(AppearanceFontType type)
|
|
+{
|
|
+ switch (type)
|
|
+ {
|
|
+ case APPEARANCE_FONT_TYPE_APPLICATION:
|
|
+ {
|
|
+ RETURN_VAL_IF_FALSE(this->xsettings_settings_, false);
|
|
+ this->xsettings_settings_->reset(XSETTINGS_SCHEMA_GTK_FONT_NAME);
|
|
+ break;
|
|
+ }
|
|
+ case APPEARANCE_FONT_TYPE_DOCUMENT:
|
|
+ {
|
|
+ RETURN_VAL_IF_FALSE(this->interface_settings_, false);
|
|
+ this->interface_settings_->reset(INTERFACE_KEY_DOCUMENT_FONT_NAME);
|
|
+ break;
|
|
+ }
|
|
+ case APPEARANCE_FONT_TYPE_DESKTOP:
|
|
+ {
|
|
+ RETURN_VAL_IF_FALSE(this->caja_settings_, false);
|
|
+ this->caja_settings_->reset(CAJA_SCHEMA_KEY_FONT);
|
|
+ break;
|
|
+ }
|
|
+ case APPEARANCE_FONT_TYPE_WINDOW_TITLE:
|
|
+ {
|
|
+ RETURN_VAL_IF_FALSE(this->marco_settings_, false);
|
|
+ this->marco_settings_->reset(MARCO_SCHAME_KEY_TITLEBAR_FONT);
|
|
+ break;
|
|
+ }
|
|
+ case APPEARANCE_FONT_TYPE_MONOSPACE:
|
|
+ {
|
|
+ RETURN_VAL_IF_FALSE(this->interface_settings_, false);
|
|
+ this->interface_settings_->reset(INTERFACE_KEY_MONOSPACE_FONT_NAME);
|
|
+ break;
|
|
+ }
|
|
+ default:
|
|
+ return false;
|
|
+ }
|
|
+ return true;
|
|
+}
|
|
+
|
|
void AppearanceFont::on_font_changed_cb(const Glib::ustring& key)
|
|
{
|
|
switch (shash(key.c_str()))
|
|
diff --git a/plugins/appearance/font/appearance-font.h b/plugins/appearance/font/appearance-font.h
|
|
index 2d04d96..cbb712d 100644
|
|
--- a/plugins/appearance/font/appearance-font.h
|
|
+++ b/plugins/appearance/font/appearance-font.h
|
|
@@ -29,6 +29,7 @@ public:
|
|
|
|
std::string get_font(AppearanceFontType type);
|
|
bool set_font(AppearanceFontType type, const std::string& font);
|
|
+ bool reset_font(AppearanceFontType type);
|
|
|
|
// 字体变化信号
|
|
sigc::signal<void, AppearanceFontType, const std::string&> signal_font_changed() { return this->font_changed_; };
|
|
--
|
|
2.27.0
|
|
|