1 /* 2 * Copyright (c) 2022 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_PATTERNS_LIST_LIST_ITEM_EVENT_HUB_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_LIST_LIST_ITEM_EVENT_HUB_H 18 19 #include "base/memory/ace_type.h" 20 #include "core/components_ng/base/ui_node.h" 21 #include "core/components_ng/event/event_hub.h" 22 #include "core/components_ng/event/gesture_event_hub.h" 23 #include "core/components_v2/list/list_properties.h" 24 25 namespace OHOS::Ace::NG { 26 class ListItemEventHub : public EventHub { 27 DECLARE_ACE_TYPE(ListItemEventHub, EventHub) 28 29 public: 30 ListItemEventHub() = default; 31 ~ListItemEventHub() override = default; 32 SetOnSelect(OnSelectFunc && onSelect)33 void SetOnSelect(OnSelectFunc&& onSelect) 34 { 35 onSelectEvent_ = std::move(onSelect); 36 } 37 GetOnSelect()38 const OnSelectFunc& GetOnSelect() const 39 { 40 return onSelectEvent_; 41 } 42 SetStartOnDelete(OnDeleteEvent && onDelete)43 void SetStartOnDelete(OnDeleteEvent&& onDelete) 44 { 45 startOnDeleteEvent_ = std::move(onDelete); 46 } 47 GetStartOnDelete()48 const OnDeleteEvent& GetStartOnDelete() const 49 { 50 return startOnDeleteEvent_; 51 } 52 SetEndOnDelete(OnDeleteEvent && onDelete)53 void SetEndOnDelete(OnDeleteEvent&& onDelete) 54 { 55 endOnDeleteEvent_ = std::move(onDelete); 56 } 57 GetEndOnDelete()58 const OnDeleteEvent& GetEndOnDelete() const 59 { 60 return endOnDeleteEvent_; 61 } 62 SetOnEnterStartDeleteArea(OnEnterDeleteAreaEvent && onEnterDeleteArea)63 void SetOnEnterStartDeleteArea(OnEnterDeleteAreaEvent&& onEnterDeleteArea) 64 { 65 onEnterStartDeleteAreaEvent_ = std::move(onEnterDeleteArea); 66 } 67 GetOnEnterStartDeleteArea()68 const OnEnterDeleteAreaEvent& GetOnEnterStartDeleteArea() const 69 { 70 return onEnterStartDeleteAreaEvent_; 71 } 72 SetOnEnterEndDeleteArea(OnEnterDeleteAreaEvent && onEnterDeleteArea)73 void SetOnEnterEndDeleteArea(OnEnterDeleteAreaEvent&& onEnterDeleteArea) 74 { 75 onEnterEndDeleteAreaEvent_ = std::move(onEnterDeleteArea); 76 } 77 GetOnEnterEndDeleteArea()78 const OnEnterDeleteAreaEvent& GetOnEnterEndDeleteArea() const 79 { 80 return onEnterEndDeleteAreaEvent_; 81 } 82 SetOnExitStartDeleteArea(OnExitDeleteAreaEvent && onExitDeleteArea)83 void SetOnExitStartDeleteArea(OnExitDeleteAreaEvent&& onExitDeleteArea) 84 { 85 onExitStartDeleteAreaEvent_ = std::move(onExitDeleteArea); 86 } 87 GetOnExitStartDeleteArea()88 const OnExitDeleteAreaEvent& GetOnExitStartDeleteArea() const 89 { 90 return onExitStartDeleteAreaEvent_; 91 } 92 SetOnExitEndDeleteArea(OnExitDeleteAreaEvent && onExitDeleteArea)93 void SetOnExitEndDeleteArea(OnExitDeleteAreaEvent&& onExitDeleteArea) 94 { 95 onExitEndDeleteAreaEvent_ = std::move(onExitDeleteArea); 96 } 97 GetOnExitEndDeleteArea()98 const OnExitDeleteAreaEvent& GetOnExitEndDeleteArea() const 99 { 100 return onExitEndDeleteAreaEvent_; 101 } 102 SetSelectChangeEvent(OnSelectFunc && changeEvent)103 void SetSelectChangeEvent(OnSelectFunc&& changeEvent) 104 { 105 selectChangeEvent_ = std::move(changeEvent); 106 } 107 FireSelectChangeEvent(bool select)108 void FireSelectChangeEvent(bool select) const 109 { 110 if (selectChangeEvent_) { 111 selectChangeEvent_(select); 112 } 113 if (onSelectEvent_) { 114 onSelectEvent_(select); 115 } 116 } 117 SetOnOffsetChangeOffset(OnOffsetChangeFunc && onOffsetChange)118 void SetOnOffsetChangeOffset(OnOffsetChangeFunc&& onOffsetChange) 119 { 120 onOffsetChangeEvent_ = std::move(onOffsetChange); 121 } 122 FireOffsetChangeEvent(int32_t offset)123 void FireOffsetChangeEvent(int32_t offset) const 124 { 125 if (onOffsetChangeEvent_) { 126 onOffsetChangeEvent_(offset); 127 } 128 } 129 SetStartOnStateChange(OnStateChangedEvent && onStateChangeEvent)130 void SetStartOnStateChange(OnStateChangedEvent&& onStateChangeEvent) 131 { 132 startOnStateChangeEvent_ = std::move(onStateChangeEvent); 133 } 134 SetEndOnStateChange(OnStateChangedEvent && onStateChangeEvent)135 void SetEndOnStateChange(OnStateChangedEvent&& onStateChangeEvent) 136 { 137 endOnStateChangeEvent_ = std::move(onStateChangeEvent); 138 } 139 FireStateChangeEvent(SwipeActionState newState,bool isStart)140 void FireStateChangeEvent(SwipeActionState newState, bool isStart) const 141 { 142 if (isStart && startOnStateChangeEvent_) { 143 startOnStateChangeEvent_(newState); 144 } 145 if (!isStart && endOnStateChangeEvent_) { 146 endOnStateChangeEvent_(newState); 147 } 148 } 149 150 int32_t GetIndex(const Point& point) const; 151 152 std::string GetDragExtraParams(const std::string& extraInfo, const Point& point, DragEventType drag) override; 153 154 private: 155 OnSelectFunc onSelectEvent_; 156 OnSelectFunc selectChangeEvent_; 157 OnDeleteEvent startOnDeleteEvent_; 158 OnDeleteEvent endOnDeleteEvent_; 159 OnEnterDeleteAreaEvent onEnterStartDeleteAreaEvent_; 160 OnEnterDeleteAreaEvent onEnterEndDeleteAreaEvent_; 161 OnExitDeleteAreaEvent onExitStartDeleteAreaEvent_; 162 OnExitDeleteAreaEvent onExitEndDeleteAreaEvent_; 163 OnOffsetChangeFunc onOffsetChangeEvent_; 164 OnStateChangedEvent startOnStateChangeEvent_; 165 OnStateChangedEvent endOnStateChangeEvent_; 166 }; 167 } // namespace OHOS::Ace::NG 168 169 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERNS_LIST_LIST_ITEM_EVENT_HUB_H 170