1 /* 2 * Copyright (C) 2024-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 FRAMEWORKS_INPUTMETHOD_ABILITY_INCLUDE_TASKS_TASK_IMSA_H 17 #define FRAMEWORKS_INPUTMETHOD_ABILITY_INCLUDE_TASKS_TASK_IMSA_H 18 19 #include "task.h" 20 21 #include "input_attribute.h" 22 #include "input_client_info.h" 23 #include "input_method_ability.h" 24 #include "input_method_property.h" 25 #include "iremote_object.h" 26 27 namespace OHOS { 28 namespace MiscServices { 29 30 class TaskImsaStartInput : public Task { 31 public: TaskImsaStartInput(const InputClientInfo & client,bool fromClient)32 TaskImsaStartInput(const InputClientInfo &client, bool fromClient) : Task(TASK_TYPE_IMSA_START_INPUT) 33 { 34 auto func = [client, fromClient]() { 35 InputMethodAbility::GetInstance().StartInput(client, fromClient); 36 }; 37 actions_.emplace_back(std::make_unique<Action>(func)); 38 } 39 ~TaskImsaStartInput() = default; 40 }; 41 42 class TaskImsaStopInput : public Task { 43 public: TaskImsaStopInput(sptr<IRemoteObject> channel,uint32_t sessionId)44 explicit TaskImsaStopInput(sptr<IRemoteObject> channel, uint32_t sessionId) : Task(TASK_TYPE_IMSA_STOP_INPUT) 45 { 46 auto func = [channel, sessionId]() { 47 InputMethodAbility::GetInstance().StopInput(channel, sessionId); 48 }; 49 actions_.emplace_back(std::make_unique<Action>(func)); 50 } 51 ~TaskImsaStopInput() = default; 52 }; 53 54 class TaskImsaShowKeyboard : public Task { 55 public: Task(TASK_TYPE_IMSA_SHOW_KEYBOARD)56 TaskImsaShowKeyboard(int32_t requestKeyboardReason = 0) : Task(TASK_TYPE_IMSA_SHOW_KEYBOARD) 57 { 58 auto func = [requestKeyboardReason]() { 59 InputMethodAbility::GetInstance().ShowKeyboard(requestKeyboardReason); 60 }; 61 actions_.emplace_back(std::make_unique<Action>(func)); 62 } 63 ~TaskImsaShowKeyboard() = default; 64 }; 65 66 class TaskImsaHideKeyboard : public Task { 67 public: TaskImsaHideKeyboard()68 explicit TaskImsaHideKeyboard() : Task(TASK_TYPE_IMSA_HIDE_KEYBOARD) 69 { 70 auto func = []() { 71 InputMethodAbility::GetInstance().HideKeyboard(); 72 }; 73 actions_.emplace_back(std::make_unique<Action>(func)); 74 } 75 ~TaskImsaHideKeyboard() = default; 76 }; 77 78 class TaskImsaOnClientInactive : public Task { 79 public: TaskImsaOnClientInactive(sptr<IRemoteObject> channel)80 explicit TaskImsaOnClientInactive(sptr<IRemoteObject> channel) : Task(TASK_TYPE_IMSA_CLIENT_INACTIVE) 81 { 82 auto func = [channel]() { 83 InputMethodAbility::GetInstance().OnClientInactive(channel); 84 }; 85 actions_.emplace_back(std::make_unique<Action>(func)); 86 } 87 ~TaskImsaOnClientInactive() = default; 88 }; 89 90 class TaskImsaInitInputCtrlChannel : public Task { 91 public: TaskImsaInitInputCtrlChannel(sptr<IRemoteObject> channel)92 explicit TaskImsaInitInputCtrlChannel(sptr<IRemoteObject> channel) : Task(TASK_TYPE_IMSA_INIT_INPUT_CTRL_CHANNEL) 93 { 94 auto func = [channel]() { 95 InputMethodAbility::GetInstance().OnInitInputControlChannel(channel); 96 }; 97 actions_.emplace_back(std::make_unique<Action>(func)); 98 } 99 ~TaskImsaInitInputCtrlChannel() = default; 100 }; 101 102 class TaskImsaOnCursorUpdate : public Task { 103 public: TaskImsaOnCursorUpdate(int32_t x,int32_t y,int32_t h)104 TaskImsaOnCursorUpdate(int32_t x, int32_t y, int32_t h) : Task(TASK_TYPE_IMSA_CURSOR_UPDATE) 105 { 106 auto func = [x, y, h]() { 107 InputMethodAbility::GetInstance().OnCursorUpdate(x, y, h); 108 }; 109 actions_.emplace_back(std::make_unique<Action>(func)); 110 } 111 ~TaskImsaOnCursorUpdate() = default; 112 }; 113 114 class TaskImsaDiscardTypingText : public Task { 115 public: TaskImsaDiscardTypingText()116 TaskImsaDiscardTypingText() : Task(TASK_TYPE_IMSA_DISCARD_TYPING_TEXT) 117 { 118 auto func = []() { 119 InputMethodAbility::GetInstance().OnDiscardTypingText(); 120 }; 121 actions_.emplace_back(std::make_unique<Action>(func)); 122 } 123 ~TaskImsaDiscardTypingText() = default; 124 }; 125 126 class TaskImsaSendPrivateCommand : public Task { 127 public: TaskImsaSendPrivateCommand(std::unordered_map<std::string,PrivateDataValue> privateCommand)128 TaskImsaSendPrivateCommand(std::unordered_map<std::string, PrivateDataValue> privateCommand) 129 : Task(TASK_TYPE_IMSA_SEND_PRIVATE_COMMAND) 130 { 131 auto func = [privateCommand]() { 132 InputMethodAbility::GetInstance().ReceivePrivateCommand(privateCommand); 133 }; 134 actions_.emplace_back(std::make_unique<Action>(func)); 135 } 136 ~TaskImsaSendPrivateCommand() = default; 137 }; 138 139 class TaskImsaOnSelectionChange : public Task { 140 public: TaskImsaOnSelectionChange(std::u16string text,int32_t oldBegin,int32_t oldEnd,int32_t newBegin,int32_t newEnd)141 TaskImsaOnSelectionChange(std::u16string text, int32_t oldBegin, int32_t oldEnd, int32_t newBegin, int32_t newEnd) 142 : Task(TASK_TYPE_IMSA_SELECTION_CHANGE) 143 { 144 auto func = [text, oldBegin, oldEnd, newBegin, newEnd]() { 145 InputMethodAbility::GetInstance().OnSelectionChange(text, oldBegin, oldEnd, newBegin, newEnd); 146 }; 147 actions_.emplace_back(std::make_unique<Action>(func)); 148 } 149 ~TaskImsaOnSelectionChange() = default; 150 }; 151 152 class TaskImsaAttributeChange : public Task { 153 public: TaskImsaAttributeChange(InputAttribute attr)154 explicit TaskImsaAttributeChange(InputAttribute attr) : Task(TASK_TYPE_IMSA_ATTRIBUTE_CHANGE) 155 { 156 auto func = [attr]() { 157 InputMethodAbility::GetInstance().OnAttributeChange(attr); 158 }; 159 actions_.emplace_back(std::make_unique<Action>(func)); 160 } 161 ~TaskImsaAttributeChange() = default; 162 }; 163 164 class TaskImsaOnFunctionKey : public Task { 165 public: TaskImsaOnFunctionKey(int32_t funcKey)166 explicit TaskImsaOnFunctionKey(int32_t funcKey) : Task(TASK_TYPE_IMSA_ON_FUNCTION_KEY) 167 { 168 auto func = [funcKey]() { 169 InputMethodAbility::GetInstance().OnFunctionKey(funcKey); 170 }; 171 actions_.emplace_back(std::make_unique<Action>(func)); 172 } 173 ~TaskImsaOnFunctionKey() = default; 174 }; 175 176 class TaskImsaStopInputService : public Task { 177 public: TaskImsaStopInputService(bool isTerminateIme)178 explicit TaskImsaStopInputService(bool isTerminateIme) : Task(TASK_TYPE_IMSA_STOP_INPUT_SERVICE) 179 { 180 auto func = [isTerminateIme]() { 181 InputMethodAbility::GetInstance().OnStopInputService(isTerminateIme); 182 }; 183 actions_.emplace_back(std::make_unique<Action>(func)); 184 } 185 ~TaskImsaStopInputService() = default; 186 }; 187 188 class TaskImsaOnSetSubProperty : public Task { 189 public: TaskImsaOnSetSubProperty(SubProperty prop)190 explicit TaskImsaOnSetSubProperty(SubProperty prop) : Task(TASK_TYPE_IMSA_SET_SUBPROPERTY) 191 { 192 auto func = [prop]() { 193 InputMethodAbility::GetInstance().OnSetSubtype(prop); 194 }; 195 actions_.emplace_back(std::make_unique<Action>(func)); 196 } 197 ~TaskImsaOnSetSubProperty() = default; 198 }; 199 200 class TaskImsaSetCoreAndAgent : public Task { 201 public: TaskImsaSetCoreAndAgent()202 TaskImsaSetCoreAndAgent() : Task(TASK_TYPE_IMSA_SET_CORE_AND_AGENT) 203 { 204 auto func = []() { 205 InputMethodAbility::GetInstance().SetCoreAndAgent(); 206 }; 207 actions_.emplace_back(std::make_unique<Action>(func)); 208 } 209 ~TaskImsaSetCoreAndAgent() = default; 210 }; 211 } // namespace MiscServices 212 } // namespace OHOS 213 214 #endif // FRAMEWORKS_INPUTMETHOD_ABILITY_INCLUDE_TASKS_TASK_IMSA_H