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 #include "core/interfaces/native/node/rating_modifier.h"
16 #include "core/components_ng/pattern/rating/rating_model_ng.h"
17 #include "core/pipeline/base/element_register.h"
18 #include "core/components_ng/base/frame_node.h"
19 #include "core/components_ng/base/view_abstract.h"
20 #include "core/components/common/layout/constants.h"
21
22 namespace OHOS::Ace::NG {
23 constexpr int32_t STARS_DEFAULT = 5;
24 constexpr double STEPS_DEFAULT = 0.5;
SetStars(ArkUINodeHandle node,int32_t value)25 void SetStars(ArkUINodeHandle node, int32_t value)
26 {
27 auto* frameNode = reinterpret_cast<FrameNode*>(node);
28 CHECK_NULL_VOID(frameNode);
29 RatingModelNG::SetStars(frameNode, value);
30 }
31
SetRatingStepSize(ArkUINodeHandle node,ArkUI_Float32 value)32 void SetRatingStepSize(ArkUINodeHandle node, ArkUI_Float32 value)
33 {
34 auto* frameNode = reinterpret_cast<FrameNode*>(node);
35 CHECK_NULL_VOID(frameNode);
36 RatingModelNG::SetStepSize(frameNode, value);
37 }
SetStarStyle(ArkUINodeHandle node,const char * backgroundUri,const char * foregroundUri,const char * secondaryUri)38 void SetStarStyle(ArkUINodeHandle node,
39 const char* backgroundUri, const char* foregroundUri, const char* secondaryUri)
40 {
41 auto* frameNode = reinterpret_cast<FrameNode*>(node);
42 CHECK_NULL_VOID(frameNode);
43 std::string backgroundUriStr = backgroundUri;
44 if (backgroundUriStr.empty()) {
45 RatingModelNG::SetBackgroundSrc(frameNode, "", true);
46 } else {
47 RatingModelNG::SetBackgroundSrc(frameNode, backgroundUriStr, false);
48 }
49
50 std::string foregroundUriStr = foregroundUri;
51 if (foregroundUriStr.empty()) {
52 RatingModelNG::SetForegroundSrc(frameNode, "", true);
53 } else {
54 RatingModelNG::SetForegroundSrc(frameNode, foregroundUriStr, false);
55 }
56
57 std::string secondaryUriStr = secondaryUri;
58 if (!secondaryUriStr.empty()) {
59 RatingModelNG::SetSecondarySrc(frameNode, secondaryUriStr, false);
60 } else if (!backgroundUriStr.empty()) {
61 RatingModelNG::SetSecondarySrc(frameNode, backgroundUriStr, false);
62 } else {
63 RatingModelNG::SetSecondarySrc(frameNode, "", true);
64 }
65 }
66
ResetStars(ArkUINodeHandle node)67 void ResetStars(ArkUINodeHandle node)
68 {
69 auto* frameNode = reinterpret_cast<FrameNode*>(node);
70 CHECK_NULL_VOID(frameNode);
71 RatingModelNG::SetStars(frameNode, STARS_DEFAULT);
72 }
73
ResetRatingStepSize(ArkUINodeHandle node)74 void ResetRatingStepSize(ArkUINodeHandle node)
75 {
76 auto* frameNode = reinterpret_cast<FrameNode*>(node);
77 CHECK_NULL_VOID(frameNode);
78 RatingModelNG::SetStepSize(frameNode, STEPS_DEFAULT);
79 }
80
ResetStarStyle(ArkUINodeHandle node)81 void ResetStarStyle(ArkUINodeHandle node)
82 {
83 auto* frameNode = reinterpret_cast<FrameNode*>(node);
84 CHECK_NULL_VOID(frameNode);
85 RatingModelNG::SetBackgroundSrc(frameNode, "", true);
86 RatingModelNG::SetForegroundSrc(frameNode, "", true);
87 RatingModelNG::SetSecondarySrc(frameNode, "", true);
88 }
89
90 namespace NodeModifier {
GetRatingModifier()91 const ArkUIRatingModifier* GetRatingModifier()
92 {
93 static const ArkUIRatingModifier modifier = {SetStars, SetRatingStepSize, SetStarStyle,
94 ResetStars, ResetRatingStepSize, ResetStarStyle};
95 return &modifier;
96 }
97
GetCJUIRatingModifier()98 const CJUIRatingModifier* GetCJUIRatingModifier()
99 {
100 static const CJUIRatingModifier modifier = {SetStars, SetRatingStepSize, SetStarStyle,
101 ResetStars, ResetRatingStepSize, ResetStarStyle};
102 return &modifier;
103 }
104 }
105 }