using System.Collections.Generic; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Media; namespace SourceGit.UI { /// /// Confirm to discard changes dialog. /// public partial class Discard : UserControl { private Git.Repository repo = null; private List changes = null; /// /// Constructor. /// /// /// public Discard(Git.Repository opened, List targets) { repo = opened; changes = targets; InitializeComponent(); if (changes == null || changes.Count == 0) { txtPath.Content = "All local changes in working copy."; icon.Data = FindResource("Icon.Folder") as Geometry; } else if (changes.Count == 1) { txtPath.Content = changes[0].Path; } else { txtPath.Content = $"Total {changes.Count} changes ..."; } } /// /// Show this dialog /// /// /// public static void Show(Git.Repository opened, List targets) { var popup = App.Launcher.GetPopupManager(opened); popup?.Show(new Discard(opened, targets)); } private async void Sure(object sender, RoutedEventArgs e) { var popup = App.Launcher.GetPopupManager(repo); popup?.Lock(); await Task.Run(() => repo.Discard(changes)); popup?.Close(true); } private void Cancel(object sender, RoutedEventArgs e) { App.Launcher.GetPopupManager(repo)?.Close(); } } }