aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModels/MainViewVM.cs
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-08-15 16:06:38 +0300
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-08-15 16:06:38 +0300
commita3aedf6ba1e0f9cc65877c88f66af6f330484086 (patch)
tree453f7b4204d27a697f09602b95ee6946e274482b /Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModels/MainViewVM.cs
parentbbbf57af4d61e1b6d61b67418415008f58dadb3c (diff)
downloadTango-a3aedf6ba1e0f9cc65877c88f66af6f330484086.tar.gz
Tango-a3aedf6ba1e0f9cc65877c88f66af6f330484086.zip
Working on PPC WiFi connectivity!
Diffstat (limited to 'Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModels/MainViewVM.cs')
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.MachineSettings/ViewModels/MainViewVM.cs128
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;
+ }
}
}
}