// SPDX-FileCopyrightText: 2022 James Graham // SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL #pragma once #include #include #include #include class ServerListModel : public QAbstractListModel { Q_OBJECT public: struct Server { QString url; bool isHomeServer; bool isAddServerDelegate; bool isDeletable; }; enum EventRoles { UrlRole = Qt::UserRole + 1, IsHomeServerRole, IsAddServerDelegateRole, IsDeletableRole, }; ServerListModel(QObject *parent = nullptr); [[nodiscard]] QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; [[nodiscard]] int rowCount(const QModelIndex &parent = QModelIndex()) const override; [[nodiscard]] QHash roleNames() const override; Q_INVOKABLE void checkServer(const QString &url); Q_INVOKABLE void addServer(const QString &url); Q_INVOKABLE void removeServerAtIndex(int index); Q_SIGNALS: void serverCheckComplete(QString url, bool valid); private: QList m_servers; QPointer m_checkServerJob = nullptr; };