Skip to content

Commit b6bbe52

Browse files
authored
Feature: Added shortcuts to switch between Preview & Detail panes (#13692)
1 parent 6a35907 commit b6bbe52

File tree

9 files changed

+117
-9
lines changed

9 files changed

+117
-9
lines changed
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
// Copyright (c) 2023 Files Community
2+
// Licensed under the MIT License. See the LICENSE.
3+
4+
namespace Files.App.Actions
5+
{
6+
internal class ToggleDetailsPaneAction : ObservableObject, IToggleAction
7+
{
8+
private readonly PreviewPaneViewModel viewModel;
9+
private readonly IPreviewPaneSettingsService previewSettingsService = Ioc.Default.GetRequiredService<IPreviewPaneSettingsService>();
10+
11+
public string Label
12+
=> "ToggleDetailsPane".GetLocalizedResource();
13+
14+
public string Description
15+
=> "ToggleDetailsPaneDescription".GetLocalizedResource();
16+
17+
public RichGlyph Glyph
18+
=> new(opacityStyle: "ColorIconRightPane");
19+
20+
public HotKey HotKey
21+
=> new(Keys.D, KeyModifiers.MenuCtrl);
22+
23+
public bool IsOn
24+
=> viewModel.IsEnabled;
25+
26+
public ToggleDetailsPaneAction()
27+
{
28+
viewModel = Ioc.Default.GetRequiredService<PreviewPaneViewModel>();
29+
viewModel.PropertyChanged += ViewModel_PropertyChanged;
30+
}
31+
32+
public Task ExecuteAsync()
33+
{
34+
viewModel.IsEnabled = true;
35+
previewSettingsService.ShowPreviewOnly = false;
36+
37+
return Task.CompletedTask;
38+
}
39+
40+
private void ViewModel_PropertyChanged(object? sender, PropertyChangedEventArgs e)
41+
{
42+
if (e.PropertyName is nameof(PreviewPaneViewModel.IsEnabled))
43+
OnPropertyChanged(nameof(IsOn));
44+
}
45+
}
46+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
// Copyright (c) 2023 Files Community
2+
// Licensed under the MIT License. See the LICENSE.
3+
4+
namespace Files.App.Actions
5+
{
6+
internal class ToggleInfoPaneAction : ObservableObject, IToggleAction
7+
{
8+
private readonly PreviewPaneViewModel viewModel;
9+
10+
public string Label
11+
=> "ToggleInfoPane".GetLocalizedResource();
12+
13+
public string Description
14+
=> "ToggleInfoPaneDescription".GetLocalizedResource();
15+
16+
public RichGlyph Glyph
17+
=> new(opacityStyle: "ColorIconRightPane");
18+
19+
public bool IsOn
20+
=> viewModel.IsEnabled;
21+
22+
public ToggleInfoPaneAction()
23+
{
24+
viewModel = Ioc.Default.GetRequiredService<PreviewPaneViewModel>();
25+
viewModel.PropertyChanged += ViewModel_PropertyChanged;
26+
}
27+
28+
public Task ExecuteAsync()
29+
{
30+
viewModel.IsEnabled = !IsOn;
31+
32+
return Task.CompletedTask;
33+
}
34+
35+
private void ViewModel_PropertyChanged(object? sender, PropertyChangedEventArgs e)
36+
{
37+
if (e.PropertyName is nameof(PreviewPaneViewModel.IsEnabled))
38+
OnPropertyChanged(nameof(IsOn));
39+
}
40+
}
41+
}

src/Files.App/Actions/Show/TogglePreviewPaneAction.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ namespace Files.App.Actions
66
internal class TogglePreviewPaneAction : ObservableObject, IToggleAction
77
{
88
private readonly PreviewPaneViewModel viewModel;
9+
private readonly IPreviewPaneSettingsService previewSettingsService = Ioc.Default.GetRequiredService<IPreviewPaneSettingsService>();
910

1011
public string Label
1112
=> "TogglePreviewPane".GetLocalizedResource();
@@ -17,7 +18,7 @@ public RichGlyph Glyph
1718
=> new(opacityStyle: "ColorIconRightPane");
1819

1920
public HotKey HotKey
20-
=> new(Keys.P, KeyModifiers.Ctrl);
21+
=> new(Keys.P, KeyModifiers.MenuCtrl);
2122

2223
public bool IsOn
2324
=> viewModel.IsEnabled;
@@ -30,7 +31,8 @@ public TogglePreviewPaneAction()
3031

3132
public Task ExecuteAsync()
3233
{
33-
viewModel.IsEnabled = !IsOn;
34+
viewModel.IsEnabled = true;
35+
previewSettingsService.ShowPreviewOnly = true;
3436

3537
return Task.CompletedTask;
3638
}

src/Files.App/Data/Commands/CommandCodes.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ public enum CommandCodes
2323
ToggleShowHiddenItems,
2424
ToggleShowFileExtensions,
2525
TogglePreviewPane,
26+
ToggleDetailsPane,
27+
ToggleInfoPane,
2628

2729
// File System
2830
CopyItem,

src/Files.App/Data/Commands/Manager/CommandManager.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ public IRichCommand this[HotKey hotKey]
5151
public IRichCommand ToggleShowHiddenItems => commands[CommandCodes.ToggleShowHiddenItems];
5252
public IRichCommand ToggleShowFileExtensions => commands[CommandCodes.ToggleShowFileExtensions];
5353
public IRichCommand TogglePreviewPane => commands[CommandCodes.TogglePreviewPane];
54+
public IRichCommand ToggleDetailsPane => commands[CommandCodes.ToggleDetailsPane];
55+
public IRichCommand ToggleInfoPane => commands[CommandCodes.ToggleInfoPane];
5456
public IRichCommand SelectAll => commands[CommandCodes.SelectAll];
5557
public IRichCommand InvertSelection => commands[CommandCodes.InvertSelection];
5658
public IRichCommand ClearSelection => commands[CommandCodes.ClearSelection];
@@ -212,6 +214,8 @@ public CommandManager()
212214
[CommandCodes.ToggleShowHiddenItems] = new ToggleShowHiddenItemsAction(),
213215
[CommandCodes.ToggleShowFileExtensions] = new ToggleShowFileExtensionsAction(),
214216
[CommandCodes.TogglePreviewPane] = new TogglePreviewPaneAction(),
217+
[CommandCodes.ToggleDetailsPane] = new ToggleDetailsPaneAction(),
218+
[CommandCodes.ToggleInfoPane] = new ToggleInfoPaneAction(),
215219
[CommandCodes.SelectAll] = new SelectAllAction(),
216220
[CommandCodes.InvertSelection] = new InvertSelectionAction(),
217221
[CommandCodes.ClearSelection] = new ClearSelectionAction(),

src/Files.App/Data/Commands/Manager/ICommandManager.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public interface ICommandManager : IEnumerable<IRichCommand>
2525
IRichCommand ToggleShowHiddenItems { get; }
2626
IRichCommand ToggleShowFileExtensions { get; }
2727
IRichCommand TogglePreviewPane { get; }
28+
IRichCommand ToggleInfoPane { get; }
2829

2930
IRichCommand CopyItem { get; }
3031
IRichCommand CopyPath { get; }

src/Files.App/Strings/en-US/Resources.resw

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1053,6 +1053,15 @@
10531053
<data name="TogglePreviewPane" xml:space="preserve">
10541054
<value>Toggle the preview pane</value>
10551055
</data>
1056+
<data name="ToggleDetailsPane" xml:space="preserve">
1057+
<value>Toggle the details pane</value>
1058+
</data>
1059+
<data name="ToggleInfoPane" xml:space="preserve">
1060+
<value>Toggle the details/preview pane</value>
1061+
</data>
1062+
<data name="ToggleInfoPaneDescription" xml:space="preserve">
1063+
<value>Toggles the details/preview pane</value>
1064+
</data>
10561065
<data name="DetailsPanePreviewNotAvaliableText" xml:space="preserve">
10571066
<value>No preview available</value>
10581067
</data>
@@ -2397,6 +2406,9 @@
23972406
<data name="TogglePreviewPaneDescription" xml:space="preserve">
23982407
<value>Toggle whether to show preview pane</value>
23992408
</data>
2409+
<data name="ToggleDetailsPaneDescription" xml:space="preserve">
2410+
<value>Toggle the details pane</value>
2411+
</data>
24002412
<data name="ToggleSidebarDescription" xml:space="preserve">
24012413
<value>Toggle whether to show sidebar</value>
24022414
</data>

src/Files.App/UserControls/FilePreviews/MediaPreview.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
<KeyboardAccelerator
1717
Key="Space"
1818
Invoked="TogglePlaybackAcceleratorInvoked"
19-
Modifiers="Control" />
19+
Modifiers="Menu" />
2020
</UserControl.KeyboardAccelerators>
2121

2222
<Border CornerRadius="{StaticResource ControlCornerRadius}">

src/Files.App/UserControls/InnerNavigationToolbar.xaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -911,19 +911,19 @@
911911

912912
</AppBarButton>
913913

914-
<!-- Toggle Preview Pane -->
914+
<!-- Toggle Preview\Details Pane -->
915915
<AppBarToggleButton
916916
x:Name="PreviewPane"
917917
Width="Auto"
918918
MinWidth="40"
919919
AccessKey="P"
920-
AutomationProperties.Name="{x:Bind Commands.TogglePreviewPane.AutomationName}"
921-
IsChecked="{x:Bind Commands.TogglePreviewPane.IsOn, Mode=TwoWay}"
922-
Label="{x:Bind Commands.TogglePreviewPane.Label}"
920+
AutomationProperties.Name="{x:Bind Commands.ToggleInfoPane.AutomationName}"
921+
IsChecked="{x:Bind Commands.ToggleInfoPane.IsOn, Mode=TwoWay}"
922+
Label="{x:Bind Commands.ToggleInfoPane.Label}"
923923
LabelPosition="Collapsed"
924-
ToolTipService.ToolTip="{x:Bind Commands.TogglePreviewPane.LabelWithHotKey, Mode=OneWay}"
924+
ToolTipService.ToolTip="{x:Bind Commands.ToggleInfoPane.LabelWithHotKey, Mode=OneWay}"
925925
Visibility="{x:Bind ShowPreviewPaneButton, Mode=OneWay}">
926-
<local:OpacityIcon IsSelected="{x:Bind Commands.TogglePreviewPane.IsOn, Mode=OneWay}" Style="{x:Bind Commands.TogglePreviewPane.OpacityStyle}" />
926+
<local:OpacityIcon IsSelected="{x:Bind Commands.ToggleInfoPane.IsOn, Mode=OneWay}" Style="{x:Bind Commands.ToggleInfoPane.OpacityStyle}" />
927927
</AppBarToggleButton>
928928

929929
<!-- 3 Dots Commands -->

0 commit comments

Comments
 (0)