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 "bridge/declarative_frontend/jsview/models/side_bar_container_model_impl.h"
17
18 #include "bridge/declarative_frontend/jsview/js_view_common_def.h"
19
20 namespace OHOS::Ace::Framework {
SetSideBarContainerType(SideBarContainerType type)21 void SideBarContainerModelImpl::SetSideBarContainerType(SideBarContainerType type)
22 {
23 std::list<RefPtr<Component>> children;
24 auto sideBarContainer = AceType::MakeRefPtr<OHOS::Ace::SideBarContainerComponent>(children);
25 ViewStackProcessor::GetInstance()->ClaimElementId(sideBarContainer);
26 sideBarContainer->SetMainStackSize(MainStackSize::MAX);
27 sideBarContainer->SetSideBarContainerType(type);
28
29 auto stack = ViewStackProcessor::GetInstance();
30 stack->Push(sideBarContainer);
31 JSInteractableView::SetFocusable(false);
32 JSInteractableView::SetFocusNode(true);
33 }
34
SetShowSideBar(bool isShow)35 void SideBarContainerModelImpl::SetShowSideBar(bool isShow)
36 {
37 auto stack = ViewStackProcessor::GetInstance();
38 auto component = AceType::DynamicCast<OHOS::Ace::SideBarContainerComponent>(stack->GetMainComponent());
39 CHECK_NULL_VOID(component);
40 component->SetShowSideBar(isShow);
41 }
42
SetShowControlButton(bool showControlButton)43 void SideBarContainerModelImpl::SetShowControlButton(bool showControlButton)
44 {
45 auto stack = ViewStackProcessor::GetInstance();
46 auto component = AceType::DynamicCast<OHOS::Ace::SideBarContainerComponent>(stack->GetMainComponent());
47 CHECK_NULL_VOID(component);
48 component->SetShowControlButton(showControlButton);
49 }
50
ParseAndSetWidth(WidthType widthType,Dimension & width,bool isDoubleBind)51 void SideBarContainerModelImpl::ParseAndSetWidth(WidthType widthType, Dimension& width, bool isDoubleBind)
52 {
53 if (LessNotEqual(width.Value(), 0.0)) {
54 width.SetValue(0.0);
55 }
56 auto stack = ViewStackProcessor::GetInstance();
57 auto component = AceType::DynamicCast<OHOS::Ace::SideBarContainerComponent>(stack->GetMainComponent());
58 CHECK_NULL_VOID(component);
59 if (width.Unit() == DimensionUnit::PERCENT) {
60 component->SetIsPercentSize(width.Unit() == DimensionUnit::PERCENT);
61 }
62 switch (widthType) {
63 case WidthType::SIDEBAR_WIDTH:
64 component->SetSideBarWidth(width);
65 break;
66 case WidthType::MIN_SIDEBAR_WIDTH:
67 component->SetSideBarMinWidth(width);
68 break;
69 case WidthType::MAX_SIDEBAR_WIDTH:
70 component->SetSideBarMaxWidth(width);
71 break;
72 default:
73 break;
74 }
75 }
76
SetSideBarWidth(const Dimension & sideBarWidth,bool isDoubleBind)77 void SideBarContainerModelImpl::SetSideBarWidth(const Dimension& sideBarWidth, bool isDoubleBind) {}
78
SetMinSideBarWidth(const Dimension & minSideBarWidth)79 void SideBarContainerModelImpl::SetMinSideBarWidth(const Dimension& minSideBarWidth) {}
80
SetMaxSideBarWidth(const Dimension & maxSideBarWidth)81 void SideBarContainerModelImpl::SetMaxSideBarWidth(const Dimension& maxSideBarWidth) {}
82
SetAutoHide(bool autoHide)83 void SideBarContainerModelImpl::SetAutoHide(bool autoHide)
84 {
85 auto stack = ViewStackProcessor::GetInstance();
86 auto component = AceType::DynamicCast<OHOS::Ace::SideBarContainerComponent>(stack->GetMainComponent());
87 CHECK_NULL_VOID(component);
88 component->SetAutoHide(autoHide);
89 }
90
SetSideBarPosition(SideBarPosition sideBarPosition)91 void SideBarContainerModelImpl::SetSideBarPosition(SideBarPosition sideBarPosition)
92 {
93 auto stack = ViewStackProcessor::GetInstance();
94 auto component = AceType::DynamicCast<SideBarContainerComponent>(stack->GetMainComponent());
95 CHECK_NULL_VOID(component);
96 component->SetSideBarPosition(sideBarPosition);
97 }
98
SetControlButtonWidth(const Dimension & width)99 void SideBarContainerModelImpl::SetControlButtonWidth(const Dimension& width)
100 {
101 auto stack = ViewStackProcessor::GetInstance();
102 auto component = AceType::DynamicCast<OHOS::Ace::SideBarContainerComponent>(stack->GetMainComponent());
103 CHECK_NULL_VOID(component);
104 auto buttonWidth = width.ConvertToVp();
105 component->SetButtonWidth(buttonWidth);
106 }
107
SetControlButtonHeight(const Dimension & height)108 void SideBarContainerModelImpl::SetControlButtonHeight(const Dimension& height)
109 {
110 auto stack = ViewStackProcessor::GetInstance();
111 auto component = AceType::DynamicCast<OHOS::Ace::SideBarContainerComponent>(stack->GetMainComponent());
112 CHECK_NULL_VOID(component);
113 auto buttonHeight = height.ConvertToVp();
114 component->SetButtonHeight(buttonHeight);
115 }
116
SetControlButtonLeft(const Dimension & left)117 void SideBarContainerModelImpl::SetControlButtonLeft(const Dimension& left)
118 {
119 auto stack = ViewStackProcessor::GetInstance();
120 auto component = AceType::DynamicCast<OHOS::Ace::SideBarContainerComponent>(stack->GetMainComponent());
121 CHECK_NULL_VOID(component);
122 auto buttonLeft = left.ConvertToVp();
123 component->SetButtonLeft(buttonLeft);
124 }
125
SetControlButtonTop(const Dimension & top)126 void SideBarContainerModelImpl::SetControlButtonTop(const Dimension& top)
127 {
128 auto stack = ViewStackProcessor::GetInstance();
129 auto component = AceType::DynamicCast<OHOS::Ace::SideBarContainerComponent>(stack->GetMainComponent());
130 CHECK_NULL_VOID(component);
131 auto buttonTop = top.ConvertToVp();
132 component->SetButtonTop(buttonTop);
133 }
134
SetControlButtonShowIconInfo(const std::string & showIconStr,bool isPixelMap,RefPtr<PixelMap> pixMap)135 void SideBarContainerModelImpl::SetControlButtonShowIconInfo(
136 const std::string& showIconStr, bool isPixelMap, RefPtr<PixelMap> pixMap)
137 {
138 auto stack = ViewStackProcessor::GetInstance();
139 auto component = AceType::DynamicCast<OHOS::Ace::SideBarContainerComponent>(stack->GetMainComponent());
140 CHECK_NULL_VOID(component);
141 component->SetShowIcon(showIconStr);
142 }
143
SetControlButtonHiddenIconInfo(const std::string & hiddenIconStr,bool isPixelMap,RefPtr<PixelMap> pixMap)144 void SideBarContainerModelImpl::SetControlButtonHiddenIconInfo(
145 const std::string& hiddenIconStr, bool isPixelMap, RefPtr<PixelMap> pixMap)
146 {
147 auto stack = ViewStackProcessor::GetInstance();
148 auto component = AceType::DynamicCast<OHOS::Ace::SideBarContainerComponent>(stack->GetMainComponent());
149 CHECK_NULL_VOID(component);
150 component->SetHiddenIcon(hiddenIconStr);
151 }
152
SetControlButtonSwitchingIconInfo(const std::string & switchingIconStr,bool isPixelMap,RefPtr<PixelMap> pixMap)153 void SideBarContainerModelImpl::SetControlButtonSwitchingIconInfo(
154 const std::string& switchingIconStr, bool isPixelMap, RefPtr<PixelMap> pixMap)
155 {
156 auto stack = ViewStackProcessor::GetInstance();
157 auto component = AceType::DynamicCast<OHOS::Ace::SideBarContainerComponent>(stack->GetMainComponent());
158 CHECK_NULL_VOID(component);
159 component->SetSwitchIcon(switchingIconStr);
160 }
161
ResetControlButtonIconInfo()162 void SideBarContainerModelImpl::ResetControlButtonIconInfo() {}
163
SetOnChange(std::function<void (const bool)> && onChange)164 void SideBarContainerModelImpl::SetOnChange(std::function<void(const bool)>&& onChange)
165 {
166 JSViewSetProperty(&SideBarContainerComponent::SetOnChange, std::move(onChange));
167 }
168
SetDividerStrokeWidth(const Dimension & strokeWidth)169 void SideBarContainerModelImpl::SetDividerStrokeWidth(const Dimension& strokeWidth) {}
170
SetDividerColor(const Color & color)171 void SideBarContainerModelImpl::SetDividerColor(const Color& color) {}
172
SetDividerStartMargin(const Dimension & startMargin)173 void SideBarContainerModelImpl::SetDividerStartMargin(const Dimension& startMargin) {}
174
SetDividerEndMargin(const Dimension & endMargin)175 void SideBarContainerModelImpl::SetDividerEndMargin(const Dimension& endMargin) {}
176
SetMinContentWidth(const Dimension & minContentWidth)177 void SideBarContainerModelImpl::SetMinContentWidth(const Dimension& minContentWidth) {};
178
MarkNeedInitRealSideBarWidth()179 void SideBarContainerModelImpl::MarkNeedInitRealSideBarWidth() {}
180
ResetControlButton()181 void SideBarContainerModelImpl::ResetControlButton() {}
182 } // namespace OHOS::Ace::Framework
183