Skip to content

Commit f8bd02d

Browse files
committed
Add Tools submenu with event handling to context menu
1 parent 2bf6efd commit f8bd02d

File tree

1 file changed

+49
-1
lines changed

1 file changed

+49
-1
lines changed

examples/window_example/main.cpp

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ using nativeapi::Menu;
1010
using nativeapi::MenuItem;
1111
using nativeapi::MenuItemClickedEvent;
1212
using nativeapi::MenuItemState;
13+
using nativeapi::MenuItemSubmenuClosedEvent;
14+
using nativeapi::MenuItemSubmenuOpenedEvent;
1315
using nativeapi::MenuItemType;
1416
using nativeapi::TrayIcon;
1517
using nativeapi::TrayManager;
@@ -111,7 +113,53 @@ int main() {
111113
});
112114
context_menu->AddItem(about_item);
113115

114-
// Add preferences submenu with checkbox items
116+
// Create Tools submenu with submenu event handling
117+
auto tools_submenu = Menu::Create();
118+
119+
// Add items to tools submenu
120+
auto clear_cache_item = MenuItem::Create("Clear Cache", MenuItemType::Normal);
121+
clear_cache_item->AddListener<MenuItemClickedEvent>([](const MenuItemClickedEvent& event) {
122+
std::cout << "Clear Cache clicked from submenu" << std::endl;
123+
});
124+
tools_submenu->AddItem(clear_cache_item);
125+
126+
auto reset_settings_item = MenuItem::Create("Reset Settings", MenuItemType::Normal);
127+
reset_settings_item->AddListener<MenuItemClickedEvent>([](const MenuItemClickedEvent& event) {
128+
std::cout << "Reset Settings clicked from submenu" << std::endl;
129+
});
130+
tools_submenu->AddItem(reset_settings_item);
131+
132+
tools_submenu->AddSeparator();
133+
134+
auto debug_mode_item = MenuItem::Create("Debug Mode", MenuItemType::Checkbox);
135+
debug_mode_item->SetState(MenuItemState::Unchecked);
136+
debug_mode_item->AddListener<MenuItemClickedEvent>([debug_mode_item](const MenuItemClickedEvent& event) {
137+
auto current_state = debug_mode_item->GetState();
138+
MenuItemState new_state = (current_state == MenuItemState::Checked) ? MenuItemState::Unchecked : MenuItemState::Checked;
139+
debug_mode_item->SetState(new_state);
140+
std::cout << "Debug Mode " << (new_state == MenuItemState::Checked ? "enabled" : "disabled") << std::endl;
141+
});
142+
tools_submenu->AddItem(debug_mode_item);
143+
144+
// Create the submenu parent item
145+
auto tools_item = MenuItem::Create("Tools", MenuItemType::Submenu);
146+
tools_item->SetSubmenu(tools_submenu);
147+
148+
// Add submenu event listeners
149+
tools_item->AddListener<MenuItemSubmenuOpenedEvent>([](const MenuItemSubmenuOpenedEvent& event) {
150+
std::cout << "Tools submenu opened (ID: " << event.GetItemId() << ")" << std::endl;
151+
});
152+
153+
tools_item->AddListener<MenuItemSubmenuClosedEvent>([](const MenuItemSubmenuClosedEvent& event) {
154+
std::cout << "Tools submenu closed (ID: " << event.GetItemId() << ")" << std::endl;
155+
});
156+
157+
context_menu->AddItem(tools_item);
158+
159+
// Add separator before preferences
160+
context_menu->AddSeparator();
161+
162+
// Add preferences section (not a submenu, just a label)
115163
auto preferences_item = MenuItem::Create("Preferences", MenuItemType::Normal);
116164
context_menu->AddItem(preferences_item);
117165

0 commit comments

Comments
 (0)