Skip to content
This repository was archived by the owner on Dec 5, 2024. It is now read-only.

Commit e4fa5d0

Browse files
Merge branch 'enhancements/history-list-view' into enhancements/history-detail-tree-view
2 parents fda7f6f + 4f7ceac commit e4fa5d0

File tree

9 files changed

+724
-777
lines changed

9 files changed

+724
-777
lines changed

src/GitHub.Api/Git/GitLogEntry.cs

Lines changed: 102 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,54 @@ public struct GitLogEntry
1111
private const string Today = "Today";
1212
private const string Yesterday = "Yesterday";
1313

14-
public string CommitID;
15-
public string MergeA;
16-
public string MergeB;
17-
public string AuthorName;
18-
public string AuthorEmail;
19-
public string CommitEmail;
20-
public string CommitName;
21-
public string Summary;
22-
public string Description;
23-
public string TimeString;
24-
public string CommitTimeString;
25-
public List<GitStatusEntry> Changes;
26-
27-
public string ShortID
14+
public static GitLogEntry Default = new GitLogEntry(String.Empty, String.Empty, String.Empty, String.Empty, String.Empty, String.Empty, String.Empty, DateTimeOffset.MinValue, DateTimeOffset.MinValue, new List<GitStatusEntry>(), String.Empty, String.Empty);
15+
16+
public string commitID;
17+
public string mergeA;
18+
public string mergeB;
19+
public string authorName;
20+
public string authorEmail;
21+
public string commitEmail;
22+
public string commitName;
23+
public string summary;
24+
public string description;
25+
public string timeString;
26+
public string commitTimeString;
27+
public List<GitStatusEntry> changes;
28+
29+
public GitLogEntry(string commitID,
30+
string authorName, string authorEmail,
31+
string commitName, string commitEmail,
32+
string summary,
33+
string description,
34+
DateTimeOffset time, DateTimeOffset commitTime,
35+
List<GitStatusEntry> changes,
36+
string mergeA = null, string mergeB = null) : this()
2837
{
29-
get { return CommitID.Length < 7 ? CommitID : CommitID.Substring(0, 7); }
38+
Guard.ArgumentNotNull(commitID, "commitID");
39+
Guard.ArgumentNotNull(authorName, "authorName");
40+
Guard.ArgumentNotNull(authorEmail, "authorEmail");
41+
Guard.ArgumentNotNull(commitEmail, "commitEmail");
42+
Guard.ArgumentNotNull(commitName, "commitName");
43+
Guard.ArgumentNotNull(summary, "summary");
44+
Guard.ArgumentNotNull(description, "description");
45+
Guard.ArgumentNotNull(changes, "changes");
46+
47+
this.commitID = commitID;
48+
this.authorName = authorName;
49+
this.authorEmail = authorEmail;
50+
this.commitEmail = commitEmail;
51+
this.commitName = commitName;
52+
this.summary = summary;
53+
this.description = description;
54+
55+
Time = time;
56+
CommitTime = commitTime;
57+
58+
this.changes = changes;
59+
60+
this.mergeA = mergeA ?? string.Empty;
61+
this.mergeB = mergeB ?? string.Empty;
3062
}
3163

3264
public string PrettyTimeString
@@ -49,37 +81,78 @@ public DateTimeOffset Time
4981
{
5082
if (!timeValue.HasValue)
5183
{
52-
timeValue = DateTimeOffset.Parse(TimeString);
84+
DateTimeOffset result;
85+
if (DateTimeOffset.TryParseExact(TimeString, Constants.Iso8601Format, CultureInfo.InvariantCulture,DateTimeStyles.None, out result))
86+
{
87+
timeValue = result;
88+
}
89+
else
90+
{
91+
Time = DateTimeOffset.MinValue;
92+
}
5393
}
54-
94+
5595
return timeValue.Value;
5696
}
97+
private set
98+
{
99+
timeString = value.ToString(Constants.Iso8601Format);
100+
timeValue = value;
101+
}
57102
}
58103

59104
[NonSerialized] private DateTimeOffset? commitTimeValue;
60-
public DateTimeOffset? CommitTime
105+
public DateTimeOffset CommitTime
61106
{
62107
get
63108
{
64-
if (!timeValue.HasValue && !string.IsNullOrEmpty(CommitTimeString))
109+
if (!commitTimeValue.HasValue)
65110
{
66-
commitTimeValue = DateTimeOffset.Parse(CommitTimeString);
111+
DateTimeOffset result;
112+
if (DateTimeOffset.TryParseExact(CommitTimeString, Constants.Iso8601Format, CultureInfo.InvariantCulture, DateTimeStyles.None, out result))
113+
{
114+
commitTimeValue = result;
115+
}
116+
else
117+
{
118+
CommitTime = DateTimeOffset.MinValue;
119+
}
67120
}
68121

69-
return commitTimeValue;
122+
return commitTimeValue.Value;
123+
}
124+
private set
125+
{
126+
commitTimeString = value.ToString(Constants.Iso8601Format);
127+
commitTimeValue = value;
70128
}
71129
}
72130

73-
public void Clear()
74-
{
75-
CommitID = MergeA = MergeB = AuthorName = AuthorEmail = Summary = Description = "";
131+
public string ShortID => CommitID.Length < 7 ? CommitID : CommitID.Substring(0, 7);
76132

77-
timeValue = DateTimeOffset.MinValue;
78-
TimeString = timeValue.Value.ToString(DateTimeFormatInfo.CurrentInfo);
133+
public string CommitID => commitID;
79134

80-
commitTimeValue = null;
81-
CommitTimeString = null;
82-
}
135+
public string MergeA => mergeA;
136+
137+
public string MergeB => mergeB;
138+
139+
public string AuthorName => authorName;
140+
141+
public string AuthorEmail => authorEmail;
142+
143+
public string CommitEmail => commitEmail;
144+
145+
public string CommitName => commitName;
146+
147+
public string Summary => summary;
148+
149+
public string Description => description;
150+
151+
public string TimeString => timeString;
152+
153+
public string CommitTimeString => commitTimeString;
154+
155+
public List<GitStatusEntry> Changes => changes;
83156

