aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2018-02-26 16:30:42 +0200
committerAvi Levkovich <avi@twine-s.com>2018-02-26 16:30:42 +0200
commit5942bb7a13e5ad26c720a1b95ae4ea766eeeda25 (patch)
tree2a855ce1065c875e615f5b040f984cb3fb84e518 /Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs
parent4c052df707280abd208b03aa88cf904e0eb6b9bf (diff)
parent6549d8672a93893599e921d9f1938af7dcabb8bf (diff)
downloadTango-5942bb7a13e5ad26c720a1b95ae4ea766eeeda25.tar.gz
Tango-5942bb7a13e5ad26c720a1b95ae4ea766eeeda25.zip
MERGE!
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs')
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs153
1 files changed, 153 insertions, 0 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs
index 679ba5ff3..fb2cd5c82 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs
@@ -6,7 +6,11 @@ using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
+using System.Threading;
using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Media;
using Tango.Core.Commands;
using Tango.Integration.Services;
using Tango.Logging;
@@ -16,10 +20,14 @@ using Tango.MachineStudio.Common.Modules;
using Tango.MachineStudio.Common.Navigation;
using Tango.MachineStudio.Common.Notifications;
using Tango.MachineStudio.Common.StudioApplication;
+using Tango.MachineStudio.Common.Update;
+using Tango.MachineStudio.UI.StudioApplication;
using Tango.MachineStudio.UI.SupervisingController;
using Tango.MachineStudio.UI.Views;
+using Tango.MachineStudio.UI.Windows;
using Tango.PMR.Stubs;
using Tango.SharedUI;
+using Tango.SharedUI.Helpers;
using Tango.Transport.Adapters;
namespace Tango.MachineStudio.UI.ViewModels
@@ -33,6 +41,7 @@ namespace Tango.MachineStudio.UI.ViewModels
private IStudioModule _currentModule;
private INavigationManager _navigation;
private bool _isDisconnecting;
+ private Thread _updateCheckThread;
/// <summary>
/// Gets or sets the current loaded module.
@@ -69,6 +78,11 @@ namespace Tango.MachineStudio.UI.ViewModels
public RelayCommand<IStudioModule> StartModuleCommand { get; set; }
/// <summary>
+ /// Gets or sets the open module in window command.
+ /// </summary>
+ public RelayCommand<IStudioModule> OpenModuleInWindowCommand { get; set; }
+
+ /// <summary>
/// Gets or sets the home command.
/// </summary>
public RelayCommand HomeCommand { get; set; }
@@ -88,6 +102,16 @@ namespace Tango.MachineStudio.UI.ViewModels
/// </summary>
public RelayCommand SignoutCommand { get; set; }
+ /// <summary>
+ /// Gets or sets the exit command.
+ /// </summary>
+ public RelayCommand ExitCommand { get; set; }
+
+ /// <summary>
+ /// Gets or sets the update center command.
+ /// </summary>
+ public RelayCommand UpdateCenterCommand { get; set; }
+
private IAuthenticationProvider _authenticationProvider;
/// <summary>
/// Gets or sets the authentication provider.
@@ -128,6 +152,38 @@ namespace Tango.MachineStudio.UI.ViewModels
set { _applicationManager = value; RaisePropertyChangedAuto(); }
}
+ private bool _isUpdateAvailable;
+ /// <summary>
+ /// Gets or sets a value indicating whether a new version update is available.
+ /// </summary>
+ public bool IsUpdateAvailable
+ {
+ get { return _isUpdateAvailable; }
+ set { _isUpdateAvailable = value; RaisePropertyChangedAuto(); }
+ }
+
+ private String _latestVersion;
+ /// <summary>
+ /// Gets or sets the latest version.
+ /// </summary>
+ public String LatestVersion
+ {
+ get { return _latestVersion; }
+ set { _latestVersion = value; RaisePropertyChangedAuto(); }
+ }
+
+
+ private bool _disableCheckForUpdates;
+ /// <summary>
+ /// Gets or sets a value indicating whether [disable check for updates].
+ /// </summary>
+ public bool DisableCheckForUpdates
+ {
+ get { return _disableCheckForUpdates; }
+ set { _disableCheckForUpdates = value; RaisePropertyChangedAuto(); }
+ }
+
+
/// <summary>
/// Initializes a new instance of the <see cref="MainViewVM"/> class.
/// </summary>
@@ -157,6 +213,46 @@ namespace Tango.MachineStudio.UI.ViewModels
ConnectCommand = new RelayCommand(ConnectToMachine);
SignoutCommand = new RelayCommand(SignOut);
DisconnectCommand = new RelayCommand(DisconnectFromMachine, (x) => ApplicationManager.IsMachineConnected && !_isDisconnecting);
+ OpenModuleInWindowCommand = new RelayCommand<IStudioModule>(OpenModuleInWindow);
+ ExitCommand = new RelayCommand(ExitApplication);
+ UpdateCenterCommand = new RelayCommand(NavigateToUpdateCenter);
+
+ _updateCheckThread = new Thread(UpdateCheckThreadMethod);
+ _updateCheckThread.IsBackground = true;
+ _updateCheckThread.Start();
+ }
+
+ private void UpdateCheckThreadMethod()
+ {
+ while (!DisableCheckForUpdates)
+ {
+ Thread.Sleep(TimeSpan.FromMinutes(1));
+
+ try
+ {
+ if (_authenticationProvider.CurrentUser != null)
+ {
+ var service = UpdateServiceHelper.GetUpdateServiceChannel();
+ var client = service.CreateChannel();
+
+ CheckForUpdatesResponse response = client.CheckForUpdates(new CheckForUpdatesRequest()
+ {
+ Email = _authenticationProvider.CurrentUser.Email,
+ Password = _authenticationProvider.CurrentUser.Password,
+ Version = _applicationManager.Version,
+ });
+
+ IsUpdateAvailable = response.IsUpdateAvailable;
+ LatestVersion = response.Version;
+ }
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error in version update periodic check...");
+ }
+
+ Thread.Sleep(TimeSpan.FromMinutes(4));
+ }
}
/// <summary>
@@ -302,5 +398,62 @@ namespace Tango.MachineStudio.UI.ViewModels
{
base.OnViewAttached();
}
+
+ /// <summary>
+ /// Opens the module in a new window.
+ /// </summary>
+ /// <param name="module">The module.</param>
+ private void OpenModuleInWindow(IStudioModule module)
+ {
+ if (module == null) return;
+
+ try
+ {
+ StartModule(null);
+
+ module.InNewWindow = true;
+
+ var parent = (MainView.Self as MainView).TransitionControl.Controls.SingleOrDefault(x => x.Tag.ToString() == module.Name).Content as Grid;
+
+ var view = parent.Children[0] as FrameworkElement;
+ parent.Children.Remove(view);
+
+ ModuleWindowVM vm = new ModuleWindowVM(module, parent);
+ ModuleWindow window = new ModuleWindow(this, vm, view);
+
+ window.Closing += (x, y) =>
+ {
+ window.grid.Children.Remove(view);
+ parent.Children.Add(view);
+ module.InNewWindow = false;
+ };
+
+ window.Owner = MainWindow.Instance;
+ window.Show();
+
+ (_applicationManager as DefaultStudioApplicationManager).RegisterOpenedWindow(window);
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error popping out module " + module.Name);
+ _notificationProvider.ShowError("Error popping out module " + module.Name);
+ }
+ }
+
+ /// <summary>
+ /// Navigates to update center.
+ /// </summary>
+ private void NavigateToUpdateCenter()
+ {
+ _navigation.NavigateTo(NavigationView.UpdateView);
+ }
+
+ /// <summary>
+ /// Exits the application.
+ /// </summary>
+ private void ExitApplication()
+ {
+ _applicationManager.ShutDown();
+ }
}
}