#ifndef CONNECTIONLISTMODEL_H #define CONNECTIONLISTMODEL_H #include #include #include #include #include "connectionconfig.h" #include "expected.h" /** \brief Model class for the list of connections. * * This class also allows for the editing of the list. */ class ConnectionListModel : public QAbstractListModel { Q_OBJECT public: ConnectionListModel(QObject *parent); virtual int rowCount(const QModelIndex &parent = QModelIndex()) const override; virtual int columnCount(const QModelIndex &/*parent*/) const override; virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; // virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override; virtual Qt::ItemFlags flags(const QModelIndex &index) const override; void add(const ConnectionConfig &cfg); Expected get(int row); virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) override; void load(); void save(); void save(int index); private: class LijstElem { public: QUuid m_uuid; bool m_dirty = false; ConnectionConfig m_config; LijstElem(const QUuid id, const ConnectionConfig &cfg) : m_uuid(id), m_config(cfg) {} }; using t_Connections = std::vector; t_Connections m_connections; void deleteFromIni(t_Connections::iterator begin, t_Connections::iterator end); static QString iniFileName(); static QString makeLongDescription(const ConnectionConfig &cfg); }; #endif // CONNECTIONLISTMODEL_H