Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit 797d1b8

Browse files
authored
Merge pull request #1106 from github/feature/highlight-current-pr
Highlight checked out PR in list.
2 parents 9c045e9 + 0d699b0 commit 797d1b8

File tree

11 files changed

+203
-121
lines changed

11 files changed

+203
-121
lines changed

src/GitHub.App/SampleData/PullRequestListViewModelDesigner.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public PullRequestListViewModelDesigner()
5858

5959
public IReadOnlyList<IRemoteRepositoryModel> Repositories { get; }
6060
public IRemoteRepositoryModel SelectedRepository { get; set; }
61-
61+
public IPullRequestModel CheckedOutPullRequest { get; set; }
6262
public ITrackingCollection<IPullRequestModel> PullRequests { get; set; }
6363
public IPullRequestModel SelectedPullRequest { get; set; }
6464

src/GitHub.App/ViewModels/GitHubPane/PullRequestListViewModel.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,12 @@ public class PullRequestListViewModel : PanePageViewModelBase, IPullRequestListV
4141
public PullRequestListViewModel(
4242
IModelServiceFactory modelServiceFactory,
4343
IPackageSettings settings,
44+
IPullRequestSessionManager sessionManager,
4445
IVisualStudioBrowser visualStudioBrowser)
4546
{
4647
Guard.ArgumentNotNull(modelServiceFactory, nameof(modelServiceFactory));
4748
Guard.ArgumentNotNull(settings, nameof(settings));
49+
Guard.ArgumentNotNull(sessionManager, nameof(sessionManager));
4850
Guard.ArgumentNotNull(visualStudioBrowser, nameof(visualStudioBrowser));
4951

5052
constructing = true;
@@ -100,6 +102,19 @@ public PullRequestListViewModel(
100102
OpenPullRequestOnGitHub = ReactiveCommand.Create();
101103
OpenPullRequestOnGitHub.Subscribe(x => DoOpenPullRequestOnGitHub((int)x));
102104

105+
// Get the current pull request session and the selected repository. When the session's
106+
// repository is the same as our selected repository set CheckedOutPullRequest to the
107+
// current session's model, so that the checked out PR can be highlighted.
108+
Observable.CombineLatest(
109+
sessionManager.WhenAnyValue(x => x.CurrentSession),
110+
this.WhenAnyValue(x => x.SelectedRepository),
111+
(s, r) => new { Session = s, Repository = r })
112+
.Subscribe(x =>
113+
{
114+
CheckedOutPullRequest = x.Session?.RepositoryOwner == x.Repository?.Owner ?
115+
x.Session?.PullRequest : null;
116+
});
117+
103118
constructing = false;
104119
}
105120

@@ -245,6 +260,13 @@ public IPullRequestModel SelectedPullRequest
245260
set { this.RaiseAndSetIfChanged(ref selectedPullRequest, value); }
246261
}
247262

263+
IPullRequestModel checkedOutPullRequest;
264+
public IPullRequestModel CheckedOutPullRequest
265+
{
266+
get { return checkedOutPullRequest; }
267+
set { this.RaiseAndSetIfChanged(ref checkedOutPullRequest, value); }
268+
}
269+
248270
IReadOnlyList<PullRequestState> states;
249271
public IReadOnlyList<PullRequestState> States
250272
{

src/GitHub.Exports.Reactive/ViewModels/GitHubPane/IPullRequestListViewModel.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public interface IPullRequestListViewModel : ISearchablePageViewModel, IOpenInBr
3333
IRemoteRepositoryModel SelectedRepository { get; set; }
3434
ITrackingCollection<IPullRequestModel> PullRequests { get; }
3535
IPullRequestModel SelectedPullRequest { get; }
36+
IPullRequestModel CheckedOutPullRequest { get; }
3637
IReadOnlyList<PullRequestState> States { get; set; }
3738
PullRequestState SelectedState { get; set; }
3839
ObservableCollection<IAccount> Authors { get; }
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
using System;
2+
using System.Globalization;
3+
using System.Windows;
4+
5+
namespace GitHub.UI
6+
{
7+
[Localizability(LocalizationCategory.NeverLocalize)]
8+
public sealed class EqualityConverter : MultiValueConverterMarkupExtension<EqualityConverter>
9+
{
10+
public override object Convert(
11+
object[] value,
12+
Type targetType,
13+
object parameter,
14+
CultureInfo culture)
15+
{
16+
if (value.Length == 2)
17+
{
18+
return Equals(value[0], value[1]);
19+
}
20+
21+
return false;
22+
}
23+
24+
public override object[] ConvertBack(
25+
object value,
26+
Type[] targetType,
27+
object parameter,
28+
CultureInfo culture)
29+
{
30+
return null;
31+
}
32+
}
33+
}

src/GitHub.UI/GitHub.UI.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989
<DependentUpon>Spinner.xaml</DependentUpon>
9090
</Compile>
9191
<Compile Include="Converters\AllCapsConverter.cs" />
92+
<Compile Include="Converters\EqualityConverter.cs" />
9293
<Compile Include="Converters\EqualsToVisibilityConverter.cs" />
9394
<Compile Include="Converters\MultiBooleanToVisibilityConverter.cs" />
9495
<Compile Include="Converters\NullToVisibilityConverter.cs" />

src/GitHub.VisualStudio.UI/Styles/ThemeBlue.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,5 @@
6363
<SolidColorBrush x:Key="GitHubDiffGlyphFill.None" Color="#9EC7FF" />
6464

6565
<SolidColorBrush x:Key="GitHubPeekViewBackground" Color="#F5F5F5" />
66+
<SolidColorBrush x:Key="GitHubMultilineListItemActiveBrush" Color="#FFCCCEDB"/>
6667
</ResourceDictionary>

src/GitHub.VisualStudio.UI/Styles/ThemeDark.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,5 @@
6363
<SolidColorBrush x:Key="GitHubDiffGlyphFill.None" Color="#569CD6" />
6464

6565
<SolidColorBrush x:Key="GitHubPeekViewBackground" Color="#252526" />
66+
<SolidColorBrush x:Key="GitHubMultilineListItemActiveBrush" Color="#FF3F3F46"/>
6667
</ResourceDictionary>

src/GitHub.VisualStudio.UI/Styles/ThemeLight.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,4 +63,5 @@
6363
<SolidColorBrush x:Key="GitHubDiffGlyphFill.None" Color="#9EC7FF" />
6464

6565
<SolidColorBrush x:Key="GitHubPeekViewBackground" Color="#F5F5F5" />
66+
<SolidColorBrush x:Key="GitHubMultilineListItemActiveBrush" Color="#FFCCCEDB"/>
6667
</ResourceDictionary>

0 commit comments

Comments
 (0)