namespace SourceGit.Models { public enum ChangeViewMode { List, Grid, Tree, } public enum ChangeState { None, Modified, Added, Deleted, Renamed, Copied, Unmerged, Untracked } public class Change { public ChangeState Index { get; set; } public ChangeState WorkTree { get; set; } = ChangeState.None; public string Path { get; set; } = ""; public string OriginalPath { get; set; } = ""; public bool IsConflit { get { if (Index == ChangeState.Unmerged || WorkTree == ChangeState.Unmerged) return true; if (Index == ChangeState.Added && WorkTree == ChangeState.Added) return true; if (Index == ChangeState.Deleted && WorkTree == ChangeState.Deleted) return true; return false; } } public void Set(ChangeState index, ChangeState workTree = ChangeState.None) { Index = index; WorkTree = workTree; if (index == ChangeState.Renamed || workTree == ChangeState.Renamed) { var idx = Path.IndexOf('\t'); if (idx >= 0) { OriginalPath = Path.Substring(0, idx); Path = Path.Substring(idx + 1); } else { idx = Path.IndexOf(" -> "); if (idx > 0) { OriginalPath = Path.Substring(0, idx); Path = Path.Substring(idx + 4); } } } if (Path[0] == '"') Path = Path.Substring(1, Path.Length - 2); if (!string.IsNullOrEmpty(OriginalPath) && OriginalPath[0] == '"') OriginalPath = OriginalPath.Substring(1, OriginalPath.Length - 2); } } }