From b8762ddb38dd975b0acb217b793594dfed83a824 Mon Sep 17 00:00:00 2001 From: link2xt Date: Sat, 12 Sep 2020 14:10:13 +0300 Subject: Initial commit --- accounts_model.h | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 accounts_model.h (limited to 'accounts_model.h') 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 +#include + +#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 roleNames() const; + +private: + dc_accounts_t *m_accounts{nullptr}; + uint32_t m_selectedAccount{0}; +}; -- cgit v1.2.3-54-g00ecf