• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 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 "input_method_tools.h"
17 
18 namespace OHOS {
19 namespace MiscServices {
20 
GetInstance()21 InputMethodTools &InputMethodTools::GetInstance()
22 {
23     static InputMethodTools instance;
24     return instance;
25 }
26 
AttributeToInner(const InputAttribute & attribute)27 InputAttributeInner InputMethodTools::AttributeToInner(const InputAttribute &attribute)
28 {
29     InputAttributeInner inner;
30     inner.inputPattern = attribute.inputPattern;
31     inner.inputOption = attribute.inputOption;
32     inner.enterKeyType = attribute.enterKeyType;
33     inner.isTextPreviewSupported = attribute.isTextPreviewSupported;
34     inner.bundleName = attribute.bundleName;
35     inner.immersiveMode = attribute.immersiveMode;
36     inner.gradientMode = attribute.gradientMode;
37     inner.fluidLightMode = attribute.fluidLightMode;
38     inner.windowId = attribute.windowId;
39     inner.callingDisplayId = attribute.callingDisplayId;
40     inner.placeholder = attribute.placeholder;
41     inner.abilityName = attribute.abilityName;
42     inner.capitalizeMode = attribute.capitalizeMode;
43     inner.needAutoInputNumkey = attribute.needAutoInputNumkey;
44     return inner;
45 }
46 
InnerToAttribute(const InputAttributeInner & inner)47 InputAttribute InputMethodTools::InnerToAttribute(const InputAttributeInner &inner)
48 {
49     InputAttribute inputAttribute;
50     inputAttribute.inputPattern = inner.inputPattern;
51     inputAttribute.inputOption = inner.inputOption;
52     inputAttribute.enterKeyType = inner.enterKeyType;
53     inputAttribute.isTextPreviewSupported = inner.isTextPreviewSupported;
54     inputAttribute.bundleName = inner.bundleName;
55     inputAttribute.immersiveMode = inner.immersiveMode;
56     inputAttribute.gradientMode = inner.gradientMode;
57     inputAttribute.fluidLightMode = inner.fluidLightMode;
58     inputAttribute.windowId = inner.windowId;
59     inputAttribute.callingDisplayId = inner.callingDisplayId;
60     inputAttribute.placeholder = inner.placeholder;
61     inputAttribute.abilityName = inner.abilityName;
62     inputAttribute.capitalizeMode = inner.capitalizeMode;
63     inputAttribute.needAutoInputNumkey = inner.needAutoInputNumkey;
64     return inputAttribute;
65 }
66 
CursorInfoToInner(const CursorInfo & cursorInfo)67 CursorInfoInner InputMethodTools::CursorInfoToInner(const CursorInfo &cursorInfo)
68 {
69     CursorInfoInner inner;
70     inner.left = cursorInfo.left;
71     inner.top = cursorInfo.top;
72     inner.width = cursorInfo.width;
73     inner.height = cursorInfo.height;
74     return inner;
75 }
76 
InnerToCursorInfo(const CursorInfoInner & inner)77 CursorInfo InputMethodTools::InnerToCursorInfo(const CursorInfoInner &inner)
78 {
79     CursorInfo cursorInfo;
80     cursorInfo.left = inner.left;
81     cursorInfo.top = inner.top;
82     cursorInfo.width = inner.width;
83     cursorInfo.height = inner.height;
84     return cursorInfo;
85 }
86 
RangeToInner(const Range & range)87 RangeInner InputMethodTools::RangeToInner(const Range &range)
88 {
89     RangeInner inner;
90     inner.start = range.start;
91     inner.end = range.end;
92     return inner;
93 }
InnerToRange(const RangeInner & inner)94 Range InputMethodTools::InnerToRange(const RangeInner &inner)
95 {
96     Range range;
97     range.start = inner.start;
98     range.end = inner.end;
99     return range;
100 }
101 
TextSelectionToInner(const TextSelection & textSelection)102 TextSelectionInner InputMethodTools::TextSelectionToInner(const TextSelection &textSelection)
103 {
104     TextSelectionInner inner;
105     inner.oldBegin = textSelection.oldBegin;
106     inner.oldEnd = textSelection.oldEnd;
107     inner.newBegin = textSelection.newBegin;
108     inner.newEnd = textSelection.newEnd;
109     return inner;
110 }
InnerToSelection(const TextSelectionInner & inner)111 TextSelection InputMethodTools::InnerToSelection(const TextSelectionInner &inner)
112 {
113     TextSelection textSelection;
114     textSelection.oldBegin = inner.oldBegin;
115     textSelection.oldEnd = inner.oldEnd;
116     textSelection.newBegin = inner.newBegin;
117     textSelection.newEnd = inner.newEnd;
118     return textSelection;
119 }
120 
TextTotalConfigToInner(const TextTotalConfig & textTotalConfig)121 TextTotalConfigInner InputMethodTools::TextTotalConfigToInner(const TextTotalConfig &textTotalConfig)
122 {
123     TextTotalConfigInner inner;
124     inner.inputAttribute = AttributeToInner(textTotalConfig.inputAttribute);
125     inner.cursorInfo = CursorInfoToInner(textTotalConfig.cursorInfo);
126     inner.textSelection = TextSelectionToInner(textTotalConfig.textSelection);
127     inner.windowId = textTotalConfig.windowId;
128     inner.positionY = textTotalConfig.positionY;
129     inner.height = textTotalConfig.height;
130     inner.commandValue.valueMap = textTotalConfig.privateCommand;
131     inner.requestKeyboardReason = textTotalConfig.requestKeyboardReason;
132     inner.abilityToken = textTotalConfig.abilityToken;
133     inner.isSimpleKeyboardEnabled = textTotalConfig.isSimpleKeyboardEnabled;
134     return inner;
135 }
136 
InnerToTextTotalConfig(const TextTotalConfigInner & inner)137 TextTotalConfig InputMethodTools::InnerToTextTotalConfig(const TextTotalConfigInner &inner)
138 {
139     TextTotalConfig textTotalConfig;
140     textTotalConfig.inputAttribute = InnerToAttribute(inner.inputAttribute);
141     textTotalConfig.cursorInfo = InnerToCursorInfo(inner.cursorInfo);
142     textTotalConfig.textSelection = InnerToSelection(inner.textSelection);
143     textTotalConfig.windowId = inner.windowId;
144     textTotalConfig.positionY = inner.positionY;
145     textTotalConfig.height = inner.height;
146     textTotalConfig.privateCommand = inner.commandValue.valueMap;
147     textTotalConfig.requestKeyboardReason = inner.requestKeyboardReason;
148     textTotalConfig.abilityToken = inner.abilityToken;
149     textTotalConfig.isSimpleKeyboardEnabled = inner.isSimpleKeyboardEnabled;
150     return textTotalConfig;
151 }
152 
InputClientInfoToInner(const InputClientInfo & inputClientInfo)153 InputClientInfoInner InputMethodTools::InputClientInfoToInner(const InputClientInfo &inputClientInfo)
154 {
155     InputClientInfoInner inner;
156     inner.pid = inputClientInfo.pid;
157     inner.uid = inputClientInfo.uid;
158     inner.userID = inputClientInfo.userID;
159     inner.isShowKeyboard = inputClientInfo.isShowKeyboard;
160     inner.bindImeType = inputClientInfo.bindImeType;
161     inner.config = TextTotalConfigToInner(inputClientInfo.config);
162     inner.eventFlag = inputClientInfo.eventFlag;
163     inner.attribute = AttributeToInner(inputClientInfo.attribute);
164     inner.client = inputClientInfo.client;
165     inner.channel = inputClientInfo.channel;
166     inner.deathRecipient = inputClientInfo.deathRecipient;
167     inner.state = inputClientInfo.state;
168     inner.isNotifyInputStart = inputClientInfo.isNotifyInputStart;
169     inner.needHide = inputClientInfo.needHide;
170     inner.uiExtensionTokenId = inputClientInfo.uiExtensionTokenId;
171     inner.requestKeyboardReason = inputClientInfo.requestKeyboardReason;
172     inner.type = inputClientInfo.type;
173     inner.name = inputClientInfo.name;
174     return inner;
175 }
176 
InnerToInputClientInfo(const InputClientInfoInner & inner)177 InputClientInfo InputMethodTools::InnerToInputClientInfo(const InputClientInfoInner &inner)
178 {
179     InputClientInfo inputClientInfo;
180     inputClientInfo.pid = inner.pid;
181     inputClientInfo.uid = inner.uid;
182     inputClientInfo.userID = inner.userID;
183     inputClientInfo.isShowKeyboard = inner.isShowKeyboard;
184     inputClientInfo.bindImeType = inner.bindImeType;
185     inputClientInfo.config = InnerToTextTotalConfig(inner.config);
186     inputClientInfo.eventFlag = inner.eventFlag;
187     inputClientInfo.attribute = InnerToAttribute(inner.attribute);
188     inputClientInfo.client = inner.client;
189     inputClientInfo.channel = inner.channel;
190     inputClientInfo.deathRecipient = inner.deathRecipient;
191     inputClientInfo.state = inner.state;
192     inputClientInfo.isNotifyInputStart = inner.isNotifyInputStart;
193     inputClientInfo.needHide = inner.needHide;
194     inputClientInfo.uiExtensionTokenId = inner.uiExtensionTokenId;
195     inputClientInfo.requestKeyboardReason = inner.requestKeyboardReason;
196     inputClientInfo.type = inner.type;
197     inputClientInfo.name = inner.name;
198     return inputClientInfo;
199 }
200 
PanelStatusInfoToInner(const PanelStatusInfo & panelStatusInfo)201 PanelStatusInfoInner InputMethodTools::PanelStatusInfoToInner(const PanelStatusInfo &panelStatusInfo)
202 {
203     PanelStatusInfoInner inner;
204     inner.panelInfo = panelStatusInfo.panelInfo;
205     inner.visible = panelStatusInfo.visible;
206     inner.trigger = panelStatusInfo.trigger;
207     inner.sessionId = panelStatusInfo.sessionId;
208     return inner;
209 }
210 
InnerToPanelStatusInfo(const PanelStatusInfoInner & inner)211 PanelStatusInfo InputMethodTools::InnerToPanelStatusInfo(const PanelStatusInfoInner &inner)
212 {
213     PanelStatusInfo panelStatusInfo;
214     panelStatusInfo.panelInfo = inner.panelInfo;
215     panelStatusInfo.visible = inner.visible;
216     panelStatusInfo.trigger = inner.trigger;
217     panelStatusInfo.sessionId = inner.sessionId;
218     return panelStatusInfo;
219 }
220 } // namespace MiscServices
221 } // namespace OHOS