33
44namespace SourceGit . ViewModels
55{
6+ public class DiscardAllMode
7+ {
8+ public bool IncludeIgnored
9+ {
10+ get ;
11+ set ;
12+ } = false ;
13+ }
14+
15+ public class DiscardSingleFile
16+ {
17+ public string Path
18+ {
19+ get ;
20+ set ;
21+ } = string . Empty ;
22+ }
23+
24+ public class DiscardMultipleFiles
25+ {
26+ public int Count
27+ {
28+ get ;
29+ set ;
30+ } = 0 ;
31+ }
32+
633 public class Discard : Popup
734 {
835 public object Mode
936 {
1037 get ;
11- private set ;
1238 }
1339
1440 public Discard ( Repository repo )
1541 {
1642 _repo = repo ;
1743
18- Mode = new Models . Null ( ) ;
44+ Mode = new DiscardAllMode ( ) ;
1945 View = new Views . Discard { DataContext = this } ;
2046 }
2147
@@ -25,11 +51,11 @@ public Discard(Repository repo, List<Models.Change> changes)
2551 _changes = changes ;
2652
2753 if ( _changes == null )
28- Mode = new Models . Null ( ) ;
54+ Mode = new DiscardAllMode ( ) ;
2955 else if ( _changes . Count == 1 )
30- Mode = _changes [ 0 ] . Path ;
56+ Mode = new DiscardSingleFile ( ) { Path = _changes [ 0 ] . Path } ;
3157 else
32- Mode = _changes . Count ;
58+ Mode = new DiscardMultipleFiles ( ) { Count = _changes . Count } ;
3359
3460 View = new Views . Discard ( ) { DataContext = this } ;
3561 }
@@ -41,8 +67,8 @@ public override Task<bool> Sure()
4167
4268 return Task . Run ( ( ) =>
4369 {
44- if ( _changes == null )
45- Commands . Discard . All ( _repo . FullPath ) ;
70+ if ( Mode is DiscardAllMode all )
71+ Commands . Discard . All ( _repo . FullPath , all . IncludeIgnored ) ;
4672 else
4773 Commands . Discard . Changes ( _repo . FullPath , _changes ) ;
4874
0 commit comments