aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2019-02-20 16:49:00 +0200
committerShlomo Hecht <shlomo@twine-s.com>2019-02-20 16:49:00 +0200
commitcb13435931b24d6c156804f70fcfdb78865e4c11 (patch)
tree83c9893fbb2a0e25b374ab09780bd6c946bce08f /Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels
parent232cfcfd6388681f7b9a3f1eedead28dbdab9e70 (diff)
parent1767535a1e6ecbdb05ffe62dda85c9fb78e6718f (diff)
downloadTango-cb13435931b24d6c156804f70fcfdb78865e4c11.tar.gz
Tango-cb13435931b24d6c156804f70fcfdb78865e4c11.zip
merge
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels')
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/FirmwareUpgradeViewVM.cs50
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoadingViewVM.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoginViewVM.cs5
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs30
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/UpdateViewVM.cs25
5 files changed, 85 insertions, 27 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/FirmwareUpgradeViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/FirmwareUpgradeViewVM.cs
index 09b63cfc9..e54c28e17 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/FirmwareUpgradeViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/FirmwareUpgradeViewVM.cs
@@ -5,11 +5,14 @@ using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Input;
using Tango.Core.Commands;
using Tango.Integration.Operation;
using Tango.Integration.Upgrade;
using Tango.MachineStudio.Common.Notifications;
using Tango.SharedUI;
+using Tango.SharedUI.Helpers;
namespace Tango.MachineStudio.UI.ViewModels
{
@@ -47,6 +50,35 @@ namespace Tango.MachineStudio.UI.ViewModels
set { upgradeError = value; RaisePropertyChangedAuto(); }
}
+ private bool _dfu;
+ public bool DFU
+ {
+ get { return _dfu; }
+ set
+ {
+ _dfu = value; RaisePropertyChangedAuto();
+
+ if (_dfu)
+ {
+ UploadTFP = false;
+ }
+ }
+ }
+
+ private bool _uploadTFP;
+ public bool UploadTFP
+ {
+ get { return _uploadTFP; }
+ set
+ {
+ _uploadTFP = value; RaisePropertyChangedAuto();
+
+ if (_uploadTFP)
+ {
+ DFU = false;
+ }
+ }
+ }
public RelayCommand SelectCommand { get; set; }
@@ -56,6 +88,7 @@ namespace Tango.MachineStudio.UI.ViewModels
public FirmwareUpgradeViewVM(IMachineOperator machineOperator, INotificationProvider notificationProvider) : base()
{
+ DFU = true;
_notification = notificationProvider;
_operator = machineOperator;
SelectCommand = new RelayCommand(BrowseForFile);
@@ -96,6 +129,17 @@ namespace Tango.MachineStudio.UI.ViewModels
try
{
+ IsFree = false;
+
+ if (UploadTFP)
+ {
+ _operator.FirmwareUpgradeMode = FirmwareUpgradeModes.DFU | FirmwareUpgradeModes.TFP_PACKAGE;
+ }
+ else
+ {
+ _operator.FirmwareUpgradeMode = FirmwareUpgradeModes.DFU;
+ }
+
_stream = new FileStream(SelectedFile, FileMode.Open);
Handler = await _operator.UpgradeFirmware(_stream);
Handler.Progress += (_, e) =>
@@ -104,18 +148,22 @@ namespace Tango.MachineStudio.UI.ViewModels
{
AbortCommand.RaiseCanExecuteChanged();
});
+
+ UIHelper.DoEvents();
};
Handler.Completed += (_, __) =>
{
CanClose = true;
_stream.Dispose();
CurrentPage = 2;
+ IsFree = true;
};
Handler.Canceled += (_, __) =>
{
CanClose = true;
_stream.Dispose();
CurrentPage = 0;
+ IsFree = true;
};
Handler.Failed += (_, ex) =>
{
@@ -123,10 +171,12 @@ namespace Tango.MachineStudio.UI.ViewModels
CanClose = true;
_stream.Dispose();
CurrentPage = 3;
+ IsFree = true;
};
}
catch (Exception ex)
{
+ IsFree = true;
CanClose = true;
UpgradeError = ex.FlattenMessage();
CurrentPage = 3;
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoadingViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoadingViewVM.cs
index 283ea3637..e55d0534e 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoadingViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoadingViewVM.cs
@@ -17,7 +17,7 @@ using Tango.MachineStudio.Common.EventLogging;
using Tango.BL.Enumerations;
using Tango.MachineStudio.UI.TFS;
using Tango.MachineStudio.Common;
-using Tango.MachineStudio.Common.Update;
+using Tango.MachineStudio.Common.Web;
using Tango.Core.DI;
using Tango.Settings;
using Tango.Core;
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoginViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoginViewVM.cs
index 8b3747584..1165c0920 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoginViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/LoginViewVM.cs
@@ -16,6 +16,7 @@ using Tango.MachineStudio.Common.Authentication;
using Tango.MachineStudio.Common.EventLogging;
using Tango.MachineStudio.Common.Navigation;
using Tango.MachineStudio.Common.Notifications;
+using Tango.MachineStudio.Common.Web;
using Tango.MachineStudio.UI.Messages;
using Tango.Settings;
using Tango.SharedUI;
@@ -35,6 +36,7 @@ namespace Tango.MachineStudio.UI.ViewModels
private IEventLogger _eventLogger;
private Rfc2898Cryptographer cryptographer;
private MachineStudioSettings _settings;
+ private MachineStudioWebClient _machineStudioWebClient;
private String _email;
/// <summary>
@@ -111,10 +113,11 @@ namespace Tango.MachineStudio.UI.ViewModels
/// <param name="authenticationProvider">The authentication provider.</param>
/// <param name="navigationManager">The navigation manager.</param>
/// <param name="notificationProvider">The notification provider.</param>
- public LoginViewVM(IAuthenticationProvider authenticationProvider, INavigationManager navigationManager, INotificationProvider notificationProvider, IEventLogger eventLogger)
+ public LoginViewVM(MachineStudioWebClient machineStudioWebClient, IAuthenticationProvider authenticationProvider, INavigationManager navigationManager, INotificationProvider notificationProvider, IEventLogger eventLogger)
{
EnableSlotSelection = true;
+ _machineStudioWebClient = machineStudioWebClient;
_settings = SettingsManager.Default.GetOrCreate<MachineStudioSettings>();
_notificationProvider = notificationProvider;
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 573e56fff..986bf483f 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs
@@ -11,6 +11,7 @@ using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using Tango.BL;
+using Tango.BL.Builders;
using Tango.BL.Entities;
using Tango.Core.Commands;
using Tango.Core.DI;
@@ -26,7 +27,7 @@ using Tango.MachineStudio.Common.Navigation;
using Tango.MachineStudio.Common.Notifications;
using Tango.MachineStudio.Common.Speech;
using Tango.MachineStudio.Common.StudioApplication;
-using Tango.MachineStudio.Common.Update;
+using Tango.MachineStudio.Common.Web;
using Tango.MachineStudio.UI.StudioApplication;
using Tango.MachineStudio.UI.SupervisingController;
using Tango.MachineStudio.UI.TFS;
@@ -54,6 +55,7 @@ namespace Tango.MachineStudio.UI.ViewModels
private Thread _updateCheckThread;
private IEventLogger _eventLogger;
private MachineStudioSettings _settings;
+ private MachineStudioWebClient _machineStudioWebClient;
/// <summary>
/// Gets or sets the current loaded module.
@@ -280,8 +282,10 @@ namespace Tango.MachineStudio.UI.ViewModels
IEventLogger eventLogger,
IDiagnosticsFrameProvider frameProvider,
ISpeechProvider speechProvider,
- TeamFoundationServiceExtendedClient tfs) : base()
+ TeamFoundationServiceExtendedClient tfs,
+ MachineStudioWebClient machineStudioWebClient) : base()
{
+ _machineStudioWebClient = machineStudioWebClient;
TFSClient = tfs;
_eventLogger = eventLogger;
_navigation = navigationManager;
@@ -356,11 +360,8 @@ namespace Tango.MachineStudio.UI.ViewModels
{
if (_authenticationProvider.CurrentUser != null)
{
- var client = new MachineStudioUpdateService();
-
- CheckForUpdatesResponse response = client.CheckForUpdates(new CheckForUpdatesRequest()
+ CheckForUpdatesResponse response = _machineStudioWebClient.CheckForUpdates(new CheckForUpdatesRequest()
{
- AccessToken = _authenticationProvider.AccessToken,
Version = _applicationManager.Version.ToString(),
}).Result;
@@ -483,7 +484,7 @@ namespace Tango.MachineStudio.UI.ViewModels
if (x.UploadHardwareConfiguration)
{
- UploadHardwareConfiguration();
+ UploadHardwareConfiguration(false);
}
}
@@ -525,7 +526,7 @@ namespace Tango.MachineStudio.UI.ViewModels
if (x.UploadHardwareConfiguration)
{
- UploadHardwareConfiguration();
+ UploadHardwareConfiguration(false);
}
}
catch (Exception ex)
@@ -615,18 +616,21 @@ namespace Tango.MachineStudio.UI.ViewModels
InvalidateRelayCommands();
}
- private async void UploadHardwareConfiguration()
+ private async void UploadHardwareConfiguration(bool showSuccessMessage = true)
{
try
{
using (ObservablesContext db = ObservablesContext.CreateDefault())
{
- var config = db.Adapter.GetConfiguration(s => s.Guid == ApplicationManager.Machine.ConfigurationGuid);
- var hw = db.Adapter.GetHardwareVersionByMachine(ApplicationManager.Machine.Guid);
+ var config = (await new ConfigurationBuilder(db).Set(ApplicationManager.Machine.ConfigurationGuid).WithIdsPacks().WithHardwareVersion().BuildAsync());
+
+ await ApplicationManager.ConnectedMachine.UploadHardwareConfiguration(config.HardwareVersion, config);
+ }
- await ApplicationManager.ConnectedMachine.UploadHardwareConfiguration(hw, config);
+ if (showSuccessMessage)
+ {
+ NotificationProvider.ShowInfo("Hardware configuration uploaded successfully.");
}
- NotificationProvider.ShowInfo("Hardware configuration uploaded successfully.");
}
catch (Exception ex)
{
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/UpdateViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/UpdateViewVM.cs
index 63cff2242..c40f91005 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/UpdateViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/UpdateViewVM.cs
@@ -19,12 +19,13 @@ using Tango.MachineStudio.Common.Authentication;
using Tango.MachineStudio.Common.Navigation;
using Tango.MachineStudio.Common.Notifications;
using Tango.MachineStudio.Common.StudioApplication;
-using Tango.MachineStudio.Common.Update;
+using Tango.MachineStudio.Common.Web;
using Tango.SharedUI;
using Tango.MachineStudio.UI.Messages;
using Tango.Settings;
using Tango.MachineStudio.Common;
using Tango.Transport.Web;
+using Tango.BL;
namespace Tango.MachineStudio.UI.ViewModels
{
@@ -55,6 +56,7 @@ namespace Tango.MachineStudio.UI.ViewModels
private CheckForUpdatesResponse _updateInfo;
private TemporaryFolder _newPackageTempFolder;
private TemporaryFolder _previousPackageTempFolder;
+ private MachineStudioWebClient _machineStudioWebClient;
private bool _forcedUpdate;
public bool ForcedUpdate
@@ -139,8 +141,9 @@ namespace Tango.MachineStudio.UI.ViewModels
public RelayCommand TryRollbackAgainCommand { get; set; }
- public UpdateViewVM(INotificationProvider notification, IAuthenticationProvider authentication, INavigationManager navigation, IStudioApplicationManager application)
+ public UpdateViewVM(MachineStudioWebClient machineStudioWebClient, INotificationProvider notification, IAuthenticationProvider authentication, INavigationManager navigation, IStudioApplicationManager application)
{
+ _machineStudioWebClient = machineStudioWebClient;
_notification = notification;
_navigation = navigation;
_application = application;
@@ -168,11 +171,9 @@ namespace Tango.MachineStudio.UI.ViewModels
Status = UpdateStatus.CheckingForUpdate;
- var client = new MachineStudioUpdateService();
-
- DownloadLatestVersionResponse response = await client.DownloadLatestVersion(new DownloadLatestVersionRequest()
+ DownloadLatestVersionResponse response = await _machineStudioWebClient.DownloadLatestVersion(new DownloadLatestVersionRequest()
{
- AccessToken = _authentication.AccessToken,
+
});
_updateInfo = new CheckForUpdatesResponse();
@@ -209,17 +210,14 @@ namespace Tango.MachineStudio.UI.ViewModels
var settings = SettingsManager.Default.GetOrCreate<MachineStudioSettings>();
- Task.Factory.StartNew(() =>
+ Task.Factory.StartNew((Action)(() =>
{
try
{
Thread.Sleep(2000);
- var client = new MachineStudioUpdateService();
-
- CheckForUpdatesResponse response = client.CheckForUpdates(new CheckForUpdatesRequest()
+ CheckForUpdatesResponse response = _machineStudioWebClient.CheckForUpdates(new CheckForUpdatesRequest()
{
- AccessToken = _authentication.AccessToken,
Version = _application.Version.ToString(),
}).Result;
@@ -240,7 +238,7 @@ namespace Tango.MachineStudio.UI.ViewModels
logManager.Log(ex, "Error while checking for version update!");
Status = UpdateStatus.Error;
}
- });
+ }));
}
private void BackToApplication()
@@ -387,6 +385,9 @@ namespace Tango.MachineStudio.UI.ViewModels
{
try
{
+ LogManager.Log("Clearing EF model store...");
+ ObservablesContext.ClearModelStore();
+
Process p = new Process();
if (Status == UpdateStatus.UpdateCompleted)