diff --git a/qml/js/WallaBase.js b/qml/js/WallaBase.js index eee2d8f..554a053 100644 --- a/qml/js/WallaBase.js +++ b/qml/js/WallaBase.js @@ -166,6 +166,20 @@ function updateServer( id, props ) ); } +function deleteServer( id ) +{ + var db = getDatabase(); + + db.transaction( + function( tx ) { + console.debug( "Deleting server " + id ); + // TODO: try/catch here when error management is in place in the UI + tx.executeSql( "DELETE FROM articles WHERE server=?", [ id ] ); + tx.executeSql( "DELETE FROM servers WHERE id=?", [ id ] ); + } + ); +} + function setServerLastSync( id, last ) { var db = getDatabase(); diff --git a/qml/pages/ServersPage.qml b/qml/pages/ServersPage.qml index ed61e0d..888ae8e 100644 --- a/qml/pages/ServersPage.qml +++ b/qml/pages/ServersPage.qml @@ -98,6 +98,38 @@ Page { id: listEntry width: parent.width + RemorseItem { + id: serverRemorse + } + + function showRemorse( idx ) { + serverRemorse.execute( + listEntry, + qsTr( "Deleting" ), + function() { + var server = serversModel.get( idx ) + WallaBase.deleteServer( server.id ) + serversPage.updateServerList() + } + ) + } + + menu: ContextMenu { + id: serverMenu + width: listEntry.width + + IconButton { + id: deleteButton + icon.source: "image://theme/icon-m-delete" + x: Theme.horizontalPageMargin + + onClicked: { + serverMenu.hide() + listEntry.showRemorse( index ) + } + } + } + Item { width: parent.width - 2 * Theme.horizontalPageMargin x: Theme.horizontalPageMargin @@ -105,7 +137,7 @@ Page { Rectangle { id: serverCountLabel - height: listEntry.height - 1.5 * Theme.horizontalPageMargin + height: Theme.fontSizeSmall * 1.5 width: height radius: 2 color: listEntry.highlighted ? Theme.primaryColor : Theme.highlightBackgroundColor diff --git a/translations/harbour-wallaread.ts b/translations/harbour-wallaread.ts index 28bea1c..92fe69f 100644 --- a/translations/harbour-wallaread.ts +++ b/translations/harbour-wallaread.ts @@ -123,6 +123,10 @@ Resetting database + + Deleting + + SettingsPage