Skip to content

Commit

Permalink
Feature: Created new "Layout" settings page (#14912)
Browse files Browse the repository at this point in the history
  • Loading branch information
yaira2 committed Mar 6, 2024
1 parent 9610925 commit e853f42
Show file tree
Hide file tree
Showing 18 changed files with 1,173 additions and 1,023 deletions.
5 changes: 3 additions & 2 deletions src/Files.App/Data/Contexts/DisplayPage/DisplayPageContext.cs
Expand Up @@ -9,8 +9,9 @@ internal class DisplayPageContext : ObservableObject, IDisplayPageContext
{
private readonly IPageContext context = Ioc.Default.GetRequiredService<IPageContext>();
private readonly IFoldersSettingsService settings = Ioc.Default.GetRequiredService<IFoldersSettingsService>();
private readonly ILayoutSettingsService layoutSettingsService = Ioc.Default.GetRequiredService<ILayoutSettingsService>();

public bool IsLayoutAdaptiveEnabled => !settings.SyncFolderPreferencesAcrossDirectories;
public bool IsLayoutAdaptiveEnabled => !layoutSettingsService.SyncFolderPreferencesAcrossDirectories;

private LayoutTypes _LayoutType = LayoutTypes.None;
public LayoutTypes LayoutType
Expand Down Expand Up @@ -185,7 +186,7 @@ private void FolderSettings_PropertyChanged(object? sender, PropertyChangedEvent

private void Settings_PropertyChanged(object? sender, PropertyChangedEventArgs e)
{
if (e.PropertyName is nameof(IFoldersSettingsService.SyncFolderPreferencesAcrossDirectories))
if (e.PropertyName is nameof(ILayoutSettingsService.SyncFolderPreferencesAcrossDirectories))
{
OnPropertyChanged(nameof(IsLayoutAdaptiveEnabled));
SetProperty(ref _LayoutType, GetLayoutType(), nameof(LayoutType));
Expand Down
14 changes: 7 additions & 7 deletions src/Files.App/Data/Models/ItemViewModel.cs
Expand Up @@ -606,13 +606,13 @@ private async void UserSettingsService_OnSettingChangedEvent(object? sender, Set
RefreshItems(null);
});
break;
case nameof(UserSettingsService.FoldersSettingsService.DefaultSortOption):
case nameof(UserSettingsService.FoldersSettingsService.DefaultGroupOption):
case nameof(UserSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles):
case nameof(UserSettingsService.FoldersSettingsService.DefaultSortFilesFirst):
case nameof(UserSettingsService.FoldersSettingsService.SyncFolderPreferencesAcrossDirectories):
case nameof(UserSettingsService.FoldersSettingsService.DefaultGroupByDateUnit):
case nameof(UserSettingsService.FoldersSettingsService.DefaultLayoutMode):
case nameof(UserSettingsService.LayoutSettingsService.DefaultSortOption):
case nameof(UserSettingsService.LayoutSettingsService.DefaultGroupOption):
case nameof(UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles):
case nameof(UserSettingsService.LayoutSettingsService.DefaultSortFilesFirst):
case nameof(UserSettingsService.LayoutSettingsService.SyncFolderPreferencesAcrossDirectories):
case nameof(UserSettingsService.LayoutSettingsService.DefaultGroupByDateUnit):
case nameof(UserSettingsService.LayoutSettingsService.DefaultLayoutMode):
await dispatcherQueue.EnqueueOrInvokeAsync(() =>
{
folderSettings.OnDefaultPreferencesChanged(WorkingDirectory, e.SettingName);
Expand Down
21 changes: 15 additions & 6 deletions src/Files.App/Dialogs/SettingsDialog.xaml
Expand Up @@ -103,11 +103,20 @@
<FontIcon HorizontalAlignment="Left" Glyph="&#xE790;" />
</NavigationViewItem.Icon>
</NavigationViewItem>
<NavigationViewItem
AccessKey="L"
AutomationProperties.AutomationId="SettingsItemLayout"
Content="{helpers:ResourceString Name=Layout}"
Tag="2">
<NavigationViewItem.Icon>
<FontIcon Glyph="&#xE8A9;" />
</NavigationViewItem.Icon>
</NavigationViewItem>
<NavigationViewItem
AccessKey="F"
AutomationProperties.AutomationId="SettingsItemFolders"
Content="{helpers:ResourceString Name=Folders}"
Tag="2">
Content="{helpers:ResourceString Name=FilesAndFolders}"
Tag="3">
<NavigationViewItem.Icon>
<FontIcon Glyph="&#xE8B7;" />
</NavigationViewItem.Icon>
Expand All @@ -116,7 +125,7 @@
AccessKey="T"
AutomationProperties.AutomationId="SettingsItemTags"
Content="{helpers:ResourceString Name=FileTags}"
Tag="3">
Tag="4">
<NavigationViewItem.Icon>
<FontIcon Glyph="&#xE8EC;" />
</NavigationViewItem.Icon>
Expand All @@ -125,7 +134,7 @@
AccessKey="G"
AutomationProperties.AutomationId="SettingsItemGit"
Content="{helpers:ResourceString Name=Git}"
Tag="4">
Tag="5">
<NavigationViewItem.Icon>
<FontIcon Glyph="&#xE794;" />
</NavigationViewItem.Icon>
Expand All @@ -134,7 +143,7 @@
AccessKey="E"
AutomationProperties.AutomationId="SettingsItemAdvanced"
Content="{helpers:ResourceString Name=Advanced}"
Tag="5">
Tag="6">
<NavigationViewItem.Icon>
<FontIcon Glyph="&#xF1AD;" />
</NavigationViewItem.Icon>
Expand All @@ -143,7 +152,7 @@
AccessKey="B"
AutomationProperties.AutomationId="SettingsItemAbout"
Content="{helpers:ResourceString Name=About}"
Tag="6">
Tag="7">
<NavigationViewItem.Icon>
<FontIcon FontSize="16" Glyph="&#xE946;" />
</NavigationViewItem.Icon>
Expand Down
11 changes: 6 additions & 5 deletions src/Files.App/Dialogs/SettingsDialog.xaml.cs
Expand Up @@ -51,11 +51,12 @@ private void MainSettingsNavigationView_SelectionChanged(NavigationView sender,
{
0 => SettingsContentFrame.Navigate(typeof(GeneralPage)),
1 => SettingsContentFrame.Navigate(typeof(AppearancePage)),
2 => SettingsContentFrame.Navigate(typeof(FoldersPage)),
3 => SettingsContentFrame.Navigate(typeof(TagsPage)),
4 => SettingsContentFrame.Navigate(typeof(GitPage)),
5 => SettingsContentFrame.Navigate(typeof(AdvancedPage)),
6 => SettingsContentFrame.Navigate(typeof(AboutPage)),
2 => SettingsContentFrame.Navigate(typeof(LayoutPage)),
3 => SettingsContentFrame.Navigate(typeof(FoldersPage)),
4 => SettingsContentFrame.Navigate(typeof(TagsPage)),
5 => SettingsContentFrame.Navigate(typeof(GitPage)),
6 => SettingsContentFrame.Navigate(typeof(AdvancedPage)),
7 => SettingsContentFrame.Navigate(typeof(AboutPage)),
_ => SettingsContentFrame.Navigate(typeof(AppearancePage))
};
}
Expand Down
3 changes: 2 additions & 1 deletion src/Files.App/Helpers/Layout/AdaptiveLayoutHelpers.cs
Expand Up @@ -13,10 +13,11 @@ namespace Files.App.Helpers
public static class AdaptiveLayoutHelpers
{
private static IFoldersSettingsService FoldersSettingsService { get; } = Ioc.Default.GetRequiredService<IFoldersSettingsService>();
private static ILayoutSettingsService LayoutSettingsService { get; } = Ioc.Default.GetRequiredService<ILayoutSettingsService>();

public static void ApplyAdaptativeLayout(LayoutPreferencesManager folderSettings, string path, IList<ListedItem> filesAndFolders)
{
if (FoldersSettingsService.SyncFolderPreferencesAcrossDirectories)
if (LayoutSettingsService.SyncFolderPreferencesAcrossDirectories)
return;
if (string.IsNullOrWhiteSpace(path))
return;
Expand Down
76 changes: 38 additions & 38 deletions src/Files.App/Helpers/Layout/LayoutPreferencesItem.cs
Expand Up @@ -33,49 +33,49 @@ public class LayoutPreferencesItem

public LayoutPreferencesItem()
{
var defaultLayout = UserSettingsService.FoldersSettingsService.DefaultLayoutMode;
var defaultLayout = UserSettingsService.LayoutSettingsService.DefaultLayoutMode;

LayoutMode = defaultLayout is FolderLayoutModes.Adaptive ? FolderLayoutModes.DetailsView : defaultLayout;
DirectorySortOption = UserSettingsService.FoldersSettingsService.DefaultSortOption;
DirectoryGroupOption = UserSettingsService.FoldersSettingsService.DefaultGroupOption;
DirectorySortDirection = UserSettingsService.FoldersSettingsService.DefaultDirectorySortDirection;
DirectoryGroupDirection = UserSettingsService.FoldersSettingsService.DefaultDirectoryGroupDirection;
DirectoryGroupByDateUnit = UserSettingsService.FoldersSettingsService.DefaultGroupByDateUnit;
SortDirectoriesAlongsideFiles = UserSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles;
SortFilesFirst = UserSettingsService.FoldersSettingsService.DefaultSortFilesFirst;
DirectorySortOption = UserSettingsService.LayoutSettingsService.DefaultSortOption;
DirectoryGroupOption = UserSettingsService.LayoutSettingsService.DefaultGroupOption;
DirectorySortDirection = UserSettingsService.LayoutSettingsService.DefaultDirectorySortDirection;
DirectoryGroupDirection = UserSettingsService.LayoutSettingsService.DefaultDirectoryGroupDirection;
DirectoryGroupByDateUnit = UserSettingsService.LayoutSettingsService.DefaultGroupByDateUnit;
SortDirectoriesAlongsideFiles = UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles;
SortFilesFirst = UserSettingsService.LayoutSettingsService.DefaultSortFilesFirst;
IsAdaptiveLayoutOverridden = defaultLayout is not FolderLayoutModes.Adaptive;

ColumnsViewModel = new ColumnsViewModel();
ColumnsViewModel.DateCreatedColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowDateCreatedColumn;
ColumnsViewModel.DateModifiedColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowDateColumn;
ColumnsViewModel.ItemTypeColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowTypeColumn;
ColumnsViewModel.SizeColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowSizeColumn;
ColumnsViewModel.GitStatusColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowGitStatusColumn;
ColumnsViewModel.GitLastCommitDateColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowGitLastCommitDateColumn;
ColumnsViewModel.GitLastCommitMessageColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowGitLastCommitMessageColumn;
ColumnsViewModel.GitCommitAuthorColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowGitCommitAuthorColumn;
ColumnsViewModel.GitLastCommitShaColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowGitLastCommitShaColumn;
ColumnsViewModel.TagColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowFileTagColumn;
ColumnsViewModel.DateDeletedColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowDateDeletedColumn;
ColumnsViewModel.PathColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowPathColumn;
ColumnsViewModel.OriginalPathColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowOriginalPathColumn;
ColumnsViewModel.StatusColumn.UserCollapsed = !UserSettingsService.FoldersSettingsService.ShowSyncStatusColumn;

ColumnsViewModel.NameColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.NameColumnWidth;
ColumnsViewModel.DateModifiedColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.DateModifiedColumnWidth;
ColumnsViewModel.DateCreatedColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.DateCreatedColumnWidth;
ColumnsViewModel.ItemTypeColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.TypeColumnWidth;
ColumnsViewModel.SizeColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.SizeColumnWidth;
ColumnsViewModel.GitStatusColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.GitStatusColumnWidth;
ColumnsViewModel.GitLastCommitDateColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.GitLastCommitDateColumnWidth;
ColumnsViewModel.GitLastCommitMessageColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.GitLastCommitMessageColumnWidth;
ColumnsViewModel.GitCommitAuthorColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.GitCommitAuthorColumnWidth;
ColumnsViewModel.GitLastCommitShaColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.GitLastCommitShaColumnWidth;
ColumnsViewModel.TagColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.TagColumnWidth;
ColumnsViewModel.DateDeletedColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.DateDeletedColumnWidth;
ColumnsViewModel.PathColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.PathColumnWidth;
ColumnsViewModel.OriginalPathColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.OriginalPathColumnWidth;
ColumnsViewModel.StatusColumn.UserLengthPixels = UserSettingsService.FoldersSettingsService.SyncStatusColumnWidth;
ColumnsViewModel.DateCreatedColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowDateCreatedColumn;
ColumnsViewModel.DateModifiedColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowDateColumn;
ColumnsViewModel.ItemTypeColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowTypeColumn;
ColumnsViewModel.SizeColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowSizeColumn;
ColumnsViewModel.GitStatusColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowGitStatusColumn;
ColumnsViewModel.GitLastCommitDateColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowGitLastCommitDateColumn;
ColumnsViewModel.GitLastCommitMessageColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowGitLastCommitMessageColumn;
ColumnsViewModel.GitCommitAuthorColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowGitCommitAuthorColumn;
ColumnsViewModel.GitLastCommitShaColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowGitLastCommitShaColumn;
ColumnsViewModel.TagColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowFileTagColumn;
ColumnsViewModel.DateDeletedColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowDateDeletedColumn;
ColumnsViewModel.PathColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowPathColumn;
ColumnsViewModel.OriginalPathColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowOriginalPathColumn;
ColumnsViewModel.StatusColumn.UserCollapsed = !UserSettingsService.LayoutSettingsService.ShowSyncStatusColumn;

ColumnsViewModel.NameColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.NameColumnWidth;
ColumnsViewModel.DateModifiedColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.DateModifiedColumnWidth;
ColumnsViewModel.DateCreatedColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.DateCreatedColumnWidth;
ColumnsViewModel.ItemTypeColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.TypeColumnWidth;
ColumnsViewModel.SizeColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.SizeColumnWidth;
ColumnsViewModel.GitStatusColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.GitStatusColumnWidth;
ColumnsViewModel.GitLastCommitDateColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.GitLastCommitDateColumnWidth;
ColumnsViewModel.GitLastCommitMessageColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.GitLastCommitMessageColumnWidth;
ColumnsViewModel.GitCommitAuthorColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.GitCommitAuthorColumnWidth;
ColumnsViewModel.GitLastCommitShaColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.GitLastCommitShaColumnWidth;
ColumnsViewModel.TagColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.TagColumnWidth;
ColumnsViewModel.DateDeletedColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.DateDeletedColumnWidth;
ColumnsViewModel.PathColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.PathColumnWidth;
ColumnsViewModel.OriginalPathColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.OriginalPathColumnWidth;
ColumnsViewModel.StatusColumn.UserLengthPixels = UserSettingsService.LayoutSettingsService.SyncStatusColumnWidth;
}

// Overridden methods
Expand Down

0 comments on commit e853f42

Please sign in to comment.