diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-08-15 16:06:38 +0300 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-08-15 16:06:38 +0300 |
| commit | a3aedf6ba1e0f9cc65877c88f66af6f330484086 (patch) | |
| tree | 453f7b4204d27a697f09602b95ee6946e274482b /Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModels | |
| parent | bbbf57af4d61e1b6d61b67418415008f58dadb3c (diff) | |
| download | Tango-a3aedf6ba1e0f9cc65877c88f66af6f330484086.tar.gz Tango-a3aedf6ba1e0f9cc65877c88f66af6f330484086.zip | |
Working on PPC WiFi connectivity!
Diffstat (limited to 'Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModels')
| -rw-r--r-- | Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModels/MainViewVM.cs | 128 |
1 files changed, 127 insertions, 1 deletions
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModels/MainViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModels/MainViewVM.cs index 236c8b272..a0996f110 100644 --- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModels/MainViewVM.cs @@ -1,8 +1,12 @@ using System; using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Collections.Specialized; +using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.Windows.Data; using Tango.BL; using Tango.BL.Entities; using Tango.BL.Enumerations; @@ -12,7 +16,9 @@ using Tango.PPC.Common; using Tango.PPC.Common.Connection; using Tango.PPC.Common.ExternalBridge; using Tango.PPC.Common.Messages; +using Tango.PPC.MachineSettings.Models; using Tango.SharedUI.Components; +using Tango.WiFi; namespace Tango.PPC.MachineSettings.ViewModels { @@ -31,13 +37,42 @@ namespace Tango.PPC.MachineSettings.ViewModels set { _machine = value; RaisePropertyChangedAuto(); } } - private SelectedObjectCollection<JobTypes> _selectedJobTypes; + private SelectedObjectCollection<JobTypes> _selectedJobTypes; public SelectedObjectCollection<JobTypes> SelectedJobTypes { get { return _selectedJobTypes; } set { _selectedJobTypes = value; RaisePropertyChangedAuto(); } } + private WiFiManager _wiFiManager; + public WiFiManager WiFiManager + { + get { return _wiFiManager; } + set { _wiFiManager = value; RaisePropertyChangedAuto(); } + } + + private bool _enableWifi; + public bool EnableWiFi + { + get { return _enableWifi; } + set { _enableWifi = value; RaisePropertyChangedAuto(); } + } + + private ObservableCollection<AvailableNetworkVM> _networks; + public ObservableCollection<AvailableNetworkVM> Networks + { + get { return _networks; } + set { _networks = value; RaisePropertyChangedAuto(); } + } + + private ICollectionView _networksView; + public ICollectionView NetworksView + { + get { return _networksView; } + set { _networksView = value; RaisePropertyChangedAuto(); } + } + + #endregion #region Commands @@ -52,12 +87,96 @@ namespace Tango.PPC.MachineSettings.ViewModels /// </summary> public RelayCommand DiscardCommand { get; set; } + public RelayCommand<AvailableNetworkVM> ConnectToWiFiCommand { get; set; } + + public RelayCommand<AvailableNetworkVM> DisconnectFromWiFiCommand { get; set; } + #endregion public MainViewVM() { + Networks = new ObservableCollection<AvailableNetworkVM>(); + NetworksView = CollectionViewSource.GetDefaultView(Networks); + NetworksView.SortDescriptions.Add(new SortDescription(nameof(AvailableNetworkVM.SignalStrength), ListSortDirection.Descending)); + SaveCommand = new RelayCommand(Save); DiscardCommand = new RelayCommand(Discard); + WiFiManager = new WiFiManager(); + + WiFiManager.AvailableWifiNetworks.CollectionChanged += AvailableWifiNetworks_CollectionChanged; + + EnableWiFi = true; + + ConnectToWiFiCommand = new RelayCommand<AvailableNetworkVM>(ConnectToWiFi); + DisconnectFromWiFiCommand = new RelayCommand<AvailableNetworkVM>(DisconnectFromWiFi); + } + + private void DisconnectFromWiFi(AvailableNetworkVM network) + { + network.Network.Disconnect(); + } + + private async void ConnectToWiFi(AvailableNetworkVM network) + { + var request = network.Network.CreateAuthenticationRequest(); + + if (!network.IsInCredentialsStage) + { + if (request.IsPasswordRequired || request.IsUserNameRequired) + { + network.IsInCredentialsStage = true; + network.IsUserNameRequired = request.IsUserNameRequired; + network.IsPasswordRequired = request.IsPasswordRequired; + return; + } + else + { + network.Connecting = true; + await network.Network.Connect(request); + } + } + else + { + network.IsInCredentialsStage = false; + + if (request.IsUserNameRequired) + { + request.UserName = network.UserName; + } + if (request.IsPasswordRequired) + { + request.Password = network.Password; + } + + network.Connecting = true; + var connected = await network.Network.Connect(request); + network.Connecting = false; + + if (connected) + { + network.Network.IsConnected = true; + } + } + } + + private void AvailableWifiNetworks_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e) + { + InvokeUI(() => + { + Networks.Where(x => !WiFiManager.AvailableWifiNetworks.ToList().Exists(y => y.Name == x.Network.Name)).ToList().ForEach(x => Networks.Remove(x)); + + foreach (var n in WiFiManager.AvailableWifiNetworks.ToList()) + { + var network = Networks.FirstOrDefault(x => x.Network.Name == n.Name); + + if (network == null) + { + network = new AvailableNetworkVM(); + network.Network = n; + Networks.Add(network); + } + } + }); } private void Discard() @@ -92,6 +211,13 @@ namespace Tango.PPC.MachineSettings.ViewModels RaisePropertyChanged(nameof(Machine)); SelectedJobTypes = new SelectedObjectCollection<JobTypes>(Enum.GetValues(typeof(JobTypes)).Cast<JobTypes>().ToObservableCollection(), Machine.SupportedJobTypes.ToObservableCollection()); + + + //Wifi + if (EnableWiFi) + { + WiFiManager.Enabled = true; + } } } } |
