diff --git a/client/amnezia_application.cpp b/client/amnezia_application.cpp index 4e6bce2b6..229aa7b88 100644 --- a/client/amnezia_application.cpp +++ b/client/amnezia_application.cpp @@ -297,7 +297,7 @@ void AmneziaApplication::initModels() connect(m_containersModel.get(), &ContainersModel::defaultContainerChanged, this, [this]() { if (m_containersModel->getDefaultContainer() == DockerContainer::WireGuard && m_sitesModel->getRouteMode() != Settings::RouteMode::VpnAllSites) { - m_sitesModel->setRouteMode(Settings::RouteMode::VpnAllSites); + m_sitesModel->toggleSplitTunneling(false); emit m_pageController->showNotificationMessage( tr("Split tunneling for WireGuard is not implemented, the option was disabled")); } diff --git a/client/translations/amneziavpn_ru.ts b/client/translations/amneziavpn_ru.ts index d3eef8979..14973fbd6 100644 --- a/client/translations/amneziavpn_ru.ts +++ b/client/translations/amneziavpn_ru.ts @@ -1471,75 +1471,75 @@ Already installed containers were found on the server. All installed containers Раздельно VPN-туннелирование - + Mode Режим - + Remove Удалить - + Continue Продолжить - + Cancel Отменить - + Site or IP Сайт или IP - + Import/Export Sites Импорт/экспорт Сайтов - + Import Импорт - + Save site list Сохранить список сайтов - + Save sites Сохранить - - - + + + Sites files (*.json) Sites files (*.json) - + Import a list of sites Импортировать список с сайтами - + Replace site list Заменить список сайтов - - + + Open sites file Открыть список с сайтами - + Add imported sites to existing ones Добавление импортированных сайтов к существующим @@ -2621,6 +2621,16 @@ IKEv2 with IPSec encryption layer. Transmits data over fixed UDP ports 500 and 4 error 0x%1: %2 error 0x%1: %2 + + + WireGuard Configuration Highlighter + + + + + &Randomize colors + + SelectLanguageDrawer diff --git a/client/translations/amneziavpn_zh_CN.ts b/client/translations/amneziavpn_zh_CN.ts index be519a917..b439deaae 100644 --- a/client/translations/amneziavpn_zh_CN.ts +++ b/client/translations/amneziavpn_zh_CN.ts @@ -1573,75 +1573,75 @@ And if you don't like the app, all the more support it - the donation will 隧道分离 - + Mode 规则 - + Remove 移除 - + Continue 继续 - + Cancel 取消 - + Site or IP 网站或IP地址 - + Import/Export Sites 导入/导出网站 - + Import 导入 - + Save site list 保存网址 - + Save sites 保存网址 - - - + + + Sites files (*.json) - + Import a list of sites 导入网址列表 - + Replace site list 替换网址列表 - - + + Open sites file 打开网址文件 - + Add imported sites to existing ones 将导入的网址添加到现有网址中 @@ -2758,6 +2758,16 @@ IKEv2 with IPSec encryption layer. Transmits data over fixed UDP ports 500 and 4 error 0x%1: %2 错误 0x%1: %2 + + + WireGuard Configuration Highlighter + + + + + &Randomize colors + + SelectLanguageDrawer diff --git a/client/ui/models/sites_model.cpp b/client/ui/models/sites_model.cpp index 5fd9a38b3..1e0f16927 100644 --- a/client/ui/models/sites_model.cpp +++ b/client/ui/models/sites_model.cpp @@ -3,7 +3,13 @@ SitesModel::SitesModel(std::shared_ptr settings, QObject *parent) : QAbstractListModel(parent), m_settings(settings) { - m_currentRouteMode = m_settings->routeMode(); + auto routeMode = m_settings->routeMode(); + if (routeMode == Settings::RouteMode::VpnAllSites) { + m_isSplitTunnelingEnabled = false; + m_currentRouteMode = Settings::RouteMode::VpnOnlyForwardSites; + } else { + m_currentRouteMode = routeMode; + } fillSites(); } @@ -93,6 +99,20 @@ void SitesModel::setRouteMode(int routeMode) emit routeModeChanged(); } +bool SitesModel::isSplitTunnelingEnabled() +{ + return m_isSplitTunnelingEnabled; +} + +void SitesModel::toggleSplitTunneling(bool enabled) +{ + if (enabled) { + setRouteMode(m_currentRouteMode); + } else { + m_settings->setRouteMode(Settings::RouteMode::VpnAllSites); + } +} + QVector > SitesModel::getCurrentSites() { return m_sites; diff --git a/client/ui/models/sites_model.h b/client/ui/models/sites_model.h index 70def0ec5..ad16b7a33 100644 --- a/client/ui/models/sites_model.h +++ b/client/ui/models/sites_model.h @@ -31,6 +31,9 @@ public slots: int getRouteMode(); void setRouteMode(int routeMode); + bool isSplitTunnelingEnabled(); + void toggleSplitTunneling(bool enabled); + QVector> getCurrentSites(); signals: @@ -44,6 +47,7 @@ private: std::shared_ptr m_settings; + bool m_isSplitTunnelingEnabled; Settings::RouteMode m_currentRouteMode; QVector> m_sites; diff --git a/client/ui/qml/Pages2/PageSettingsConnection.qml b/client/ui/qml/Pages2/PageSettingsConnection.qml index 7f0262f97..b5b1bd97c 100644 --- a/client/ui/qml/Pages2/PageSettingsConnection.qml +++ b/client/ui/qml/Pages2/PageSettingsConnection.qml @@ -112,7 +112,7 @@ PageType { } LabelWithButtonType { - visible: !GC.isMobile() + visible: false//!GC.isMobile() Layout.fillWidth: true diff --git a/client/ui/qml/Pages2/PageSettingsSplitTunneling.qml b/client/ui/qml/Pages2/PageSettingsSplitTunneling.qml index cc4973f14..d7f778718 100644 --- a/client/ui/qml/Pages2/PageSettingsSplitTunneling.qml +++ b/client/ui/qml/Pages2/PageSettingsSplitTunneling.qml @@ -93,22 +93,15 @@ PageType { SwitcherType { id: switcher - property int lastActiveRouteMode: routeMode.onlyForwardSites - enabled: root.pageEnabled Layout.fillWidth: true Layout.rightMargin: 16 - checked: SitesModel.routeMode !== routeMode.allSites - onToggled: { - if (checked) { - SitesModel.routeMode = lastActiveRouteMode - } else { - lastActiveRouteMode = SitesModel.routeMode - selector.text = root.routeModesModel[getRouteModesModelIndex()].name - SitesModel.routeMode = routeMode.allSites - } + checked: SitesModel.isSplitTunnelingEnabled() + onToggled: { + SitesModel.toggleSplitTunneling(checked) + selector.text = root.routeModesModel[getRouteModesModelIndex()].name } } }