]> uap-core.de Git - rssreader.git/commitdiff
add feedcollection setting for adding additional parameters to item urls
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Sat, 6 Dec 2025 14:44:24 +0000 (15:44 +0100)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Sat, 6 Dec 2025 14:44:24 +0000 (15:44 +0100)
rss-application/src/main/kotlin/de/unixwork/rssreader/ConfigWindow.kt
rss-application/src/main/kotlin/de/unixwork/rssreader/Database.kt
rss-application/src/main/kotlin/de/unixwork/rssreader/FeedCollection.kt
rss-application/src/main/kotlin/de/unixwork/rssreader/FeedList.kt

index 3a0332d9cbf91495d92ad112a4a3c973b5783bc9..893e5d742529e9e207d662d92b9d1ec8ad4d4afd 100644 (file)
@@ -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)
                 }
index 30debd9ee3bcccd81feef45a003fe95013467cf0..f1fcb7e1680395298016ed3eb730f0dd375a75e7 100644 (file)
@@ -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)
                     }
 
index 7108d9f5670ab39ec60a710c0ab1e86ca37208cd..5a0bba3cedb47daeb9c3e3075fd638759abf9c4c 100644 (file)
@@ -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
index 145bb10c20de9eeca4c22419329db2c7d2030bf6..1b776ce660246f349813477747ed1da672d18cb6 100644 (file)
@@ -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)