File indexing completed on 2025-02-02 05:08:35
0001 // SPDX-FileCopyrightText: 2023 Carl Schwan <carl@carlschwan.eu> 0002 // SPDX-License-Identifier: LGPL-2.0-or-later 0003 0004 #pragma once 0005 0006 #include "serverconfiguration.h" 0007 #include <QAbstractListModel> 0008 #include <optional> 0009 0010 struct Configuration { 0011 explicit Configuration(const Server &incomming, std::optional<Server> outgoing, const QString &shortDisplayName); 0012 QString shortDisplayName; 0013 Server incoming; 0014 std::optional<Server> outgoing; 0015 }; 0016 0017 /// Model exposing the various configuration found by fetching the ispdb 0018 /// in an user friendly way. 0019 class ConfigurationModel : public QAbstractListModel 0020 { 0021 public: 0022 explicit ConfigurationModel(QObject *parent = nullptr); 0023 0024 enum ExtraRoles { 0025 NameRole = Qt::UserRole + 1, 0026 DescriptionRole, 0027 IncomingTagsRole, 0028 IncomingHostRole, 0029 OutgoingTagsRole, 0030 OutgoingHostRole, 0031 }; 0032 0033 int rowCount(const QModelIndex &parent = {}) const override; 0034 QVariant data(const QModelIndex &index, int role) const override; 0035 QHash<int, QByteArray> roleNames() const override; 0036 0037 void setEmailProvider(const EmailProvider &emailProvider); 0038 void clear(); 0039 0040 private: 0041 std::vector<Configuration> m_configurations; 0042 };