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