diff options
author | Alexey Rusakov <Kitsune-Ral@users.sf.net> | 2021-08-10 08:18:17 +0200 |
---|---|---|
committer | Alexey Rusakov <Kitsune-Ral@users.sf.net> | 2021-10-10 20:46:01 +0200 |
commit | 01103222dc59526b37d594b93b0b1cd7473e3f6f (patch) | |
tree | 8e3b679377571fd9b9014afbe62eeba6249d42e2 /lib/accountregistry.h | |
parent | 4f08c88d234119c2a76874ebd2b1433b81992427 (diff) | |
parent | 7b516cdf0b987e542b1e4cd4556ecb2bfbde3ff9 (diff) | |
download | libquotient-01103222dc59526b37d594b93b0b1cd7473e3f6f.tar.gz libquotient-01103222dc59526b37d594b93b0b1cd7473e3f6f.zip |
Merge branch 'master' into kitsune-fix-read-receipts-and-markers
Diffstat (limited to 'lib/accountregistry.h')
-rw-r--r-- | lib/accountregistry.h | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/accountregistry.h b/lib/accountregistry.h new file mode 100644 index 00000000..5efda459 --- /dev/null +++ b/lib/accountregistry.h @@ -0,0 +1,45 @@ +// SPDX-FileCopyrightText: 2020 Kitsune Ral <Kitsune-Ral@users.sf.net> +// SPDX-FileCopyrightText: Tobias Fella <fella@posteo.de> +// SPDX-License-Identifier: LGPL-2.1-or-later + +#pragma once + +#include <QtCore/QObject> +#include <QtCore/QList> +#include <QtCore/QAbstractListModel> + +namespace Quotient { +class Connection; + +class AccountRegistry : public QAbstractListModel { + Q_OBJECT +public: + enum EventRoles { + ConnectionRole = Qt::UserRole + 1, + }; + + static AccountRegistry &instance() { + static AccountRegistry _instance; + return _instance; + } + + const QVector<Connection*> accounts() const; + void add(Connection* a); + void drop(Connection* a); + bool isLoggedIn(const QString& userId) const; + bool isEmpty() const; + int count() const; + bool contains(Connection*) const; + Connection* get(const QString& userId); + + [[nodiscard]] QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; + [[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override; + + [[nodiscard]] QHash<int, QByteArray> roleNames() const override; + +private: + AccountRegistry(); + + QVector<Connection *> m_accounts; +}; +} |