1 /* 2 * Copyright (c) 2020-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 #include "common/input_device_manager.h" 17 #include "common/task_manager.h" 18 #include "components/ui_tree_manager.h" 19 #include "gfx_utils/graphic_log.h" 20 21 namespace OHOS { GetInstance()22InputDeviceManager* InputDeviceManager::GetInstance() 23 { 24 static InputDeviceManager instance; 25 return &instance; 26 } 27 Init()28void InputDeviceManager::Init() 29 { 30 UITreeManager::GetInstance().RegistViewLifeEvent(OnViewLifeEvent); 31 if (INDEV_READ_PERIOD > 0) { 32 SetPeriod(INDEV_READ_PERIOD); 33 TaskManager::GetInstance()->Add(this); 34 } 35 } 36 Add(InputDevice * device)37void InputDeviceManager::Add(InputDevice* device) 38 { 39 if (device == nullptr) { 40 GRAPHIC_LOGE("InputDeviceManager::Add invalid param\n"); 41 return; 42 } 43 deviceList_.PushBack(device); 44 } 45 Remove(InputDevice * device)46void InputDeviceManager::Remove(InputDevice* device) 47 { 48 if (device == nullptr) { 49 return; 50 } 51 ListNode<InputDevice*>* node = deviceList_.Begin(); 52 while (node != deviceList_.End()) { 53 if (node->data_ == device) { 54 deviceList_.Remove(node); 55 return; 56 } 57 node = node->next_; 58 } 59 } 60 Callback()61void InputDeviceManager::Callback() 62 { 63 ListNode<InputDevice*>* node = deviceList_.Begin(); 64 while (node != deviceList_.End()) { 65 node->data_->ProcessEvent(); 66 node = node->next_; 67 } 68 } 69 Clear()70void InputDeviceManager::Clear() 71 { 72 deviceList_.Clear(); 73 } 74 OnViewLifeEvent()75void InputDeviceManager::OnViewLifeEvent() 76 { 77 auto& devices = GetInstance()->deviceList_; 78 auto node = devices.Begin(); 79 while (node != devices.End()) { 80 node->data_->OnViewLifeEvent(); 81 node = node->next_; 82 } 83 } 84 85 } // namespace OHOS 86