]> uap-core.de Git - rssreader.git/commitdiff
add item filter
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Tue, 23 Dec 2025 16:21:16 +0000 (17:21 +0100)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Tue, 23 Dec 2025 16:21:16 +0000 (17:21 +0100)
rss-application/src/main/kotlin/de/unixwork/rssreader/App.kt
rss-application/src/main/kotlin/de/unixwork/rssreader/FeedList.kt

index e7f4b098894e2724da69995c805b9dd1efecfab0..dc201137ac5310cb7bb2bf9e498ffa2d5e68d63b 100644 (file)
@@ -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")
index b2de34f0bf7629aed1d15d645b6a57f96bb05006..da82339bd986c9072eb1bbb63092ff12d9c946dd 100644 (file)
@@ -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()
     }