From: Olaf Wintermann Date: Wed, 10 Sep 2025 15:57:17 +0000 (+0200) Subject: add toolbar menu item X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;h=2ae225e245be67ecd3ebd7b6459c5e62b4632953;p=rssreader.git add toolbar menu item --- diff --git a/ui-java/src/main/java/de/unixwork/ui/Toolbar.java b/ui-java/src/main/java/de/unixwork/ui/Toolbar.java index 6f7795d..936ddcf 100644 --- a/ui-java/src/main/java/de/unixwork/ui/Toolbar.java +++ b/ui-java/src/main/java/de/unixwork/ui/Toolbar.java @@ -42,6 +42,34 @@ public class Toolbar { } } + public static void menu(String name, String label, String icon, Menu menu) { + MenuFuncs ui = MenuFuncs.getInstance(); + ArgFuncs a = ArgFuncs.getInstance(); + try (Arena arena = Arena.ofConfined()) { + MemorySegment nameCstr = MemorySegment.NULL; + if(name != null) { + nameCstr = arena.allocateFrom(name); + } + + MemorySegment args = (MemorySegment) a.toolbar_menu_args_new.invoke(); + if(label != null) { + MemorySegment cstr = arena.allocateFrom(label); + a.toolbar_menu_args_set_label.invoke(args, cstr); + } + if(icon != null) { + MemorySegment cstr = arena.allocateFrom(icon); + a.toolbar_menu_args_set_icon.invoke(args, cstr); + } + + ui.toolbar_menu_create.invoke(nameCstr, args); + menu.create(); + ui.menu_end.invoke(); + } catch (Throwable e) { + throw new RuntimeException(e); + } + + } + public static void addDefault(String name, ToolbarPosition position) { int pos = position.ordinal(); diff --git a/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Menu.kt b/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Menu.kt index 545c96a..8d8538c 100644 --- a/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Menu.kt +++ b/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Menu.kt @@ -44,6 +44,15 @@ fun toolbarItem(name: String, label: String? = null, icon: String? = null, stock } } +fun toolbarMenu(name: String?, label: String? = null, icon: String? = null, stockId: String? = null, block: MenuBuilder.() -> Unit) { + // TODO: stockId + Toolbar.menu(name, label, icon, menuBuilder(block)) +} + +fun toolbarAppMenu(block: MenuBuilder.() -> Unit) { + Toolbar.menu(null, null, null, menuBuilder(block)) +} + fun addToolbarDefault(name: String, position: ToolbarPosition) { Toolbar.addDefault(name, position) }