Files

60 lines
1.4 KiB
C++
Raw Permalink Normal View History

2021-05-27 22:18:36 +03:00
#ifndef SITESMODEL_H
#define SITESMODEL_H
2021-08-09 00:41:52 +07:00
#include <QAbstractListModel>
2021-05-27 22:18:36 +03:00
#include "settings.h"
2021-08-09 00:41:52 +07:00
class SitesModel : public QAbstractListModel
2021-05-27 22:18:36 +03:00
{
Q_OBJECT
public:
2023-08-08 19:10:14 +05:00
enum Roles {
2021-08-09 00:41:52 +07:00
UrlRole = Qt::UserRole + 1,
IpRole
};
2023-08-08 19:10:14 +05:00
explicit SitesModel(std::shared_ptr<Settings> settings, QObject *parent = nullptr);
2021-05-27 22:18:36 +03:00
int rowCount(const QModelIndex &parent = QModelIndex()) const override;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
2023-08-08 19:10:14 +05:00
Q_PROPERTY(int routeMode READ getRouteMode WRITE setRouteMode NOTIFY routeModeChanged)
2024-02-21 18:27:27 +07:00
Q_PROPERTY(bool isTunnelingEnabled READ isSplitTunnelingEnabled NOTIFY splitTunnelingToggled)
2023-08-08 19:10:14 +05:00
public slots:
bool addSite(const QString &hostname, const QString &ip);
void addSites(const QMap<QString, QString> &sites, bool replaceExisting);
void removeSite(QModelIndex index);
void removeSites();
2023-08-08 19:10:14 +05:00
int getRouteMode();
void setRouteMode(int routeMode);
bool isSplitTunnelingEnabled();
void toggleSplitTunneling(bool enabled);
2023-08-08 19:10:14 +05:00
QVector<QPair<QString, QString>> getCurrentSites();
signals:
void routeModeChanged();
2024-02-21 18:27:27 +07:00
void splitTunnelingToggled();
2021-08-09 00:41:52 +07:00
protected:
QHash<int, QByteArray> roleNames() const override;
2021-05-27 22:18:36 +03:00
private:
2023-08-08 19:10:14 +05:00
void fillSites();
2021-05-27 22:18:36 +03:00
2022-08-25 12:47:02 +03:00
std::shared_ptr<Settings> m_settings;
2021-05-27 22:18:36 +03:00
bool m_isSplitTunnelingEnabled;
2023-08-08 19:10:14 +05:00
Settings::RouteMode m_currentRouteMode;
QVector<QPair<QString, QString>> m_sites;
2021-05-27 22:18:36 +03:00
};
#endif // SITESMODEL_H