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 #ifndef OHOS_GLOBAL_I18N_I18N_SERVICE_ABILITY_PROXY_H
17 #define OHOS_GLOBAL_I18N_I18N_SERVICE_ABILITY_PROXY_H
18 
19 #include "ii18n_service_ability.h"
20 #include "iremote_broker.h"
21 #include "iremote_proxy.h"
22 
23 namespace OHOS {
24 namespace Global {
25 namespace I18n {
26 /**
27  * @brief I18n Service Proxy class which responsible for initiating service requests.
28  */
29 class I18nServiceAbilityProxy : public IRemoteProxy<II18nServiceAbility> {
30 public:
31     explicit I18nServiceAbilityProxy(const sptr<IRemoteObject> &impl);
32     ~I18nServiceAbilityProxy() = default;
33 
34     /**
35      * @brief Initiating set system language request to i18n service.
36      *
37      * @param language language tag to set.
38      * @return I18nErrorCode Return SUCCESS indicates that the request was successful.
39      */
40     I18nErrorCode SetSystemLanguage(const std::string &language);
41 
42     /**
43      * @brief Initiating set system region request to i18n service.
44      *
45      * @param region region tag to set.
46      * @return I18nErrorCode Return SUCCESS indicates that the request was successful.
47      */
48     I18nErrorCode SetSystemRegion(const std::string &region);
49 
50     /**
51      * @brief Initiating set system locale request to i18n service.
52      *
53      * @param locale locale tag to set.
54      * @return I18nErrorCode Return SUCCESS indicates that the request was successful.
55      */
56     I18nErrorCode SetSystemLocale(const std::string &locale);
57 
58     /**
59      * @brief Initiating set system 12 or 24-hour clock request to i18n service.
60      *
61      * @param flag When flag is true, the system adopts 24-hour clock;
62      * When flag is false, the system adopts 12-hour clock; When flag is empty string, the system adopts
63      * system locale default behavior.
64      * @return I18nErrorCode Return SUCCESS indicates that the request was successful.
65      */
66     I18nErrorCode Set24HourClock(const std::string &flag);
67 
68     /**
69      * @brief Initiating set system digit request to i18n service.
70      *
71      * @param flag When flag is True, request to adopt local digit;
72      * When flag is False, request to adopt arbic digit;
73      * @return I18nErrorCode Return SUCCESS indicates that the request was successful.
74      */
75     I18nErrorCode SetUsingLocalDigit(bool flag);
76 
77     /**
78      * @brief Initiating add system preferred language request to i18n service.
79      *
80      * @param language preferred language tag to set.
81      * @param index Indicats added preferred language index.
82      * @return I18nErrorCode Return SUCCESS indicates that the request was successful.
83      */
84     I18nErrorCode AddPreferredLanguage(const std::string &language, int32_t index);
85 
86     /**
87      * @brief Initiating remove system preferred language request to i18n service.
88      *
89      * @param index Indicats removed preferred language index.
90      * @return I18nErrorCode Return SUCCESS indicates that the request was successful.
91      */
92     I18nErrorCode RemovePreferredLanguage(int32_t index);
93 
94 private:
95     static I18nErrorCode ProcessReply(int32_t reply);
96     static inline BrokerDelegator<I18nServiceAbilityProxy> delegator_;
97 };
98 } // namespace I18n
99 } // namespace Global
100 } // namespace OHOS
101 #endif // OHOS_GLOBAL_I18N_I18N_SERVICE_ABILITY_PROXY_H