From f5b1f100bc9cf9ca473f32d80700f4af75b29666 Mon Sep 17 00:00:00 2001 From: Olaf Wintermann Date: Mon, 18 Aug 2025 21:04:43 +0200 Subject: [PATCH] update sourcelist when adding new feeds --- .../kotlin/de/unixwork/rssreader/Database.kt | 16 +++++++++++----- .../de/unixwork/rssreader/FeedCollection.kt | 5 +++-- .../kotlin/de/unixwork/rssreader/FeedGroup.kt | 7 ++++--- .../de/unixwork/rssreader/FeedSourceList.kt | 2 +- .../kotlin/de/unixwork/rssreader/MainWindow.kt | 5 +++-- 5 files changed, 22 insertions(+), 13 deletions(-) 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 0899d03..8f10f42 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/Database.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/Database.kt @@ -1,5 +1,6 @@ package de.unixwork.rssreader +import de.unixwork.ui.Context import java.sql.Connection import java.sql.DriverManager import java.sql.Statement @@ -79,7 +80,7 @@ object Database { } } - public fun getFeedTree() : List { + public fun getFeedTree(context: Context) : List { val groups = mutableListOf() connection.createStatement().use { stmt -> @@ -102,7 +103,7 @@ object Database { val feedName = rs.getString("feed_name") if(currentGroup == null || currentGroup.id != groupId) { - currentGroup = FeedGroup(groupId, groupName) + currentGroup = FeedGroup(context, groupId, groupName) groups.add(currentGroup) } @@ -117,7 +118,7 @@ object Database { return groups } - public fun newFeedGroup(name: String) : FeedGroup { + public fun newFeedGroup(context: Context, name: String) : FeedGroup { var groupId = 0 connection.prepareStatement(""" insert into groups (pos, name) select coalesce(max(pos), 0)+1, ? from groups @@ -132,7 +133,7 @@ object Database { } } } - return FeedGroup(groupId, name) + return FeedGroup(context, groupId, name) } public fun newFeeds( @@ -141,7 +142,7 @@ object Database { uris: Collection, user: String? = null, password: String? = null, - cert: String? = null) + cert: String? = null) : FeedCollection { var feedcollectionId = -1 connection.prepareStatement(""" @@ -159,6 +160,8 @@ object Database { } } + var feedCol = FeedCollection(feedcollectionId, name) + uris.forEach { uri -> connection.prepareStatement(""" insert into feeds (feedcollection_id, url, auth_user, auth_password, certpath) values @@ -173,5 +176,8 @@ object Database { stmt.execute() } } + parent.feeds.add(feedCol) + parent.feeds.update() + return feedCol } } 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 1376261..81ea4ad 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedCollection.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedCollection.kt @@ -2,8 +2,9 @@ package de.unixwork.rssreader import de.unixwork.ui.Document -class FeedCollection(id: Int, name: String) : Document() { +class FeedCollection(id: Int, name: String) { val id = id val name = name - val items = list("items") + val items = mutableListOf() + var itemsLoaded = false } \ No newline at end of file diff --git a/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedGroup.kt b/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedGroup.kt index 7ed6062..f9294fb 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedGroup.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedGroup.kt @@ -1,8 +1,9 @@ package de.unixwork.rssreader -class FeedGroup(id: Int, name: String) { +import de.unixwork.ui.Context + +class FeedGroup(context: Context, id: Int, name: String) { val id = id val name: String = name - - val feeds = mutableListOf() + val feeds = context.list() } \ No newline at end of file diff --git a/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedSourceList.kt b/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedSourceList.kt index 43fc901..1d21ba4 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedSourceList.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedSourceList.kt @@ -10,7 +10,7 @@ class FeedSourceList : Document() { init { val db = Database - groups = db.getFeedTree() + groups = db.getFeedTree(this) groups.forEach { val sublist = SubList() sublist.header = it.name 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 a827416..9686222 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt @@ -73,7 +73,8 @@ class MainWindow { val uris = urlStr.split("\n").map { it.trim() }.filter { it.isNotBlank() } println("groupSel: ${groups?.selectedIndex}, feedName: $feedName, urlStr: $urlStr") parent?.let { - Database.newFeeds(it, feedName, uris, user.toString(), password.toString(), cert.toString()) + val feedCol = Database.newFeeds(it, feedName, uris, user.toString(), password.toString(), cert.toString()) + parent.feeds.add(feedCol) } } ev.`object`.close() @@ -144,7 +145,7 @@ class MainWindow { if(ev.intValue == 1) { val nameStr = name.toString() if(!nameStr.isBlank()) { - Database.newFeedGroup(nameStr) + Database.newFeedGroup(sourceList,nameStr) } else { println("name is null or blank") return@dialogWindow -- 2.47.3