createStmt.addBatch("""
CREATE TABLE items (
item_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
- feed_id INT NOT NULL REFERENCES feeds(feed_id),
+ feed_id INT NOT NULL REFERENCES feeds(feed_id) ON DELETE CASCADE,
title VARCHAR NOT NULL,
link VARCHAR NOT NULL,
category VARCHAR,
return feeds
}
+ public fun deleteFeedCollection(feedCollection: FeedCollection) {
+ dataSource.connection.use { conn ->
+ conn.prepareStatement("""
+ delete from feedcollections where feedcollection_id = ?
+ """.trimIndent()).use { stmt ->
+ stmt.setInt(1, feedCollection.id)
+ stmt.execute()
+ }
+ }
+ }
+
public fun getPendingFeeds(defaultInterval: Int) : MutableList<Feed> {
val feeds = mutableListOf<Feed>()
import de.unixwork.ui.UiString
import de.unixwork.ui.UiText
import de.unixwork.ui.kotlin.Toplevel
+import de.unixwork.ui.kotlin.dialog
import de.unixwork.ui.kotlin.dialogWindow
import de.unixwork.ui.kotlin.menuBuilder
import de.unixwork.ui.kotlin.menuItem
}
menuItem("Delete") { event ->
val evt = event.subListEventData
+ if(evt.sublistIndex >= 0 && evt.rowIndex >= 0) {
+ val feedCollection = sourceList.groups[evt.sublistIndex].feeds[evt.rowIndex]
+ dialog(
+ parent = window.ui,
+ title = "Delete Feed",
+ content = "Delete ${feedCollection.name}?",
+ button1Label = "Cancel",
+ button2Label = "Delete")
+ { event ->
+ if(event.intValue == 2) {
+ GlobalScope.launch(Dispatchers.IO) {
+ Database.deleteFeedCollection(feedCollection)
+ }
+ sourceList.groups[evt.sublistIndex].feeds.remove(feedCollection)
+ sourceList.groups[evt.sublistIndex].feeds.update()
+ }
+ }
+ } else {
+ // TODO
+ }
}
separator()
menuItem("Settings") { event ->