mirror of
https://github.com/openharmony/arkui_ui_appearance.git
synced 2026-07-01 05:35:43 -04:00
!152 merge setting0531 into master
添加setSetting方法 Created-by: xuqinfeng1 Commit-by: xuqinfeng1 Merged-by: openharmony_ci Description: ### 一、内容说明(相关的Issue) https://gitcode.com/openharmony/arkui_ui_appearance/issues/165 ### 二、建议测试周期和提测地址 建议测试完成时间:xxxx.xx.xx 投产上线时间:xxxx.xx.xx 提测地址:CI环境/压测环境 测试账号: ### 三、变更内容 * 3.1 关联PR列表 * 3.2 数据库和部署说明 1. 常规更新 2. 重启unicorn 3. 重启sidekiq 4. 迁移任务:是否有迁移任务,没有写 "无" 5. rake脚本:`bundle exec xxx RAILS_ENV = production`;没有写 "无" * 3.4 其他技术优化内容(做了什么,变更了什么) - 重构了 xxxx 代码 - xxxx 算法优化 * 3.5 废弃通知(什么字段、方法弃用?) * 3.6 后向不兼容变更(是否有无法向后兼容的变更?) ### 四、研发自测点(自测哪些?冒烟用例全部自测?) 自测测试结论: ### 五、测试关注点(需要提醒QA重点关注的、可能会忽略的地方) 检查点: | 需求名称 | 是否影响xx公共模块 | 是否需要xx功能 | 需求升级是否依赖其他子产品 | |------|------------|----------|---------------| | xxx | 否 | 需要 | 不需要 | | | | | | 接口测试: 性能测试: 并发测试: 其他: See merge request: openharmony/arkui_ui_appearance!152
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
|
||||
#include <cstdint>
|
||||
#include <functional>
|
||||
#include <string>
|
||||
|
||||
#include "ui_appearance_types.h"
|
||||
|
||||
@@ -28,13 +29,16 @@ class __attribute__((visibility("default"))) UIAppearance {
|
||||
public:
|
||||
static UiAppearanceAbilityErrCode SetDarkMode(DarkMode mode);
|
||||
static UiAppearanceAbilityErrCode GetDarkMode(DarkMode& mode);
|
||||
static UiAppearanceAbilityErrCode SetSettingData(std::string key, std::string value);
|
||||
|
||||
private:
|
||||
using SetDarkModeFunc = std::function<UiAppearanceAbilityErrCode(DarkMode)>;
|
||||
using GetDarkModeFunc = std::function<UiAppearanceAbilityErrCode(DarkMode&)>;
|
||||
using SetSettingDataFunc = std::function<UiAppearanceAbilityErrCode(std::string, std::string)>;
|
||||
|
||||
static SetDarkModeFunc setDarkModeFunc_;
|
||||
static GetDarkModeFunc getDarkModeFunc_;
|
||||
static SetSettingDataFunc setSettingDataFunc_;
|
||||
};
|
||||
} // namespace UiAppearance
|
||||
} // namespace ArkUi
|
||||
|
||||
@@ -27,14 +27,18 @@ UIAppearance::SetDarkModeFunc UIAppearance::setDarkModeFunc_ = [](DarkMode mode)
|
||||
UIAppearance::GetDarkModeFunc UIAppearance::getDarkModeFunc_ = [](DarkMode& mode) {
|
||||
int32_t result = UiAppearanceAbilityClient::GetInstance()->GetDarkMode();
|
||||
if (result == static_cast<int32_t>(DarkMode::ALWAYS_DARK) ||
|
||||
result == static_cast<int32_t>(DarkMode::ALWAYS_LIGHT) ||
|
||||
result == static_cast<int32_t>(DarkMode::UNKNOWN)) {
|
||||
result == static_cast<int32_t>(DarkMode::ALWAYS_LIGHT) || result == static_cast<int32_t>(DarkMode::UNKNOWN)) {
|
||||
mode = static_cast<DarkMode>(result);
|
||||
return UiAppearanceAbilityErrCode::SUCCEEDED;
|
||||
}
|
||||
return static_cast<UiAppearanceAbilityErrCode>(result);
|
||||
};
|
||||
|
||||
UIAppearance::SetSettingDataFunc UIAppearance::setSettingDataFunc_ = [](std::string key, std::string value) {
|
||||
return static_cast<UiAppearanceAbilityErrCode>(
|
||||
UiAppearanceAbilityClient::GetInstance()->SetSettingData(key, value));
|
||||
};
|
||||
|
||||
UiAppearanceAbilityErrCode UIAppearance::SetDarkMode(DarkMode mode)
|
||||
{
|
||||
return setDarkModeFunc_(mode);
|
||||
@@ -44,6 +48,17 @@ UiAppearanceAbilityErrCode UIAppearance::GetDarkMode(DarkMode& mode)
|
||||
{
|
||||
return getDarkModeFunc_(mode);
|
||||
}
|
||||
|
||||
UiAppearanceAbilityErrCode UIAppearance::SetSettingData(std::string key, std::string value)
|
||||
{
|
||||
return setSettingDataFunc_(key, value);
|
||||
}
|
||||
|
||||
extern "C" __attribute__((visibility("default"))) int32_t OH_UIAppearance_SetSettingDate(
|
||||
const char* key, const char* value)
|
||||
{
|
||||
return UIAppearance::SetSettingData(std::string(key), std::string(value));
|
||||
}
|
||||
} // namespace UiAppearance
|
||||
} // namespace ArkUi
|
||||
} // namespace OHOS
|
||||
|
||||
@@ -132,6 +132,7 @@ ohos_shared_library("ui_appearance_client") {
|
||||
"ipc:ipc_single",
|
||||
"safwk:system_ability_fwk",
|
||||
"samgr:samgr_proxy",
|
||||
"access_token:libtokenid_sdk"
|
||||
]
|
||||
|
||||
cflags_cc = [
|
||||
|
||||
@@ -20,4 +20,5 @@ interface OHOS.ArkUi.UiAppearance.IUiAppearanceAbility {
|
||||
int SetFontScale([in] String fontScale);
|
||||
int GetFontWeightScale([out] String fontWeightScale);
|
||||
int SetFontWeightScale([in] String fontWeightScale);
|
||||
int SetSettingData([in] String key, [in] String value);
|
||||
}
|
||||
@@ -63,6 +63,7 @@ public:
|
||||
ErrCode SetFontScale(const std::string& fontScale, int32_t& funcResult) override;
|
||||
ErrCode GetFontWeightScale(std::string& fontWeightScale, int32_t& funcResult) override;
|
||||
ErrCode SetFontWeightScale(const std::string& fontWeightScale, int32_t& funcResult) override;
|
||||
ErrCode SetSettingData(const std::string& key, const std::string& value, int32_t& funcResult) override;
|
||||
|
||||
protected:
|
||||
void OnStart() override;
|
||||
@@ -110,6 +111,7 @@ private:
|
||||
std::atomic<bool> isInitializationFinished_ = false;
|
||||
std::set<int32_t> userSwitchUpdateConfigurationOnceFlag_;
|
||||
std::mutex userSwitchUpdateConfigurationOnceFlagMutex_;
|
||||
std::mutex settingMutex_;
|
||||
};
|
||||
} // namespace ArkUi::UiAppearance
|
||||
} // namespace OHOS
|
||||
|
||||
@@ -43,6 +43,7 @@ public:
|
||||
int32_t SetFontScale(std::string& fontScale);
|
||||
int32_t GetFontWeightScale(std::string& fontWeightScale);
|
||||
int32_t SetFontWeightScale(std::string& fontWeightScale);
|
||||
int32_t SetSettingData(std::string key, std::string value);
|
||||
void OnRemoteSaDied(const wptr<IRemoteObject>& object);
|
||||
|
||||
private:
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
#include "background_app_color_switch_settings.h"
|
||||
#include "background_app_info.h"
|
||||
#include "configuration_policy.h"
|
||||
#include "setting_data_manager.h"
|
||||
|
||||
namespace {
|
||||
static const std::string LIGHT = "light";
|
||||
@@ -781,6 +782,17 @@ ErrCode UiAppearanceAbility::GetFontWeightScale(std::string& fontWeightScale, in
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
ErrCode UiAppearanceAbility::SetSettingData(const std::string& key, const std::string& value, int32_t& funcResult)
|
||||
{
|
||||
SettingDataManager& manager = SettingDataManager::GetInstance();
|
||||
std::lock_guard lock(settingMutex_);
|
||||
manager.SetStringValue(key, value, GetCallingUserId());
|
||||
|
||||
LOGD("set setting data key:%{public}s value:%{public}s", key.c_str(), value.c_str());
|
||||
funcResult = SUCCEEDED;
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
void UiAppearanceAbility::UpdateSmartGestureModeCallback(bool isAutoMode, int32_t userId)
|
||||
{
|
||||
bool ret = false;
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
#include "ui_appearance_log.h"
|
||||
#include "xcollie/xcollie.h"
|
||||
#include "xcollie/xcollie_define.h"
|
||||
#include "ipc_skeleton.h"
|
||||
#include "tokenid_kit.h"
|
||||
|
||||
namespace OHOS {
|
||||
namespace ArkUi::UiAppearance {
|
||||
@@ -133,6 +135,26 @@ int32_t UiAppearanceAbilityClient::GetFontWeightScale(std::string &fontWeightSca
|
||||
return funcRes;
|
||||
}
|
||||
|
||||
int32_t UiAppearanceAbilityClient::SetSettingData(std::string key, std::string value)
|
||||
{
|
||||
if (!GetUiAppearanceServiceProxy()) {
|
||||
LOGE("SetSettingData quit because redoing CreateUiAppearanceServiceProxy failed.");
|
||||
return UiAppearanceAbilityErrCode::SYS_ERR;
|
||||
}
|
||||
auto selfToken = IPCSkeleton::GetSelfTokenID();
|
||||
if (!Security::AccessToken::TokenIdKit::IsSystemAppByFullTokenID(selfToken)) {
|
||||
LOGE("SetSettingData quit because caller is not system app.");
|
||||
return UiAppearanceAbilityErrCode::NOT_SYSTEM_APP;
|
||||
}
|
||||
int32_t funcRes = -1;
|
||||
auto res = GetUiAppearanceServiceProxy()->SetSettingData(key, value, funcRes);
|
||||
if (res != ERR_OK) {
|
||||
return UiAppearanceAbilityErrCode::SYS_ERR;
|
||||
}
|
||||
return funcRes;
|
||||
}
|
||||
|
||||
|
||||
sptr<IUiAppearanceAbility> UiAppearanceAbilityClient::CreateUiAppearanceServiceProxy()
|
||||
{
|
||||
sptr<ISystemAbilityManager> systemAbilityManager =
|
||||
|
||||
Reference in New Issue
Block a user