Skip to content

Commit bb026d9

Browse files
authored
Code Quality: Return icon size based on current layout settings (#14650)
1 parent a06aafc commit bb026d9

File tree

7 files changed

+43
-21
lines changed

7 files changed

+43
-21
lines changed

src/Files.App/Data/Models/ItemViewModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1445,7 +1445,7 @@ private async Task RapidAddItemsToCollectionAsync(string? path, LibraryItem? lib
14451445
break;
14461446
}
14471447

1448-
await GetDefaultItemIconsAsync(folderSettings.GetIconSize());
1448+
await GetDefaultItemIconsAsync(folderSettings.GetRoundedIconSize());
14491449

14501450
if (IsLoadingCancelled)
14511451
{

src/Files.App/Helpers/Layout/LayoutPreferencesManager.cs

Lines changed: 30 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public bool IsAdaptiveLayoutEnabled
4040
}
4141
}
4242

43+
[Obsolete("Don't add more references, we're working on removing this property")]
4344
public int GridViewSize
4445
{
4546
get => LayoutPreferencesItem.IconSizeGridView;
@@ -317,7 +318,25 @@ public LayoutPreferencesManager(FolderLayoutModes modeOverride) : this()
317318

318319
// Methods
319320

320-
public uint GetIconSize()
321+
/// <summary>
322+
/// This will round the current icon size to get the best result from the File Explorer thumbnail system.
323+
///
324+
/// Details View:
325+
/// Always uses the Large icon size (32).
326+
///
327+
/// List View:
328+
/// Always uses the Large icon size (32).
329+
///
330+
/// Columns View:
331+
/// Always uses the Large icon size (32).
332+
///
333+
/// Tiles View:
334+
/// Uses a range of icon sizes (64, 72, 96, 128, 180, 256) depending on the selected icon size.
335+
///
336+
/// Grid View:
337+
/// Uses a range of icon sizes (64, 72, 96, 128, 180, 256) depending on the selected icon size.
338+
/// </summary>
339+
public uint GetRoundedIconSize()
321340
{
322341
return LayoutMode switch
323342
{
@@ -327,17 +346,20 @@ public uint GetIconSize()
327346
=> Constants.DefaultIconSizes.Large,
328347
FolderLayoutModes.ColumnView
329348
=> Constants.DefaultIconSizes.Large,
330-
FolderLayoutModes.TilesView
331-
=> Constants.Browser.GridViewBrowser.TilesView,
332-
_ when GridViewSize <= 64
349+
_ when LayoutMode == FolderLayoutModes.TilesView && LayoutPreferencesItem.IconSizeTilesView <= 64 ||
350+
LayoutMode == FolderLayoutModes.GridView && LayoutPreferencesItem.IconSizeGridView <= 64
333351
=> 64,
334-
_ when GridViewSize <= 72
352+
_ when LayoutMode == FolderLayoutModes.TilesView && LayoutPreferencesItem.IconSizeTilesView <= 72 ||
353+
LayoutMode == FolderLayoutModes.GridView && LayoutPreferencesItem.IconSizeGridView <= 72
335354
=> 72,
336-
_ when GridViewSize <= 96
355+
_ when LayoutMode == FolderLayoutModes.TilesView && LayoutPreferencesItem.IconSizeTilesView <= 96 ||
356+
LayoutMode == FolderLayoutModes.GridView && LayoutPreferencesItem.IconSizeGridView <= 96
337357
=> 96,
338-
_ when GridViewSize <= 128
358+
_ when LayoutMode == FolderLayoutModes.TilesView && LayoutPreferencesItem.IconSizeTilesView <= 128 ||
359+
LayoutMode == FolderLayoutModes.GridView && LayoutPreferencesItem.IconSizeGridView <= 128
339360
=> 128,
340-
_ when GridViewSize <= 180
361+
_ when LayoutMode == FolderLayoutModes.TilesView && LayoutPreferencesItem.IconSizeTilesView <= 180 ||
362+
LayoutMode == FolderLayoutModes.GridView && LayoutPreferencesItem.IconSizeGridView <= 180
341363
=> 180,
342364
_ => 256,
343365
};

src/Files.App/ViewModels/UserControls/ToolbarViewModel.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -957,9 +957,9 @@ private void FolderSettings_PropertyChanged(object? sender, PropertyChangedEvent
957957
FolderLayoutModes.TilesView => Commands.LayoutTiles.OpacityStyle!,
958958
FolderLayoutModes.ColumnView => Commands.LayoutColumns.OpacityStyle!,
959959
FolderLayoutModes.GridView =>
960-
instanceViewModel.FolderSettings.GridViewSize <= Constants.Browser.GridViewBrowser.GridViewSizeSmall
960+
instanceViewModel.FolderSettings.LayoutPreferencesItem.IconSizeGridView <= Constants.Browser.GridViewBrowser.GridViewSizeSmall
961961
? Commands.LayoutGridSmall.OpacityStyle!
962-
: instanceViewModel.FolderSettings.GridViewSize <= Constants.Browser.GridViewBrowser.GridViewSizeMedium
962+
: instanceViewModel.FolderSettings.LayoutPreferencesItem.IconSizeGridView <= Constants.Browser.GridViewBrowser.GridViewSizeMedium
963963
? Commands.LayoutGridMedium.OpacityStyle!
964964
: Commands.LayoutGridLarge.OpacityStyle!,
965965
_ => Commands.LayoutDetails.OpacityStyle!
@@ -1021,8 +1021,8 @@ public List<ListedItem> SelectedItems
10211021

10221022
public bool IsTilesLayout => instanceViewModel.FolderSettings.LayoutMode is FolderLayoutModes.TilesView;
10231023
public bool IsColumnLayout => instanceViewModel.FolderSettings.LayoutMode is FolderLayoutModes.ColumnView;
1024-
public bool IsGridSmallLayout => instanceViewModel.FolderSettings.LayoutMode is FolderLayoutModes.GridView && instanceViewModel.FolderSettings.GridViewSize <= Constants.Browser.GridViewBrowser.GridViewSizeSmall;
1025-
public bool IsGridMediumLayout => instanceViewModel.FolderSettings.LayoutMode is FolderLayoutModes.GridView && !IsGridSmallLayout && instanceViewModel.FolderSettings.GridViewSize <= Constants.Browser.GridViewBrowser.GridViewSizeMedium;
1024+
public bool IsGridSmallLayout => instanceViewModel.FolderSettings.LayoutMode is FolderLayoutModes.GridView && instanceViewModel.FolderSettings.LayoutPreferencesItem.IconSizeGridView <= Constants.Browser.GridViewBrowser.GridViewSizeSmall;
1025+
public bool IsGridMediumLayout => instanceViewModel.FolderSettings.LayoutMode is FolderLayoutModes.GridView && !IsGridSmallLayout && instanceViewModel.FolderSettings.LayoutPreferencesItem.IconSizeGridView <= Constants.Browser.GridViewBrowser.GridViewSizeMedium;
10261026
public bool IsGridLargeLayout => instanceViewModel.FolderSettings.LayoutMode is FolderLayoutModes.GridView && !IsGridSmallLayout && !IsGridMediumLayout;
10271027
public bool IsDetailsLayout => !IsListLayout && !IsTilesLayout && !IsColumnLayout && !IsGridSmallLayout && !IsGridMediumLayout && !IsGridLargeLayout;
10281028
public bool IsListLayout => instanceViewModel.FolderSettings.LayoutMode is FolderLayoutModes.ListView;

src/Files.App/Views/Layouts/BaseLayoutPage.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ protected override async void OnNavigatedTo(NavigationEventArgs e)
467467
{
468468
Query = navigationArguments.SearchQuery,
469469
Folder = navigationArguments.SearchPathParam,
470-
ThumbnailSize = InstanceViewModel!.FolderSettings.GetIconSize(),
470+
ThumbnailSize = InstanceViewModel!.FolderSettings.GetRoundedIconSize(),
471471
};
472472

473473
_ = ParentShellPageInstance.FilesystemViewModel.SearchAsync(searchInstance);

src/Files.App/Views/Layouts/DetailsLayoutPage.xaml.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ protected override void OnNavigatedTo(NavigationEventArgs eventArgs)
132132

133133
ParentShellPageInstance.FilesystemViewModel.EnabledGitProperties = GetEnabledGitProperties(ColumnsViewModel);
134134

135-
currentIconSize = FolderSettings.GetIconSize();
135+
currentIconSize = FolderSettings.GetRoundedIconSize();
136136
FolderSettings.LayoutModeChangeRequested += FolderSettings_LayoutModeChangeRequested;
137137
FolderSettings.GridViewSizeChangeRequested += FolderSettings_GridViewSizeChangeRequested;
138138
FolderSettings.GroupOptionPreferenceUpdated += ZoomIn;
@@ -414,7 +414,7 @@ protected override bool CanGetItemFromElement(object element)
414414

415415
private async void FolderSettings_GridViewSizeChangeRequested(object? sender, EventArgs e)
416416
{
417-
var requestedIconSize = FolderSettings.GetIconSize(); // Get new icon size
417+
var requestedIconSize = FolderSettings.GetRoundedIconSize(); // Get new icon size
418418

419419
// Prevents reloading icons when the icon size hasn't changed
420420
if (requestedIconSize != currentIconSize)

src/Files.App/Views/Layouts/GridLayoutPage.xaml.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public sealed partial class GridLayoutPage : BaseGroupableLayoutPage
3939
FolderSettings.LayoutMode == FolderLayoutModes.ListView ||
4040
FolderSettings.LayoutMode == FolderLayoutModes.TilesView
4141
? 260
42-
: FolderSettings.GridViewSize;
42+
: FolderSettings.LayoutPreferencesItem.IconSizeGridView;
4343

4444
public bool IsPointerOver
4545
{
@@ -104,7 +104,7 @@ protected override void OnNavigatedTo(NavigationEventArgs eventArgs)
104104

105105
base.OnNavigatedTo(eventArgs);
106106

107-
currentIconSize = FolderSettings.GetIconSize();
107+
currentIconSize = FolderSettings.GetRoundedIconSize();
108108
FolderSettings.GroupOptionPreferenceUpdated -= ZoomIn;
109109
FolderSettings.GroupOptionPreferenceUpdated += ZoomIn;
110110
FolderSettings.LayoutModeChangeRequested -= FolderSettings_LayoutModeChangeRequested;
@@ -148,7 +148,7 @@ private async void FolderSettings_LayoutModeChangeRequested(object? sender, Layo
148148
// Set ItemTemplate
149149
SetItemTemplate();
150150

151-
var requestedIconSize = FolderSettings.GetIconSize();
151+
var requestedIconSize = FolderSettings.GetRoundedIconSize();
152152
if (requestedIconSize != currentIconSize)
153153
{
154154
currentIconSize = requestedIconSize;
@@ -446,7 +446,7 @@ private async void FolderSettings_GridViewSizeChangeRequested(object? sender, Ev
446446
SetItemMinWidth();
447447

448448
// Get new icon size
449-
var requestedIconSize = FolderSettings.GetIconSize();
449+
var requestedIconSize = FolderSettings.GetRoundedIconSize();
450450

451451
// Prevents reloading icons when the icon size hasn't changed
452452
if (requestedIconSize != currentIconSize)

src/Files.App/Views/Shells/BaseShellPage.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -557,7 +557,7 @@ public async Task Refresh_Click()
557557
{
558558
Query = InstanceViewModel.CurrentSearchQuery ?? (string)TabItemParameter.NavigationParameter,
559559
Folder = FilesystemViewModel.WorkingDirectory,
560-
ThumbnailSize = InstanceViewModel.FolderSettings.GetIconSize(),
560+
ThumbnailSize = InstanceViewModel.FolderSettings.GetRoundedIconSize(),
561561
};
562562

563563
await FilesystemViewModel.SearchAsync(searchInstance);

0 commit comments

Comments
 (0)