• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 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 "core/components_ng/pattern/linear_indicator/linear_indicator_model_ng.h"
17 
18 #include "core/components_ng/pattern/linear_indicator/linear_indicator_pattern.h"
19 #include "core/pipeline_ng/pipeline_context.h"
20 
21 namespace OHOS::Ace::NG {
Create(std::size_t progressCount)22 RefPtr<NG::LinearIndicatorController> LinearIndicatorModelNG::Create(std::size_t progressCount)
23 {
24     auto* stack = ViewStackProcessor::GetInstance();
25     auto nodeId = stack->ClaimNodeId();
26     auto frameNode = FrameNode::GetOrCreateFrameNode(
27         V2::LINEARINDICATOR_ETS_TAG, nodeId, []() { return AceType::MakeRefPtr<LinearIndicatorPattern>(); });
28     auto pattern = frameNode->GetPattern<LinearIndicatorPattern>();
29     SetProgressCount(frameNode, progressCount);
30     stack->Push(frameNode);
31     return pattern->GetController();
32 }
33 
SetProgressCount(OHOS::Ace::RefPtr<OHOS::Ace::NG::FrameNode> frameNode,std::size_t progressCount)34 void LinearIndicatorModelNG::SetProgressCount(
35     OHOS::Ace::RefPtr<OHOS::Ace::NG::FrameNode> frameNode, std::size_t progressCount)
36 {
37     ACE_UPDATE_NODE_LAYOUT_PROPERTY(LinearIndicatorLayoutProperty, ProgressCount, progressCount, frameNode);
38 }
39 
SetSpace(const Dimension & value)40 void LinearIndicatorModelNG::SetSpace(const Dimension& value)
41 {
42     auto frameNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
43     CHECK_NULL_VOID(frameNode);
44     ACE_UPDATE_NODE_LAYOUT_PROPERTY(LinearIndicatorLayoutProperty, Space, value, frameNode);
45 }
46 
SetStrokeWidth(const Dimension & value)47 void LinearIndicatorModelNG::SetStrokeWidth(const Dimension& value)
48 {
49     auto frameNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
50     CHECK_NULL_VOID(frameNode);
51     ACE_UPDATE_NODE_LAYOUT_PROPERTY(LinearIndicatorLayoutProperty, StrokeWidth, value, frameNode);
52 }
53 
SetStrokeRadius(const Dimension & value)54 void LinearIndicatorModelNG::SetStrokeRadius(const Dimension& value)
55 {
56     auto frameNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
57     CHECK_NULL_VOID(frameNode);
58     ACE_UPDATE_NODE_LAYOUT_PROPERTY(LinearIndicatorLayoutProperty, StrokeRadius, value, frameNode);
59 }
60 
SetTrackBackgroundColor(const Color & value)61 void LinearIndicatorModelNG::SetTrackBackgroundColor(const Color& value)
62 {
63     auto frameNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
64     CHECK_NULL_VOID(frameNode);
65     ACE_UPDATE_NODE_LAYOUT_PROPERTY(LinearIndicatorLayoutProperty, TrackBackgroundColor, value, frameNode);
66 }
67 
SetTrackColor(const Color & value)68 void LinearIndicatorModelNG::SetTrackColor(const Color& value)
69 {
70     auto frameNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
71     CHECK_NULL_VOID(frameNode);
72     ACE_UPDATE_NODE_LAYOUT_PROPERTY(LinearIndicatorLayoutProperty, TrackColor, value, frameNode);
73 }
74 
Loop(bool value)75 void LinearIndicatorModelNG::Loop(bool value)
76 {
77     auto frameNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
78     CHECK_NULL_VOID(frameNode);
79     ACE_UPDATE_NODE_LAYOUT_PROPERTY(LinearIndicatorLayoutProperty, Loop, value, frameNode);
80 }
81 
OnChange(std::function<void (int index,float progress)> && event)82 void LinearIndicatorModelNG::OnChange(std::function<void(int index, float progress)>&& event)
83 {
84     auto frameNode = ViewStackProcessor::GetInstance()->GetMainFrameNode();
85     CHECK_NULL_VOID(frameNode);
86     auto pattern = frameNode->GetPattern<LinearIndicatorPattern>();
87     CHECK_NULL_VOID(pattern);
88     pattern->GetController()->OnChange(std::move(event));
89 }
90 
SetIndicatorStyleSpace(FrameNode * frameNode,const Dimension & space)91 void LinearIndicatorModelNG::SetIndicatorStyleSpace(FrameNode* frameNode, const Dimension& space)
92 {
93     ACE_UPDATE_NODE_LAYOUT_PROPERTY(LinearIndicatorLayoutProperty, Space, space, frameNode);
94 }
95 
SetIndicatorStyleStrokeWidth(FrameNode * frameNode,const Dimension & strokeWidth)96 void LinearIndicatorModelNG::SetIndicatorStyleStrokeWidth(FrameNode* frameNode, const Dimension& strokeWidth)
97 {
98     ACE_UPDATE_NODE_LAYOUT_PROPERTY(LinearIndicatorLayoutProperty, StrokeWidth, strokeWidth, frameNode);
99 }
100 
SetIndicatorStyleStrokeRadius(FrameNode * frameNode,const Dimension & strokeRadius)101 void LinearIndicatorModelNG::SetIndicatorStyleStrokeRadius(FrameNode* frameNode, const Dimension& strokeRadius)
102 {
103     ACE_UPDATE_NODE_LAYOUT_PROPERTY(LinearIndicatorLayoutProperty, StrokeRadius, strokeRadius, frameNode);
104 }
105 
SetIndicatorStyleTrackBackgroundColor(FrameNode * frameNode,const Color & trackBackgroundColor)106 void LinearIndicatorModelNG::SetIndicatorStyleTrackBackgroundColor(
107     FrameNode* frameNode, const Color& trackBackgroundColor)
108 {
109     ACE_UPDATE_NODE_LAYOUT_PROPERTY(
110         LinearIndicatorLayoutProperty, TrackBackgroundColor, trackBackgroundColor, frameNode);
111 }
112 
SetIndicatorStyleTrackColor(FrameNode * frameNode,const Color & trackColor)113 void LinearIndicatorModelNG::SetIndicatorStyleTrackColor(FrameNode* frameNode, const Color& trackColor)
114 {
115     ACE_UPDATE_NODE_LAYOUT_PROPERTY(LinearIndicatorLayoutProperty, TrackColor, trackColor, frameNode);
116 }
117 
SetLoop(FrameNode * frameNode,bool value)118 void LinearIndicatorModelNG::SetLoop(FrameNode* frameNode, bool value)
119 {
120     ACE_UPDATE_NODE_LAYOUT_PROPERTY(LinearIndicatorLayoutProperty, Loop, value, frameNode);
121 }
122 
SetOnChange(FrameNode * frameNode,std::function<void (int index,float progress)> && event)123 void LinearIndicatorModelNG::SetOnChange(FrameNode* frameNode, std::function<void(int index, float progress)>&& event)
124 {
125     auto pattern = frameNode->GetPattern<LinearIndicatorPattern>();
126     CHECK_NULL_VOID(pattern);
127     pattern->GetController()->OnChange(std::move(event));
128 }
129 } // namespace OHOS::Ace::NG
130