From cf6f7bf6795c5c15ce4db57406eea85d3317e102 Mon Sep 17 00:00:00 2001 From: Olaf Wintermann Date: Thu, 4 Jun 2026 17:51:29 +0200 Subject: [PATCH] add status bar for showing the last feed update (and potentially other stuff) --- .../main/kotlin/de/unixwork/rssreader/Database.kt | 3 +++ .../main/kotlin/de/unixwork/rssreader/FeedList.kt | 15 +++++++++++++++ .../kotlin/de/unixwork/rssreader/MainWindow.kt | 8 ++++++++ 3 files changed, 26 insertions(+) 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 ade3705..9aaed18 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/Database.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/Database.kt @@ -118,6 +118,7 @@ object Database { f.item_state_mode, f.internal_browser, f.add_url_param, + f.last_update, c.unread_count from groups g left join feeds f on g.group_id = f.group_id @@ -140,6 +141,7 @@ object Database { val internalBrowser = rs.getBoolean("internal_browser") val addUrlParam = rs.getString("add_url_param") val itemStateMode = rs.getInt("item_state_mode") + val lastUpdate = rs.getTimestamp("last_update")?.toInstant() val unreadCount = rs.getInt("unread_count") if(currentGroup == null || currentGroup.id != groupId) { @@ -157,6 +159,7 @@ object Database { feed.internalBrowser = internalBrowser feed.unreadItemsCount = unreadCount feed.addUrlParam = addUrlParam + feed.lastUpdate = lastUpdate currentGroup.feeds.add(feed) } 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 70c5940..aa4e761 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedList.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedList.kt @@ -7,6 +7,10 @@ import de.unixwork.ui.kotlin.ToolkitDispatcher import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch +import java.time.ZoneId +import java.time.format.DateTimeFormatter + + class FeedList(window: MainWindow) : Document() { val window = window @@ -21,6 +25,9 @@ class FeedList(window: MainWindow) : Document() { val starred = integer("starred") val browser = integer("browser") + val feed_info = string("feed_info") + val item_info = string("item_info") + // 1: use feed settings // 2: load item description // 3: load item link in internal browser @@ -78,6 +85,14 @@ class FeedList(window: MainWindow) : Document() { currentFeed = feed + feed.lastUpdate?.let { + val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") + .withZone(ZoneId.systemDefault()) + feed_info.setString("Last update: ${formatter.format(it)}"); + } ?: { + feed_info.setString(""); + } + // Update item list items.clear() feed.items.forEach { item -> 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 60c4f03..7badc9e 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt @@ -306,6 +306,10 @@ class MainWindow() { } result } + + hbox(margin = 2) { + label(varname = "feed_info") + } } } @@ -340,6 +344,10 @@ class MainWindow() { } } g.setVisibilityStates(ITEM_SELETED) + + hbox(margin = 2) { + label(varname = "item_info") + } } } -- 2.47.3