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 };