From 3b662c0c4ff0eb22cb183e6ca56a588db769ee9c Mon Sep 17 00:00:00 2001 From: Olaf Wintermann Date: Thu, 18 Sep 2025 20:47:00 +0200 Subject: [PATCH] add UI for max item age in the new feed dialog --- .../main/kotlin/de/unixwork/rssreader/ConfigWindow.kt | 1 + .../src/main/kotlin/de/unixwork/rssreader/Database.kt | 6 ++++-- .../main/kotlin/de/unixwork/rssreader/MainWindow.kt | 10 ++++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/rss-application/src/main/kotlin/de/unixwork/rssreader/ConfigWindow.kt b/rss-application/src/main/kotlin/de/unixwork/rssreader/ConfigWindow.kt index 8cd893b..3a0332d 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/ConfigWindow.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/ConfigWindow.kt @@ -19,6 +19,7 @@ class ConfigWindow { init { window = simpleWindow("") + window.ui.setSize(600, 500) window.ui.addCloseHandler { App.configWindow = null } diff --git a/rss-application/src/main/kotlin/de/unixwork/rssreader/Database.kt b/rss-application/src/main/kotlin/de/unixwork/rssreader/Database.kt index 04b27e0..cba05ea 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/Database.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/Database.kt @@ -188,18 +188,20 @@ object Database { password: String? = null, cert: String? = null, updateInterval: Long = 0, + maxItemAge: Int = 0, itemStateMode: Int = 0) : FeedCollection { var feedcollectionId = -1 var feedCol: FeedCollection dataSource.connection.use { connection -> connection.prepareStatement(""" - insert into feedcollections (group_id, pos, name, update_interval, item_state_mode) select ?, coalesce(max(pos), 0)+1, ?, ?, ? from groups + insert into feedcollections (group_id, pos, name, update_interval, max_item_age, item_state_mode) select ?, coalesce(max(pos), 0)+1, ?, ?, ?, ? from groups """.trimIndent(), Statement.RETURN_GENERATED_KEYS).use { stmt -> stmt.setInt(1, parent.id) stmt.setString(2, name) stmt.setLong(3, updateInterval) - stmt.setInt(4, itemStateMode) + stmt.setInt(4, maxItemAge) + stmt.setInt(5, itemStateMode) stmt.execute() stmt.generatedKeys.use { rs -> if(rs.next()) { diff --git a/rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt b/rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt index 870ec5f..e1c7d34 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt @@ -4,6 +4,7 @@ import de.unixwork.ui.ColumnType import de.unixwork.ui.SubListItem import de.unixwork.ui.TabViewType import de.unixwork.ui.TableModel +import de.unixwork.ui.UiInteger import de.unixwork.ui.UiList import de.unixwork.ui.UiString import de.unixwork.ui.UiText @@ -193,6 +194,7 @@ class MainWindow() { var password: UiString? = null var cert: UiString? = null var readstatus: UiList? = null + var maxItemAge: UiInteger? = null val w = dialogWindow( parent = window.ui, @@ -211,6 +213,7 @@ class MainWindow() { val urlStr = urls.toString() val uris = urlStr.split("\n").map { it.trim() }.filter { it.isNotBlank() } var itemStateMode = readstatus?.selectedIndex ?: 0 + val maxItemAge = maxItemAge?.intValue() ?: -1 if(itemStateMode < 0 || itemStateMode > 2) { itemStateMode = 0 } @@ -225,6 +228,7 @@ class MainWindow() { password.toString(), cert.toString(), 0, // TODO + maxItemAge, itemStateMode ) @@ -248,6 +252,8 @@ class MainWindow() { user = ui.string() password = ui.string() cert = ui.string() + maxItemAge = ui.integer() + maxItemAge?.setIntValue(-1) groups.addAll(sourceList.groups) println("prev group: $newFeedPrevGroup") @@ -285,6 +291,10 @@ class MainWindow() { elm } } + row { + rlabel("Max Item Age (Days)") + spinbox(intValue = maxItemAge, min = -1.0, max = 100000.0, step = 1.0, colspan = 2) + } row { rlabel("User") -- 2.47.3