@@ -10,6 +10,8 @@ using nativeapi::Menu;
1010using nativeapi::MenuItem;
1111using nativeapi::MenuItemClickedEvent;
1212using nativeapi::MenuItemState;
13+ using nativeapi::MenuItemSubmenuClosedEvent;
14+ using nativeapi::MenuItemSubmenuOpenedEvent;
1315using nativeapi::MenuItemType;
1416using nativeapi::TrayIcon;
1517using 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