11using System ;
2+ using System . Collections . Generic ;
23
34namespace SourceGit . Models
45{
@@ -9,17 +10,18 @@ public enum ChangeViewMode
910 Tree ,
1011 }
1112
13+ [ Flags ]
1214 public enum ChangeState
1315 {
14- None ,
15- Modified ,
16- TypeChanged ,
17- Added ,
18- Deleted ,
19- Renamed ,
20- Copied ,
21- Untracked ,
22- Conflicted ,
16+ None = 0 ,
17+ Modified = 1 << 0 ,
18+ TypeChanged = 1 << 1 ,
19+ Added = 1 << 2 ,
20+ Deleted = 1 << 3 ,
21+ Renamed = 1 << 4 ,
22+ Copied = 1 << 5 ,
23+ Untracked = 1 << 6 ,
24+ Conflicted = 1 << 7 ,
2325 }
2426
2527 public enum ConflictReason
@@ -54,8 +56,8 @@ public class Change
5456 public string ConflictMarker => CONFLICT_MARKERS [ ( int ) ConflictReason ] ;
5557 public string ConflictDesc => CONFLICT_DESCS [ ( int ) ConflictReason ] ;
5658
57- public string WorkTreeDesc => TYPE_DESCS [ ( int ) WorkTree ] ;
58- public string IndexDesc => TYPE_DESCS [ ( int ) Index ] ;
59+ public string WorkTreeDesc => TYPE_DESCS [ GetPrimaryState ( WorkTree ) ] ;
60+ public string IndexDesc => TYPE_DESCS [ GetPrimaryState ( Index ) ] ;
5961
6062 public void Set ( ChangeState index , ChangeState workTree = ChangeState . None )
6163 {
@@ -88,18 +90,43 @@ public void Set(ChangeState index, ChangeState workTree = ChangeState.None)
8890 OriginalPath = OriginalPath . Substring ( 1 , OriginalPath . Length - 2 ) ;
8991 }
9092
91- private static readonly string [ ] TYPE_DESCS =
92- [
93- "Unknown" ,
94- "Modified" ,
95- "Type Changed" ,
96- "Added" ,
97- "Deleted" ,
98- "Renamed" ,
99- "Copied" ,
100- "Untracked" ,
101- "Conflict"
102- ] ;
93+ public static ChangeState GetPrimaryState ( ChangeState state )
94+ {
95+ if ( state == ChangeState . None )
96+ return ChangeState . None ;
97+ if ( ( state & ChangeState . Conflicted ) != 0 )
98+ return ChangeState . Conflicted ;
99+ if ( ( state & ChangeState . Untracked ) != 0 )
100+ return ChangeState . Untracked ;
101+ if ( ( state & ChangeState . Renamed ) != 0 )
102+ return ChangeState . Renamed ;
103+ if ( ( state & ChangeState . Copied ) != 0 )
104+ return ChangeState . Copied ;
105+ if ( ( state & ChangeState . Deleted ) != 0 )
106+ return ChangeState . Deleted ;
107+ if ( ( state & ChangeState . Added ) != 0 )
108+ return ChangeState . Added ;
109+ if ( ( state & ChangeState . TypeChanged ) != 0 )
110+ return ChangeState . TypeChanged ;
111+ if ( ( state & ChangeState . Modified ) != 0 )
112+ return ChangeState . Modified ;
113+
114+ return ChangeState . None ;
115+ }
116+
117+ private static readonly Dictionary < ChangeState , string > TYPE_DESCS = new Dictionary < ChangeState , string >
118+ {
119+ { ChangeState . None , "Unknown" } ,
120+ { ChangeState . Modified , "Modified" } ,
121+ { ChangeState . TypeChanged , "Type Changed" } ,
122+ { ChangeState . Added , "Added" } ,
123+ { ChangeState . Deleted , "Deleted" } ,
124+ { ChangeState . Renamed , "Renamed" } ,
125+ { ChangeState . Copied , "Copied" } ,
126+ { ChangeState . Untracked , "Untracked" } ,
127+ { ChangeState . Conflicted , "Conflict" }
128+ } ;
129+
103130 private static readonly string [ ] CONFLICT_MARKERS =
104131 [
105132 string . Empty ,
0 commit comments