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