From f66262e154bf0507db665cc333cfc2458c935e2b Mon Sep 17 00:00:00 2001 From: Vladimir Bondarevskiy Date: Fri, 3 Nov 2017 09:43:34 +0300 Subject: [PATCH 1/7] =?UTF-8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD=D0=B0=20=D1=81=D0=BE=D1=80=D1=82=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=BA=D0=B0=20=D0=BF=D0=BE=20=D0=BA=D0=BE=D0=BB?= =?UTF-8?q?=D0=BE=D0=BD=D0=BA=D0=B0=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OneCleaner/App.xaml | 1 + OneCleaner/Model/InstalledVersion.cs | 1 + OneCleaner/Model/Platform.cs | 5 +- OneCleaner/View/MainWindow.xaml | 208 ++++++++++++------ .../InstalledVersionItemViewModel.cs | 2 +- OneCleaner/ViewModel/MainWindowViewModel.cs | 28 ++- 6 files changed, 172 insertions(+), 73 deletions(-) diff --git a/OneCleaner/App.xaml b/OneCleaner/App.xaml index 35effcb..c5212f5 100644 --- a/OneCleaner/App.xaml +++ b/OneCleaner/App.xaml @@ -8,6 +8,7 @@ DispatcherUnhandledException="App_DispatcherUnhandledException"> 16 + 11 Italic diff --git a/OneCleaner/Model/InstalledVersion.cs b/OneCleaner/Model/InstalledVersion.cs index 3acfd2e..1f0d597 100644 --- a/OneCleaner/Model/InstalledVersion.cs +++ b/OneCleaner/Model/InstalledVersion.cs @@ -6,6 +6,7 @@ namespace OneCleaner { public string Name { get; set; } public string Version { get; set; } + public long VersionInt { get; set; } public string UUID { get; set; } public string Location { get; set; } public DateTime InstallDate { get; set; } diff --git a/OneCleaner/Model/Platform.cs b/OneCleaner/Model/Platform.cs index a122515..3e9c645 100644 --- a/OneCleaner/Model/Platform.cs +++ b/OneCleaner/Model/Platform.cs @@ -75,10 +75,13 @@ namespace OneCleaner if (name == null || !IsPlatform1C(vendor) || String.IsNullOrEmpty(location)) continue; + var v = version.Split('.'); + long versionInt = long.Parse(v[0].PadLeft(2, '0') + v[1].PadLeft(2, '0') + v[2].PadLeft(3, '0') + v[3].PadLeft(5, '0')); InstalledVersion instVerItem = new InstalledVersion { Name = name, Version = version, + VersionInt = versionInt, UUID = itemUUID, Location = location, InstallDate = DateTime.ParseExact(dateStr, "yyyyMMdd", CultureInfo.InvariantCulture), @@ -90,7 +93,7 @@ namespace OneCleaner } } - return installedVersions; + return installedVersions.OrderBy(i => i.VersionInt).ToList(); }); } diff --git a/OneCleaner/View/MainWindow.xaml b/OneCleaner/View/MainWindow.xaml index 0d5925e..8d8b026 100644 --- a/OneCleaner/View/MainWindow.xaml +++ b/OneCleaner/View/MainWindow.xaml @@ -16,74 +16,18 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - @@ -112,9 +56,50 @@ + Grid.Row="1"> + + + + + + + + + + + + + + + + + Программа + + + + + + + + + + + + + Размер + + + + + + + + + + + + + Grid.Row="1"> + + + + + + + + + + + + + + + + + + Информационная база + + + + + + + + + + + Размер + + + + + + + + + + + + Grid.Row="1"> + + + + + + + + + + + + + + + + + + Информационная база + + + + + + + + + + + + + + + + + + + Размер + + + + + + + + + + + + (); PopulateInfoBasesAndCache(); + InstalledVersionsSortCommand = new RelayCommand(p => { Sort(CollectionViewSource.GetDefaultView(InstalledVersions), (string)p); }); + InfoBasesSortCommand = new RelayCommand(p => { Sort(CollectionViewSource.GetDefaultView(InfoBases), (string)p); }); + CacheSortCommand = new RelayCommand(p => { Sort(CollectionViewSource.GetDefaultView(Cache), (string)p); }); + UninstallCommand = new RelayCommand(p => { Uninstall(); }); SelectAllCommand = new RelayCommand( @@ -74,6 +82,20 @@ namespace OneCleaner InfoBases.Remove(item); } }); + + } + + private void Sort(ICollectionView view, string Name) + { + var sort = view.SortDescriptions.Select(item => item).Where(item => item.PropertyName == Name).FirstOrDefault(); + view.SortDescriptions.Clear(); + if (sort.PropertyName == null) + view.SortDescriptions.Add(new SortDescription(Name, ListSortDirection.Ascending)); + else + view.SortDescriptions.Add( + new SortDescription( + Name, + (sort.Direction == ListSortDirection.Ascending) ? ListSortDirection.Descending : ListSortDirection.Ascending)); } private async void Uninstall() @@ -167,7 +189,7 @@ namespace OneCleaner Name = item.Name, UUID = item.UUID, Size = item.Size, - Version = item.Version, + Version = item.VersionInt, InstallDate = item.InstallDate } ); From 66ab46e649e84e0c5e290054098136d73e80e253 Mon Sep 17 00:00:00 2001 From: Vladimir Bondarevskiy Date: Fri, 3 Nov 2017 09:43:34 +0300 Subject: [PATCH 2/7] #1 --- OneCleaner/App.xaml | 1 + OneCleaner/Model/InstalledVersion.cs | 1 + OneCleaner/Model/Platform.cs | 5 +- OneCleaner/View/MainWindow.xaml | 208 ++++++++++++------ .../InstalledVersionItemViewModel.cs | 2 +- OneCleaner/ViewModel/MainWindowViewModel.cs | 28 ++- 6 files changed, 172 insertions(+), 73 deletions(-) diff --git a/OneCleaner/App.xaml b/OneCleaner/App.xaml index 35effcb..c5212f5 100644 --- a/OneCleaner/App.xaml +++ b/OneCleaner/App.xaml @@ -8,6 +8,7 @@ DispatcherUnhandledException="App_DispatcherUnhandledException"> 16 + 11 Italic diff --git a/OneCleaner/Model/InstalledVersion.cs b/OneCleaner/Model/InstalledVersion.cs index 3acfd2e..1f0d597 100644 --- a/OneCleaner/Model/InstalledVersion.cs +++ b/OneCleaner/Model/InstalledVersion.cs @@ -6,6 +6,7 @@ namespace OneCleaner { public string Name { get; set; } public string Version { get; set; } + public long VersionInt { get; set; } public string UUID { get; set; } public string Location { get; set; } public DateTime InstallDate { get; set; } diff --git a/OneCleaner/Model/Platform.cs b/OneCleaner/Model/Platform.cs index a122515..3e9c645 100644 --- a/OneCleaner/Model/Platform.cs +++ b/OneCleaner/Model/Platform.cs @@ -75,10 +75,13 @@ namespace OneCleaner if (name == null || !IsPlatform1C(vendor) || String.IsNullOrEmpty(location)) continue; + var v = version.Split('.'); + long versionInt = long.Parse(v[0].PadLeft(2, '0') + v[1].PadLeft(2, '0') + v[2].PadLeft(3, '0') + v[3].PadLeft(5, '0')); InstalledVersion instVerItem = new InstalledVersion { Name = name, Version = version, + VersionInt = versionInt, UUID = itemUUID, Location = location, InstallDate = DateTime.ParseExact(dateStr, "yyyyMMdd", CultureInfo.InvariantCulture), @@ -90,7 +93,7 @@ namespace OneCleaner } } - return installedVersions; + return installedVersions.OrderBy(i => i.VersionInt).ToList(); }); } diff --git a/OneCleaner/View/MainWindow.xaml b/OneCleaner/View/MainWindow.xaml index 0d5925e..8d8b026 100644 --- a/OneCleaner/View/MainWindow.xaml +++ b/OneCleaner/View/MainWindow.xaml @@ -16,74 +16,18 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + - @@ -112,9 +56,50 @@ + Grid.Row="1"> + + + + + + + + + + + + + + + + + Программа + + + + + + + + + + + + + Размер + + + + + + + + + + + + + Grid.Row="1"> + + + + + + + + + + + + + + + + + + Информационная база + + + + + + + + + + + Размер + + + + + + + + + + + + Grid.Row="1"> + + + + + + + + + + + + + + + + + + Информационная база + + + + + + + + + + + + + + + + + + + Размер + + + + + + + + + + + + (); PopulateInfoBasesAndCache(); + InstalledVersionsSortCommand = new RelayCommand(p => { Sort(CollectionViewSource.GetDefaultView(InstalledVersions), (string)p); }); + InfoBasesSortCommand = new RelayCommand(p => { Sort(CollectionViewSource.GetDefaultView(InfoBases), (string)p); }); + CacheSortCommand = new RelayCommand(p => { Sort(CollectionViewSource.GetDefaultView(Cache), (string)p); }); + UninstallCommand = new RelayCommand(p => { Uninstall(); }); SelectAllCommand = new RelayCommand( @@ -74,6 +82,20 @@ namespace OneCleaner InfoBases.Remove(item); } }); + + } + + private void Sort(ICollectionView view, string Name) + { + var sort = view.SortDescriptions.Select(item => item).Where(item => item.PropertyName == Name).FirstOrDefault(); + view.SortDescriptions.Clear(); + if (sort.PropertyName == null) + view.SortDescriptions.Add(new SortDescription(Name, ListSortDirection.Ascending)); + else + view.SortDescriptions.Add( + new SortDescription( + Name, + (sort.Direction == ListSortDirection.Ascending) ? ListSortDirection.Descending : ListSortDirection.Ascending)); } private async void Uninstall() @@ -167,7 +189,7 @@ namespace OneCleaner Name = item.Name, UUID = item.UUID, Size = item.Size, - Version = item.Version, + Version = item.VersionInt, InstallDate = item.InstallDate } ); From 5dae406fff39b68e2a1b41664c08b79d33b2caa0 Mon Sep 17 00:00:00 2001 From: Vladimir Bondarevskiy Date: Sun, 5 Nov 2017 02:00:27 +0300 Subject: [PATCH 3/7] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D1=84=D0=B8=D0=BB=D1=8C=D1=82=D1=80=20=D0=B2=20=D1=81=D0=BF?= =?UTF-8?q?=D0=B8=D1=81=D0=BA=D0=B8=20#2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- OneCleaner/View/MainWindow.xaml | 26 ++++++++++-- OneCleaner/ViewModel/MainWindowViewModel.cs | 47 +++++++++++++++++++++ 2 files changed, 70 insertions(+), 3 deletions(-) diff --git a/OneCleaner/View/MainWindow.xaml b/OneCleaner/View/MainWindow.xaml index 8d8b026..6ff4380 100644 --- a/OneCleaner/View/MainWindow.xaml +++ b/OneCleaner/View/MainWindow.xaml @@ -22,6 +22,23 @@ + @@ -51,7 +68,8 @@ - + + - + + - + +