From 020fd545f03c78334a66673acbf2a44fb2ecd654 Mon Sep 17 00:00:00 2001 From: Olaf Wintermann Date: Sat, 6 Dec 2025 15:44:24 +0100 Subject: [PATCH] add feedcollection setting for adding additional parameters to item urls --- .../de/unixwork/rssreader/ConfigWindow.kt | 64 ++++++++++++------- .../kotlin/de/unixwork/rssreader/Database.kt | 6 +- .../de/unixwork/rssreader/FeedCollection.kt | 2 + .../kotlin/de/unixwork/rssreader/FeedList.kt | 13 +++- 4 files changed, 59 insertions(+), 26 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 3a0332d..893e5d7 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/ConfigWindow.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/ConfigWindow.kt @@ -17,6 +17,10 @@ class ConfigWindow { val message: UiString + companion object { + val ENABLE_AUTO_DELETE = 1000 + } + init { window = simpleWindow("") window.ui.setSize(600, 500) @@ -34,38 +38,50 @@ class ConfigWindow { message = window.ui.string() window { - grid(margin = 12, rowspacing = 8, columnspacing = 8, defhfill = true, defvfill = true, fill = true) { - row { - rlabel("Date Format") - textfield(value = dateFormat, hexpand = true) - } + tabview(margin = 12, fill = true) { + tab("General") { + grid(margin = 12, rowspacing = 8, columnspacing = 8, defhfill = true, defvfill = true, fill = true) { + row { + rlabel("Date Format") + textfield(value = dateFormat, hexpand = true) + } - row { - rlabel("Date Format Today") - textfield(value = dateFormatToday, hexpand = true) + row { + rlabel("Date Format Today") + textfield(value = dateFormatToday, hexpand = true) + } + } } + tab("Update") { + grid(margin = 12, rowspacing = 8, columnspacing = 8, defhfill = true, defvfill = true, fill = true) { + row { + rlabel("Default Update Interval (Seconds)") + spinbox(intValue = defaultUpdateInterval, min = 0.0, max = 1000000.0) + } - row { - rlabel("Default Update Interval (Seconds)") - spinbox(intValue = defaultUpdateInterval, min = 0.0, max = 1000000.0) - } + row { + rlabel("Minimum Update Wait Time (Seconds)") + spinbox(intValue = minUpdateWaitTime, min = 0.0, max = 1000000.0) + } - row { - rlabel("Minimum Update Wait Time (Seconds)") - spinbox(intValue = minUpdateWaitTime, min = 0.0, max = 1000000.0) - } + row { + rlabel("Auto Update Start Delay (Seconds)") + spinbox(intValue = autoUpdateStartDelay, min = 0.0, max = 1000000.0) + } - row { - rlabel("Auto Update Start Delay (Seconds)") - spinbox(intValue = autoUpdateStartDelay, min = 0.0, max = 1000000.0) - } + row { + rlabel("Auto Delete Items") + switch(overrideDefaults = true, vfill = true) + } - row { - rlabel("Max Item Age (Days)") - spinbox(intValue = maxItemAge, min = 0.0, max = 200000.0) + row { + rlabel("Max Item Age (Days)") + spinbox(intValue = maxItemAge, min = 0.0, max = 200000.0) + } + } } } - grid(margin = 12, rowspacing = 12) { + grid(marginLeft = 12, marginRight = 12, marginBottom = 12, rowspacing = 12) { row { label(value = message, hexpand = true, hfill = true) } 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 30debd9..f1fcb7e 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/Database.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/Database.kt @@ -62,7 +62,8 @@ object Database { name VARCHAR, update_interval INT, max_item_age INT DEFAULT 0, - item_state_mode INT DEFAULT 0 + item_state_mode INT DEFAULT 0, + add_url_param VARCHAR ) """.trimIndent()) @@ -118,6 +119,7 @@ object Database { f.update_interval, f.item_state_mode, f.internal_browser, + f.add_url_param, c.unread_count from groups g left join feedcollections f on g.group_id = f.group_id @@ -134,6 +136,7 @@ object Database { val feedName = rs.getString("feed_name") val updateInterval = rs.getLong("update_interval") val internalBrowser = rs.getBoolean("internal_browser") + val addUrlParam = rs.getString("add_url_param") val itemStateMode = rs.getInt("item_state_mode") val unreadCount = rs.getInt("unread_count") @@ -148,6 +151,7 @@ object Database { feed.itemStateMode = itemStateMode feed.internalBrowser = internalBrowser feed.unreadItemsCount = unreadCount + feed.addUrlParam = addUrlParam currentGroup.feeds.add(feed) } diff --git a/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedCollection.kt b/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedCollection.kt index 7108d9f..5a0bba3 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedCollection.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedCollection.kt @@ -14,6 +14,8 @@ class FeedCollection(id: Int, name: String) { var itemsLoaded = false var itemsLoading = false + var addUrlParam: String? = null + // Is this FeedCollection actually a FeedGroup? // In that case, id is the FeedGroup id var isGroup = false 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 145bb10..1b776ce 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedList.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedList.kt @@ -132,7 +132,18 @@ class FeedList(window: MainWindow) : Document() { } else { window.window.ui.unsetState(MainWindow.ITEM_HAS_AUTHOR) } - link.set(item.link, item.link) + if(!item.link.isNullOrEmpty() && !currentFeed?.addUrlParam.isNullOrEmpty()) { + var newurl = item.link + if(newurl!!.contains("?")) { + newurl += "&${currentFeed?.addUrlParam}" + } else { + newurl += "?${currentFeed?.addUrlParam}" + } + link.set(newurl, newurl) + } else { + link.set(item.link, item.link) + } + category.setString(item.category ?: "") if(!item.category.isNullOrEmpty()) { category.setString(item.category) -- 2.47.3