Skip to content

Commit 4826f55

Browse files
authored
Code Quality: Refactor preview/info pane phase 1 (#13895)
1 parent ee4bc61 commit 4826f55

25 files changed

+150
-93
lines changed

src/Files.App/Actions/Content/ImageManipulation/BaseRotateAction.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ internal abstract class BaseRotateAction : ObservableObject, IAction
99
{
1010
private readonly IContentPageContext context;
1111

12-
private readonly PreviewPaneViewModel _previewPaneViewModel;
12+
private readonly InfoPaneViewModel _infoPaneViewModel;
1313

1414
public abstract string Label { get; }
1515

@@ -26,7 +26,7 @@ internal abstract class BaseRotateAction : ObservableObject, IAction
2626
public BaseRotateAction()
2727
{
2828
context = Ioc.Default.GetRequiredService<IContentPageContext>();
29-
_previewPaneViewModel = Ioc.Default.GetRequiredService<PreviewPaneViewModel>();
29+
_infoPaneViewModel = Ioc.Default.GetRequiredService<InfoPaneViewModel>();
3030

3131
context.PropertyChanged += Context_PropertyChanged;
3232
}
@@ -38,7 +38,7 @@ public async Task ExecuteAsync()
3838

3939
context.ShellPage?.SlimContentPage?.ItemManipulationModel?.RefreshItemsThumbnail();
4040

41-
await _previewPaneViewModel.UpdateSelectedItemPreviewAsync();
41+
await _infoPaneViewModel.UpdateSelectedItemPreviewAsync();
4242
}
4343

4444
private bool IsContextPageTypeAdaptedToCommand()

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ namespace Files.App.Actions
55
{
66
internal class ToggleDetailsPaneAction : ObservableObject, IToggleAction
77
{
8-
private readonly PreviewPaneViewModel viewModel;
9-
private readonly IPreviewPaneSettingsService previewSettingsService = Ioc.Default.GetRequiredService<IPreviewPaneSettingsService>();
8+
private readonly InfoPaneViewModel viewModel;
9+
private readonly IInfoPaneSettingsService infoPaneSettingsService = Ioc.Default.GetRequiredService<IInfoPaneSettingsService>();
1010

1111
public string Label
1212
=> "ToggleDetailsPane".GetLocalizedResource();
@@ -25,21 +25,21 @@ public bool IsOn
2525

2626
public ToggleDetailsPaneAction()
2727
{
28-
viewModel = Ioc.Default.GetRequiredService<PreviewPaneViewModel>();
28+
viewModel = Ioc.Default.GetRequiredService<InfoPaneViewModel>();
2929
viewModel.PropertyChanged += ViewModel_PropertyChanged;
3030
}
3131

3232
public Task ExecuteAsync()
3333
{
3434
viewModel.IsEnabled = true;
35-
previewSettingsService.ShowPreviewOnly = false;
35+
infoPaneSettingsService.SelectedTab = InfoPaneTabs.Details;
3636

3737
return Task.CompletedTask;
3838
}
3939

4040
private void ViewModel_PropertyChanged(object? sender, PropertyChangedEventArgs e)
4141
{
42-
if (e.PropertyName is nameof(PreviewPaneViewModel.IsEnabled))
42+
if (e.PropertyName is nameof(InfoPaneViewModel.IsEnabled))
4343
OnPropertyChanged(nameof(IsOn));
4444
}
4545
}

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace Files.App.Actions
55
{
66
internal class ToggleInfoPaneAction : ObservableObject, IToggleAction
77
{
8-
private readonly PreviewPaneViewModel viewModel;
8+
private readonly InfoPaneViewModel viewModel;
99

1010
public string Label
1111
=> "ToggleInfoPane".GetLocalizedResource();
@@ -16,12 +16,15 @@ public string Description
1616
public RichGlyph Glyph
1717
=> new(opacityStyle: "ColorIconRightPane");
1818

19+
public HotKey HotKey
20+
=> new(Keys.I, KeyModifiers.MenuCtrl);
21+
1922
public bool IsOn
2023
=> viewModel.IsEnabled;
2124

2225
public ToggleInfoPaneAction()
2326
{
24-
viewModel = Ioc.Default.GetRequiredService<PreviewPaneViewModel>();
27+
viewModel = Ioc.Default.GetRequiredService<InfoPaneViewModel>();
2528
viewModel.PropertyChanged += ViewModel_PropertyChanged;
2629
}
2730

@@ -34,7 +37,7 @@ public Task ExecuteAsync()
3437

3538
private void ViewModel_PropertyChanged(object? sender, PropertyChangedEventArgs e)
3639
{
37-
if (e.PropertyName is nameof(PreviewPaneViewModel.IsEnabled))
40+
if (e.PropertyName is nameof(InfoPaneViewModel.IsEnabled))
3841
OnPropertyChanged(nameof(IsOn));
3942
}
4043
}

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ namespace Files.App.Actions
55
{
66
internal class TogglePreviewPaneAction : ObservableObject, IToggleAction
77
{
8-
private readonly PreviewPaneViewModel viewModel;
9-
private readonly IPreviewPaneSettingsService previewSettingsService = Ioc.Default.GetRequiredService<IPreviewPaneSettingsService>();
8+
private readonly InfoPaneViewModel viewModel;
9+
private readonly IInfoPaneSettingsService infoPaneSettingsService = Ioc.Default.GetRequiredService<IInfoPaneSettingsService>();
1010

1111
public string Label
1212
=> "TogglePreviewPane".GetLocalizedResource();
@@ -25,21 +25,21 @@ public bool IsOn
2525

2626
public TogglePreviewPaneAction()
2727
{
28-
viewModel = Ioc.Default.GetRequiredService<PreviewPaneViewModel>();
28+
viewModel = Ioc.Default.GetRequiredService<InfoPaneViewModel>();
2929
viewModel.PropertyChanged += ViewModel_PropertyChanged;
3030
}
3131

3232
public Task ExecuteAsync()
3333
{
3434
viewModel.IsEnabled = true;
35-
previewSettingsService.ShowPreviewOnly = true;
35+
infoPaneSettingsService.SelectedTab = InfoPaneTabs.Preview;
3636

3737
return Task.CompletedTask;
3838
}
3939

4040
private void ViewModel_PropertyChanged(object? sender, PropertyChangedEventArgs e)
4141
{
42-
if (e.PropertyName is nameof(PreviewPaneViewModel.IsEnabled))
42+
if (e.PropertyName is nameof(InfoPaneViewModel.IsEnabled))
4343
OnPropertyChanged(nameof(IsOn));
4444
}
4545
}

src/Files.App/App.xaml.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ private IHost ConfigureHost()
9494
.AddSingleton<IGeneralSettingsService, GeneralSettingsService>(sp => new GeneralSettingsService((sp.GetService<IUserSettingsService>() as UserSettingsService).GetSharingContext()))
9595
.AddSingleton<IFoldersSettingsService, FoldersSettingsService>(sp => new FoldersSettingsService((sp.GetService<IUserSettingsService>() as UserSettingsService).GetSharingContext()))
9696
.AddSingleton<IApplicationSettingsService, ApplicationSettingsService>(sp => new ApplicationSettingsService((sp.GetService<IUserSettingsService>() as UserSettingsService).GetSharingContext()))
97-
.AddSingleton<IPreviewPaneSettingsService, PreviewPaneSettingsService>(sp => new PreviewPaneSettingsService((sp.GetService<IUserSettingsService>() as UserSettingsService).GetSharingContext()))
97+
.AddSingleton<IInfoPaneSettingsService, InfoPaneSettingsService>(sp => new InfoPaneSettingsService((sp.GetService<IUserSettingsService>() as UserSettingsService).GetSharingContext()))
9898
.AddSingleton<ILayoutSettingsService, LayoutSettingsService>(sp => new LayoutSettingsService((sp.GetService<IUserSettingsService>() as UserSettingsService).GetSharingContext()))
9999
.AddSingleton<IAppSettingsService, AppSettingsService>(sp => new AppSettingsService((sp.GetService<IUserSettingsService>() as UserSettingsService).GetSharingContext()))
100100
.AddSingleton<IFileTagsSettingsService, FileTagsSettingsService>()
@@ -137,7 +137,7 @@ private IHost ConfigureHost()
137137
.AddSingleton<INetworkDrivesService, NetworkDrivesService>()
138138
.AddSingleton<IStartMenuService, StartMenuService>()
139139
.AddSingleton<MainPageViewModel>()
140-
.AddSingleton<PreviewPaneViewModel>()
140+
.AddSingleton<InfoPaneViewModel>()
141141
.AddSingleton<SidebarViewModel>()
142142
.AddSingleton<SettingsViewModel>()
143143
.AddSingleton<DrivesViewModel>()
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// Copyright (c) 2023 Files Community
2+
// Licensed under the MIT License. See the LICENSE.
3+
4+
using Microsoft.UI.Xaml.Data;
5+
6+
namespace Files.App.Converters
7+
{
8+
internal sealed class EnumToBoolConverter : IValueConverter
9+
{
10+
public object Convert(object value, Type targetType, object parameter, string language)
11+
{
12+
if (value == null)
13+
return false;
14+
15+
return value.ToString() == parameter.ToString();
16+
}
17+
18+
public object ConvertBack(object value, Type targetType, object parameter, string language)
19+
{
20+
throw new NotImplementedException();
21+
}
22+
}
23+
}

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 ToggleDetailsPane { get; }
2829
IRichCommand ToggleInfoPane { get; }
2930

3031
IRichCommand CopyItem { get; }

src/Files.App/Services/Settings/PreviewPaneSettingsService.cs renamed to src/Files.App/Services/Settings/InfoPaneSettingsService.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
namespace Files.App.Services.Settings
1010
{
11-
internal sealed class PreviewPaneSettingsService : BaseObservableJsonSettings, IPreviewPaneSettingsService
11+
internal sealed class InfoPaneSettingsService : BaseObservableJsonSettings, IInfoPaneSettingsService
1212
{
1313
public bool IsEnabled
1414
{
@@ -34,20 +34,20 @@ public double MediaVolume
3434
set => Set(Math.Max(0d, Math.Min(value, 1d)));
3535
}
3636

37-
public bool ShowPreviewOnly
37+
public InfoPaneTabs SelectedTab
3838
{
39-
get => Get(false);
39+
get => Get(InfoPaneTabs.Details);
4040
set => Set(value);
4141
}
4242

43-
public PreviewPaneSettingsService(ISettingsSharingContext settingsSharingContext)
43+
public InfoPaneSettingsService(ISettingsSharingContext settingsSharingContext)
4444
{
4545
RegisterSettingsContext(settingsSharingContext);
4646
}
4747

4848
protected override void RaiseOnSettingChangedEvent(object sender, SettingChangedEventArgs e)
4949
{
50-
if (e.SettingName is nameof(ShowPreviewOnly))
50+
if (e.SettingName is nameof(SelectedTab))
5151
{
5252
Analytics.TrackEvent($"Set {e.SettingName} to {e.NewValue}");
5353
}

src/Files.App/Services/Settings/UserSettingsService.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ public IAppearanceSettingsService AppearanceSettingsService
3232
get => GetSettingsService(ref _AppearanceSettingsService);
3333
}
3434

35-
private IPreviewPaneSettingsService _PreviewPaneSettingsService;
36-
public IPreviewPaneSettingsService PreviewPaneSettingsService
35+
private IInfoPaneSettingsService _InfoPaneSettingsService;
36+
public IInfoPaneSettingsService InfoPaneSettingsService
3737
{
38-
get => GetSettingsService(ref _PreviewPaneSettingsService);
38+
get => GetSettingsService(ref _InfoPaneSettingsService);
3939
}
4040

4141
private ILayoutSettingsService _LayoutSettingsService;

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1056,11 +1056,14 @@
10561056
<data name="ToggleDetailsPane" xml:space="preserve">
10571057
<value>Toggle the details pane</value>
10581058
</data>
1059+
<data name="ToggleDetailsPaneDescription" xml:space="preserve">
1060+
<value>Toggle the details pane to view basic file properties</value>
1061+
</data>
10591062
<data name="ToggleInfoPane" xml:space="preserve">
1060-
<value>Toggle the details/preview pane</value>
1063+
<value>Toggle the info pane</value>
10611064
</data>
10621065
<data name="ToggleInfoPaneDescription" xml:space="preserve">
1063-
<value>Toggles the details/preview pane</value>
1066+
<value>Toggle the info pane to view the detail\preview panes</value>
10641067
</data>
10651068
<data name="DetailsPanePreviewNotAvaliableText" xml:space="preserve">
10661069
<value>No preview available</value>
@@ -2404,10 +2407,7 @@
24042407
<value>Toggle whether to show file extensions</value>
24052408
</data>
24062409
<data name="TogglePreviewPaneDescription" xml:space="preserve">
2407-
<value>Toggle whether to show preview pane</value>
2408-
</data>
2409-
<data name="ToggleDetailsPaneDescription" xml:space="preserve">
2410-
<value>Toggle the details pane</value>
2410+
<value>Toggle the preview pane to view file previews</value>
24112411
</data>
24122412
<data name="ToggleSidebarDescription" xml:space="preserve">
24132413
<value>Toggle whether to show sidebar</value>

0 commit comments

Comments
 (0)