--- /dev/null
+package de.unixwork.rssreader
+
+import de.unixwork.ui.Document
+
+class FeedList : Document() {
+ val items = list<Item>("items")
+
+ fun loadFeed(feed: FeedCollection) {
+ items.clear()
+ if(feed.itemsLoaded) {
+ feed.items.forEach { item ->
+ items.add(item)
+ }
+ } else {
+ // TODO: load items from DB
+ }
+ }
+}
\ No newline at end of file
class MainWindow {
val window : Toplevel
val sourceList = FeedSourceList()
+ val feedList = FeedList()
init {
window = sidebarWindow("RSS Reader") {
sidebar {
vbox(fill = true) {
- sourcelist(fill = true, varname = "feeds") { elm: FeedCollection ->
+ sourcelist(
+ fill = true,
+ varname = "feeds",
+ onActivate = { event ->
+ val evt = event.subListEventData
+ try {
+ val feed = sourceList.groups[evt.sublistIndex].feeds[evt.rowIndex]
+ feed?.let {
+ println("feed: ${feed.name}")
+ feedList.loadFeed(feed)
+ }
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+ }
+ )
+ { elm: FeedCollection ->
val item = SubListItem()
item.label = elm.name
item
hsplitpane(fill = true, initialPosition = 300) {
vbox(fill = true) {
- listview<String>(varname = "items", fill = true) { elm, col ->
- "todo"
+ listview<Item>(varname = "items", fill = true) { elm, col ->
+ elm.title
}
}
}
window.ui.attach(sourceList)
+ window.ui.attach(feedList)
}
private fun createFeedDialog() {
val uris = urlStr.split("\n").map { it.trim() }.filter { it.isNotBlank() }
println("groupSel: ${groups?.selectedIndex}, feedName: $feedName, urlStr: $urlStr")
parent?.let {
- val feedCol = Database.newFeeds(it, feedName, uris, user.toString(), password.toString(), cert.toString())
- parent.feeds.update()
+ try {
+ val feedCol = Database.newFeeds(it, feedName, uris, user.toString(), password.toString(), cert.toString())
+ parent.feeds.update()
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
}
}
ev.`object`.close()
if(ev.intValue == 1) {
val nameStr = name.toString()
if(!nameStr.isBlank()) {
- Database.newFeedGroup(sourceList,nameStr)
+ try {
+ Database.newFeedGroup(sourceList,nameStr)
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
} else {
println("name is null or blank")
return@dialogWindow