From ac1fdb463837c7f2988626b4f01f2970cf93e070 Mon Sep 17 00:00:00 2001 From: Olaf Wintermann Date: Tue, 23 Dec 2025 17:21:16 +0100 Subject: [PATCH] add item filter --- .../src/main/kotlin/de/unixwork/rssreader/App.kt | 13 +++++++++++++ .../main/kotlin/de/unixwork/rssreader/FeedList.kt | 11 ++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) 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 e7f4b09..dc20113 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.menu import de.unixwork.ui.kotlin.menuItem import de.unixwork.ui.kotlin.radioItem import de.unixwork.ui.kotlin.separator @@ -121,6 +122,18 @@ object App : Application { markAllAsRead() } separator() + menu("Filter") { + radioItem(label = "All items", varname = "filter") { event -> + window?.feedList?.reloadCurrentFeed() + } + radioItem(label = "Unread items", varname = "filter") { event -> + window?.feedList?.reloadCurrentFeed() + } + radioItem(label = "Bookmarked items", varname = "filter") { event -> + window?.feedList?.reloadCurrentFeed() + } + } + separator() 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") 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 b2de34f..da82339 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedList.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedList.kt @@ -25,6 +25,8 @@ class FeedList(window: MainWindow) : Document() { // 2: val browserSetting = integer("browserSetting") + val filter = integer("filter") + // Feed that is currently shown var currentFeed: FeedCollection? = null var currentItem: Item? = null @@ -42,6 +44,8 @@ class FeedList(window: MainWindow) : Document() { Database.updateFeedReadState(feed, true) } } + + var filterMode = filter.intValue() showFeed = feed if(!feed.itemsLoaded) { @@ -71,7 +75,12 @@ class FeedList(window: MainWindow) : Document() { // Update item list items.clear() feed.items.forEach { item -> - items.add(item) + when (filterMode) { + 1 -> if(!item.isRead) items.add(item) + 2 -> if(item.isBookmark) items.add(item) + else -> items.add(item) + } + } items.update() } -- 2.47.3