• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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