• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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