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_TOUCH_LISTENER_TOUCH_LISTENER_COMPONENT_H 17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_TOUCH_LISTENER_TOUCH_LISTENER_COMPONENT_H 18 19 #include <string> 20 21 #include "core/components/touch_listener/render_touch_listener.h" 22 #include "core/components/touch_listener/touch_listener_element.h" 23 #include "core/pipeline/base/sole_child_component.h" 24 25 namespace OHOS::Ace { 26 27 using OnTouchEventCallback = std::function<void(const TouchEventInfo&)>; 28 29 class TouchListenerComponent final : public SoleChildComponent { 30 DECLARE_ACE_TYPE(TouchListenerComponent, SoleChildComponent); 31 32 public: 33 TouchListenerComponent() = default; TouchListenerComponent(const RefPtr<Component> & child)34 explicit TouchListenerComponent(const RefPtr<Component>& child) : SoleChildComponent(child) {} 35 ~TouchListenerComponent() override = default; 36 CreateElement()37 RefPtr<Element> CreateElement() override 38 { 39 return MakeRefPtr<TouchListenerElement>(); 40 } 41 CreateRenderNode()42 RefPtr<RenderNode> CreateRenderNode() override 43 { 44 return RenderTouchListener::Create(); 45 } 46 SetEvent(const EventMarker & eventMarker,uint32_t action,uint32_t stage,uint32_t eventType)47 void SetEvent(const EventMarker& eventMarker, uint32_t action, uint32_t stage, 48 uint32_t eventType) 49 { 50 eventIds_[action][stage][eventType] = eventMarker; 51 } 52 GetEvent(uint32_t action,uint32_t stage,uint32_t eventType)53 const EventMarker& GetEvent( 54 uint32_t action, uint32_t stage, uint32_t eventType) const 55 { 56 return eventIds_[action][stage][eventType]; 57 } 58 SetSwipeEvent(const EventMarker & eventMarker,uint32_t action,uint32_t stage)59 void SetSwipeEvent(const EventMarker& eventMarker, uint32_t action, uint32_t stage) 60 { 61 swipeIds_[action][stage] = eventMarker; 62 } 63 GetSwipeEvent(uint32_t action,uint32_t stage)64 const EventMarker& GetSwipeEvent(uint32_t action, uint32_t stage) const 65 { 66 return swipeIds_[action][stage]; 67 } 68 SetOnTouchDownId(const EventMarker & onTouchDownId)69 void SetOnTouchDownId(const EventMarker& onTouchDownId) 70 { 71 eventIds_[EventAction::ON][EventStage::BUBBLE][EventType::TOUCH_DOWN] = onTouchDownId; 72 } SetOnTouchMoveId(const EventMarker & onTouchMoveId)73 void SetOnTouchMoveId(const EventMarker& onTouchMoveId) 74 { 75 eventIds_[EventAction::ON][EventStage::BUBBLE][EventType::TOUCH_MOVE] = onTouchMoveId; 76 } SetOnTouchUpId(const EventMarker & onTouchUpId)77 void SetOnTouchUpId(const EventMarker& onTouchUpId) 78 { 79 eventIds_[EventAction::ON][EventStage::BUBBLE][EventType::TOUCH_UP] = onTouchUpId; 80 } SetOnTouchCancel(const EventMarker & onTouchCancel)81 void SetOnTouchCancel(const EventMarker& onTouchCancel) 82 { 83 eventIds_[EventAction::ON][EventStage::BUBBLE][EventType::TOUCH_CANCEL] = onTouchCancel; 84 } SetOnSwipeId(const EventMarker & onSwipeId)85 void SetOnSwipeId(const EventMarker& onSwipeId) 86 { 87 onSwipeId_ = onSwipeId; 88 } 89 SetOnTouchId(const EventMarker & onTouchId)90 void SetOnTouchId(const EventMarker& onTouchId) 91 { 92 onTouchId_ = onTouchId; 93 } 94 GetOnTouchDownId()95 const EventMarker& GetOnTouchDownId() const 96 { 97 return eventIds_[EventAction::ON][EventStage::BUBBLE][EventType::TOUCH_DOWN]; 98 } GetOnTouchMoveId()99 const EventMarker& GetOnTouchMoveId() const 100 { 101 return eventIds_[EventAction::ON][EventStage::BUBBLE][EventType::TOUCH_MOVE]; 102 } GetOnTouchUpId()103 const EventMarker& GetOnTouchUpId() const 104 { 105 return eventIds_[EventAction::ON][EventStage::BUBBLE][EventType::TOUCH_UP]; 106 } GetOnTouchCancelId()107 const EventMarker& GetOnTouchCancelId() const 108 { 109 return eventIds_[EventAction::ON][EventStage::BUBBLE][EventType::TOUCH_CANCEL]; 110 } GetOnSwipeId()111 const EventMarker& GetOnSwipeId() const 112 { 113 return onSwipeId_; 114 } GetOnTouchId()115 const EventMarker& GetOnTouchId() const 116 { 117 return onTouchId_; 118 } 119 IsVisible()120 bool IsVisible() const 121 { 122 return isVisible_; 123 } 124 SetIsVisible(bool isVisible)125 void SetIsVisible(bool isVisible) 126 { 127 isVisible_ = isVisible; 128 } 129 130 private: 131 EventMarker eventIds_[EventAction::SIZE][EventStage::SIZE][EventType::SIZE]; 132 EventMarker swipeIds_[EventAction::SIZE][EventStage::SIZE]; 133 EventMarker onSwipeId_; 134 EventMarker onTouchId_; 135 136 bool isVisible_ = true; 137 }; 138 139 } // namespace OHOS::Ace 140 141 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_TOUCH_LISTENER_TOUCH_LISTENER_COMPONENT_H 142