1 /* 2 * Copyright (c) 2022 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 NWEB_CONTEXT_MENU_PARAMS_H 17 #define NWEB_CONTEXT_MENU_PARAMS_H 18 19 #include <memory> 20 #include <string> 21 22 #include "nweb_export.h" 23 #include "nweb_touch_handle_state.h" 24 25 namespace OHOS::NWeb { 26 27 class OHOS_NWEB_EXPORT NWebContextMenuParams { 28 public: 29 enum ContextMenuTypeFlags { 30 CM_TF_NONE = 0, 31 CM_TF_PAGE = 1 << 0, 32 CM_TF_FRAME = 1 << 1, 33 CM_TF_LINK = 1 << 2, 34 CM_TF_MEDIA = 1 << 3, 35 CM_TF_SELECTION = 1 << 4, 36 CM_TF_EDITABLE = 1 << 5, 37 }; 38 39 enum ContextMenuMediaType { 40 CM_MT_NONE, 41 CM_MT_IMAGE, 42 }; 43 44 enum ContextMenuEditStateFlags { 45 CM_ES_NONE = 0, 46 CM_ES_CAN_CUT = 1 << 0, 47 CM_ES_CAN_COPY = 1 << 1, 48 CM_ES_CAN_PASTE = 1 << 2, 49 CM_ES_CAN_SELECT_ALL = 1 << 3, 50 }; 51 52 enum ContextMenuInputFieldType { 53 CM_IT_NONE = 0, 54 CM_IT_PLAINTEXT = 1, 55 CM_IT_PASSWORD = 2, 56 CM_IT_NUMBER = 3, 57 CM_IT_TELEPHONE = 4, 58 CM_IT_OTHER = 5, 59 }; 60 61 enum ContextMenuSourceType { 62 CM_ST_NONE = 0, 63 CM_ST_MOUSE = 1, 64 CM_ST_LONG_PRESS = 2, 65 }; 66 67 virtual ~NWebContextMenuParams() = default; 68 69 virtual int32_t GetXCoord() = 0; 70 71 virtual int32_t GetYCoord() = 0; 72 73 virtual int32_t GetContextMenuTypeFlags() = 0; 74 75 virtual std::string GetLinkUrl() = 0; 76 77 virtual std::string GetUnfilteredLinkUrl() = 0; 78 79 virtual std::string GetSourceUrl() = 0; 80 81 virtual bool HasImageContents() = 0; 82 83 virtual std::string GetTitleText() = 0; 84 85 virtual std::string GetPageUrl() = 0; 86 87 virtual ContextMenuMediaType GetMediaType() = 0; 88 89 virtual bool IsEditable() = 0; 90 91 virtual int32_t GetEditStateFlags() = 0; 92 93 virtual ContextMenuSourceType GetSourceType() = 0; 94 95 virtual ContextMenuInputFieldType GetInputFieldType() = 0; 96 97 virtual std::string GetSelectionText() = 0; 98 GetImageRect(int & x,int & y,int & w,int & h)99 virtual void GetImageRect(int& x, int& y, int& w, int& h) {} 100 IsAILink()101 virtual bool IsAILink() { return false; } 102 }; 103 104 class OHOS_NWEB_EXPORT NWebQuickMenuParams { 105 public: 106 enum QuickMenuEditStateFlags { 107 QM_EF_NONE = 0, 108 QM_EF_CAN_ELLIPSIS = 1 << 0, 109 QM_EF_CAN_CUT = 1 << 1, 110 QM_EF_CAN_COPY = 1 << 2, 111 QM_EF_CAN_PASTE = 1 << 3, 112 QM_EF_CAN_SELECT_ALL = 1 << 4, 113 QM_EF_CAN_AI_WRITE = 1 << 5, 114 }; 115 116 virtual ~NWebQuickMenuParams() = default; 117 118 virtual int32_t GetXCoord() = 0; 119 120 virtual int32_t GetYCoord() = 0; 121 122 virtual int32_t GetWidth() = 0; 123 124 virtual int32_t GetHeight() = 0; 125 126 virtual int32_t GetEditStateFlags() = 0; 127 128 virtual int32_t GetSelectX() = 0; 129 130 virtual int32_t GetSelectY() = 0; 131 132 virtual int32_t GetSelectWidth() = 0; 133 134 virtual int32_t GetSelectXHeight() = 0; 135 136 virtual std::shared_ptr<NWebTouchHandleState> GetTouchHandleState(NWebTouchHandleState::TouchHandleType type) = 0; 137 GetIsLongPressActived()138 virtual bool GetIsLongPressActived() { 139 return false; 140 } 141 }; 142 143 enum MenuEventFlags { 144 EF_NONE = 0, 145 EF_CAPS_LOCK_ON = 1 << 0, 146 EF_SHIFT_DOWN = 1 << 1, 147 EF_CONTROL_DOWN = 1 << 2, 148 EF_ALT_DOWN = 1 << 3, 149 EF_LEFT_MOUSE_BUTTON = 1 << 4, 150 EF_MIDDLE_MOUSE_BUTTON = 1 << 5, 151 EF_RIGHT_MOUSE_BUTTON = 1 << 6, 152 }; 153 154 enum MenuCommandId { 155 CI_IMAGE_COPY = 0, 156 CI_COPY = 1, 157 CI_PASTE = 2, 158 CI_CUT = 3, 159 CI_SELECT_ALL = 4, 160 CI_DELETE = 5, 161 CI_REDO = 6, 162 CI_UNDO = 7, 163 CI_PASTE_AND_MATCH_STYLE = 8, 164 }; 165 166 class OHOS_NWEB_EXPORT NWebContextMenuCallback { 167 public: 168 virtual ~NWebContextMenuCallback() = default; 169 170 virtual void Continue(int32_t commandId, MenuEventFlags flag) = 0; 171 172 virtual void Cancel() = 0; 173 }; 174 175 class OHOS_NWEB_EXPORT NWebQuickMenuCallback { 176 public: 177 virtual ~NWebQuickMenuCallback() = default; 178 179 virtual void Continue(int32_t commandId, MenuEventFlags flag) = 0; 180 181 virtual void Cancel() = 0; 182 }; 183 184 } // namespace OHOS::NWeb 185 186 #endif