1 /* 2 * Copyright (c) 2023-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_PATTERN_SCROLLABLE_SCROLLABLE_EVENT_HUB_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_SCROLLABLE_SCROLLABLE_EVENT_HUB_H 18 19 #include "core/components_ng/event/event_hub.h" 20 #include "core/components_ng/pattern/scrollable/scrollable_properties.h" 21 22 namespace OHOS::Ace::NG { 23 class ScrollableEventHub : public EventHub { 24 DECLARE_ACE_TYPE(ScrollableEventHub, EventHub); 25 26 public: 27 ScrollableEventHub() = default; 28 ~ScrollableEventHub() override = default; 29 SetOnScroll(OnScrollEvent && onScroll)30 void SetOnScroll(OnScrollEvent&& onScroll) 31 { 32 onScrollEvent_ = std::move(onScroll); 33 } 34 GetOnScroll()35 const OnScrollEvent& GetOnScroll() const 36 { 37 return onScrollEvent_; 38 } 39 SetOnWillScroll(OnWillScrollEvent && onScroll)40 void SetOnWillScroll(OnWillScrollEvent&& onScroll) 41 { 42 onWillScrollEvent_ = std::move(onScroll); 43 } 44 GetOnWillScroll()45 const OnWillScrollEvent& GetOnWillScroll() const 46 { 47 return onWillScrollEvent_; 48 } 49 SetOnDidScroll(OnScrollEvent && onScroll)50 void SetOnDidScroll(OnScrollEvent&& onScroll) 51 { 52 onDidScrollEvent_ = std::move(onScroll); 53 } 54 GetOnDidScroll()55 const OnScrollEvent& GetOnDidScroll() const 56 { 57 return onDidScrollEvent_; 58 } 59 SetOnScrollFrameBegin(OnScrollFrameBeginEvent && onScrollFrameBegin)60 void SetOnScrollFrameBegin(OnScrollFrameBeginEvent&& onScrollFrameBegin) 61 { 62 onScrollFrameBeginEvent_ = std::move(onScrollFrameBegin); 63 } 64 GetOnScrollFrameBegin()65 const OnScrollFrameBeginEvent& GetOnScrollFrameBegin() const 66 { 67 return onScrollFrameBeginEvent_; 68 } 69 SetOnScrollStart(OnScrollStartEvent && onScrollStart)70 void SetOnScrollStart(OnScrollStartEvent&& onScrollStart) 71 { 72 onScrollStartEvent_ = std::move(onScrollStart); 73 } 74 GetOnScrollStart()75 const OnScrollStartEvent& GetOnScrollStart() const 76 { 77 return onScrollStartEvent_; 78 } 79 SetOnScrollStop(OnScrollStopEvent && onScrollStop)80 void SetOnScrollStop(OnScrollStopEvent&& onScrollStop) 81 { 82 onScrollStopEvent_ = std::move(onScrollStop); 83 } 84 GetOnScrollStop()85 const OnScrollStopEvent& GetOnScrollStop() const 86 { 87 return onScrollStopEvent_; 88 } 89 SetOnReachStart(OnReachEvent && onReachStart)90 void SetOnReachStart(OnReachEvent&& onReachStart) 91 { 92 onReachStartEvent_ = std::move(onReachStart); 93 } 94 GetOnReachStart()95 const OnReachEvent& GetOnReachStart() const 96 { 97 return onReachStartEvent_; 98 } 99 SetOnReachEnd(OnReachEvent && onReachEnd)100 void SetOnReachEnd(OnReachEvent&& onReachEnd) 101 { 102 onReachEndEvent_ = std::move(onReachEnd); 103 } 104 GetOnReachEnd()105 const OnReachEvent& GetOnReachEnd() const 106 { 107 return onReachEndEvent_; 108 } 109 SetOnWillStopDragging(OnWillStopDraggingEvent && onWillStopdragging)110 void SetOnWillStopDragging(OnWillStopDraggingEvent&& onWillStopdragging) 111 { 112 onWillStopDraggingEvent_ = std::move(onWillStopdragging); 113 } 114 GetOnWillStopDragging()115 const OnWillStopDraggingEvent& GetOnWillStopDragging() const 116 { 117 return onWillStopDraggingEvent_; 118 } 119 SetJSFrameNodeOnReachStart(OnReachEvent && onScroll)120 void SetJSFrameNodeOnReachStart(OnReachEvent&& onScroll) 121 { 122 onJSFrameNodeReachStartEvent_ = std::move(onScroll); 123 } 124 GetJSFrameNodeOnReachStart()125 const OnReachEvent& GetJSFrameNodeOnReachStart() const 126 { 127 return onJSFrameNodeReachStartEvent_; 128 } 129 ClearJSFrameNodeOnReachStart()130 void ClearJSFrameNodeOnReachStart() 131 { 132 if (onJSFrameNodeReachStartEvent_) { 133 onJSFrameNodeReachStartEvent_ = nullptr; 134 } 135 } 136 SetJSFrameNodeOnReachEnd(OnReachEvent && onScroll)137 void SetJSFrameNodeOnReachEnd(OnReachEvent&& onScroll) 138 { 139 onJSFrameNodeReachEndEvent_ = std::move(onScroll); 140 } 141 ClearJSFrameNodeOnReachEnd()142 void ClearJSFrameNodeOnReachEnd() 143 { 144 if (onJSFrameNodeReachEndEvent_) { 145 onJSFrameNodeReachEndEvent_ = nullptr; 146 } 147 } 148 GetJSFrameNodeOnReachEnd()149 const OnReachEvent& GetJSFrameNodeOnReachEnd() const 150 { 151 return onJSFrameNodeReachEndEvent_; 152 } 153 SetJSFrameNodeOnScrollStart(OnScrollStartEvent && onScroll)154 void SetJSFrameNodeOnScrollStart(OnScrollStartEvent&& onScroll) 155 { 156 onJSFrameNodeScrollStartEvent_ = std::move(onScroll); 157 } 158 ClearJSFrameNodeOnScrollStart()159 void ClearJSFrameNodeOnScrollStart() 160 { 161 if (onJSFrameNodeScrollStartEvent_) { 162 onJSFrameNodeScrollStartEvent_ = nullptr; 163 } 164 } 165 GetJSFrameNodeOnScrollStart()166 const OnScrollStartEvent& GetJSFrameNodeOnScrollStart() const 167 { 168 return onJSFrameNodeScrollStartEvent_; 169 } 170 SetJSFrameNodeOnScrollStop(OnScrollStopEvent && onScroll)171 void SetJSFrameNodeOnScrollStop(OnScrollStopEvent&& onScroll) 172 { 173 onJSFrameNodeScrollStopEvent_ = std::move(onScroll); 174 } 175 ClearJSFrameNodeOnScrollStop()176 void ClearJSFrameNodeOnScrollStop() 177 { 178 if (onJSFrameNodeScrollStopEvent_) { 179 onJSFrameNodeScrollStopEvent_ = nullptr; 180 } 181 } 182 GetJSFrameNodeOnScrollStop()183 const OnScrollStopEvent& GetJSFrameNodeOnScrollStop() const 184 { 185 return onJSFrameNodeScrollStopEvent_; 186 } 187 SetJSFrameNodeOnScrollFrameBegin(OnScrollFrameBeginEvent && onScroll)188 void SetJSFrameNodeOnScrollFrameBegin(OnScrollFrameBeginEvent&& onScroll) 189 { 190 onJSFrameNodeScrollFrameBeginEvent_ = std::move(onScroll); 191 } 192 ClearJSFrameNodeOnScrollFrameBegin()193 void ClearJSFrameNodeOnScrollFrameBegin() 194 { 195 if (onJSFrameNodeScrollFrameBeginEvent_) { 196 onJSFrameNodeScrollFrameBeginEvent_ = nullptr; 197 } 198 } 199 GetJSFrameNodeOnScrollFrameBegin()200 const OnScrollFrameBeginEvent& GetJSFrameNodeOnScrollFrameBegin() const 201 { 202 return onJSFrameNodeScrollFrameBeginEvent_; 203 } 204 SetJSFrameNodeOnWillScroll(OnWillScrollEvent && onScroll)205 void SetJSFrameNodeOnWillScroll(OnWillScrollEvent&& onScroll) 206 { 207 onJSFrameNodeWillScrollEvent_ = std::move(onScroll); 208 } 209 ClearJSFrameNodeOnWillScroll()210 void ClearJSFrameNodeOnWillScroll() 211 { 212 if (onJSFrameNodeWillScrollEvent_) { 213 onJSFrameNodeWillScrollEvent_ = nullptr; 214 } 215 } 216 GetJSFrameNodeOnWillScroll()217 const OnWillScrollEvent& GetJSFrameNodeOnWillScroll() const 218 { 219 return onJSFrameNodeWillScrollEvent_; 220 } 221 SetJSFrameNodeOnDidScroll(OnScrollEvent && onScroll)222 void SetJSFrameNodeOnDidScroll(OnScrollEvent&& onScroll) 223 { 224 onJSFrameNodeDidScrollEvent_ = std::move(onScroll); 225 } 226 ClearJSFrameNodeOnDidScroll()227 void ClearJSFrameNodeOnDidScroll() 228 { 229 if (onJSFrameNodeDidScrollEvent_) { 230 onJSFrameNodeDidScrollEvent_ = nullptr; 231 } 232 } 233 GetJSFrameNodeOnDidScroll()234 const OnScrollEvent& GetJSFrameNodeOnDidScroll() const 235 { 236 return onJSFrameNodeDidScrollEvent_; 237 } 238 239 private: 240 OnScrollEvent onScrollEvent_; 241 OnWillScrollEvent onWillScrollEvent_; 242 OnScrollEvent onDidScrollEvent_; 243 OnScrollStartEvent onScrollStartEvent_; 244 OnScrollStopEvent onScrollStopEvent_; 245 OnScrollFrameBeginEvent onScrollFrameBeginEvent_; 246 OnReachEvent onReachStartEvent_; 247 OnReachEvent onReachEndEvent_; 248 OnWillStopDraggingEvent onWillStopDraggingEvent_; 249 250 OnReachEvent onJSFrameNodeReachStartEvent_; 251 OnReachEvent onJSFrameNodeReachEndEvent_; 252 OnScrollStartEvent onJSFrameNodeScrollStartEvent_; 253 OnScrollStopEvent onJSFrameNodeScrollStopEvent_; 254 OnScrollFrameBeginEvent onJSFrameNodeScrollFrameBeginEvent_; 255 OnWillScrollEvent onJSFrameNodeWillScrollEvent_; 256 OnScrollEvent onJSFrameNodeDidScrollEvent_; 257 }; 258 } // namespace OHOS::Ace::NG 259 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_NG_PATTERN_SCROLLABLE_SCROLLABLE_EVENT_HUB_H 260