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 FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DECLARATION_TEXT_MENU_TEXT_MENU_DECLARATION_H
17 #define FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DECLARATION_TEXT_MENU_TEXT_MENU_DECLARATION_H
18 
19 #include <optional>
20 #include <string>
21 
22 namespace OHOS::Ace::NG {
23 struct MenuOptionsParam {
24     std::optional<std::string> content;
25     std::optional<std::string> icon;
26     std::string id;
27     std::function<void(const std::string&)> action;
28 
29     // Used for the display of the first options extra-long.
30     bool isFirstOption = false;
31 
ToStringMenuOptionsParam32     std::string ToString() const
33     {
34         std::string result;
35         result.append("id: ");
36         result.append(id);
37         result.append(", content: ");
38         result.append(content.value_or("na"));
39         result.append(", icon: ");
40         result.append(icon.value_or("na"));
41         return result;
42     }
43 };
44 
45 struct MenuItemParam {
46     MenuOptionsParam menuOptionsParam;
47     int32_t start = -1;
48     int32_t end = -1;
49 
ToStringMenuItemParam50     std::string ToString() const
51     {
52         std::string result;
53         result.append("[start: ");
54         result.append(std::to_string(start));
55         result.append(", end: ");
56         result.append(std::to_string(end));
57         result.append("], ");
58         result.append(menuOptionsParam.ToString());
59         return result;
60     }
61 };
62 
63 using OnCreateMenuCallback = std::function<std::vector<MenuOptionsParam>(const std::vector<NG::MenuItemParam>&)>;
64 using OnMenuItemClickCallback = std::function<bool(const NG::MenuItemParam&)>;
65 } // namespace OHOS::Ace::NG
66 #endif // FOUNDATION_ACE_FRAMEWORKS_CORE_COMPONENTS_DECLARATION_NAVIGATION_NAVIGATION_DECLARATION_H