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 "frameworks/bridge/declarative_frontend/jsview/models/badge_model_impl.h" 17 18 #include "core/components/badge/badge_component.h" 19 #include "core/components/badge/badge_theme.h" 20 #include "frameworks/bridge/declarative_frontend/view_stack_processor.h" 21 22 namespace OHOS::Ace::Framework { Create(BadgeParameters & badgeParameters)23void BadgeModelImpl::Create(BadgeParameters& badgeParameters) 24 { 25 auto badge = AceType::MakeRefPtr<OHOS::Ace::BadgeComponent>(); 26 auto pipeline = PipelineBase::GetCurrentContext(); 27 CHECK_NULL_VOID(pipeline); 28 auto badgeTheme = pipeline->GetTheme<BadgeTheme>(); 29 30 if (badgeParameters.badgeValue.has_value()) { 31 badge->SetBadgeLabel(badgeParameters.badgeValue.value()); 32 } 33 34 if (badgeParameters.badgeCount.has_value()) { 35 badge->SetMessageCount(badgeParameters.badgeCount.value()); 36 } else { 37 badge->SetMessageCount(badgeTheme->GetMessageCount()); 38 } 39 40 if (badgeParameters.badgeMaxCount.has_value()) { 41 badge->SetMaxCount(badgeParameters.badgeMaxCount.value()); 42 } 43 44 if (badgeParameters.badgeColor.has_value()) { 45 badge->SetBadgeColor(badgeParameters.badgeColor.value()); 46 } else { 47 badge->SetBadgeColor(badgeTheme->GetBadgeColor()); 48 } 49 50 if (badgeParameters.badgeTextColor.has_value()) { 51 badge->SetBadgeTextColor(badgeParameters.badgeTextColor.value()); 52 } else { 53 badge->SetBadgeTextColor(badgeTheme->GetBadgeTextColor()); 54 } 55 56 if (badgeParameters.badgeFontSize.has_value()) { 57 badge->SetBadgeFontSize(badgeParameters.badgeFontSize.value()); 58 } else { 59 badge->SetBadgeFontSize(badgeTheme->GetBadgeFontSize()); 60 } 61 62 if (badgeParameters.badgeCircleSize.has_value()) { 63 badge->SetBadgeCircleSize(badgeParameters.badgeCircleSize.value()); 64 } else { 65 badge->SetBadgeCircleSize(badgeTheme->GetBadgeCircleSize()); 66 } 67 68 SetPositionForBadge(badgeParameters); 69 ViewStackProcessor::GetInstance()->ClaimElementId(badge); 70 ViewStackProcessor::GetInstance()->Push(badge); 71 } 72 SetPositionForBadge(BadgeParameters & badgeParameters)73void BadgeModelImpl::SetPositionForBadge(BadgeParameters& badgeParameters) 74 { 75 auto badge = AceType::MakeRefPtr<OHOS::Ace::BadgeComponent>(); 76 auto pipeline = PipelineBase::GetCurrentContext(); 77 CHECK_NULL_VOID(pipeline); 78 auto badgeTheme = pipeline->GetTheme<BadgeTheme>(); 79 80 if (badgeParameters.badgePosition.has_value()) { 81 badge->SetBadgePosition(static_cast<BadgePosition>(badgeParameters.badgePosition.value())); 82 } else { 83 badge->SetBadgePosition(badgeTheme->GetBadgePosition()); 84 } 85 86 if (badgeParameters.badgePositionX.has_value()) { 87 badge->SetBadgePositionX(badgeParameters.badgePositionX.value()); 88 } else { 89 badge->SetBadgePositionX(badgeTheme->GetBadgePositionX()); 90 } 91 92 if (badgeParameters.badgePositionY.has_value()) { 93 badge->SetBadgePositionY(badgeParameters.badgePositionY.value()); 94 } else { 95 badge->SetBadgePositionY(badgeTheme->GetBadgePositionY()); 96 } 97 98 if (badgeParameters.isPositionXy.has_value()) { 99 badge->SetIsPositionXy(badgeParameters.isPositionXy.value()); 100 } else { 101 badge->SetIsPositionXy(badgeTheme->GetIsPositionXy()); 102 } 103 } 104 } // namespace OHOS::Ace::Framework 105