1 /*
2 * Copyright (c) 2023 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "hilog/log.h"
17 #include "i18n_service_ability_load_manager.h"
18 #include "iremote_object.h"
19 #include "system_ability_definition.h"
20 #include "i18n_service_ability_client.h"
21
22 namespace OHOS {
23 namespace Global {
24 namespace I18n {
25 static constexpr OHOS::HiviewDFX::HiLogLabel LABEL = { LOG_CORE, 0xD001E00, "I18nServiceAbilityClient" };
26 using namespace OHOS::HiviewDFX;
27
GetProxy(I18nErrorCode & err)28 sptr<II18nServiceAbility> I18nServiceAbilityClient::GetProxy(I18nErrorCode &err)
29 {
30 sptr<IRemoteObject> proxy = I18nServiceAbilityLoadManager::GetInstance()->GetI18nServiceAbility(I18N_SA_ID);
31 if (proxy == nullptr) {
32 HiLog::Error(LABEL, "I18nServiceAbilityClient::GetProxy load sa failed, try again.");
33 proxy = I18nServiceAbilityLoadManager::GetInstance()->GetI18nServiceAbility(I18N_SA_ID);
34 }
35 if (proxy == nullptr) {
36 HiLog::Error(LABEL, "I18nServiceAbilityClient::GetProxy load sa failed.");
37 err = I18nErrorCode::LOAD_SA_FAILED;
38 return nullptr;
39 }
40 return iface_cast<II18nServiceAbility>(proxy);
41 }
42
SetSystemLanguage(const std::string & language)43 I18nErrorCode I18nServiceAbilityClient::SetSystemLanguage(const std::string &language)
44 {
45 I18nErrorCode err = I18nErrorCode::SUCCESS;
46 sptr<II18nServiceAbility> i18nServiceAbilityObj = GetProxy(err);
47 if (i18nServiceAbilityObj == nullptr) {
48 return err;
49 }
50 return i18nServiceAbilityObj->SetSystemLanguage(language);
51 }
52
SetSystemRegion(const std::string & region)53 I18nErrorCode I18nServiceAbilityClient::SetSystemRegion(const std::string ®ion)
54 {
55 I18nErrorCode err = I18nErrorCode::SUCCESS;
56 sptr<II18nServiceAbility> i18nServiceAbilityObj = GetProxy(err);
57 if (i18nServiceAbilityObj == nullptr) {
58 return err;
59 }
60 return i18nServiceAbilityObj->SetSystemRegion(region);
61 }
62
SetSystemLocale(const std::string & locale)63 I18nErrorCode I18nServiceAbilityClient::SetSystemLocale(const std::string &locale)
64 {
65 I18nErrorCode err = I18nErrorCode::SUCCESS;
66 sptr<II18nServiceAbility> i18nServiceAbilityObj = GetProxy(err);
67 if (i18nServiceAbilityObj == nullptr) {
68 return err;
69 }
70 return i18nServiceAbilityObj->SetSystemLocale(locale);
71 }
72
Set24HourClock(const std::string & flag)73 I18nErrorCode I18nServiceAbilityClient::Set24HourClock(const std::string &flag)
74 {
75 I18nErrorCode err = I18nErrorCode::SUCCESS;
76 sptr<II18nServiceAbility> i18nServiceAbilityObj = GetProxy(err);
77 if (i18nServiceAbilityObj == nullptr) {
78 return err;
79 }
80 return i18nServiceAbilityObj->Set24HourClock(flag);
81 }
82
SetUsingLocalDigit(bool flag)83 I18nErrorCode I18nServiceAbilityClient::SetUsingLocalDigit(bool flag)
84 {
85 I18nErrorCode err = I18nErrorCode::SUCCESS;
86 sptr<II18nServiceAbility> i18nServiceAbilityObj = GetProxy(err);
87 if (i18nServiceAbilityObj == nullptr) {
88 return err;
89 }
90 return i18nServiceAbilityObj->SetUsingLocalDigit(flag);
91 }
92
AddPreferredLanguage(const std::string & language,int32_t index)93 I18nErrorCode I18nServiceAbilityClient::AddPreferredLanguage(const std::string &language, int32_t index)
94 {
95 I18nErrorCode err = I18nErrorCode::SUCCESS;
96 sptr<II18nServiceAbility> i18nServiceAbilityObj = GetProxy(err);
97 if (i18nServiceAbilityObj == nullptr) {
98 return err;
99 }
100 return i18nServiceAbilityObj->AddPreferredLanguage(language, index);
101 }
102
RemovePreferredLanguage(int32_t index)103 I18nErrorCode I18nServiceAbilityClient::RemovePreferredLanguage(int32_t index)
104 {
105 I18nErrorCode err = I18nErrorCode::SUCCESS;
106 sptr<II18nServiceAbility> i18nServiceAbilityObj = GetProxy(err);
107 if (i18nServiceAbilityObj == nullptr) {
108 return err;
109 }
110 return i18nServiceAbilityObj->RemovePreferredLanguage(index);
111 }
112 } // namespace I18n
113 } // namespace Global
114 } // namespace OHOS