private SettingsWindow(AppSettings settings, ViewModelWireguardSettings wgSettingsModel) { InitializeComponent(); Settings = settings; AppState = AppState.Instance(); Settings.FreezeSettings(); // save corrent settings state (in order to have possibility to restore) // if WiFi functionality is disable - hide trusted\untrusted wifi configuration NetworksSettings = new ViewModelNetworksSettings(Settings.NetworkActions, this); if (NetworksSettings.IsWiFiFunctionalityOn == false) { GuiTabItemNetworks.Visibility = Visibility.Collapsed; } DataContext = this; switch (Settings.ProxyType) { case ProxyType.None: rbProxyNone.IsChecked = true; break; case ProxyType.Auto: rbProxyAuto.IsChecked = true; break; case ProxyType.Http: rbProxyHTTP.IsChecked = true; break; case ProxyType.Socks: rbProxySOCKS.IsChecked = true; break; } txtProxyPassword.Password = Settings.ProxyUnsafePassword; WireGuardSettings = wgSettingsModel; WireGuardSettings.OnError += WireGuardSettings_OnError; Closing += (sender, args) => { WireGuardSettings.OnError -= WireGuardSettings_OnError; }; // WireGuard key regeneration interval for (int i = 1; i <= 30; i++) { GuiComboBoxWgKeyRegenerateDays.Items.Add(i); } GuiComboBoxWgKeyRegenerateDays.SelectedIndex = WireGuardSettings.RegenerationIntervalDays - 1; if (GuiComboBoxWgKeyRegenerateDays.SelectedIndex < 0) { GuiComboBoxWgKeyRegenerateDays.SelectedIndex = 0; } GuiComboBoxWgKeyRegenerateDays.SelectionChanged += (sender, args) => { WireGuardSettings.RegenerationIntervalDays = GuiComboBoxWgKeyRegenerateDays.SelectedIndex + 1; }; Settings.PropertyChanged += Settings_OnPropertyChanged; Closing += (sender, args) => { Settings.PropertyChanged -= Settings_OnPropertyChanged; }; }
private void SetSettings(AppSettings settings) { __Settings = settings; __Settings.PropertyChanged += __Settings_PropertyChanged; Settings = new AppSettingsAdapter(__Settings); NetworkActions = new ObservableObject(__Settings.NetworkActions); __NetworksViewModel = new ViewModelNetworksSettings(__Settings.NetworkActions, this); NetworksViewModelObservable = new ObservableObject(__NetworksViewModel); __Observers = new List <IDisposable>(); __Observers.Add(Settings.AddObserver(new NSString("ProxyTypeId"), NSKeyValueObservingOptions.New, (NSObservedChange e) => { if (Window.FirstResponder is NSTextView) { UnfocusElement(); } })); __Observers.Add(Settings.AddObserver(new NSString("FirewallAllowLAN"), NSKeyValueObservingOptions.New, (NSObservedChange e) => { __MainViewModel.KillSwitchAllowLAN = __Settings.FirewallAllowLAN; })); __Observers.Add(Settings.AddObserver(new NSString("FirewallAllowLANMulticast"), NSKeyValueObservingOptions.New, (NSObservedChange e) => { __MainViewModel.KillSwitchAllowLANMulticast = __Settings.FirewallAllowLANMulticast; })); __Observers.Add(Settings.AddObserver(new NSString("ServiceUseObfsProxy"), NSKeyValueObservingOptions.New, (NSObservedChange e) => { __Service.Proxy.SetPreference("enable_obfsproxy", settings.ServiceUseObfsProxy ? "1" : "0"); })); __Observers.Add(Settings.AddObserver(new NSString("IsLoggingEnabled"), NSKeyValueObservingOptions.New, (NSObservedChange e) => { __Service.Proxy.SetPreference("enable_logging", settings.IsLoggingEnabled ? "1" : "0"); })); __Observers.Add(Settings.AddObserver(new NSString("FirewallTypeId"), NSKeyValueObservingOptions.New, (NSObservedChange e) => { bool isPersistent = settings.FirewallType == IVPNFirewallType.Persistent; __MainViewModel.KillSwitchIsPersistent = isPersistent; })); __Observers.Add(Settings.AddObserver(new NSString("OpenVPNExtraParameters"), NSKeyValueObservingOptions.New, (NSObservedChange e) => { if (!Helpers.OpenVPN.OpenVPNConfigChecker.IsIsUserParametersAllowed(settings.OpenVPNExtraParameters, out string errorDesc)) { IVPNAlert.Show(//this.Window, - do not use window argument (alert will be possible to show when window closing) __MainViewModel.AppServices.LocalizedString("OpenVPNParamsNotSupported", "Some OpenVPN additional parameters are not supported"), errorDesc, NSAlertStyle.Warning); return; } __Service.Proxy.SetPreference("open_vpn_extra_parameters", settings.OpenVPNExtraParameters); })); __Observers.Add(Settings.AddObserver(new NSString("StopServerOnClientDisconnect"), NSKeyValueObservingOptions.New, (NSObservedChange e) => { __Service.Proxy.SetPreference("is_stop_server_on_client_disconnect", __Settings.StopServerOnClientDisconnect ? "1" : "0"); })); }
public NetworkActionButton(NetworkAction networkAction, ViewModelNetworksSettings networksSettingsModel, float width) : base() { NetworkAction = networkAction; NetworksSettingsModel = networksSettingsModel; const int constButtonHeight = 35; const int constImgHeight = 16; Bordered = false; Title = ""; Frame = new CGRect(0, 0, width, constButtonHeight); // wifi icon var wifiIconView = new NSImageView(); wifiIconView.Frame = new CGRect(20, (constButtonHeight - constImgHeight) / 2, constImgHeight, constImgHeight); wifiIconView.Image = NSImage.ImageNamed("iconWiFiSmallBlue"); AddSubview(wifiIconView); // title __Title = UIUtils.NewLabel(networkAction.Network.SSID); __Title.Frame = new CGRect(49, wifiIconView.Frame.Y, width / 2, 18); __Title.TextColor = NSColor.FromRgb(38, 57, 77); AddSubview(__Title); WiFiActionTypeEnum action = networkAction.Action; if (action == WiFiActionTypeEnum.Default) { action = networksSettingsModel.NetworkActions.DefaultActionType; } System.nfloat xpos = __Title.Frame.Width + __Title.Frame.X + 20; //action __PopUpButton = new NSPopUpButton(); __PopUpButton.Bordered = false; __PopUpButton.Frame = new CGRect(xpos, (constButtonHeight - 24) / 2, width - xpos - 10, 24); AddSubview(__PopUpButton); networkAction.PropertyChanged += NetworkAction_PropertyChanged; NetworksSettingsModel.NetworkActions.PropertyChanged += NetworkActions_PropertyChanged; CreatePopupButtonElements(); }
private void SetSettings(AppSettings settings) { __Settings = settings; __Settings.PropertyChanged += __Settings_PropertyChanged; __MainViewModel.AppState.OnSessionChanged += AppState_OnSessionChanged; Settings = new AppSettingsAdapter(__Settings); NetworkActions = new ObservableObject(__Settings.NetworkActions); __NetworksViewModel = new ViewModelNetworksSettings(__Settings.NetworkActions, this); NetworksViewModelObservable = new ObservableObject(__NetworksViewModel); __Observers = new List <IDisposable>(); __Observers.Add(Settings.AddObserver(new NSString("ProxyTypeId"), NSKeyValueObservingOptions.New, (NSObservedChange e) => { if (Window.FirstResponder is NSTextView) { UnfocusElement(); } })); __Observers.Add(Settings.AddObserver(new NSString("FirewallAllowLAN"), NSKeyValueObservingOptions.New, (NSObservedChange e) => { __MainViewModel.KillSwitchAllowLAN = __Settings.FirewallAllowLAN; })); __Observers.Add(Settings.AddObserver(new NSString("FirewallAllowLANMulticast"), NSKeyValueObservingOptions.New, (NSObservedChange e) => { __MainViewModel.KillSwitchAllowLANMulticast = __Settings.FirewallAllowLANMulticast; })); __Observers.Add(Settings.AddObserver(new NSString("ServiceUseObfsProxy"), NSKeyValueObservingOptions.New, (NSObservedChange e) => { __Service.Proxy.SetPreference("enable_obfsproxy", settings.ServiceUseObfsProxy ? "1" : "0"); })); __Observers.Add(Settings.AddObserver(new NSString("IsLoggingEnabled"), NSKeyValueObservingOptions.New, (NSObservedChange e) => { __Service.Proxy.SetPreference("enable_logging", settings.IsLoggingEnabled ? "1" : "0"); })); __Observers.Add(Settings.AddObserver(new NSString("FirewallTypeId"), NSKeyValueObservingOptions.New, (NSObservedChange e) => { bool isPersistent = settings.FirewallType == IVPNFirewallType.Persistent; __MainViewModel.KillSwitchIsPersistent = isPersistent; })); __Observers.Add(Settings.AddObserver(new NSString("StopServerOnClientDisconnect"), NSKeyValueObservingOptions.New, (NSObservedChange e) => { __Service.Proxy.SetPreference("is_stop_server_on_client_disconnect", __Settings.StopServerOnClientDisconnect ? "1" : "0"); })); }