diff options
Diffstat (limited to 'WireGuard/WireGuard/UI/ActivateOnDemandViewModel.swift')
-rw-r--r-- | WireGuard/WireGuard/UI/ActivateOnDemandViewModel.swift | 46 |
1 files changed, 41 insertions, 5 deletions
diff --git a/WireGuard/WireGuard/UI/ActivateOnDemandViewModel.swift b/WireGuard/WireGuard/UI/ActivateOnDemandViewModel.swift index b5ce633..a852818 100644 --- a/WireGuard/WireGuard/UI/ActivateOnDemandViewModel.swift +++ b/WireGuard/WireGuard/UI/ActivateOnDemandViewModel.swift @@ -5,13 +5,15 @@ import Foundation class ActivateOnDemandViewModel { enum OnDemandField { + case onDemand case nonWiFiInterface case wiFiInterface - case ssidDescription - case ssidEdit + case ssid var localizedUIString: String { switch self { + case .onDemand: + return tr("tunnelOnDemandKey") case .nonWiFiInterface: #if os(iOS) return tr("tunnelOnDemandCellular") @@ -21,8 +23,7 @@ class ActivateOnDemandViewModel { #error("Unimplemented") #endif case .wiFiInterface: return tr("tunnelOnDemandWiFi") - case .ssidDescription: return tr("tunnelOnDemandSSIDDescription") - case .ssidEdit: return tr("tunnelOnDemandSSIDEdit") + case .ssid: return tr("tunnelOnDemandSSIDsKey") } } } @@ -48,7 +49,15 @@ class ActivateOnDemandViewModel { } extension ActivateOnDemandViewModel { - convenience init(from option: ActivateOnDemandOption) { + convenience init(setting: ActivateOnDemandSetting) { + if setting.isActivateOnDemandEnabled { + self.init(option: setting.activateOnDemandOption) + } else { + self.init(option: .none) + } + } + + convenience init(option: ActivateOnDemandOption) { self.init() switch option { case .none: @@ -103,6 +112,33 @@ extension ActivateOnDemandViewModel { } } +extension ActivateOnDemandViewModel { + var localizedInterfaceDescription: String { + switch (isWiFiInterfaceEnabled, isNonWiFiInterfaceEnabled) { + case (false, false): + return tr("tunnelOnDemandOptionOff") + case (true, false): + return tr("tunnelOnDemandOptionWiFiOnly") + case (false, true): + #if os(iOS) + return tr("tunnelOnDemandOptionCellularOnly") + #elseif os(macOS) + return tr("tunnelOnDemandOptionEthernetOnly") + #else + #error("Unimplemented") + #endif + case (true, true): + #if os(iOS) + return tr("tunnelOnDemandOptionWiFiOrCellular") + #elseif os(macOS) + return tr("tunnelOnDemandOptionWiFiOrEthernet") + #else + #error("Unimplemented") + #endif + } + } +} + private extension ActivateOnDemandViewModel { func ssidViewModel(from ssidOption: ActivateOnDemandSSIDOption) -> (OnDemandSSIDOption, [String]) { switch ssidOption { |