blob: df29a6eeb4d61d4b4c515b6eff33208dfd452a63 (
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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
using Tango.BL.Entities;
using Tango.Core.Commands;
using Tango.FSE.Common;
using Tango.PPC.Shared.Updates;
using static Tango.SharedUI.Controls.NavigationControl;
namespace Tango.FSE.PPCConsole.ViewModels
{
public class UpdatesViewVM : FSEViewModel, INavigationViewModel
{
private bool _loaded;
private ICollectionView _updatesView;
private ICollectionView _packagesView;
private List<TangoUpdate> _updates;
public List<TangoUpdate> Updates
{
get { return _updates; }
set { _updates = value; RaisePropertyChangedAuto(); }
}
private List<PackageInstallation> _packages;
public List<PackageInstallation> Packages
{
get { return _packages; }
set { _packages = value; RaisePropertyChangedAuto(); }
}
private String _filter;
public String Filter
{
get { return _filter; }
set { _filter = value; RaisePropertyChangedAuto(); OnFilterChanged(); }
}
public RelayCommand RefreshCommand { get; set; }
public RelayCommand<TangoUpdate> UpdateDetailsCommand { get; set; }
public UpdatesViewVM()
{
UpdateDetailsCommand = new RelayCommand<TangoUpdate>(DisplayUpdateDetails);
RefreshCommand = new RelayCommand(RefreshUpdates);
}
private void RefreshUpdates()
{
_loaded = false;
LoadMachineUpdates();
}
private void DisplayUpdateDetails(TangoUpdate update)
{
Debug.WriteLine($"Update Details: {update.ApplicationVersion}");
}
public override void OnNavigatedTo()
{
base.OnNavigatedTo();
LoadMachineUpdates();
}
public override void OnApplicationStarted()
{
base.OnApplicationStarted();
MachineProvider.MachineConnected += MachineProvider_MachineConnected;
}
private void MachineProvider_MachineConnected(object sender, Common.Connection.MachineConnectedEventArgs e)
{
_loaded = false;
if (IsVisible)
{
LoadMachineUpdates();
}
}
private void OnFilterChanged()
{
_updatesView?.Refresh();
_packagesView?.Refresh();
}
private async void LoadMachineUpdates()
{
if (!_loaded)
{
try
{
IsFree = false;
await Task.Delay(1000);
var result = await MachineUpdatesProvider.GetUpdates();
Updates = result.Updates.ToList();
Packages = result.Packages.ToList();
_filter = null;
RaisePropertyChanged(nameof(Filter));
_updatesView = CollectionViewSource.GetDefaultView(Updates);
_updatesView.Filter = OnUpdatesFilter;
_packagesView = CollectionViewSource.GetDefaultView(Packages);
_packagesView.Filter = OnPackagesFilter;
_loaded = true;
}
catch (Exception ex)
{
LogManager.Log(ex, "Error retrieving machine updates.");
}
finally
{
IsFree = true;
}
}
}
private bool OnPackagesFilter(object obj)
{
PackageInstallation package = obj as PackageInstallation;
return String.IsNullOrWhiteSpace(Filter) || package.PackageName.ToLower().Contains(Filter.ToLower());
}
private bool OnUpdatesFilter(object obj)
{
TangoUpdate update = obj as TangoUpdate;
return String.IsNullOrWhiteSpace(Filter) || update.UpdateStatus.ToDescription().ToLower().Contains(Filter.ToLower());
}
}
}
|