}
}
}
+
+ public fun updateReadState(item: Item, read: Boolean) {
+ dataSource.connection.use { conn ->
+ conn.prepareStatement("""
+ update items set is_read = ? where item_id = ?
+ """.trimIndent()).use { stmt ->
+ stmt.setBoolean(1, read)
+ stmt.setInt(2, item.id)
+ stmt.execute()
+ }
+ }
+ }
}
}
+ currentFeed = feed
+
// Update item list
items.clear()
feed.items.forEach { item ->
items.add(item)
}
items.update()
- currentFeed = feed
}
fun reloadCurrentFeed() {
webview.loadContent(item.link, content, mimeType, "utf-8")
tabview.setIntValue(1)
+
+ // Update read status
+ if(!item.isRead) {
+ item.isRead = true
+ GlobalScope.launch(Dispatchers.IO) {
+ Database.updateReadState(item, true)
+ }
+ items.update(items.selectedIndex)
+ }
}
}
\ No newline at end of file
varname = "items",
fill = true,
onSelection = { event ->
+ if(event.set != 0) {
+ // Don't handle set events: in some toolkit implementations, updating the
+ // list triggers a onSelection event
+ return@table
+ }
feedList.items.selected?.let {
feedList.selectItem(it)
}
},
getstyle = { elm, col, style ->
- false
+ var ret = false
+ // only highlight unread items if the feed(collection) is configured
+ // to have individual read states
+ if(feedList.currentFeed?.autoMarkRead == false) {
+ println("yes")
+ // col == -1: style for the entire row
+ // highlight unread items
+ if(col == -1 && !elm.isRead) {
+ style.isBold = true
+ ret = true
+ }
+ }
+ ret
}
)
{ elm, col ->