diff --git a/client/ui/controllers/sitesController.cpp b/client/ui/controllers/sitesController.cpp index d40be458..08c74a93 100644 --- a/client/ui/controllers/sitesController.cpp +++ b/client/ui/controllers/sitesController.cpp @@ -78,6 +78,13 @@ void SitesController::removeSite(int index) emit finished(tr("Site removed: %1").arg(hostname)); } +void SitesController::removeSites() +{ + m_sitesModel->removeSites(); + + emit finished(tr("Site list cleared!")); +} + void SitesController::importSites(const QString &fileName, bool replaceExisting) { QByteArray jsonData; diff --git a/client/ui/controllers/sitesController.h b/client/ui/controllers/sitesController.h index e66478da..8cfe3b39 100644 --- a/client/ui/controllers/sitesController.h +++ b/client/ui/controllers/sitesController.h @@ -19,6 +19,7 @@ public slots: void addSite(QString hostname); void removeSite(int index); + void removeSites(); void importSites(const QString &fileName, bool replaceExisting); void exportSites(const QString &fileName); diff --git a/client/ui/models/sites_model.cpp b/client/ui/models/sites_model.cpp index 99d93618..a3bc0009 100644 --- a/client/ui/models/sites_model.cpp +++ b/client/ui/models/sites_model.cpp @@ -83,6 +83,16 @@ void SitesModel::removeSite(QModelIndex index) endRemoveRows(); } +void SitesModel::removeSites() +{ + beginResetModel(); + + m_settings->removeAllVpnSites(m_currentRouteMode); + fillSites(); + + endResetModel(); +} + int SitesModel::getRouteMode() { return m_currentRouteMode; diff --git a/client/ui/models/sites_model.h b/client/ui/models/sites_model.h index 803b7fd1..fc062887 100644 --- a/client/ui/models/sites_model.h +++ b/client/ui/models/sites_model.h @@ -28,6 +28,7 @@ public slots: bool addSite(const QString &hostname, const QString &ip); void addSites(const QMap &sites, bool replaceExisting); void removeSite(QModelIndex index); + void removeSites(); int getRouteMode(); void setRouteMode(int routeMode); diff --git a/client/ui/qml/Pages2/PageSettingsSplitTunneling.qml b/client/ui/qml/Pages2/PageSettingsSplitTunneling.qml index 292f903a..17de5494 100644 --- a/client/ui/qml/Pages2/PageSettingsSplitTunneling.qml +++ b/client/ui/qml/Pages2/PageSettingsSplitTunneling.qml @@ -308,7 +308,7 @@ PageType { Layout.fillWidth: true Layout.margins: 16 - headerText: qsTr("Import / Export Sites") + headerText: qsTr("Additional options") } LabelWithButtonType { @@ -351,6 +351,34 @@ PageType { } DividerType {} + + LabelWithButtonType { + id: clearSitesButton + Layout.fillWidth: true + + text: qsTr("Clear site list") + rightImageSource: "qrc:/images/controls/trash.svg" + + clickedFunction: function() { + var headerText = qsTr("Clear site list?") + var descriptionText = qsTr("All sites will be removed from list.") + var yesButtonText = qsTr("Continue") + var noButtonText = qsTr("Cancel") + + var yesButtonFunction = function() { + PageController.showBusyIndicator(true) + SitesController.removeSites() + PageController.showBusyIndicator(false) + } + var noButtonFunction = function() { + + } + + showQuestionDrawer(headerText, descriptionText, yesButtonText, noButtonText, yesButtonFunction, noButtonFunction) + } + } + + DividerType {} } }