1 /*
2 * Copyright (c) 2023 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 "ohos_adapter/bridge/ark_imftext_listener_adapter_wrapper.h"
17
18 #include "ohos_adapter/bridge/ark_imf_adapter_function_key_adapter_impl.h"
19
20 #include "base/bridge/ark_web_bridge_macros.h"
21
22 namespace OHOS::ArkWeb {
23
ArkIMFTextListenerAdapterWrapper(ArkWebRefPtr<ArkIMFTextListenerAdapter> ref)24 ArkIMFTextListenerAdapterWrapper::ArkIMFTextListenerAdapterWrapper(ArkWebRefPtr<ArkIMFTextListenerAdapter> ref)
25 : ctocpp_(ref)
26 {}
27
InsertText(const std::u16string & text)28 void ArkIMFTextListenerAdapterWrapper::InsertText(const std::u16string& text)
29 {
30 ArkWebU16String str = ArkWebU16StringClassToStruct(text);
31 ctocpp_->InsertText(str);
32 ArkWebU16StringStructRelease(str);
33 }
34
DeleteForward(int32_t length)35 void ArkIMFTextListenerAdapterWrapper::DeleteForward(int32_t length)
36 {
37 ctocpp_->DeleteForward(length);
38 }
39
DeleteBackward(int32_t length)40 void ArkIMFTextListenerAdapterWrapper::DeleteBackward(int32_t length)
41 {
42 ctocpp_->DeleteBackward(length);
43 }
44
SendKeyEventFromInputMethod()45 void ArkIMFTextListenerAdapterWrapper::SendKeyEventFromInputMethod()
46 {
47 ctocpp_->SendKeyEventFromInputMethod();
48 }
49
SendKeyboardStatus(const OHOS::NWeb::IMFAdapterKeyboardStatus & keyboardStatus)50 void ArkIMFTextListenerAdapterWrapper::SendKeyboardStatus(const OHOS::NWeb::IMFAdapterKeyboardStatus& keyboardStatus)
51 {
52 ctocpp_->SendKeyboardStatus((int32_t)keyboardStatus);
53 }
54
SendFunctionKey(std::shared_ptr<OHOS::NWeb::IMFAdapterFunctionKeyAdapter> functionKey)55 void ArkIMFTextListenerAdapterWrapper::SendFunctionKey(
56 std::shared_ptr<OHOS::NWeb::IMFAdapterFunctionKeyAdapter> functionKey)
57 {
58 if (CHECK_SHARED_PTR_IS_NULL(functionKey)) {
59 return ctocpp_->SendFunctionKey(nullptr);
60 }
61
62 ctocpp_->SendFunctionKey(new ArkIMFAdapterFunctionKeyAdapterImpl(functionKey));
63 }
64
SetKeyboardStatus(bool status)65 void ArkIMFTextListenerAdapterWrapper::SetKeyboardStatus(bool status)
66 {
67 ctocpp_->SetKeyboardStatus(status);
68 }
69
MoveCursor(const OHOS::NWeb::IMFAdapterDirection direction)70 void ArkIMFTextListenerAdapterWrapper::MoveCursor(const OHOS::NWeb::IMFAdapterDirection direction)
71 {
72 ctocpp_->MoveCursor((uint32_t)direction);
73 }
74
HandleSetSelection(int32_t start,int32_t end)75 void ArkIMFTextListenerAdapterWrapper::HandleSetSelection(int32_t start, int32_t end)
76 {
77 ctocpp_->HandleSetSelection(start, end);
78 }
79
HandleExtendAction(int32_t action)80 void ArkIMFTextListenerAdapterWrapper::HandleExtendAction(int32_t action)
81 {
82 ctocpp_->HandleExtendAction(action);
83 }
84
HandleSelect(int32_t keyCode,int32_t cursorMoveSkip)85 void ArkIMFTextListenerAdapterWrapper::HandleSelect(int32_t keyCode, int32_t cursorMoveSkip)
86 {
87 ctocpp_->HandleSelect(keyCode, cursorMoveSkip);
88 }
89
GetTextIndexAtCursor()90 int32_t ArkIMFTextListenerAdapterWrapper::GetTextIndexAtCursor()
91 {
92 return ctocpp_->GetTextIndexAtCursor();
93 }
94
GetLeftTextOfCursor(int32_t number)95 std::u16string ArkIMFTextListenerAdapterWrapper::GetLeftTextOfCursor(int32_t number)
96 {
97 ArkWebU16String str = ctocpp_->GetLeftTextOfCursor(number);
98 std::u16string result = ArkWebU16StringStructToClass(str);
99
100 ArkWebU16StringStructRelease(str);
101 return result;
102 }
103
GetRightTextOfCursor(int32_t number)104 std::u16string ArkIMFTextListenerAdapterWrapper::GetRightTextOfCursor(int32_t number)
105 {
106 ArkWebU16String str = ctocpp_->GetRightTextOfCursor(number);
107 std::u16string result = ArkWebU16StringStructToClass(str);
108
109 ArkWebU16StringStructRelease(str);
110 return result;
111 }
112
SetPreviewText(const std::u16string & text,int32_t start,int32_t end)113 int32_t ArkIMFTextListenerAdapterWrapper::SetPreviewText(const std::u16string& text, int32_t start, int32_t end)
114 {
115 ArkWebU16String str = ArkWebU16StringClassToStruct(text);
116 int32_t result = ctocpp_->SetPreviewText(str, start, end);
117
118 ArkWebU16StringStructRelease(str);
119 return result;
120 }
121
FinishTextPreview()122 void ArkIMFTextListenerAdapterWrapper::FinishTextPreview()
123 {
124 ctocpp_->FinishTextPreview();
125 }
126
SetNeedUnderLine(bool isNeedUnderline)127 void ArkIMFTextListenerAdapterWrapper::SetNeedUnderLine(bool isNeedUnderline)
128 {
129 ctocpp_->SetNeedUnderLine(isNeedUnderline);
130 }
131
AutoFillWithIMFEvent(bool isUsername,bool isOtherAccount,bool isNewPassword,const std::string & content)132 void ArkIMFTextListenerAdapterWrapper::AutoFillWithIMFEvent(bool isUsername, bool isOtherAccount, bool isNewPassword,
133 const std::string& content)
134 {
135 ArkWebString str = ArkWebStringClassToStruct(content);
136 ctocpp_->AutoFillWithIMFEvent(isUsername, isOtherAccount, isNewPassword, str);
137
138 ArkWebStringStructRelease(str);
139 }
140
KeyboardUpperRightCornerHide()141 void ArkIMFTextListenerAdapterWrapper::KeyboardUpperRightCornerHide()
142 {
143 ctocpp_->KeyboardUpperRightCornerHide();
144 }
145
146 } // namespace OHOS::ArkWeb
147