blob: ce8b09aa47c0b8f8660a5f7a09665d271194015d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.Core.Commands;
using Tango.Integration.Operation;
using Tango.SharedUI;
namespace Tango.MachineStudio.UI.ViewModels
{
public class FirmwareUpgradeViewVM : DialogViewVM
{
private IMachineOperator _operator;
private FileStream _stream;
private FirmwareUpgradeHandler _handler;
public FirmwareUpgradeHandler Handler
{
get { return _handler; }
set { _handler = value; RaisePropertyChangedAuto(); }
}
private String _selectedFile;
public String SelectedFile
{
get { return _selectedFile; }
set { _selectedFile = value; RaisePropertyChangedAuto(); }
}
private int _currentPage;
public int CurrentPage
{
get { return _currentPage; }
set { _currentPage = value; RaisePropertyChangedAuto(); }
}
public RelayCommand SelectCommand { get; set; }
public RelayCommand UpgradeCommand { get; set; }
public RelayCommand AbortCommand { get; set; }
public FirmwareUpgradeViewVM(IMachineOperator machineOperator) : base()
{
_operator = machineOperator;
SelectCommand = new RelayCommand(BrowseForFile);
UpgradeCommand = new RelayCommand(StartUpgrade, () => SelectedFile != null);
AbortCommand = new RelayCommand(AbortUpgrade, () => Handler != null && Handler.Status != FirmwareUpgradeStatus.Validating && Handler.Status != FirmwareUpgradeStatus.Activating);
}
private void BrowseForFile()
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Title = "Select tango firmware package file";
dlg.Filter = "Tango Firmware Package|*.tfp";
if (dlg.ShowDialog().Value)
{
SelectedFile = dlg.FileName;
InvalidateRelayCommands();
}
}
private async void StartUpgrade()
{
CurrentPage = 1;
_stream = new FileStream(SelectedFile, FileMode.Open);
Handler = await _operator.UpgradeFirmware(_stream);
Handler.Progress += (_, e) =>
{
InvokeUI(() =>
{
AbortCommand.RaiseCanExecuteChanged();
});
};
Handler.Completed += (_, __) =>
{
_stream.Dispose();
CurrentPage = 2;
};
Handler.Canceled += (_, __) =>
{
_stream.Dispose();
};
Handler.Failed += (_, __) =>
{
_stream.Dispose();
};
}
private async void AbortUpgrade()
{
await Handler.Cancel();
}
}
}
|