1 /* 2 * Copyright (c) 2022-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 #ifndef FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_BASE_VIEW_ABSTRACT_MODEL_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_BASE_VIEW_ABSTRACT_MODEL_H 18 19 #include <cstdint> 20 #include <functional> 21 #include <memory> 22 #include <mutex> 23 #include <optional> 24 #include <vector> 25 26 #include "base/geometry/dimension.h" 27 #include "base/memory/ace_type.h" 28 #include "base/utils/macros.h" 29 #include "core/components/common/layout/position_param.h" 30 #include "core/components/common/properties/alignment.h" 31 #include "core/components/common/properties/popup_param.h" 32 #include "core/components/common/properties/shared_transition_option.h" 33 #include "core/components/common/properties/blend_mode.h" 34 #include "core/components_ng/base/modifier.h" 35 #include "core/components_ng/base/view_abstract.h" 36 #include "core/components_ng/event/focus_box.h" 37 #include "core/components_ng/event/gesture_event_hub.h" 38 #include "core/components_ng/pattern/menu/menu_pattern.h" 39 #include "core/components_ng/pattern/overlay/content_cover_param.h" 40 #include "core/components_ng/pattern/overlay/modal_style.h" 41 #include "core/components_ng/pattern/overlay/sheet_style.h" 42 #include "core/components_ng/property/gradient_property.h" 43 #include "core/components_ng/property/progress_mask_property.h" 44 #include "core/components_ng/property/transition_property.h" 45 #include "core/event/ace_events.h" 46 #include "core/event/key_event.h" 47 #include "core/event/mouse_event.h" 48 #include "core/event/touch_event.h" 49 #include "core/gestures/gesture_info.h" 50 #include "core/image/image_source_info.h" 51 52 namespace OHOS::Ace { 53 54 using ClickEventFunc = std::function<void(const ClickInfo* info)>; 55 using RemoteCallback = std::function<void(const BaseEventInfo* info)>; 56 using OnNewDragFunc = std::function<void(const RefPtr<OHOS::Ace::DragEvent>&)>; 57 using BiasPair = std::pair<float, float>; 58 enum class ResponseType : int32_t { 59 RIGHT_CLICK = 0, 60 LONG_PRESS, 61 }; 62 63 class ACE_FORCE_EXPORT ViewAbstractModel { 64 public: 65 static ViewAbstractModel* GetInstance(); 66 virtual ~ViewAbstractModel() = default; 67 68 // basic size 69 virtual void SetWidth(const CalcDimension& width) = 0; 70 virtual void SetHeight(const CalcDimension& height) = 0; 71 virtual void ClearWidthOrHeight(bool isWidth) = 0; 72 virtual void SetMinWidth(const CalcDimension& minWidth) = 0; 73 virtual void SetMinHeight(const CalcDimension& minHeight) = 0; 74 virtual void SetMaxWidth(const CalcDimension& maxWidth) = 0; 75 virtual void SetMaxHeight(const CalcDimension& maxHeight) = 0; 76 virtual void ResetMinSize(bool resetWidth) = 0; 77 virtual void ResetMaxSize(bool resetWidth) = 0; 78 79 // box props 80 virtual void SetBackgroundColor(const Color& color) = 0; 81 virtual void SetBackgroundImage(const ImageSourceInfo& src, RefPtr<ThemeConstants> themeConstant) = 0; 82 virtual void SetBackgroundImageRepeat(const ImageRepeat& imageRepeat) = 0; 83 virtual void SetBackgroundImageSize(const BackgroundImageSize& bgImgSize) = 0; 84 virtual void SetBackgroundImagePosition(const BackgroundImagePosition& bgImgPosition) = 0; 85 virtual void SetBackgroundBlurStyle(const BlurStyleOption& bgBlurStyle) = 0; SetBackgroundEffect(const EffectOption & effectOption)86 virtual void SetBackgroundEffect(const EffectOption& effectOption) {} 87 virtual void SetBackgroundImageResizableSlice(const ImageResizableSlice& slice) = 0; SetForegroundBlurStyle(const BlurStyleOption & fgBlurStyle)88 virtual void SetForegroundBlurStyle(const BlurStyleOption& fgBlurStyle) {} SetForegroundEffect(float radius)89 virtual void SetForegroundEffect(float radius) {} SetSphericalEffect(double radio)90 virtual void SetSphericalEffect(double radio) {} SetPixelStretchEffect(PixStretchEffectOption & option)91 virtual void SetPixelStretchEffect(PixStretchEffectOption& option) {} SetLightUpEffect(double radio)92 virtual void SetLightUpEffect(double radio) {} 93 94 virtual void SetPadding(const CalcDimension& value) = 0; 95 virtual void SetPaddings(const std::optional<CalcDimension>& top, const std::optional<CalcDimension>& bottom, 96 const std::optional<CalcDimension>& left, const std::optional<CalcDimension>& right) = 0; 97 virtual void SetPaddings(const NG::PaddingProperty& paddings) = 0; 98 virtual void SetMargin(const CalcDimension& value) = 0; 99 virtual void SetMargins(const std::optional<CalcDimension>& top, const std::optional<CalcDimension>& bottom, 100 const std::optional<CalcDimension>& left, const std::optional<CalcDimension>& right) = 0; 101 virtual void SetMargins(const NG::MarginProperty& margins) = 0; 102 virtual void ResetSafeAreaPadding() = 0; 103 virtual void SetSafeAreaPadding(const CalcDimension& value) = 0; 104 virtual void SetSafeAreaPaddings(const NG::PaddingProperty& paddings) = 0; 105 virtual void SetSafeAreaPaddings(const std::optional<CalcDimension>& top, 106 const std::optional<CalcDimension>& bottom, const std::optional<CalcDimension>& left, 107 const std::optional<CalcDimension>& right) = 0; 108 virtual void SetBorderRadius(const Dimension& value) = 0; 109 virtual void SetBorderRadius(const std::optional<Dimension>& radiusTopLeft, 110 const std::optional<Dimension>& radiusTopRight, const std::optional<Dimension>& radiusBottomLeft, 111 const std::optional<Dimension>& radiusBottomRight) = 0; 112 virtual void SetBorderRadius(const NG::BorderRadiusProperty& borderRadius) = 0; 113 virtual void SetBorderColor(const Color& value) = 0; 114 virtual void SetBorderColor(const std::optional<Color>& colorLeft, const std::optional<Color>& colorRight, 115 const std::optional<Color>& colorTop, const std::optional<Color>& colorBottom) = 0; 116 virtual void SetBorderColor(const NG::BorderColorProperty& borderColors) = 0; 117 virtual void SetBorderWidth(const Dimension& value) = 0; 118 virtual void SetBorderWidth(const std::optional<Dimension>& left, const std::optional<Dimension>& right, 119 const std::optional<Dimension>& top, const std::optional<Dimension>& bottom) = 0; 120 virtual void SetBorderWidth(const std::optional<Dimension>& left, const std::optional<Dimension>& right, 121 const std::optional<Dimension>& top, const std::optional<Dimension>& bottom, bool isLocalized) = 0; 122 virtual void SetBorderStyle(const BorderStyle& value) = 0; 123 virtual void SetBorderStyle(const std::optional<BorderStyle>& styleLeft, 124 const std::optional<BorderStyle>& styleRight, const std::optional<BorderStyle>& styleTop, 125 const std::optional<BorderStyle>& styleBottom) = 0; SetDashGap(const Dimension & value)126 virtual void SetDashGap(const Dimension& value) {} SetDashGap(const std::optional<Dimension> & left,const std::optional<Dimension> & right,const std::optional<Dimension> & top,const std::optional<Dimension> & bottom)127 virtual void SetDashGap(const std::optional<Dimension>& left, const std::optional<Dimension>& right, 128 const std::optional<Dimension>& top, const std::optional<Dimension>& bottom) {} SetDashWidth(const Dimension & value)129 virtual void SetDashWidth(const Dimension& value) {} SetDashWidth(const std::optional<Dimension> & left,const std::optional<Dimension> & right,const std::optional<Dimension> & top,const std::optional<Dimension> & bottom)130 virtual void SetDashWidth(const std::optional<Dimension>& left, const std::optional<Dimension>& right, 131 const std::optional<Dimension>& top, const std::optional<Dimension>& bottom) {} 132 virtual void SetBorderImage(const RefPtr<BorderImage>& borderImage, uint8_t bitset) = 0; 133 virtual void SetBorderImageGradient(const NG::Gradient& gradient) = 0; 134 135 // visual SetVisualEffect(const OHOS::Rosen::VisualEffect * visualEffect)136 virtual void SetVisualEffect(const OHOS::Rosen::VisualEffect* visualEffect) {}; SetBackgroundFilter(const OHOS::Rosen::Filter * backgroundFilter)137 virtual void SetBackgroundFilter(const OHOS::Rosen::Filter* backgroundFilter) {}; SetForegroundFilter(const OHOS::Rosen::Filter * foregroundFilter)138 virtual void SetForegroundFilter(const OHOS::Rosen::Filter* foregroundFilter) {}; SetCompositingFilter(const OHOS::Rosen::Filter * compositingFilter)139 virtual void SetCompositingFilter(const OHOS::Rosen::Filter* compositingFilter) {}; SetBrightnessBlender(const OHOS::Rosen::BrightnessBlender * brightnessBlender)140 virtual void SetBrightnessBlender(const OHOS::Rosen::BrightnessBlender* brightnessBlender) {}; 141 142 // outerBorder 143 virtual void SetOuterBorderRadius(const Dimension& value) = 0; 144 virtual void SetOuterBorderRadius(const std::optional<Dimension>& radiusTopLeft, 145 const std::optional<Dimension>& radiusTopRight, const std::optional<Dimension>& radiusBottomLeft, 146 const std::optional<Dimension>& radiusBottomRight) = 0; 147 virtual void SetOuterBorderRadius(const NG::BorderRadiusProperty& borderRadius) = 0; 148 virtual void SetOuterBorderColor(const Color& value) = 0; 149 virtual void SetOuterBorderColor(const std::optional<Color>& colorLeft, const std::optional<Color>& colorRight, 150 const std::optional<Color>& colorTop, const std::optional<Color>& colorBottom) = 0; 151 virtual void SetOuterBorderColor(const NG::BorderColorProperty& borderColors) = 0; 152 virtual void SetOuterBorderWidth(const Dimension& value) = 0; 153 virtual void SetOuterBorderWidth(const std::optional<Dimension>& left, const std::optional<Dimension>& right, 154 const std::optional<Dimension>& top, const std::optional<Dimension>& bottom) = 0; 155 virtual void SetOuterBorderStyle(const BorderStyle& value) = 0; 156 virtual void SetOuterBorderStyle(const std::optional<BorderStyle>& styleLeft, 157 const std::optional<BorderStyle>& styleRight, const std::optional<BorderStyle>& styleTop, 158 const std::optional<BorderStyle>& styleBottom) = 0; 159 160 // layout 161 virtual void SetLayoutPriority(int32_t priority) = 0; 162 virtual void SetLayoutWeight(float value) = 0; 163 virtual void SetLayoutWeight(const NG::LayoutWeightPair& value) = 0; 164 virtual void SetPixelRound(uint16_t value) = 0; 165 virtual void SetLayoutDirection(TextDirection value) = 0; 166 virtual void SetAspectRatio(float ratio) = 0; 167 virtual void ResetAspectRatio() = 0; 168 virtual void SetAlign(const Alignment& alignment) = 0; 169 virtual void SetAlignRules(const std::map<AlignDirection, AlignRule>& alignRules) = 0; 170 virtual void SetChainStyle(const ChainInfo& chainInfo) = 0; 171 virtual void SetBias(const BiasPair& biasPair) = 0; 172 virtual void SetUseAlign( 173 AlignDeclarationPtr declaration, AlignDeclaration::Edge edge, const std::optional<Dimension>& offset) = 0; 174 virtual void SetGrid( 175 std::optional<uint32_t> span, std::optional<int32_t> offset, GridSizeType type = GridSizeType::UNDEFINED) = 0; 176 virtual void SetZIndex(int32_t value) = 0; 177 178 // position 179 virtual void SetPosition(const Dimension& x, const Dimension& y) = 0; 180 virtual void SetOffset(const Dimension& x, const Dimension& y) = 0; SetPositionEdges(const EdgesParam & value)181 virtual void SetPositionEdges(const EdgesParam& value) {}; SetOffsetEdges(const EdgesParam & value)182 virtual void SetOffsetEdges(const EdgesParam& value) {}; 183 virtual void MarkAnchor(const Dimension& x, const Dimension& y) = 0; ResetPosition()184 virtual void ResetPosition() {}; 185 186 // transforms 187 virtual void SetScale(float x, float y, float z) = 0; 188 virtual void SetPivot(const Dimension& x, const Dimension& y, const Dimension& z) = 0; 189 virtual void SetTranslate(const Dimension& x, const Dimension& y, const Dimension& z) = 0; 190 virtual void SetRotate(float x, float y, float z, float angle, float perspective = 0.0f) = 0; 191 virtual void SetTransformMatrix(const std::vector<float>& matrix) = 0; 192 193 // display props 194 virtual void SetOpacity(double opacity, bool passThrough = false) = 0; 195 virtual void SetTransition(const NG::TransitionOptions& transitionOptions, bool passThrough = false) = 0; CleanTransition()196 virtual void CleanTransition() {}; 197 virtual void SetChainedTransition( 198 const RefPtr<NG::ChainedTransitionEffect>& effect, NG::TransitionFinishCallback&& finishCallback = nullptr) = 0; 199 virtual void SetOverlay(const std::string& text, std::function<void()>&& buildFunc, 200 const RefPtr<NG::FrameNode>& contentNode, const std::optional<Alignment>& align, 201 const std::optional<Dimension>& offsetX, const std::optional<Dimension>& offsetY, NG::OverlayType type) = 0; 202 virtual void SetVisibility(VisibleType visible, std::function<void(int32_t)>&& changeEventFunc) = 0; 203 virtual void SetSharedTransition( 204 const std::string& shareId, const std::shared_ptr<SharedTransitionOption>& option) = 0; 205 virtual void SetGeometryTransition(const std::string& id, 206 bool followWithoutTransition = false, bool doRegisterSharedTransition = true) = 0; 207 virtual void SetMotionPath(const MotionPathOption& option) = 0; 208 virtual void SetRenderGroup(bool isRenderGroup) = 0; 209 virtual void SetRenderFit(RenderFit renderFit) = 0; 210 211 // flex props 212 virtual void SetFlexBasis(const Dimension& value) = 0; 213 virtual void SetAlignSelf(FlexAlign value) = 0; 214 virtual void SetFlexShrink(float value) = 0; 215 virtual void SetFlexGrow(float value) = 0; 216 virtual void SetDisplayIndex(int32_t value) = 0; 217 virtual void ResetFlexShrink() = 0; 218 219 // gradient 220 virtual void SetLinearGradient(const NG::Gradient& gradient) = 0; 221 virtual void SetSweepGradient(const NG::Gradient& gradient) = 0; 222 virtual void SetRadialGradient(const NG::Gradient& gradient) = 0; 223 224 // clip 225 virtual void SetClipShape(const RefPtr<BasicShape>& shape) = 0; 226 virtual void SetClipEdge(bool isClip) = 0; 227 228 // effects 229 virtual void SetMask(const RefPtr<BasicShape>& shape) = 0; 230 virtual void SetBackdropBlur(const Dimension& radius, const BlurOption& blurOption) = 0; 231 virtual void SetLinearGradientBlur(NG::LinearGradientBlurPara blurPara) = 0; 232 233 virtual void SetDynamicDim(float DimDegree) = 0; 234 virtual void SetDynamicLightUp(float rate, float lightUpDegree) = 0; 235 virtual void SetBgDynamicBrightness(const BrightnessOption& brightnessOption) = 0; 236 virtual void SetFgDynamicBrightness(const BrightnessOption& brightnessOption) = 0; 237 238 virtual void SetFrontBlur(const Dimension& radius, const BlurOption& blurOption) = 0; SetMotionBlur(const MotionBlurOption & motionBlurOption)239 virtual void SetMotionBlur(const MotionBlurOption& motionBlurOption) {} 240 virtual void SetBackShadow(const std::vector<Shadow>& shadows) = 0; 241 virtual void SetBlendMode(BlendMode blendMode) = 0; 242 virtual void SetBlendApplyType(BlendApplyType blendApplyType) = 0; 243 virtual void SetColorBlend(const Color& value) = 0; 244 virtual void SetWindowBlur(float progress, WindowBlurStyle blurStyle) = 0; 245 virtual void SetBrightness(const Dimension& value) = 0; 246 virtual void SetGrayScale(const Dimension& value) = 0; 247 virtual void SetContrast(const Dimension& value) = 0; 248 virtual void SetSaturate(const Dimension& value) = 0; 249 virtual void SetSepia(const Dimension& value) = 0; 250 virtual void SetInvert(const InvertVariant& value) = 0; 251 virtual void SetSystemBarEffect(bool systemBarEffect) = 0; 252 virtual void SetHueRotate(float value) = 0; 253 virtual void SetClickEffectLevel(const ClickEffectLevel& level, float scaleValue) = 0; 254 virtual void SetUseEffect(bool useEffect, EffectType effectType) = 0; 255 virtual void SetUseShadowBatching(bool useShadowBatching) = 0; 256 virtual void SetFreeze(bool freeze) = 0; 257 258 // event 259 virtual void SetOnClick(GestureEventFunc&& tapEventFunc, ClickEventFunc&& clickEventFunc, 260 double distanceThreshold = std::numeric_limits<double>::infinity()) = 0; 261 virtual void SetOnGestureJudgeBegin(NG::GestureJudgeFunc&& gestureJudgeFunc) = 0; 262 virtual void SetOnTouchIntercept(NG::TouchInterceptFunc&& touchInterceptFunc) = 0; 263 virtual void SetShouldBuiltInRecognizerParallelWith( 264 NG::ShouldBuiltInRecognizerParallelWithFunc&& shouldBuiltInRecognizerParallelWithFunc) = 0; 265 virtual void SetOnGestureRecognizerJudgeBegin( 266 NG::GestureRecognizerJudgeFunc&& gestureRecognizerJudgeFunc, bool exposeInnerGestureFlag) = 0; 267 virtual void SetOnTouch(TouchEventFunc&& touchEventFunc) = 0; 268 virtual void SetOnKeyEvent(OnKeyConsumeFunc&& onKeyCallback) = 0; SetOnKeyPreIme(OnKeyConsumeFunc && onKeyCallback)269 virtual void SetOnKeyPreIme(OnKeyConsumeFunc&& onKeyCallback) {} 270 virtual void SetOnMouse(OnMouseEventFunc&& onMouseEventFunc) = 0; 271 virtual void SetOnHover(OnHoverFunc&& onHoverEventFunc) = 0; 272 virtual void SetOnAccessibilityHover(OnAccessibilityHoverFunc&& onAccessibilityHoverEventFunc) = 0; 273 virtual void SetOnDelete(std::function<void()>&& onDeleteCallback) = 0; 274 virtual void SetOnAppear(std::function<void()>&& onAppearCallback) = 0; 275 virtual void SetOnAttach(std::function<void()>&& onAttachCallback) = 0; 276 virtual void SetOnDisAppear(std::function<void()>&& onDisAppearCallback) = 0; 277 virtual void SetOnDetach(std::function<void()>&& onDetachCallback) = 0; 278 virtual void SetOnAccessibility(std::function<void(const std::string&)>&& onAccessibilityCallback) = 0; 279 virtual void SetOnRemoteMessage(RemoteCallback&& onRemoteCallback) = 0; 280 virtual void SetOnFocusMove(std::function<void(int32_t)>&& onFocusMoveCallback) = 0; 281 virtual void SetOnFocus(OnFocusFunc&& onFocusCallback) = 0; 282 virtual void SetOnBlur(OnBlurFunc&& onBlurCallback) = 0; 283 virtual void SetDraggable(bool draggable) = 0; 284 virtual void SetDragPreviewOptions(const NG::DragPreviewOption& previewOption) = 0; 285 virtual void SetOnDragStart(NG::OnDragStartFunc&& onDragStart) = 0; 286 virtual void SetOnPreDrag(NG::OnPreDragFunc&& onPreDrag) = 0; 287 virtual void SetOnDragEnter(NG::OnDragDropFunc&& onDragEnter) = 0; 288 virtual void SetOnDragEnd(OnNewDragFunc&& onDragEnd) = 0; 289 virtual void SetOnDragLeave(NG::OnDragDropFunc&& onDragLeave) = 0; 290 virtual void SetOnDragMove(NG::OnDragDropFunc&& onDragMove) = 0; 291 virtual void SetOnDrop(NG::OnDragDropFunc&& onDrop) = 0; 292 virtual void SetAllowDrop(const std::set<std::string>& allowDrop) = 0; 293 virtual void SetDrawModifier(const RefPtr<NG::DrawModifier>& drawModifier) = 0; 294 virtual void SetDragPreview(const NG::DragDropInfo& info) = 0; 295 virtual void SetOnVisibleChange( 296 std::function<void(bool, double)>&& onVisibleChange, const std::vector<double>& ratios) = 0; 297 virtual void SetOnAreaChanged( 298 std::function<void(const Rect& oldRect, const Offset& oldOrigin, const Rect& rect, const Offset& origin)>&& 299 onAreaChanged) = 0; 300 virtual void SetOnSizeChanged( 301 std::function<void(const NG::RectF& oldRect, const NG::RectF& rect)>&& onSizeChanged) = 0; 302 virtual void* GetFrameNode() = 0; 303 304 // Disable event when the param is undefined. 305 virtual void DisableOnClick() = 0; 306 virtual void DisableOnTouch() = 0; 307 virtual void DisableOnKeyEvent() = 0; DisableOnKeyPreIme()308 virtual void DisableOnKeyPreIme() {} 309 virtual void DisableOnHover() = 0; 310 virtual void DisableOnAccessibilityHover() = 0; 311 virtual void DisableOnMouse() = 0; 312 virtual void DisableOnAppear() = 0; 313 virtual void DisableOnDisAppear() = 0; 314 virtual void DisableOnAttach() = 0; 315 virtual void DisableOnDetach() = 0; 316 virtual void DisableOnAreaChange() = 0; 317 virtual void DisableOnFocus() = 0; 318 virtual void DisableOnBlur() = 0; 319 320 // interact 321 virtual void SetResponseRegion(const std::vector<DimensionRect>& responseRegion) = 0; SetMouseResponseRegion(const std::vector<DimensionRect> & responseRegion)322 virtual void SetMouseResponseRegion(const std::vector<DimensionRect>& responseRegion) {} 323 virtual void SetEnabled(bool enabled) = 0; 324 virtual void SetTouchable(bool touchable) = 0; 325 virtual void SetFocusable(bool focusable) = 0; SetTabStop(bool tabStop)326 virtual void SetTabStop(bool tabStop) {} 327 virtual void SetFocusNode(bool focus) = 0; 328 virtual void SetTabIndex(int32_t index) = 0; 329 virtual void SetFocusOnTouch(bool isSet) = 0; 330 virtual void SetDefaultFocus(bool isSet) = 0; 331 virtual void SetGroupDefaultFocus(bool isSet) = 0; SetFocusBoxStyle(const NG::FocusBoxStyle & style)332 virtual void SetFocusBoxStyle(const NG::FocusBoxStyle& style) {} SetFocusScopeId(const std::string & focusScopeId,bool isGroup,bool arrowKeyStepOut)333 virtual void SetFocusScopeId(const std::string& focusScopeId, bool isGroup, bool arrowKeyStepOut) {} SetFocusScopePriority(const std::string & focusScopeId,const uint32_t focusPriority)334 virtual void SetFocusScopePriority(const std::string& focusScopeId, const uint32_t focusPriority) {} 335 virtual void SetInspectorId(const std::string& inspectorId) = 0; SetAutoEventParam(const std::string & param)336 virtual void SetAutoEventParam(const std::string& param) {} 337 virtual void SetRestoreId(int32_t restoreId) = 0; 338 virtual void SetDebugLine(const std::string& line) = 0; 339 virtual void SetHoverEffect(HoverEffectType hoverEffect) = 0; 340 virtual void SetHitTestMode(NG::HitTestMode hitTestMode) = 0; 341 virtual void SetOnTouchTestFunc(NG::OnChildTouchTestFunc&& onChildTouchTest) = 0; 342 virtual void SetKeyboardShortcut(const std::string& value, const std::vector<ModifierKey>& keys, 343 std::function<void()>&& onKeyboardShortcutAction) = 0; 344 virtual void SetMonopolizeEvents(bool monopolizeEvents) = 0; 345 virtual void SetDragEventStrictReportingEnabled(bool dragEventStrictReportingEnabled) = 0; SetDisallowDropForcedly(bool isDisallowDropForcedly)346 virtual void SetDisallowDropForcedly(bool isDisallowDropForcedly) {} 347 // obscured 348 virtual void SetObscured(const std::vector<ObscuredReasons>& reasons) = 0; 349 virtual void SetPrivacySensitive(bool flag) = 0; 350 351 // background 352 virtual void BindBackground(std::function<void()>&& buildFunc, const Alignment& align) = 0; 353 354 // popup and menu 355 virtual void BindPopup(const RefPtr<PopupParam>& param, const RefPtr<AceType>& customNode) = 0; 356 virtual void DismissPopup() = 0; 357 virtual void BindMenu( 358 std::vector<NG::OptionParam>&& params, std::function<void()>&& buildFunc, const NG::MenuParam& menuParam) = 0; 359 virtual void BindContextMenu(ResponseType type, std::function<void()>& buildFunc, const NG::MenuParam& menuParam, 360 std::function<void()>& previewBuildFunc) = 0; 361 virtual void BindDragWithContextMenuParams(const NG::MenuParam& menuParam) = 0; 362 virtual void BindContentCover(bool isShow, std::function<void(const std::string&)>&& callback, 363 std::function<void()>&& buildFunc, NG::ModalStyle& modalStyle, std::function<void()>&& onAppear, 364 std::function<void()>&& onDisappear, std::function<void()>&& onWillAppear, 365 std::function<void()>&& onWillDisappear, const NG::ContentCoverParam& contentCoverParam) = 0; 366 virtual void BindSheet(bool isShow, std::function<void(const std::string&)>&& callback, 367 std::function<void()>&& buildFunc, std::function<void()>&& titleBuildFunc, NG::SheetStyle& sheetStyle, 368 std::function<void()>&& onAppear, std::function<void()>&& onDisappear, std::function<void()>&& shouldDismiss, 369 std::function<void(const int32_t info)>&& onWillDismiss, std::function<void()>&& onWillAppear, 370 std::function<void()>&& onWillDisappear, std::function<void(const float)>&& onHeightDidChange, 371 std::function<void(const float)>&& onDetentsDidChange, 372 std::function<void(const float)>&& onWidthDidChange, 373 std::function<void(const float)>&& onTypeDidChange, 374 std::function<void()>&& sheetSpringBack) = 0; 375 virtual void DismissContentCover() = 0; 376 virtual void DismissSheet() = 0; 377 virtual void SheetSpringBack() = 0; DismissDialog()378 virtual void DismissDialog() {}; 379 380 // accessibility 381 virtual void SetAccessibilityGroup(bool accessible) = 0; 382 virtual void SetAccessibilityText(const std::string& text) = 0; 383 virtual void SetAccessibilityTextHint(const std::string& text) = 0; 384 virtual void SetAccessibilityDescription(const std::string& description) = 0; 385 virtual void SetAccessibilityImportance(const std::string& importance) = 0; 386 virtual void SetAccessibilityVirtualNode(std::function<void()>&& buildFunc) = 0; 387 virtual void SetAccessibilitySelected(bool selected, bool resetValue) = 0; 388 virtual void SetAccessibilityChecked(bool checked, bool resetValue) = 0; 389 virtual void SetAccessibilityTextPreferred(bool accessibilityTextPreferred) = 0; 390 391 // progress mask 392 virtual void SetProgressMask(const RefPtr<NG::ProgressMaskProperty>& progress) = 0; 393 // foregroundColor 394 virtual void SetForegroundColor(const Color& color) = 0; 395 virtual void SetForegroundColorStrategy(const ForegroundColorStrategy& strategy) = 0; 396 397 // custom animation properties 398 virtual void CreateAnimatablePropertyFloat( 399 const std::string& propertyName, float value, const std::function<void(float)>& onCallbackEvent) = 0; 400 virtual void UpdateAnimatablePropertyFloat(const std::string& propertyName, float value) = 0; 401 402 virtual void CreateAnimatableArithmeticProperty(const std::string& propertyName, 403 RefPtr<NG::CustomAnimatableArithmetic>& value, 404 std::function<void(const RefPtr<NG::CustomAnimatableArithmetic>&)>& onCallbackEvent) = 0; 405 virtual void UpdateAnimatableArithmeticProperty( 406 const std::string& propertyName, RefPtr<NG::CustomAnimatableArithmetic>& value) = 0; 407 virtual void UpdateSafeAreaExpandOpts(const NG::SafeAreaExpandOpts& opts) = 0; 408 409 // global light 410 virtual void SetLightPosition( 411 const CalcDimension& positionX, const CalcDimension& positionY, const CalcDimension& positionZ) = 0; 412 virtual void SetLightIntensity(const float value) = 0; 413 virtual void SetLightColor(const Color& value) = 0; 414 virtual void SetLightIlluminated(const uint32_t value) = 0; 415 virtual void SetIlluminatedBorderWidth(const Dimension& value) = 0; 416 virtual void SetBloom(const float value) = 0; 417 virtual void SetPositionLocalizedEdges(bool needLocalized) = 0; 418 virtual void SetLocalizedMarkAnchor(bool needLocalized) = 0; 419 virtual void SetOffsetLocalizedEdges(bool needLocalized) = 0; 420 421 private: 422 static std::unique_ptr<ViewAbstractModel> instance_; 423 static std::mutex mutex_; 424 }; 425 } // namespace OHOS::Ace 426 427 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_BASE_VIEW_ABSTRACT_MODEL_H 428