• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023-2024 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 "i18n_hilog.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 {
GetProxy(I18nErrorCode & err)25 sptr<II18nServiceAbility> I18nServiceAbilityClient::GetProxy(I18nErrorCode &err)
26 {
27     sptr<IRemoteObject> proxy = I18nServiceAbilityLoadManager::GetInstance()->GetI18nServiceAbility(I18N_SA_ID);
28     if (proxy == nullptr) {
29         HILOG_ERROR_I18N("I18nServiceAbilityClient::GetProxy load sa failed, try again.");
30         proxy = I18nServiceAbilityLoadManager::GetInstance()->GetI18nServiceAbility(I18N_SA_ID);
31     }
32     if (proxy == nullptr) {
33         HILOG_ERROR_I18N("I18nServiceAbilityClient::GetProxy load sa failed.");
34         err = I18nErrorCode::LOAD_SA_FAILED;
35         return nullptr;
36     }
37     return iface_cast<II18nServiceAbility>(proxy);
38 }
39 
SetSystemLanguage(const std::string & language)40 I18nErrorCode I18nServiceAbilityClient::SetSystemLanguage(const std::string &language)
41 {
42     I18nErrorCode err = I18nErrorCode::SUCCESS;
43     sptr<II18nServiceAbility> i18nServiceAbilityObj = GetProxy(err);
44     if (i18nServiceAbilityObj == nullptr) {
45         HILOG_ERROR_I18N("I18nServiceAbilityClient::SetSystemLanguage: Get proxy failed.");
46         return err;
47     }
48     int32_t code = 0;
49     ErrCode errCode = i18nServiceAbilityObj->SetSystemLanguage(language, code);
50     if (errCode != ERR_OK) {
51         HILOG_ERROR_I18N("I18nServiceAbilityClient::SetSystemLanguage: Set language failed, errCode is %{public}d.",
52             static_cast<int32_t>(errCode));
53         return I18nErrorCode::FAILED;
54     }
55     return static_cast<I18nErrorCode>(code);
56 }
57 
SetSystemRegion(const std::string & region)58 I18nErrorCode I18nServiceAbilityClient::SetSystemRegion(const std::string &region)
59 {
60     I18nErrorCode err = I18nErrorCode::SUCCESS;
61     sptr<II18nServiceAbility> i18nServiceAbilityObj = GetProxy(err);
62     if (i18nServiceAbilityObj == nullptr) {
63         HILOG_ERROR_I18N("I18nServiceAbilityClient::SetSystemRegion: Get proxy failed.");
64         return err;
65     }
66     int32_t code = 0;
67     ErrCode errCode = i18nServiceAbilityObj->SetSystemRegion(region, code);
68     if (errCode != ERR_OK) {
69         HILOG_ERROR_I18N("I18nServiceAbilityClient::SetSystemRegion: Set region failed, errCode is %{public}d.",
70             static_cast<int32_t>(errCode));
71         return I18nErrorCode::FAILED;
72     }
73     return static_cast<I18nErrorCode>(code);
74 }
75 
SetSystemLocale(const std::string & locale)76 I18nErrorCode I18nServiceAbilityClient::SetSystemLocale(const std::string &locale)
77 {
78     I18nErrorCode err = I18nErrorCode::SUCCESS;
79     sptr<II18nServiceAbility> i18nServiceAbilityObj = GetProxy(err);
80     if (i18nServiceAbilityObj == nullptr) {
81         HILOG_ERROR_I18N("I18nServiceAbilityClient::SetSystemLocale: Get proxy failed.");
82         return err;
83     }
84     int32_t code = 0;
85     ErrCode errCode = i18nServiceAbilityObj->SetSystemLocale(locale, code);
86     if (errCode != ERR_OK) {
87         HILOG_ERROR_I18N("I18nServiceAbilityClient::SetSystemLocale: Set locale failed, errCode is %{public}d.",
88             static_cast<int32_t>(errCode));
89         return I18nErrorCode::FAILED;
90     }
91     return static_cast<I18nErrorCode>(code);
92 }
93 
Set24HourClock(const std::string & flag)94 I18nErrorCode I18nServiceAbilityClient::Set24HourClock(const std::string &flag)
95 {
96     I18nErrorCode err = I18nErrorCode::SUCCESS;
97     sptr<II18nServiceAbility> i18nServiceAbilityObj = GetProxy(err);
98     if (i18nServiceAbilityObj == nullptr) {
99         HILOG_ERROR_I18N("I18nServiceAbilityClient::Set24HourClock: Get proxy failed.");
100         return err;
101     }
102     int32_t code = 0;
103     ErrCode errCode = i18nServiceAbilityObj->Set24HourClock(flag, code);
104     if (errCode != ERR_OK) {
105         HILOG_ERROR_I18N("I18nServiceAbilityClient::Set24HourClock: Set 24HourClock failed, errCode is %{public}d.",
106             static_cast<int32_t>(errCode));
107         return I18nErrorCode::FAILED;
108     }
109     return static_cast<I18nErrorCode>(code);
110 }
111 
SetUsingLocalDigit(bool flag)112 I18nErrorCode I18nServiceAbilityClient::SetUsingLocalDigit(bool flag)
113 {
114     I18nErrorCode err = I18nErrorCode::SUCCESS;
115     sptr<II18nServiceAbility> i18nServiceAbilityObj = GetProxy(err);
116     if (i18nServiceAbilityObj == nullptr) {
117         HILOG_ERROR_I18N("I18nServiceAbilityClient::SetUsingLocalDigit: Get proxy failed.");
118         return err;
119     }
120     int32_t code = 0;
121     ErrCode errCode = i18nServiceAbilityObj->SetUsingLocalDigit(flag, code);
122     if (errCode != ERR_OK) {
123         HILOG_ERROR_I18N("I18nServiceAbilityClient::SetUsingLocalDigit: Set local digit failed, "
124             "errCode is %{public}d.", static_cast<int32_t>(errCode));
125         return I18nErrorCode::FAILED;
126     }
127     return static_cast<I18nErrorCode>(code);
128 }
129 
AddPreferredLanguage(const std::string & language,int32_t index)130 I18nErrorCode I18nServiceAbilityClient::AddPreferredLanguage(const std::string &language, int32_t index)
131 {
132     I18nErrorCode err = I18nErrorCode::SUCCESS;
133     sptr<II18nServiceAbility> i18nServiceAbilityObj = GetProxy(err);
134     if (i18nServiceAbilityObj == nullptr) {
135         HILOG_ERROR_I18N("I18nServiceAbilityClient::AddPreferredLanguage: Get proxy failed.");
136         return err;
137     }
138     int32_t code = 0;
139     ErrCode errCode = i18nServiceAbilityObj->AddPreferredLanguage(language, index, code);
140     if (errCode != ERR_OK) {
141         HILOG_ERROR_I18N("I18nServiceAbilityClient::AddPreferredLanguage: Add preferred language failed, "
142             "errCode is %{public}d.", static_cast<int32_t>(errCode));
143         return I18nErrorCode::FAILED;
144     }
145     return static_cast<I18nErrorCode>(code);
146 }
147 
RemovePreferredLanguage(int32_t index)148 I18nErrorCode I18nServiceAbilityClient::RemovePreferredLanguage(int32_t index)
149 {
150     I18nErrorCode err = I18nErrorCode::SUCCESS;
151     sptr<II18nServiceAbility> i18nServiceAbilityObj = GetProxy(err);
152     if (i18nServiceAbilityObj == nullptr) {
153         HILOG_ERROR_I18N("I18nServiceAbilityClient::RemovePreferredLanguage: Get proxy failed.");
154         return err;
155     }
156     int32_t code = 0;
157     ErrCode errCode = i18nServiceAbilityObj->RemovePreferredLanguage(index, code);
158     if (errCode != ERR_OK) {
159         HILOG_ERROR_I18N("I18nServiceAbilityClient::RemovePreferredLanguage: Remove preferred language failed, "
160             "errCode is %{public}d.", static_cast<int32_t>(errCode));
161         return I18nErrorCode::FAILED;
162     }
163     return static_cast<I18nErrorCode>(code);
164 }
165 
SetTemperatureType(TemperatureType type)166 I18nErrorCode I18nServiceAbilityClient::SetTemperatureType(TemperatureType type)
167 {
168     I18nErrorCode err = I18nErrorCode::SUCCESS;
169     sptr<II18nServiceAbility> i18nServiceAbilityObj = GetProxy(err);
170     if (i18nServiceAbilityObj == nullptr) {
171         HILOG_ERROR_I18N("I18nServiceAbilityClient::SetTemperatureType: Get proxy failed.");
172         return err;
173     }
174     int32_t code = 0;
175     ErrCode errCode = i18nServiceAbilityObj->SetTemperatureType(static_cast<int32_t>(type), code);
176     if (errCode != ERR_OK) {
177         HILOG_ERROR_I18N("I18nServiceAbilityClient::SetTemperatureType: Set temperature type failed, "
178             "errCode is %{public}d.", static_cast<int32_t>(errCode));
179         return I18nErrorCode::FAILED;
180     }
181     return static_cast<I18nErrorCode>(code);
182 }
183 
SetFirstDayOfWeek(WeekDay type)184 I18nErrorCode I18nServiceAbilityClient::SetFirstDayOfWeek(WeekDay type)
185 {
186     I18nErrorCode err = I18nErrorCode::SUCCESS;
187     sptr<II18nServiceAbility> i18nServiceAbilityObj = GetProxy(err);
188     if (i18nServiceAbilityObj == nullptr) {
189         HILOG_ERROR_I18N("I18nServiceAbilityClient::SetFirstDayOfWeek: Get proxy failed.");
190         return err;
191     }
192     int32_t code = 0;
193     ErrCode errCode = i18nServiceAbilityObj->SetFirstDayOfWeek(static_cast<int32_t>(type), code);
194     if (errCode != ERR_OK) {
195         HILOG_ERROR_I18N("I18nServiceAbilityClient::SetFirstDayOfWeek: Set first day of week failed, "
196             "errCode is %{public}d.", static_cast<int32_t>(errCode));
197         return I18nErrorCode::FAILED;
198     }
199     return static_cast<I18nErrorCode>(code);
200 }
201 } // namespace I18n
202 } // namespace Global
203 } // namespace OHOS