#ifndef PROTOCOLS_MODEL_H #define PROTOCOLS_MODEL_H #include #include #include "core/models/protocols/protocolConfig.h" #include "ui/controllers/pageController.h" #include "ui/models/protocols/awgConfigModel.h" #include "ui/models/protocols/cloakConfigModel.h" #include "ui/models/protocols/openvpnConfigModel.h" #include "ui/models/protocols/shadowsocksConfigModel.h" #include "ui/models/protocols/wireguardConfigModel.h" #include "ui/models/protocols/xrayConfigModel.h" #ifdef Q_OS_WINDOWS #include "ui/models/protocols/ikev2ConfigModel.h" #endif #include "ui/models/services/sftpConfigModel.h" #include "ui/models/services/socks5ProxyConfigModel.h" class ProtocolsModel : public QAbstractListModel { Q_OBJECT public: enum Roles { ProtocolNameRole = Qt::UserRole + 1, ServerProtocolPageRole, ClientProtocolPageRole, ProtocolIndexRole, RawConfigRole, IsClientProtocolExistsRole }; ProtocolsModel(QObject *parent = nullptr); ProtocolsModel(const QSharedPointer &openVpnConfigModel, const QSharedPointer &shadowSocksConfigModel, const QSharedPointer &cloakConfigModel, const QSharedPointer &wireGuardConfigModel, const QSharedPointer &awgConfigModel, const QSharedPointer &xrayConfigModel, #ifdef Q_OS_WINDOWS const QSharedPointer &ikev2ConfigModel, #endif const QSharedPointer &sftpConfigModel, const QSharedPointer &socks5ProxyConfigModel, QObject *parent = nullptr); int rowCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; public slots: void updateModel(const QMap> &protocolConfigs); void updateProtocolModel(amnezia::Proto protocol); QMap> getProtocolConfigs(); protected: QHash roleNames() const override; private: PageLoader::PageEnum serverProtocolPage(Proto protocol) const; PageLoader::PageEnum clientProtocolPage(Proto protocol) const; QVector> m_protocolConfigs; QSharedPointer m_openVpnConfigModel; QSharedPointer m_shadowSocksConfigModel; QSharedPointer m_cloakConfigModel; QSharedPointer m_wireGuardConfigModel; QSharedPointer m_awgConfigModel; QSharedPointer m_xrayConfigModel; #ifdef Q_OS_WINDOWS QSharedPointer m_ikev2ConfigModel; #endif QSharedPointer m_sftpConfigModel; QSharedPointer m_socks5ProxyConfigModel; }; #endif // PROTOCOLS_MODEL_H