1
0
Fork 0
Backup-Essentials/BackupEssentials/Pages/History.xaml.cs

72 lines
3.2 KiB
C#

using BackupEssentials.Backup;
using BackupEssentials.Backup.Data;
using BackupEssentials.Backup.History;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
namespace BackupEssentials.Pages{
public partial class History : Page, IPageResetUI{
public History(){
InitializeComponent();
HistoryListView.Items.Clear();
HistoryListView.ItemsSource = DataStorage.HistoryEntryList;
}
private void ListViewSelectionChanged(object sender, SelectionChangedEventArgs e){
ButtonShowReport.IsEnabled = HistoryListView.SelectedItems.Count == 1;
ButtonRemove.IsEnabled = HistoryListView.SelectedItems.Count >= 1;
}
private void ClickShowReport(object sender, RoutedEventArgs e){
HistoryEntry entry = HistoryListView.SelectedItem as HistoryEntry;
if (entry != null)new BackupReportWindow(entry).Show();
}
private void ClickRemove(object sender, RoutedEventArgs e){
List<HistoryEntry> list = new List<HistoryEntry>(HistoryListView.SelectedItems.Count);
foreach(HistoryEntry entry in HistoryListView.SelectedItems)list.Add(entry);
if (list.Count > 0 && MessageBox.Show(App.Window,Sys.Settings.Default.Language["History.Deletion.Confirmation.",list.Count,list.Count.ToString()],Sys.Settings.Default.Language["History.Deletion.Confirmation.Title"],MessageBoxButton.YesNo,MessageBoxImage.Warning) == MessageBoxResult.Yes){
int index = HistoryListView.SelectedIndex;
foreach(HistoryEntry entry in list){
try{
string path = Path.Combine(HistoryEntry.Directory,entry.Filename);
if (File.Exists(path))File.Delete(path);
DataStorage.HistoryEntryList.Remove(entry);
}catch(Exception ex){
App.LogException(ex);
MessageBoxResult res = MessageBox.Show(App.Window,Sys.Settings.Default.Language["History.Deletion.Failure.Line1",ex.Message]+Environment.NewLine+Sys.Settings.Default.Language["History.Deletion.Failure.Line2",ex.Message],Sys.Settings.Default.Language["History.Deletion.Failure.Title"],MessageBoxButton.YesNoCancel,MessageBoxImage.Error);
if (res == MessageBoxResult.Cancel)break;
else if (res == MessageBoxResult.Yes)DataStorage.HistoryEntryList.Remove(entry);
}
}
if (index > 0)HistoryListView.SelectedIndex = index-1;
else if (HistoryListView.Items.Count > 0)HistoryListView.SelectedIndex = index;
}
}
private void ClickHistoryEntry(object sender, MouseButtonEventArgs e){
if (e.ClickCount == 2){
HistoryEntry entry = HistoryListView.SelectedItem as HistoryEntry;
if (entry != null)new BackupReportWindow(entry).Show();
e.Handled = true; // required to not have the main window steal focus
}
}
void IPageResetUI.OnReset(){
HistoryListView.Items.Refresh();
}
}
}