aboutsummaryrefslogtreecommitdiff
path: root/accounts_model.h
diff options
context:
space:
mode:
authorlink2xt <link2xt@testrun.org>2020-09-12 14:10:13 +0300
committerlink2xt <link2xt@testrun.org>2020-10-03 00:20:03 +0300
commitb8762ddb38dd975b0acb217b793594dfed83a824 (patch)
tree23ccefbba703fed6c07acce82ff72e32ba77c9ba /accounts_model.h
downloadkdeltachat-b8762ddb38dd975b0acb217b793594dfed83a824.tar.gz
kdeltachat-b8762ddb38dd975b0acb217b793594dfed83a824.zip
Initial commit
Diffstat (limited to 'accounts_model.h')
-rw-r--r--accounts_model.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/accounts_model.h b/accounts_model.h
new file mode 100644
index 0000000..5541f7e
--- /dev/null
+++ b/accounts_model.h
@@ -0,0 +1,51 @@
+#pragma once
+
+#include <QAbstractListModel>
+#include <deltachat.h>
+
+#include "eventemitter.h"
+#include "context.h"
+
+class AccountsModel : public QAbstractListModel {
+ Q_OBJECT
+ Q_PROPERTY(size_t accountCount READ accountCount NOTIFY accountCountChanged)
+ Q_PROPERTY(uint32_t selectedAccount READ selectedAccount WRITE setSelectedAccount NOTIFY selectedAccountChanged)
+
+public:
+ enum AccountRoles {
+ NumberRole = Qt::UserRole + 1
+ };
+ explicit AccountsModel(QObject *parent = nullptr);
+ ~AccountsModel();
+
+ int rowCount(const QModelIndex & parent = QModelIndex()) const;
+
+ QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const;
+
+ size_t accountCount() const;
+
+ uint32_t selectedAccount();
+ void setSelectedAccount(uint32_t selectedAccount);
+
+ Q_INVOKABLE uint32_t addAccount();
+ Q_INVOKABLE void removeAccount(uint32_t accountId);
+ Q_INVOKABLE uint32_t importAccount(const QString &filename);
+ Q_INVOKABLE Context *getSelectedAccount();
+
+ Q_INVOKABLE void startIo();
+ Q_INVOKABLE void stopIo();
+ Q_INVOKABLE void maybeNetwork();
+
+ Q_INVOKABLE DcAccountsEventEmitter *getEventEmitter();
+
+signals:
+ void accountCountChanged();
+ void selectedAccountChanged();
+
+protected:
+ QHash<int, QByteArray> roleNames() const;
+
+private:
+ dc_accounts_t *m_accounts{nullptr};
+ uint32_t m_selectedAccount{0};
+};