From fe89c7a4ff760564f3cdbcd8e27c04eadd9f79d8 Mon Sep 17 00:00:00 2001 From: link2xt Date: Thu, 5 Nov 2020 22:03:37 +0300 Subject: Move accounts model from C++ to QML C++ models are not well documented and it is easier to manage the model in QML. Now all QObjects are thin wrappers around Delta Chat core structures. --- qml/AccountsPage.qml | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) (limited to 'qml/AccountsPage.qml') diff --git a/qml/AccountsPage.qml b/qml/AccountsPage.qml index c9368d2..3278031 100644 --- a/qml/AccountsPage.qml +++ b/qml/AccountsPage.qml @@ -12,7 +12,10 @@ Kirigami.Page { mainAction: Kirigami.Action { iconName: "list-add-user" text: "Add account" - onTriggered: accountsModel.addAccount() + onTriggered: { + let accountId = dcAccounts.addAccount() + accountsModel.insert(accountsModel.count, { number: accountId }) + } } contextualActions: [ @@ -31,7 +34,7 @@ Kirigami.Page { if (url.startsWith("file://")) { var filename = url.substring(7) console.log("Importing " + filename) - var accountId = accountsModel.importAccount (filename) + var accountId = dcAccounts.importAccount(filename) if (accountId == 0) { console.log("Import failed") } else { @@ -41,6 +44,23 @@ Kirigami.Page { } } + ListModel { + id: accountsModel + } + + function updateAccounts() { + let accountsList = dcAccounts.getAll() + + accountsModel.clear() + for (let i = 0; i < accountsList.length; i++) { + accountsModel.insert(i, { number: accountsList[i] }) + } + } + + Component.onCompleted: { + updateAccounts() + } + ListView { id: accountsListView anchors.fill: parent @@ -63,8 +83,8 @@ Kirigami.Page { while (pageStack.depth > 1) { pageStack.pop() } - accountsModel.selectedAccount = model.number - let context = accountsModel.getSelectedAccount() + dcAccounts.selectAccount(model.number) + let context = dcAccounts.getSelectedAccount() if (context.isConfigured()) { pageStack.push("qrc:/qml/ChatlistPage.qml", {context: context}) } else { @@ -76,7 +96,10 @@ Kirigami.Page { Button { width: 100 text: "Delete" - onClicked: accountsModel.removeAccount(model.number) + onClicked: { + dcAccounts.removeAccount(model.number) + accountsModel.remove(model.index) + } } } } -- cgit v1.2.3-54-g00ecf