3
3
4
4
namespace SourceGit . ViewModels
5
5
{
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
+
6
33
public class Discard : Popup
7
34
{
8
35
public object Mode
9
36
{
10
37
get ;
11
- private set ;
12
38
}
13
39
14
40
public Discard ( Repository repo )
15
41
{
16
42
_repo = repo ;
17
43
18
- Mode = new Models . Null ( ) ;
44
+ Mode = new DiscardAllMode ( ) ;
19
45
View = new Views . Discard { DataContext = this } ;
20
46
}
21
47
@@ -25,11 +51,11 @@ public Discard(Repository repo, List<Models.Change> changes)
25
51
_changes = changes ;
26
52
27
53
if ( _changes == null )
28
- Mode = new Models . Null ( ) ;
54
+ Mode = new DiscardAllMode ( ) ;
29
55
else if ( _changes . Count == 1 )
30
- Mode = _changes [ 0 ] . Path ;
56
+ Mode = new DiscardSingleFile ( ) { Path = _changes [ 0 ] . Path } ;
31
57
else
32
- Mode = _changes . Count ;
58
+ Mode = new DiscardMultipleFiles ( ) { Count = _changes . Count } ;
33
59
34
60
View = new Views . Discard ( ) { DataContext = this } ;
35
61
}
@@ -41,8 +67,8 @@ public override Task<bool> Sure()
41
67
42
68
return Task . Run ( ( ) =>
43
69
{
44
- if ( _changes == null )
45
- Commands . Discard . All ( _repo . FullPath ) ;
70
+ if ( Mode is DiscardAllMode all )
71
+ Commands . Discard . All ( _repo . FullPath , all . IncludeIgnored ) ;
46
72
else
47
73
Commands . Discard . Changes ( _repo . FullPath , _changes ) ;
48
74
0 commit comments