From c566043879385010c8e3428402a7b2609a48a310 Mon Sep 17 00:00:00 2001 From: Olaf Wintermann Date: Sun, 24 May 2026 13:28:58 +0200 Subject: [PATCH] add menubar --- .../main/kotlin/de/unixwork/rssreader/App.kt | 61 +++++++++++++++++++ .../kotlin/de/unixwork/rssreader/FeedList.kt | 4 +- .../main/kotlin/de/unixwork/ui/kotlin/Menu.kt | 1 + 3 files changed, 64 insertions(+), 2 deletions(-) diff --git a/rss-application/src/main/kotlin/de/unixwork/rssreader/App.kt b/rss-application/src/main/kotlin/de/unixwork/rssreader/App.kt index b29fc47..9d2a62c 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/App.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/App.kt @@ -6,6 +6,7 @@ import de.unixwork.ui.Toolkit import de.unixwork.ui.kotlin.ToolkitDispatcher import de.unixwork.ui.kotlin.toolbarItem import de.unixwork.ui.kotlin.addToolbarDefault +import de.unixwork.ui.kotlin.applicationMenu import de.unixwork.ui.kotlin.menu import de.unixwork.ui.kotlin.menuItem import de.unixwork.ui.kotlin.radioItem @@ -25,6 +26,7 @@ object App : Application { var configWindow: ConfigWindow? = null init { + initMenubar() initToolbar() } @@ -85,6 +87,62 @@ object App : Application { } } + fun initMenubar() { + applicationMenu { + menu("Feeds") { + menuItem(label = "Add Feed") { + window?.createFeedDialog() + } + menuItem(label = "Add Folder") { + window?.createCategoryDialog() + } + separator() + menuItem(label = "Update All") { + syncAll() + } + menuItem(label = "Update Current Feed") { + syncCurrent() + } + separator() + menuItem(label = "Mark Current Feed as Read") { + markCurrentFeedAsRead() + } + menuItem(label = "Mark All as Read") { + markAllAsRead() + } + separator() + menuItem(label = "Settings") { + if(configWindow == null) { + configWindow = ConfigWindow() + } + configWindow!!.show() + } + } + menu("Filter") { + radioItem(label = "All items", varname = "filter") { event -> + if(event.intValue == 1) { + window?.feedList?.reloadCurrentFeed() + } + } + radioItem(label = "Unread items", varname = "filter") { event -> + if(event.intValue == 1) { + window?.feedList?.reloadCurrentFeed() + } + } + radioItem(label = "Bookmarked items", varname = "filter") { event -> + if(event.intValue == 1) { + window?.feedList?.reloadCurrentFeed() + } + } + } + menu("View") { + radioItem(label = "Open item with default settings", varname = "browserSetting") + radioItem(label = "Open item description", varname = "browserSetting") + radioItem(label = "Open item link in internal browser", varname = "browserSetting") + } + } + } + fun initToolbar() { toolbarItem(name = "reloadFeed", icon = "view-refresh", tooltip = "Refresh current feed") { event -> syncCurrent() @@ -122,6 +180,7 @@ object App : Application { markAllAsRead() } separator() + /* menu("Filter") { radioItem(label = "All items", varname = "filter") { event -> if(event.intValue == 1) { @@ -139,6 +198,8 @@ object App : Application { } } } + + */ separator() radioItem(label = "Open item with default settings", varname = "browserSetting") radioItem(label = "Open item description", varname = "browserSetting") diff --git a/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedList.kt b/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedList.kt index 0053a65..8cb92d4 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedList.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedList.kt @@ -77,8 +77,8 @@ class FeedList(window: MainWindow) : Document() { items.clear() feed.items.forEach { item -> when (filterMode) { - 1 -> if(!item.isRead) items.add(item) - 2 -> if(item.isBookmark) items.add(item) + 2 -> if(!item.isRead) items.add(item) + 3 -> if(item.isBookmark) items.add(item) else -> items.add(item) } 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 f97a9bd..5b4faee 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 @@ -42,6 +42,7 @@ fun Menu.separator() { } + fun applicationMenu(block: Menu.() -> Unit) { Application.setAppMenu(menuBuilder(block)) } -- 2.47.3