Skip to content

Commit 3712ddf

Browse files
authored
RichCommand: TogglePreviewPane (#11578)
1 parent e6c5843 commit 3712ddf

File tree

10 files changed

+51
-33
lines changed

10 files changed

+51
-33
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
using CommunityToolkit.Mvvm.ComponentModel;
2+
using Files.App.Commands;
3+
using Files.App.Extensions;
4+
using Files.App.ViewModels;
5+
using System.ComponentModel;
6+
using System.Threading.Tasks;
7+
using Windows.System;
8+
9+
namespace Files.App.Actions
10+
{
11+
internal class TogglePreviewPaneAction : ObservableObject, IToggleAction
12+
{
13+
private readonly PreviewPaneViewModel viewModel = App.PreviewPaneViewModel;
14+
15+
public string Label { get; } = "TogglePreviewPane".GetLocalizedResource();
16+
17+
public RichGlyph Glyph { get; } = new(opacityStyle: "ColorIconRightPane");
18+
public HotKey HotKey { get; } = new(VirtualKey.P, VirtualKeyModifiers.Control);
19+
20+
public bool IsOn => viewModel.IsEnabled;
21+
22+
public TogglePreviewPaneAction()
23+
{
24+
viewModel.PropertyChanged += ViewModel_PropertyChanged;
25+
}
26+
27+
public Task ExecuteAsync()
28+
{
29+
viewModel.IsEnabled = !IsOn;
30+
return Task.CompletedTask;
31+
}
32+
33+
private void ViewModel_PropertyChanged(object? sender, PropertyChangedEventArgs e)
34+
{
35+
if (e.PropertyName is nameof(PreviewPaneViewModel.IsEnabled))
36+
OnPropertyChanged(nameof(IsOn));
37+
}
38+
}
39+
}

src/Files.App/Commands/CommandCodes.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public enum CommandCodes
1111
// Show
1212
ToggleShowHiddenItems,
1313
ToggleShowFileExtensions,
14+
TogglePreviewPane,
1415

1516
// File System
1617
CopyItem,

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ internal class CommandManager : ICommandManager
3434
public IRichCommand ToggleFullScreen => commands[CommandCodes.ToggleFullScreen];
3535
public IRichCommand ToggleShowHiddenItems => commands[CommandCodes.ToggleShowHiddenItems];
3636
public IRichCommand ToggleShowFileExtensions => commands[CommandCodes.ToggleShowFileExtensions];
37+
public IRichCommand TogglePreviewPane => commands[CommandCodes.TogglePreviewPane];
3738
public IRichCommand MultiSelect => commands[CommandCodes.MultiSelect];
3839
public IRichCommand SelectAll => commands[CommandCodes.SelectAll];
3940
public IRichCommand InvertSelection => commands[CommandCodes.InvertSelection];
@@ -82,6 +83,7 @@ public CommandManager()
8283
[CommandCodes.ToggleFullScreen] = new ToggleFullScreenAction(),
8384
[CommandCodes.ToggleShowHiddenItems] = new ToggleShowHiddenItemsAction(),
8485
[CommandCodes.ToggleShowFileExtensions] = new ToggleShowFileExtensionsAction(),
86+
[CommandCodes.TogglePreviewPane] = new TogglePreviewPaneAction(),
8587
[CommandCodes.MultiSelect] = new MultiSelectAction(),
8688
[CommandCodes.SelectAll] = new SelectAllAction(),
8789
[CommandCodes.InvertSelection] = new InvertSelectionAction(),

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ public interface ICommandManager : IEnumerable<IRichCommand>
1717

1818
IRichCommand ToggleShowHiddenItems { get; }
1919
IRichCommand ToggleShowFileExtensions { get; }
20+
IRichCommand TogglePreviewPane { get; }
2021

2122
IRichCommand CopyItem { get; }
2223
IRichCommand CutItem { get; }

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1065,9 +1065,6 @@
10651065
<data name="NavToolbarDetails.ToolTipService.ToolTip" xml:space="preserve">
10661066
<value>Details (Ctrl+Shift+1)</value>
10671067
</data>
1068-
<data name="PreviewPaneToggle.Label" xml:space="preserve">
1069-
<value>Preview</value>
1070-
</data>
10711068
<data name="NavToolbarLargeIcons.ToolTipService.ToolTip" xml:space="preserve">
10721069
<value>Large Icons (Ctrl+Shift+5)</value>
10731070
</data>
@@ -1134,8 +1131,8 @@
11341131
<data name="DesiredName" xml:space="preserve">
11351132
<value>Desired name</value>
11361133
</data>
1137-
<data name="PreviewPaneToggle.ToolTipService.ToolTip" xml:space="preserve">
1138-
<value>Toggle the preview pane (Ctrl+P)</value>
1134+
<data name="TogglePreviewPane" xml:space="preserve">
1135+
<value>Toggle the preview pane</value>
11391136
</data>
11401137
<data name="DetailsPanePreviewNotAvaliableText" xml:space="preserve">
11411138
<value>No preview available</value>

src/Files.App/UserControls/InnerNavigationToolbar.xaml

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -792,17 +792,13 @@
792792
x:Name="PreviewPane"
793793
Width="Auto"
794794
MinWidth="40"
795-
AccessKey="P"
796-
AutomationProperties.Name="{helpers:ResourceString Name=PreviewPaneToggle/AutomationProperties/Name}"
797-
IsChecked="{x:Bind PreviewPaneViewModel.IsEnabled, Mode=TwoWay}"
798-
IsEnabled="{x:Bind ShowPreviewPaneButton, Mode=OneWay}"
799-
Label="{helpers:ResourceString Name=PreviewPaneToggle/Label}"
795+
AutomationProperties.Name="{x:Bind Commands.TogglePreviewPane.AutomationName}"
796+
Content="{x:Bind Commands.TogglePreviewPane.Icon}"
797+
IsChecked="{x:Bind Commands.TogglePreviewPane.IsOn, Mode=TwoWay}"
798+
Label="{x:Bind Commands.TogglePreviewPane.Label}"
800799
LabelPosition="Collapsed"
801-
ToolTipService.ToolTip="{helpers:ResourceString Name=PreviewPaneToggle/ToolTipService/ToolTip}"
802-
Visibility="{x:Bind ShowPreviewPaneButton, Mode=OneWay}">
803-
804-
<local:OpacityIcon Style="{StaticResource ColorIconRightPane}" />
805-
</AppBarToggleButton>
800+
ToolTipService.ToolTip="{x:Bind Commands.TogglePreviewPane.LabelWithHotKey, Mode=OneWay}"
801+
Visibility="{x:Bind ShowPreviewPaneButton, Mode=OneWay}" />
806802
<CommandBar.SecondaryCommands>
807803
<AppBarButton
808804
x:Name="NavToolbarNewPane"

src/Files.App/Views/ColumnShellPage.xaml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,6 @@
100100
Invoked="KeyboardAccelerator_Invoked"
101101
IsEnabled="{x:Bind IsCurrentInstance, Mode=OneWay}"
102102
Modifiers="None" />
103-
<KeyboardAccelerator
104-
Key="P"
105-
Invoked="KeyboardAccelerator_Invoked"
106-
IsEnabled="{x:Bind IsCurrentInstance, Mode=OneWay}"
107-
Modifiers="Control" />
108103
<KeyboardAccelerator
109104
Key="F"
110105
Invoked="KeyboardAccelerator_Invoked"

src/Files.App/Views/ColumnShellPage.xaml.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -215,10 +215,6 @@ private async void KeyboardAccelerator_Invoked(KeyboardAccelerator sender, Keybo
215215
}
216216
break;
217217

218-
case (true, false, false, true, VirtualKey.P): // ctrl + p, toggle preview pane
219-
App.PreviewPaneViewModel.IsEnabled = !App.PreviewPaneViewModel.IsEnabled;
220-
break;
221-
222218
case (true, false, false, true, VirtualKey.R): // ctrl + r, refresh
223219
if (ToolbarViewModel.CanRefresh)
224220
Refresh_Click();

src/Files.App/Views/ModernShellPage.xaml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -104,11 +104,6 @@
104104
Invoked="KeyboardAccelerator_Invoked"
105105
IsEnabled="{x:Bind IsCurrentInstance, Mode=OneWay}"
106106
Modifiers="None" />
107-
<KeyboardAccelerator
108-
Key="P"
109-
Invoked="KeyboardAccelerator_Invoked"
110-
IsEnabled="{x:Bind IsCurrentInstance, Mode=OneWay}"
111-
Modifiers="Control" />
112107
<KeyboardAccelerator
113108
Key="F"
114109
Invoked="KeyboardAccelerator_Invoked"

src/Files.App/Views/ModernShellPage.xaml.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -281,10 +281,6 @@ private async void KeyboardAccelerator_Invoked(KeyboardAccelerator sender, Keybo
281281

282282
break;
283283

284-
case (true, false, false, true, VirtualKey.P): // ctrl + p, toggle preview pane
285-
App.PreviewPaneViewModel.IsEnabled = !App.PreviewPaneViewModel.IsEnabled;
286-
break;
287-
288284
case (true, false, false, true, VirtualKey.R): // ctrl + r, refresh
289285
if (ToolbarViewModel.CanRefresh)
290286
Refresh_Click();

0 commit comments

Comments
 (0)