84157
public override string ToString()
85158
{

src/GitHub.Api/OutputProcessors/LogEntryOutputProcessor.cs

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -317,21 +317,16 @@ private void ReturnGitLogEntry()
317317

318318
if (time.HasValue)
319319
{
320-
RaiseOnEntry(new GitLogEntry()
321-
{
322-
AuthorName = authorName,
323-
CommitName = committerName,
324-
MergeA = mergeA,
325-
MergeB = mergeB,
326-
Changes = changes,
327-
AuthorEmail = authorEmail,
328-
CommitEmail = committerEmail,
329-
Summary = summary,
330-
Description = description,
331-
CommitID = commitId,
332-
TimeString = time.Value.ToString(Constants.Iso8601Format),
333-
CommitTimeString = committerTime.Value.ToString(Constants.Iso8601Format)
334-
});
320+
var gitLogEntry = new GitLogEntry(commitId,
321+
authorName, authorEmail,
322+
committerName, committerEmail,
323+
summary,
324+
description,
325+
time.Value, committerTime.Value,
326+
changes,
327+
mergeA, mergeB);
328+
329+
RaiseOnEntry(gitLogEntry);
335330
}
336331

337332
Reset();

src/UnityExtension/Assets/Editor/GitHub.Unity/Misc/Styles.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ class Styles
6464
headerDescriptionStyle,
6565
historyToolbarButtonStyle,
6666
historyLockStyle,
67+
historyEntrySummaryStyle,
6768
historyEntryDetailsStyle,
6869
historyEntryDetailsRightStyle,
6970
historyFileTreeBoxStyle,
@@ -396,6 +397,20 @@ public static GUIStyle HistoryLockStyle
396397
return historyLockStyle;
397398
}
398399
}
400+
public static GUIStyle HistoryEntrySummaryStyle
401+
{
402+
get
403+
{
404+
if (historyEntrySummaryStyle == null)
405+
{
406+
historyEntrySummaryStyle = new GUIStyle(Label);
407+
historyEntrySummaryStyle.name = "HistoryEntrySummaryStyle";
408+
409+
historyEntrySummaryStyle.contentOffset = new Vector2(BaseSpacing * 2, 0);
410+
}
411+
return historyEntrySummaryStyle;
412+
}
413+
}
399414

400415
public static GUIStyle HistoryEntryDetailsStyle
401416
{
@@ -412,6 +427,8 @@ public static GUIStyle HistoryEntryDetailsStyle
412427
historyEntryDetailsStyle.onNormal.textColor = Label.onNormal.textColor;
413428
historyEntryDetailsStyle.onFocused.background = Label.onFocused.background;
414429
historyEntryDetailsStyle.onFocused.textColor = Label.onFocused.textColor;
430+
431+
historyEntryDetailsStyle.contentOffset = new Vector2(BaseSpacing * 2, 0);
415432
}
416433
return historyEntryDetailsStyle;
417434
}

src/UnityExtension/Assets/Editor/GitHub.Unity/UI/ChangesView.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,17 @@ class ChangesView : Subview
2525
[SerializeField] private string commitBody = "";
2626
[SerializeField] private string commitMessage = "";
2727
[SerializeField] private string currentBranch = "[unknown]";
28-
[SerializeField] private Vector2 scroll;
29-
[SerializeField] private CacheUpdateEvent lastCurrentBranchChangedEvent;
30-
[SerializeField] private CacheUpdateEvent lastStatusEntriesChangedEvent;
28+
29+
[SerializeField] private Vector2 treeScroll;
3130
[SerializeField] private ChangesTree treeChanges;
31+
3232
[SerializeField] private List<GitStatusEntry> gitStatusEntries;
33+
3334
[SerializeField] private string changedFilesText = NoChangedFilesLabel;
3435

36+
[SerializeField] private CacheUpdateEvent lastCurrentBranchChangedEvent;
37+
[SerializeField] private CacheUpdateEvent lastStatusEntriesChangedEvent;
38+
3539
public override void OnEnable()
3640
{
3741
base.OnEnable();
@@ -81,7 +85,7 @@ public override void OnGUI()
8185
GUILayout.BeginHorizontal();
8286
GUILayout.BeginVertical(Styles.CommitFileAreaStyle);
8387
{
84-
scroll = GUILayout.BeginScrollView(scroll);
88+
treeScroll = GUILayout.BeginScrollView(treeScroll);
8589
{
8690
OnTreeGUI(new Rect(0f, 0f, Position.width, Position.height - rect.height + Styles.CommitAreaPadding));
8791
}
@@ -111,7 +115,7 @@ private void OnTreeGUI(Rect rect)
111115
treeChanges.FocusedTreeNodeStyle = Styles.FocusedTreeNode;
112116
treeChanges.FocusedActiveTreeNodeStyle = Styles.FocusedActiveTreeNode;
113117

114-
rect = treeChanges.Render(initialRect, rect, scroll,
118+
rect = treeChanges.Render(initialRect, rect, treeScroll,
115119
node => { },
116120
node => {
117121
},

0 commit comments

Comments
 (0)