Skip to content

Commit e853f42

Browse files
authored
Feature: Created new "Layout" settings page (#14912)
1 parent 9610925 commit e853f42

File tree

18 files changed

+1173
-1023
lines changed

18 files changed

+1173
-1023
lines changed

src/Files.App/Data/Contexts/DisplayPage/DisplayPageContext.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@ internal class DisplayPageContext : ObservableObject, IDisplayPageContext
99
{
1010
private readonly IPageContext context = Ioc.Default.GetRequiredService<IPageContext>();
1111
private readonly IFoldersSettingsService settings = Ioc.Default.GetRequiredService<IFoldersSettingsService>();
12+
private readonly ILayoutSettingsService layoutSettingsService = Ioc.Default.GetRequiredService<ILayoutSettingsService>();
1213

13-
public bool IsLayoutAdaptiveEnabled => !settings.SyncFolderPreferencesAcrossDirectories;
14+
public bool IsLayoutAdaptiveEnabled => !layoutSettingsService.SyncFolderPreferencesAcrossDirectories;
1415

1516
private LayoutTypes _LayoutType = LayoutTypes.None;
1617
public LayoutTypes LayoutType
@@ -185,7 +186,7 @@ private void FolderSettings_PropertyChanged(object? sender, PropertyChangedEvent
185186

186187
private void Settings_PropertyChanged(object? sender, PropertyChangedEventArgs e)
187188
{
188-
if (e.PropertyName is nameof(IFoldersSettingsService.SyncFolderPreferencesAcrossDirectories))
189+
if (e.PropertyName is nameof(ILayoutSettingsService.SyncFolderPreferencesAcrossDirectories))
189190
{
190191
OnPropertyChanged(nameof(IsLayoutAdaptiveEnabled));
191192
SetProperty(ref _LayoutType, GetLayoutType(), nameof(LayoutType));

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -606,13 +606,13 @@ await dispatcherQueue.EnqueueOrInvokeAsync(() =>
606606
RefreshItems(null);
607607
});
608608
break;
609-
case nameof(UserSettingsService.FoldersSettingsService.DefaultSortOption):
610-
case nameof(UserSettingsService.FoldersSettingsService.DefaultGroupOption):
611-
case nameof(UserSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles):
612-
case nameof(UserSettingsService.FoldersSettingsService.DefaultSortFilesFirst):
613-
case nameof(UserSettingsService.FoldersSettingsService.SyncFolderPreferencesAcrossDirectories):
614-
case nameof(UserSettingsService.FoldersSettingsService.DefaultGroupByDateUnit):
615-
case nameof(UserSettingsService.FoldersSettingsService.DefaultLayoutMode):
609+
case nameof(UserSettingsService.LayoutSettingsService.DefaultSortOption):
610+
case nameof(UserSettingsService.LayoutSettingsService.DefaultGroupOption):
611+
case nameof(UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles):
612+
case nameof(UserSettingsService.LayoutSettingsService.DefaultSortFilesFirst):
613+
case nameof(UserSettingsService.LayoutSettingsService.SyncFolderPreferencesAcrossDirectories):
614+
case nameof(UserSettingsService.LayoutSettingsService.DefaultGroupByDateUnit):
615+
case nameof(UserSettingsService.LayoutSettingsService.DefaultLayoutMode):
616616
await dispatcherQueue.EnqueueOrInvokeAsync(() =>
617617
{
618618
folderSettings.OnDefaultPreferencesChanged(WorkingDirectory, e.SettingName);

src/Files.App/Dialogs/SettingsDialog.xaml

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -103,11 +103,20 @@
103103
<FontIcon HorizontalAlignment="Left" Glyph="&#xE790;" />
104104
</NavigationViewItem.Icon>
105105
</NavigationViewItem>
106+
<NavigationViewItem
107+
AccessKey="L"
108+
AutomationProperties.AutomationId="SettingsItemLayout"
109+
Content="{helpers:ResourceString Name=Layout}"
110+
Tag="2">
111+
<NavigationViewItem.Icon>
112+
<FontIcon Glyph="&#xE8A9;" />
113+
</NavigationViewItem.Icon>
114+
</NavigationViewItem>
106115
<NavigationViewItem
107116
AccessKey="F"
108117
AutomationProperties.AutomationId="SettingsItemFolders"
109-
Content="{helpers:ResourceString Name=Folders}"
110-
Tag="2">
118+
Content="{helpers:ResourceString Name=FilesAndFolders}"
119+
Tag="3">
111120
<NavigationViewItem.Icon>
112121
<FontIcon Glyph="&#xE8B7;" />
113122
</NavigationViewItem.Icon>
@@ -116,7 +125,7 @@
116125
AccessKey="T"
117126
AutomationProperties.AutomationId="SettingsItemTags"
118127
Content="{helpers:ResourceString Name=FileTags}"
119-
Tag="3">
128+
Tag="4">
120129
<NavigationViewItem.Icon>
121130
<FontIcon Glyph="&#xE8EC;" />
122131
</NavigationViewItem.Icon>
@@ -125,7 +134,7 @@
125134
AccessKey="G"
126135
AutomationProperties.AutomationId="SettingsItemGit"
127136
Content="{helpers:ResourceString Name=Git}"
128-
Tag="4">
137+
Tag="5">
129138
<NavigationViewItem.Icon>
130139
<FontIcon Glyph="&#xE794;" />
131140
</NavigationViewItem.Icon>
@@ -134,7 +143,7 @@
134143
AccessKey="E"
135144
AutomationProperties.AutomationId="SettingsItemAdvanced"
136145
Content="{helpers:ResourceString Name=Advanced}"
137-
Tag="5">
146+
Tag="6">
138147
<NavigationViewItem.Icon>
139148
<FontIcon Glyph="&#xF1AD;" />
140149
</NavigationViewItem.Icon>
@@ -143,7 +152,7 @@
143152
AccessKey="B"
144153
AutomationProperties.AutomationId="SettingsItemAbout"
145154
Content="{helpers:ResourceString Name=About}"
146-
Tag="6">
155+
Tag="7">
147156
<NavigationViewItem.Icon>
148157
<FontIcon FontSize="16" Glyph="&#xE946;" />
149158
</NavigationViewItem.Icon>

src/Files.App/Dialogs/SettingsDialog.xaml.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,12 @@ private void MainSettingsNavigationView_SelectionChanged(NavigationView sender,
5151
{
5252
0 => SettingsContentFrame.Navigate(typeof(GeneralPage)),
5353
1 => SettingsContentFrame.Navigate(typeof(AppearancePage)),
54-
2 => SettingsContentFrame.Navigate(typeof(FoldersPage)),
55-
3 => SettingsContentFrame.Navigate(typeof(TagsPage)),
56-
4 => SettingsContentFrame.Navigate(typeof(GitPage)),
57-
5 => SettingsContentFrame.Navigate(typeof(AdvancedPage)),
58-
6 => SettingsContentFrame.Navigate(typeof(AboutPage)),
54+
2 => SettingsContentFrame.Navigate(typeof(LayoutPage)),
55+
3 => SettingsContentFrame.Navigate(typeof(FoldersPage)),
56+
4 => SettingsContentFrame.Navigate(typeof(TagsPage)),
57+
5 => SettingsContentFrame.Navigate(typeof(GitPage)),
58+
6 => SettingsContentFrame.Navigate(typeof(AdvancedPage)),
59+
7 => SettingsContentFrame.Navigate(typeof(AboutPage)),
5960
_ => SettingsContentFrame.Navigate(typeof(AppearancePage))
6061
};
6162
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@ namespace Files.App.Helpers
1313
public static class AdaptiveLayoutHelpers
1414
{
1515
private static IFoldersSettingsService FoldersSettingsService { get; } = Ioc.Default.GetRequiredService<IFoldersSettingsService>();
16+
private static ILayoutSettingsService LayoutSettingsService { get; } = Ioc.Default.GetRequiredService<ILayoutSettingsService>();
1617

1718
public static void ApplyAdaptativeLayout(LayoutPreferencesManager folderSettings, string path, IList<ListedItem> filesAndFolders)
1819
{
19-
if (FoldersSettingsService.SyncFolderPreferencesAcrossDirectories)
20+
if (LayoutSettingsService.SyncFolderPreferencesAcrossDirectories)
2021
return;
2122
if (string.IsNullOrWhiteSpace(path))
2223
return;

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

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -33,49 +33,49 @@ public class LayoutPreferencesItem
3333

3434
public LayoutPreferencesItem()
3535
{
36-
var defaultLayout = UserSettingsService.FoldersSettingsService.DefaultLayoutMode;
36+
var defaultLayout = UserSettingsService.LayoutSettingsService.DefaultLayoutMode;
3737

3838
LayoutMode = defaultLayout is FolderLayoutModes.Adaptive ? FolderLayoutModes.DetailsView : defaultLayout;
39-
DirectorySortOption = UserSettingsService.FoldersSettingsService.DefaultSortOption;
40-
DirectoryGroupOption = UserSettingsService.FoldersSettingsService.DefaultGroupOption;
41-
DirectorySortDirection = UserSettingsService.FoldersSettingsService.DefaultDirectorySortDirection;
42-
DirectoryGroupDirection = UserSettingsService.FoldersSettingsService.DefaultDirectoryGroupDirection;
43-
DirectoryGroupByDateUnit = UserSettingsService.FoldersSettingsService.DefaultGroupByDateUnit;
44-
SortDirectoriesAlongsideFiles = UserSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles;
45-
SortFilesFirst = UserSettingsService.FoldersSettingsService.DefaultSortFilesFirst;
39+
DirectorySortOption = UserSettingsService.LayoutSettingsService.DefaultSortOption;
40+
DirectoryGroupOption = UserSettingsService.LayoutSettingsService.DefaultGroupOption;
41+
DirectorySortDirection = UserSettingsService.LayoutSettingsService.DefaultDirectorySortDirection;
42+
DirectoryGroupDirection = UserSettingsService.LayoutSettingsService.DefaultDirectoryGroupDirection;
43+
DirectoryGroupByDateUnit = UserSettingsService.LayoutSettingsService.DefaultGroupByDateUnit;
44+
SortDirectoriesAlongsideFiles = UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles;
45+
SortFilesFirst = UserSettingsService.LayoutSettingsService.DefaultSortFilesFirst;
4646
IsAdaptiveLayoutOverridden = defaultLayout is not FolderLayoutModes.Adaptive;
4747

4848
ColumnsViewModel = new ColumnsViewModel();
49-
ColumnsViewModel.DateCreatedColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowDateCreatedColumn;
50-
ColumnsViewModel.DateModifiedColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowDateColumn;
51-
ColumnsViewModel.ItemTypeColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowTypeColumn;
52-
ColumnsViewModel.SizeColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowSizeColumn;
53-
ColumnsViewModel.GitStatusColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowGitStatusColumn;
54-
ColumnsViewModel.GitLastCommitDateColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowGitLastCommitDateColumn;
55-
ColumnsViewModel.GitLastCommitMessageColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowGitLastCommitMessageColumn;
56-
ColumnsViewModel.GitCommitAuthorColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowGitCommitAuthorColumn;
57-
ColumnsViewModel.GitLastCommitShaColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowGitLastCommitShaColumn;
58-
ColumnsViewModel.TagColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowFileTagColumn;
59-
ColumnsViewModel.DateDeletedColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowDateDeletedColumn;
60-
ColumnsViewModel.PathColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowPathColumn;
61-
ColumnsViewModel.OriginalPathColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowOriginalPathColumn;
62-
ColumnsViewModel.StatusColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowSyncStatusColumn;
63-
64-
ColumnsViewModel.NameColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.NameColumnWidth;
65-
ColumnsViewModel.DateModifiedColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.DateModifiedColumnWidth;
66-
ColumnsViewModel.DateCreatedColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.DateCreatedColumnWidth;
67-
ColumnsViewModel.ItemTypeColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.TypeColumnWidth;
68-
ColumnsViewModel.SizeColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.SizeColumnWidth;
69-
ColumnsViewModel.GitStatusColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.GitStatusColumnWidth;
70-
ColumnsViewModel.GitLastCommitDateColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.GitLastCommitDateColumnWidth;
71-
ColumnsViewModel.GitLastCommitMessageColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.GitLastCommitMessageColumnWidth;
72-
ColumnsViewModel.GitCommitAuthorColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.GitCommitAuthorColumnWidth;
73-
ColumnsViewModel.GitLastCommitShaColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.GitLastCommitShaColumnWidth;
74-
ColumnsViewModel.TagColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.TagColumnWidth;
75-
ColumnsViewModel.DateDeletedColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.DateDeletedColumnWidth;
76-
ColumnsViewModel.PathColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.PathColumnWidth;
77-
ColumnsViewModel.OriginalPathColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.OriginalPathColumnWidth;
78-
ColumnsViewModel.StatusColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.SyncStatusColumnWidth;
49+
ColumnsViewModel.DateCreatedColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowDateCreatedColumn;
50+
ColumnsViewModel.DateModifiedColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowDateColumn;
51+
ColumnsViewModel.ItemTypeColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowTypeColumn;
52+
ColumnsViewModel.SizeColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowSizeColumn;
53+
ColumnsViewModel.GitStatusColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowGitStatusColumn;
54+
ColumnsViewModel.GitLastCommitDateColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowGitLastCommitDateColumn;
55+
ColumnsViewModel.GitLastCommitMessageColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowGitLastCommitMessageColumn;
56+
ColumnsViewModel.GitCommitAuthorColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowGitCommitAuthorColumn;
57+
ColumnsViewModel.GitLastCommitShaColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowGitLastCommitShaColumn;
58+
ColumnsViewModel.TagColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowFileTagColumn;
59+
ColumnsViewModel.DateDeletedColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowDateDeletedColumn;
60+
ColumnsViewModel.PathColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowPathColumn;
61+
ColumnsViewModel.OriginalPathColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowOriginalPathColumn;
62+
ColumnsViewModel.StatusColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowSyncStatusColumn;
63+
64+
ColumnsViewModel.NameColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.NameColumnWidth;
65+
ColumnsViewModel.DateModifiedColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.DateModifiedColumnWidth;
66+
ColumnsViewModel.DateCreatedColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.DateCreatedColumnWidth;
67+
ColumnsViewModel.ItemTypeColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.TypeColumnWidth;
68+
ColumnsViewModel.SizeColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.SizeColumnWidth;
69+
ColumnsViewModel.GitStatusColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.GitStatusColumnWidth;
70+
ColumnsViewModel.GitLastCommitDateColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.GitLastCommitDateColumnWidth;
71+
ColumnsViewModel.GitLastCommitMessageColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.GitLastCommitMessageColumnWidth;
72+
ColumnsViewModel.GitCommitAuthorColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.GitCommitAuthorColumnWidth;
73+
ColumnsViewModel.GitLastCommitShaColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.GitLastCommitShaColumnWidth;
74+
ColumnsViewModel.TagColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.TagColumnWidth;
75+
ColumnsViewModel.DateDeletedColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.DateDeletedColumnWidth;
76+
ColumnsViewModel.PathColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.PathColumnWidth;
77+
ColumnsViewModel.OriginalPathColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.OriginalPathColumnWidth;
78+
ColumnsViewModel.StatusColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.SyncStatusColumnWidth;
7979
}
8080

8181
// Overridden methods

0 commit comments

Comments
 (0)