1 /* 2 * Copyright (c) 2021 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_DIALOG_TWEEN_DIALOG_TWEEN_COMPONENT_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DIALOG_TWEEN_DIALOG_TWEEN_COMPONENT_H 18 19 #include "core/animation/animator.h" 20 #include "core/components/common/properties/edge.h" 21 #include "core/pipeline/base/sole_child_component.h" 22 23 namespace OHOS::Ace { 24 25 class DialogTweenComponent : public SoleChildComponent { 26 DECLARE_ACE_TYPE(DialogTweenComponent, SoleChildComponent); 27 28 public: 29 RefPtr<Element> CreateElement() override; 30 RefPtr<RenderNode> CreateRenderNode() override; 31 SetAutoCancel(bool autoCancel)32 void SetAutoCancel(bool autoCancel) 33 { 34 autoCancel_ = autoCancel; 35 } 36 SetOnSuccessId(const EventMarker & onSuccessId)37 void SetOnSuccessId(const EventMarker& onSuccessId) 38 { 39 onSuccessId_ = onSuccessId; 40 } 41 SetOnCancelId(const EventMarker & onCancelId)42 void SetOnCancelId(const EventMarker& onCancelId) 43 { 44 onCancelId_ = onCancelId; 45 } 46 SetOnCompleteId(const EventMarker & onCompleteId)47 void SetOnCompleteId(const EventMarker& onCompleteId) 48 { 49 onCompleteId_ = onCompleteId; 50 } 51 SetOnPositiveSuccessId(const EventMarker & onPositiveSuccessId)52 void SetOnPositiveSuccessId(const EventMarker& onPositiveSuccessId) 53 { 54 onPositiveSuccessId_ = onPositiveSuccessId; 55 } 56 SetOnNegativeSuccessId(const EventMarker & onNegativeSuccessId)57 void SetOnNegativeSuccessId(const EventMarker& onNegativeSuccessId) 58 { 59 onNegativeSuccessId_ = onNegativeSuccessId; 60 } 61 SetOnNeutralSuccessId(const EventMarker & onNeutralSuccessId)62 void SetOnNeutralSuccessId(const EventMarker& onNeutralSuccessId) 63 { 64 onNeutralSuccessId_ = onNeutralSuccessId; 65 } 66 SetAnimator(const RefPtr<Animator> & animator)67 void SetAnimator(const RefPtr<Animator>& animator) 68 { 69 animator_ = animator; 70 } 71 SetParentAnimator(const RefPtr<Animator> & parentAnimator)72 void SetParentAnimator(const RefPtr<Animator>& parentAnimator) 73 { 74 parentAnimator_ = parentAnimator; 75 } 76 GetAutoCancel()77 bool GetAutoCancel() const 78 { 79 return autoCancel_; 80 } 81 GetOnSuccessId()82 const EventMarker& GetOnSuccessId() const 83 { 84 return onSuccessId_; 85 } 86 GetOnCancelId()87 const EventMarker& GetOnCancelId() const 88 { 89 return onCancelId_; 90 } 91 GetOnCompleteId()92 const EventMarker& GetOnCompleteId() const 93 { 94 return onCompleteId_; 95 } 96 GetOnPositiveSuccessId()97 const EventMarker& GetOnPositiveSuccessId() const 98 { 99 return onPositiveSuccessId_; 100 } 101 GetOnNegativeSuccessId()102 const EventMarker& GetOnNegativeSuccessId() const 103 { 104 return onNegativeSuccessId_; 105 } 106 GetOnNeutralSuccessId()107 const EventMarker& GetOnNeutralSuccessId() const 108 { 109 return onNeutralSuccessId_; 110 } 111 GetAnimator()112 const RefPtr<Animator>& GetAnimator() const 113 { 114 return animator_; 115 } 116 GetParentAnimator()117 const RefPtr<Animator>& GetParentAnimator() const 118 { 119 return parentAnimator_; 120 } 121 SetComposedId(int32_t composedId)122 void SetComposedId(int32_t composedId) 123 { 124 composedId_ = composedId; 125 } 126 GetComposedId()127 int32_t GetComposedId() const 128 { 129 return composedId_; 130 } 131 132 // used for inspector node in PC preview SetCustomDialogId(int32_t dialogId)133 void SetCustomDialogId(int32_t dialogId) 134 { 135 customDialogId_ = dialogId; 136 } 137 138 // used for inspector node in PC preview GetCustomDialogId()139 int32_t GetCustomDialogId() 140 { 141 return customDialogId_; 142 } 143 SetDialogId(int32_t dialogId)144 void SetDialogId(int32_t dialogId) 145 { 146 dialogId_ = dialogId; 147 } 148 GetDialogId()149 int32_t GetDialogId() 150 { 151 return dialogId_; 152 } 153 SetData(const std::string & data)154 void SetData(const std::string& data) 155 { 156 data_ = data; 157 } 158 GetData()159 const std::string& GetData() const 160 { 161 return data_; 162 } 163 SetMargin(const Edge & edge)164 void SetMargin(const Edge& edge) 165 { 166 margin_ = edge; 167 isSetMargin_ = true; 168 } 169 GetMargin()170 const Edge& GetMargin() const 171 { 172 return margin_; 173 } 174 SetDialogLimit(bool flag)175 void SetDialogLimit(bool flag) 176 { 177 isLimit_ = flag; 178 } 179 GetDialogLimit()180 bool GetDialogLimit() const 181 { 182 return isLimit_; 183 } 184 IsSetMargin()185 bool IsSetMargin() const 186 { 187 return isSetMargin_; 188 } 189 SetDragable(bool dragable)190 void SetDragable(bool dragable) 191 { 192 isDragable_ = dragable; 193 } 194 IsDragable()195 bool IsDragable() const 196 { 197 return isDragable_; 198 } 199 SetIsMenu(bool isMenu)200 void SetIsMenu(bool isMenu) 201 { 202 isMenu_ = isMenu; 203 } 204 IsMenu()205 bool IsMenu() const 206 { 207 return isMenu_; 208 } 209 SetMenuSuccessId(const std::vector<EventMarker> & menuSuccessId)210 void SetMenuSuccessId(const std::vector<EventMarker>& menuSuccessId) 211 { 212 menuSuccessId_ = menuSuccessId; 213 } 214 GetMenuSuccessId()215 std::vector<EventMarker>& GetMenuSuccessId() 216 { 217 return menuSuccessId_; 218 } 219 SetOnStatusChanged(const std::function<void (bool)> & onStatusChanged)220 void SetOnStatusChanged(const std::function<void(bool)>& onStatusChanged) 221 { 222 onStatusChanged_ = onStatusChanged; 223 } 224 GetOnStatusChanged()225 const std::function<void(bool)>& GetOnStatusChanged() const 226 { 227 return onStatusChanged_; 228 } 229 SetAlignment(DialogAlignment alignment)230 void SetAlignment(DialogAlignment alignment) 231 { 232 alignment_ = alignment; 233 } 234 GetAlignment()235 DialogAlignment GetAlignment() const 236 { 237 return alignment_; 238 } 239 SetOffset(const DimensionOffset & offset)240 void SetOffset(const DimensionOffset& offset) 241 { 242 offset_ = offset; 243 } 244 GetOffset()245 const DimensionOffset& GetOffset() const 246 { 247 return offset_; 248 } 249 SetGridCount(int32_t gridCount)250 void SetGridCount(int32_t gridCount) 251 { 252 gridCount_ = gridCount; 253 } 254 GetGridCount()255 int32_t GetGridCount() const 256 { 257 return gridCount_; 258 } 259 260 private: 261 bool autoCancel_ = true; 262 RefPtr<Animator> animator_; 263 RefPtr<Animator> parentAnimator_; 264 EventMarker onSuccessId_; 265 EventMarker onCancelId_; 266 EventMarker onCompleteId_; 267 EventMarker onPositiveSuccessId_; 268 EventMarker onNegativeSuccessId_; 269 EventMarker onNeutralSuccessId_; 270 std::vector<EventMarker> menuSuccessId_; 271 int32_t composedId_ = 0; 272 // used for inspector node in PC preview 273 int32_t customDialogId_ = -1; 274 // Used when pop dialog. 275 int32_t dialogId_ = -1; 276 int32_t gridCount_ = 0; 277 std::string data_; 278 std::function<void(bool)> onStatusChanged_; 279 280 // Alignment and offset can control the position of dialog. 281 DialogAlignment alignment_ = DialogAlignment::DEFAULT; 282 DimensionOffset offset_; 283 284 Edge margin_; 285 bool isSetMargin_ = false; 286 bool isLimit_ = true; 287 bool isMenu_ = false; 288 bool isDragable_ = false; 289 }; 290 291 } // namespace OHOS::Ace 292 293 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DIALOG_TWEEN_DIALOG_TWEEN_COMPONENT_H 294