1db372d24Sopenharmony_ci/*
2db372d24Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
3db372d24Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4db372d24Sopenharmony_ci * you may not use this file except in compliance with the License.
5db372d24Sopenharmony_ci * You may obtain a copy of the License at
6db372d24Sopenharmony_ci *
7db372d24Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8db372d24Sopenharmony_ci *
9db372d24Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10db372d24Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11db372d24Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12db372d24Sopenharmony_ci * See the License for the specific language governing permissions and
13db372d24Sopenharmony_ci * limitations under the License.
14db372d24Sopenharmony_ci */
15db372d24Sopenharmony_ci
16db372d24Sopenharmony_ci#include "ui_appearance_ability_stub.h"
17db372d24Sopenharmony_ci
18db372d24Sopenharmony_ci#include <string>
19db372d24Sopenharmony_ci#include "ui_appearance_ipc_interface_code.h"
20db372d24Sopenharmony_ci#include "ui_appearance_log.h"
21db372d24Sopenharmony_ci
22db372d24Sopenharmony_cinamespace OHOS {
23db372d24Sopenharmony_cinamespace ArkUi::UiAppearance {
24db372d24Sopenharmony_ciint32_t UiAppearanceAbilityStub::OnRemoteRequest(
25db372d24Sopenharmony_ci    uint32_t code, MessageParcel& data, MessageParcel& reply, MessageOption& option)
26db372d24Sopenharmony_ci{
27db372d24Sopenharmony_ci    bool ret = false;
28db372d24Sopenharmony_ci    std::u16string interfaceToken = data.ReadInterfaceToken();
29db372d24Sopenharmony_ci    if (interfaceToken != GetDescriptor()) {
30db372d24Sopenharmony_ci        LOGE("error permission denied.");
31db372d24Sopenharmony_ci        return -1;
32db372d24Sopenharmony_ci    }
33db372d24Sopenharmony_ci    switch (code) {
34db372d24Sopenharmony_ci        case static_cast<uint32_t>(UiAppearanceInterfaceCode::SET_DARK_MODE): {
35db372d24Sopenharmony_ci            UiAppearanceAbilityInterface::DarkMode mode =
36db372d24Sopenharmony_ci                static_cast<UiAppearanceAbilityInterface::DarkMode>(data.ReadInt32());
37db372d24Sopenharmony_ci            ret = reply.WriteInt32(SetDarkMode(mode));
38db372d24Sopenharmony_ci            return (ret ? 0 : -1);
39db372d24Sopenharmony_ci        }
40db372d24Sopenharmony_ci        case static_cast<uint32_t>(UiAppearanceInterfaceCode::GET_DARK_MODE): {
41db372d24Sopenharmony_ci            ret = reply.WriteInt32(GetDarkMode());
42db372d24Sopenharmony_ci            return (ret ? 0 : -1);
43db372d24Sopenharmony_ci        }
44db372d24Sopenharmony_ci        case static_cast<uint32_t>(UiAppearanceInterfaceCode::GET_FONT_SCALE): {
45db372d24Sopenharmony_ci            return OnGetFontScaleInner(data, reply, option);
46db372d24Sopenharmony_ci        }
47db372d24Sopenharmony_ci        case static_cast<uint32_t>(UiAppearanceInterfaceCode::SET_FONT_SCALE): {
48db372d24Sopenharmony_ci            return OnSetFontScaleInner(data, reply, option);
49db372d24Sopenharmony_ci        }
50db372d24Sopenharmony_ci        case static_cast<uint32_t>(UiAppearanceInterfaceCode::GET_FONT_Weight_SCALE): {
51db372d24Sopenharmony_ci            return OnGetFontWeightScaleInner(data, reply, option);
52db372d24Sopenharmony_ci        }
53db372d24Sopenharmony_ci        case static_cast<uint32_t>(UiAppearanceInterfaceCode::SET_FONT_Weight_SCALE): {
54db372d24Sopenharmony_ci            return OnSetFontWeightScaleInner(data, reply, option);
55db372d24Sopenharmony_ci        }
56db372d24Sopenharmony_ci        default:
57db372d24Sopenharmony_ci            return IPCObjectStub::OnRemoteRequest(code, data, reply, option);
58db372d24Sopenharmony_ci    }
59db372d24Sopenharmony_ci}
60db372d24Sopenharmony_ci
61db372d24Sopenharmony_ciint32_t UiAppearanceAbilityStub::OnGetFontScaleInner(MessageParcel& data, MessageParcel& reply, MessageOption& option)
62db372d24Sopenharmony_ci{
63db372d24Sopenharmony_ci    std::string fontScale;
64db372d24Sopenharmony_ci    auto state = GetFontScale(fontScale);
65db372d24Sopenharmony_ci    auto ret = reply.WriteInt32(state);
66db372d24Sopenharmony_ci    if (!ret) {
67db372d24Sopenharmony_ci        LOGE("ui_appearance GetFontScale write state fail");
68db372d24Sopenharmony_ci        return -1;
69db372d24Sopenharmony_ci    }
70db372d24Sopenharmony_ci    ret = reply.WriteString(fontScale);
71db372d24Sopenharmony_ci    if (!ret) {
72db372d24Sopenharmony_ci        LOGE("ui_appearance GetFontScale write fontScale fail");
73db372d24Sopenharmony_ci        return -1;
74db372d24Sopenharmony_ci    }
75db372d24Sopenharmony_ci    return 0;
76db372d24Sopenharmony_ci}
77db372d24Sopenharmony_ci
78db372d24Sopenharmony_ciint32_t UiAppearanceAbilityStub::OnSetFontScaleInner(MessageParcel& data, MessageParcel& reply, MessageOption& option)
79db372d24Sopenharmony_ci{
80db372d24Sopenharmony_ci    std::string fontScale;
81db372d24Sopenharmony_ci    auto ret = data.ReadString(fontScale);
82db372d24Sopenharmony_ci    if (!ret) {
83db372d24Sopenharmony_ci        LOGE("ui_appearance SetFontScale Read fontScale fail");
84db372d24Sopenharmony_ci        return -1;
85db372d24Sopenharmony_ci    }
86db372d24Sopenharmony_ci    ret = reply.WriteInt32(SetFontScale(fontScale));
87db372d24Sopenharmony_ci    return (ret ? 0 : -1);
88db372d24Sopenharmony_ci}
89db372d24Sopenharmony_ci
90db372d24Sopenharmony_ciint32_t UiAppearanceAbilityStub::OnGetFontWeightScaleInner(
91db372d24Sopenharmony_ci    MessageParcel& data, MessageParcel& reply, MessageOption& option)
92db372d24Sopenharmony_ci{
93db372d24Sopenharmony_ci    std::string fontWeightScale;
94db372d24Sopenharmony_ci    auto state = GetFontWeightScale(fontWeightScale);
95db372d24Sopenharmony_ci    auto ret = reply.WriteInt32(state);
96db372d24Sopenharmony_ci    if (!ret) {
97db372d24Sopenharmony_ci        LOGE("ui_appearance GetFontWeightScale write state fail");
98db372d24Sopenharmony_ci        return -1;
99db372d24Sopenharmony_ci    }
100db372d24Sopenharmony_ci    ret = reply.WriteString(fontWeightScale);
101db372d24Sopenharmony_ci    if (!ret) {
102db372d24Sopenharmony_ci        LOGE("ui_appearance GetFontWeightScale write fontScale fail");
103db372d24Sopenharmony_ci        return -1;
104db372d24Sopenharmony_ci    }
105db372d24Sopenharmony_ci    return 0;
106db372d24Sopenharmony_ci}
107db372d24Sopenharmony_ci
108db372d24Sopenharmony_ciint32_t UiAppearanceAbilityStub::OnSetFontWeightScaleInner(
109db372d24Sopenharmony_ci    MessageParcel& data, MessageParcel& reply, MessageOption& option)
110db372d24Sopenharmony_ci{
111db372d24Sopenharmony_ci    std::string fontWeightScale;
112db372d24Sopenharmony_ci    auto ret = data.ReadString(fontWeightScale);
113db372d24Sopenharmony_ci    if (!ret) {
114db372d24Sopenharmony_ci        LOGE("ui_appearance SetFontWeightScale Read fontScale fail");
115db372d24Sopenharmony_ci        return -1;
116db372d24Sopenharmony_ci    }
117db372d24Sopenharmony_ci    ret = reply.WriteInt32(SetFontWeightScale(fontWeightScale));
118db372d24Sopenharmony_ci    return (ret ? 0 : -1);
119db372d24Sopenharmony_ci}
120db372d24Sopenharmony_ci
121db372d24Sopenharmony_ci} // namespace ArkUi::UiAppearance
122db372d24Sopenharmony_ci} // namespace OHOS
123