diff --git a/src/Files.App/Data/Contexts/DisplayPage/DisplayPageContext.cs b/src/Files.App/Data/Contexts/DisplayPage/DisplayPageContext.cs index 6e0e751b3cee..1134836f63a0 100644 --- a/src/Files.App/Data/Contexts/DisplayPage/DisplayPageContext.cs +++ b/src/Files.App/Data/Contexts/DisplayPage/DisplayPageContext.cs @@ -9,8 +9,9 @@ internal class DisplayPageContext : ObservableObject, IDisplayPageContext { private readonly IPageContext context = Ioc.Default.GetRequiredService(); private readonly IFoldersSettingsService settings = Ioc.Default.GetRequiredService(); + private readonly ILayoutSettingsService layoutSettingsService = Ioc.Default.GetRequiredService(); - public bool IsLayoutAdaptiveEnabled => !settings.SyncFolderPreferencesAcrossDirectories; + public bool IsLayoutAdaptiveEnabled => !layoutSettingsService.SyncFolderPreferencesAcrossDirectories; private LayoutTypes _LayoutType = LayoutTypes.None; public LayoutTypes LayoutType @@ -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)); diff --git a/src/Files.App/Data/Models/ItemViewModel.cs b/src/Files.App/Data/Models/ItemViewModel.cs index 5045ee16d35c..9984632b1970 100644 --- a/src/Files.App/Data/Models/ItemViewModel.cs +++ b/src/Files.App/Data/Models/ItemViewModel.cs @@ -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); diff --git a/src/Files.App/Dialogs/SettingsDialog.xaml b/src/Files.App/Dialogs/SettingsDialog.xaml index 7126702fe95f..3cbad6ff72e3 100644 --- a/src/Files.App/Dialogs/SettingsDialog.xaml +++ b/src/Files.App/Dialogs/SettingsDialog.xaml @@ -103,11 +103,20 @@ + + + + + + Content="{helpers:ResourceString Name=FilesAndFolders}" + Tag="3"> @@ -116,7 +125,7 @@ AccessKey="T" AutomationProperties.AutomationId="SettingsItemTags" Content="{helpers:ResourceString Name=FileTags}" - Tag="3"> + Tag="4"> @@ -125,7 +134,7 @@ AccessKey="G" AutomationProperties.AutomationId="SettingsItemGit" Content="{helpers:ResourceString Name=Git}" - Tag="4"> + Tag="5"> @@ -134,7 +143,7 @@ AccessKey="E" AutomationProperties.AutomationId="SettingsItemAdvanced" Content="{helpers:ResourceString Name=Advanced}" - Tag="5"> + Tag="6"> @@ -143,7 +152,7 @@ AccessKey="B" AutomationProperties.AutomationId="SettingsItemAbout" Content="{helpers:ResourceString Name=About}" - Tag="6"> + Tag="7"> diff --git a/src/Files.App/Dialogs/SettingsDialog.xaml.cs b/src/Files.App/Dialogs/SettingsDialog.xaml.cs index f323bdce82dd..00714f9689c7 100644 --- a/src/Files.App/Dialogs/SettingsDialog.xaml.cs +++ b/src/Files.App/Dialogs/SettingsDialog.xaml.cs @@ -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)) }; } diff --git a/src/Files.App/Helpers/Layout/AdaptiveLayoutHelpers.cs b/src/Files.App/Helpers/Layout/AdaptiveLayoutHelpers.cs index 39653e01acec..b3a8efcb81ae 100644 --- a/src/Files.App/Helpers/Layout/AdaptiveLayoutHelpers.cs +++ b/src/Files.App/Helpers/Layout/AdaptiveLayoutHelpers.cs @@ -13,10 +13,11 @@ namespace Files.App.Helpers public static class AdaptiveLayoutHelpers { private static IFoldersSettingsService FoldersSettingsService { get; } = Ioc.Default.GetRequiredService(); + private static ILayoutSettingsService LayoutSettingsService { get; } = Ioc.Default.GetRequiredService(); public static void ApplyAdaptativeLayout(LayoutPreferencesManager folderSettings, string path, IList filesAndFolders) { - if (FoldersSettingsService.SyncFolderPreferencesAcrossDirectories) + if (LayoutSettingsService.SyncFolderPreferencesAcrossDirectories) return; if (string.IsNullOrWhiteSpace(path)) return; diff --git a/src/Files.App/Helpers/Layout/LayoutPreferencesItem.cs b/src/Files.App/Helpers/Layout/LayoutPreferencesItem.cs index 99697beebaa0..b14a727534bb 100644 --- a/src/Files.App/Helpers/Layout/LayoutPreferencesItem.cs +++ b/src/Files.App/Helpers/Layout/LayoutPreferencesItem.cs @@ -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 diff --git a/src/Files.App/Helpers/Layout/LayoutPreferencesManager.cs b/src/Files.App/Helpers/Layout/LayoutPreferencesManager.cs index 09eec45a8dd2..740deac559ce 100644 --- a/src/Files.App/Helpers/Layout/LayoutPreferencesManager.cs +++ b/src/Files.App/Helpers/Layout/LayoutPreferencesManager.cs @@ -333,17 +333,17 @@ public void OnDefaultPreferencesChanged(string path, string settingsName) switch (settingsName) { - case nameof(UserSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles): + case nameof(UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles): SortDirectoriesAlongsideFiles = preferencesItem.SortDirectoriesAlongsideFiles; break; - case nameof(UserSettingsService.FoldersSettingsService.DefaultSortFilesFirst): + case nameof(UserSettingsService.LayoutSettingsService.DefaultSortFilesFirst): SortFilesFirst = preferencesItem.SortFilesFirst; break; - case nameof(UserSettingsService.FoldersSettingsService.SyncFolderPreferencesAcrossDirectories): + case nameof(UserSettingsService.LayoutSettingsService.SyncFolderPreferencesAcrossDirectories): LayoutPreferencesItem = preferencesItem; LayoutModeChangeRequested?.Invoke(this, new LayoutModeEventArgs(LayoutMode)); break; - case nameof(UserSettingsService.FoldersSettingsService.DefaultLayoutMode): + case nameof(UserSettingsService.LayoutSettingsService.DefaultLayoutMode): LayoutModeChangeRequested?.Invoke(this, new LayoutModeEventArgs(LayoutMode)); break; } @@ -358,41 +358,41 @@ public static LayoutPreferencesDatabaseManager GetDatabaseManagerInstance() public static void SetDefaultLayoutPreferences(ColumnsViewModel columns) { - UserSettingsService.FoldersSettingsService.ShowDateColumn = !columns.DateModifiedColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.ShowDateCreatedColumn = !columns.DateCreatedColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.ShowTypeColumn = !columns.ItemTypeColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.ShowSizeColumn = !columns.SizeColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.ShowFileTagColumn = !columns.TagColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.ShowGitStatusColumn = !columns.GitStatusColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.ShowGitLastCommitDateColumn = !columns.GitLastCommitDateColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.ShowGitLastCommitMessageColumn = !columns.GitLastCommitMessageColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.ShowGitCommitAuthorColumn = !columns.GitCommitAuthorColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.ShowGitLastCommitShaColumn = !columns.GitLastCommitShaColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.ShowDateDeletedColumn = !columns.DateDeletedColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.ShowPathColumn = !columns.PathColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.ShowOriginalPathColumn = !columns.OriginalPathColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.ShowSyncStatusColumn = !columns.StatusColumn.UserCollapsed; - - UserSettingsService.FoldersSettingsService.NameColumnWidth = columns.NameColumn.UserLengthPixels; - UserSettingsService.FoldersSettingsService.DateModifiedColumnWidth = columns.DateModifiedColumn.UserLengthPixels; - UserSettingsService.FoldersSettingsService.DateCreatedColumnWidth = columns.DateCreatedColumn.UserLengthPixels; - UserSettingsService.FoldersSettingsService.TypeColumnWidth = columns.ItemTypeColumn.UserLengthPixels; - UserSettingsService.FoldersSettingsService.SizeColumnWidth = columns.SizeColumn.UserLengthPixels; - UserSettingsService.FoldersSettingsService.TagColumnWidth = columns.TagColumn.UserLengthPixels; - UserSettingsService.FoldersSettingsService.GitStatusColumnWidth = columns.GitStatusColumn.UserLengthPixels; - UserSettingsService.FoldersSettingsService.GitLastCommitDateColumnWidth = columns.GitLastCommitDateColumn.UserLengthPixels; - UserSettingsService.FoldersSettingsService.GitLastCommitMessageColumnWidth = columns.GitLastCommitMessageColumn.UserLengthPixels; - UserSettingsService.FoldersSettingsService.GitCommitAuthorColumnWidth = columns.GitCommitAuthorColumn.UserLengthPixels; - UserSettingsService.FoldersSettingsService.GitLastCommitShaColumnWidth = columns.GitLastCommitShaColumn.UserLengthPixels; - UserSettingsService.FoldersSettingsService.DateDeletedColumnWidth = columns.DateDeletedColumn.UserLengthPixels; - UserSettingsService.FoldersSettingsService.PathColumnWidth = columns.PathColumn.UserLengthPixels; - UserSettingsService.FoldersSettingsService.OriginalPathColumnWidth = columns.OriginalPathColumn.UserLengthPixels; - UserSettingsService.FoldersSettingsService.SyncStatusColumnWidth = columns.StatusColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.ShowDateColumn = !columns.DateModifiedColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.ShowDateCreatedColumn = !columns.DateCreatedColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.ShowTypeColumn = !columns.ItemTypeColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.ShowSizeColumn = !columns.SizeColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.ShowFileTagColumn = !columns.TagColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.ShowGitStatusColumn = !columns.GitStatusColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.ShowGitLastCommitDateColumn = !columns.GitLastCommitDateColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.ShowGitLastCommitMessageColumn = !columns.GitLastCommitMessageColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.ShowGitCommitAuthorColumn = !columns.GitCommitAuthorColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.ShowGitLastCommitShaColumn = !columns.GitLastCommitShaColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.ShowDateDeletedColumn = !columns.DateDeletedColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.ShowPathColumn = !columns.PathColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.ShowOriginalPathColumn = !columns.OriginalPathColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.ShowSyncStatusColumn = !columns.StatusColumn.UserCollapsed; + + UserSettingsService.LayoutSettingsService.NameColumnWidth = columns.NameColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.DateModifiedColumnWidth = columns.DateModifiedColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.DateCreatedColumnWidth = columns.DateCreatedColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.TypeColumnWidth = columns.ItemTypeColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.SizeColumnWidth = columns.SizeColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.TagColumnWidth = columns.TagColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.GitStatusColumnWidth = columns.GitStatusColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.GitLastCommitDateColumnWidth = columns.GitLastCommitDateColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.GitLastCommitMessageColumnWidth = columns.GitLastCommitMessageColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.GitCommitAuthorColumnWidth = columns.GitCommitAuthorColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.GitLastCommitShaColumnWidth = columns.GitLastCommitShaColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.DateDeletedColumnWidth = columns.DateDeletedColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.PathColumnWidth = columns.PathColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.OriginalPathColumnWidth = columns.OriginalPathColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.SyncStatusColumnWidth = columns.StatusColumn.UserLengthPixels; } public static void SetLayoutPreferencesForPath(string path, LayoutPreferencesItem preferencesItem) { - if (!UserSettingsService.FoldersSettingsService.SyncFolderPreferencesAcrossDirectories) + if (!UserSettingsService.LayoutSettingsService.SyncFolderPreferencesAcrossDirectories) { var folderFRN = NativeFileOperationsHelper.GetFolderFRN(path); var trimmedFolderPath = path.TrimPath(); @@ -401,7 +401,7 @@ public static void SetLayoutPreferencesForPath(string path, LayoutPreferencesIte } else { - UserSettingsService.FoldersSettingsService.DefaultLayoutMode = preferencesItem.LayoutMode; + UserSettingsService.LayoutSettingsService.DefaultLayoutMode = preferencesItem.LayoutMode; // Do not save options which only work in recycle bin or cloud folders or search results as global if (preferencesItem.DirectorySortOption != SortOption.Path && @@ -409,7 +409,7 @@ public static void SetLayoutPreferencesForPath(string path, LayoutPreferencesIte preferencesItem.DirectorySortOption != SortOption.DateDeleted && preferencesItem.DirectorySortOption != SortOption.SyncStatus) { - UserSettingsService.FoldersSettingsService.DefaultSortOption = preferencesItem.DirectorySortOption; + UserSettingsService.LayoutSettingsService.DefaultSortOption = preferencesItem.DirectorySortOption; } if (preferencesItem.DirectoryGroupOption != GroupOption.OriginalFolder && @@ -417,93 +417,93 @@ public static void SetLayoutPreferencesForPath(string path, LayoutPreferencesIte preferencesItem.DirectoryGroupOption != GroupOption.FolderPath && preferencesItem.DirectoryGroupOption != GroupOption.SyncStatus) { - UserSettingsService.FoldersSettingsService.DefaultGroupOption = preferencesItem.DirectoryGroupOption; + UserSettingsService.LayoutSettingsService.DefaultGroupOption = preferencesItem.DirectoryGroupOption; } - UserSettingsService.FoldersSettingsService.DefaultDirectorySortDirection = preferencesItem.DirectorySortDirection; - UserSettingsService.FoldersSettingsService.DefaultDirectoryGroupDirection = preferencesItem.DirectoryGroupDirection; - UserSettingsService.FoldersSettingsService.DefaultGroupByDateUnit = preferencesItem.DirectoryGroupByDateUnit; - UserSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles = preferencesItem.SortDirectoriesAlongsideFiles; - UserSettingsService.FoldersSettingsService.DefaultSortFilesFirst = preferencesItem.SortFilesFirst; + UserSettingsService.LayoutSettingsService.DefaultDirectorySortDirection = preferencesItem.DirectorySortDirection; + UserSettingsService.LayoutSettingsService.DefaultDirectoryGroupDirection = preferencesItem.DirectoryGroupDirection; + UserSettingsService.LayoutSettingsService.DefaultGroupByDateUnit = preferencesItem.DirectoryGroupByDateUnit; + UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles = preferencesItem.SortDirectoriesAlongsideFiles; + UserSettingsService.LayoutSettingsService.DefaultSortFilesFirst = preferencesItem.SortFilesFirst; - UserSettingsService.FoldersSettingsService.NameColumnWidth = preferencesItem.ColumnsViewModel.NameColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.NameColumnWidth = preferencesItem.ColumnsViewModel.NameColumn.UserLengthPixels; if (!preferencesItem.ColumnsViewModel.DateModifiedColumn.IsHidden) { - UserSettingsService.FoldersSettingsService.ShowDateColumn = !preferencesItem.ColumnsViewModel.DateModifiedColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.DateModifiedColumnWidth = preferencesItem.ColumnsViewModel.DateModifiedColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.ShowDateColumn = !preferencesItem.ColumnsViewModel.DateModifiedColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.DateModifiedColumnWidth = preferencesItem.ColumnsViewModel.DateModifiedColumn.UserLengthPixels; } if (!preferencesItem.ColumnsViewModel.DateCreatedColumn.IsHidden) { - UserSettingsService.FoldersSettingsService.ShowDateCreatedColumn = !preferencesItem.ColumnsViewModel.DateCreatedColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.DateCreatedColumnWidth = preferencesItem.ColumnsViewModel.DateCreatedColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.ShowDateCreatedColumn = !preferencesItem.ColumnsViewModel.DateCreatedColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.DateCreatedColumnWidth = preferencesItem.ColumnsViewModel.DateCreatedColumn.UserLengthPixels; } if (!preferencesItem.ColumnsViewModel.ItemTypeColumn.IsHidden) { - UserSettingsService.FoldersSettingsService.ShowTypeColumn = !preferencesItem.ColumnsViewModel.ItemTypeColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.TypeColumnWidth = preferencesItem.ColumnsViewModel.ItemTypeColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.ShowTypeColumn = !preferencesItem.ColumnsViewModel.ItemTypeColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.TypeColumnWidth = preferencesItem.ColumnsViewModel.ItemTypeColumn.UserLengthPixels; } if (!preferencesItem.ColumnsViewModel.SizeColumn.IsHidden) { - UserSettingsService.FoldersSettingsService.ShowSizeColumn = !preferencesItem.ColumnsViewModel.SizeColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.SizeColumnWidth = preferencesItem.ColumnsViewModel.SizeColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.ShowSizeColumn = !preferencesItem.ColumnsViewModel.SizeColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.SizeColumnWidth = preferencesItem.ColumnsViewModel.SizeColumn.UserLengthPixels; } if (!preferencesItem.ColumnsViewModel.TagColumn.IsHidden) { - UserSettingsService.FoldersSettingsService.ShowFileTagColumn = !preferencesItem.ColumnsViewModel.TagColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.TagColumnWidth = preferencesItem.ColumnsViewModel.TagColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.ShowFileTagColumn = !preferencesItem.ColumnsViewModel.TagColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.TagColumnWidth = preferencesItem.ColumnsViewModel.TagColumn.UserLengthPixels; } if (!preferencesItem.ColumnsViewModel.GitStatusColumn.IsHidden) { - UserSettingsService.FoldersSettingsService.ShowGitStatusColumn = !preferencesItem.ColumnsViewModel.GitStatusColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.GitStatusColumnWidth = preferencesItem.ColumnsViewModel.GitStatusColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.ShowGitStatusColumn = !preferencesItem.ColumnsViewModel.GitStatusColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.GitStatusColumnWidth = preferencesItem.ColumnsViewModel.GitStatusColumn.UserLengthPixels; } if (!preferencesItem.ColumnsViewModel.GitLastCommitDateColumn.IsHidden) { - UserSettingsService.FoldersSettingsService.ShowGitLastCommitDateColumn = !preferencesItem.ColumnsViewModel.GitLastCommitDateColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.GitLastCommitDateColumnWidth = preferencesItem.ColumnsViewModel.GitLastCommitDateColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.ShowGitLastCommitDateColumn = !preferencesItem.ColumnsViewModel.GitLastCommitDateColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.GitLastCommitDateColumnWidth = preferencesItem.ColumnsViewModel.GitLastCommitDateColumn.UserLengthPixels; } if (!preferencesItem.ColumnsViewModel.GitLastCommitMessageColumn.IsHidden) { - UserSettingsService.FoldersSettingsService.ShowGitLastCommitMessageColumn = !preferencesItem.ColumnsViewModel.GitLastCommitMessageColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.GitLastCommitMessageColumnWidth = preferencesItem.ColumnsViewModel.GitLastCommitMessageColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.ShowGitLastCommitMessageColumn = !preferencesItem.ColumnsViewModel.GitLastCommitMessageColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.GitLastCommitMessageColumnWidth = preferencesItem.ColumnsViewModel.GitLastCommitMessageColumn.UserLengthPixels; } if (!preferencesItem.ColumnsViewModel.GitCommitAuthorColumn.IsHidden) { - UserSettingsService.FoldersSettingsService.ShowGitCommitAuthorColumn = !preferencesItem.ColumnsViewModel.GitCommitAuthorColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.GitCommitAuthorColumnWidth = preferencesItem.ColumnsViewModel.GitCommitAuthorColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.ShowGitCommitAuthorColumn = !preferencesItem.ColumnsViewModel.GitCommitAuthorColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.GitCommitAuthorColumnWidth = preferencesItem.ColumnsViewModel.GitCommitAuthorColumn.UserLengthPixels; } if (!preferencesItem.ColumnsViewModel.GitLastCommitShaColumn.IsHidden) { - UserSettingsService.FoldersSettingsService.ShowGitLastCommitShaColumn = !preferencesItem.ColumnsViewModel.GitLastCommitShaColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.GitLastCommitShaColumnWidth = preferencesItem.ColumnsViewModel.GitLastCommitShaColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.ShowGitLastCommitShaColumn = !preferencesItem.ColumnsViewModel.GitLastCommitShaColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.GitLastCommitShaColumnWidth = preferencesItem.ColumnsViewModel.GitLastCommitShaColumn.UserLengthPixels; } if (!preferencesItem.ColumnsViewModel.DateDeletedColumn.IsHidden) { - UserSettingsService.FoldersSettingsService.ShowDateDeletedColumn = !preferencesItem.ColumnsViewModel.DateDeletedColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.DateDeletedColumnWidth = preferencesItem.ColumnsViewModel.DateDeletedColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.ShowDateDeletedColumn = !preferencesItem.ColumnsViewModel.DateDeletedColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.DateDeletedColumnWidth = preferencesItem.ColumnsViewModel.DateDeletedColumn.UserLengthPixels; } if (!preferencesItem.ColumnsViewModel.PathColumn.IsHidden) { - UserSettingsService.FoldersSettingsService.ShowPathColumn = !preferencesItem.ColumnsViewModel.PathColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.PathColumnWidth = preferencesItem.ColumnsViewModel.PathColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.ShowPathColumn = !preferencesItem.ColumnsViewModel.PathColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.PathColumnWidth = preferencesItem.ColumnsViewModel.PathColumn.UserLengthPixels; } if (!preferencesItem.ColumnsViewModel.OriginalPathColumn.IsHidden) { - UserSettingsService.FoldersSettingsService.ShowOriginalPathColumn = !preferencesItem.ColumnsViewModel.OriginalPathColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.OriginalPathColumnWidth = preferencesItem.ColumnsViewModel.OriginalPathColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.ShowOriginalPathColumn = !preferencesItem.ColumnsViewModel.OriginalPathColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.OriginalPathColumnWidth = preferencesItem.ColumnsViewModel.OriginalPathColumn.UserLengthPixels; } if (!preferencesItem.ColumnsViewModel.StatusColumn.IsHidden) { - UserSettingsService.FoldersSettingsService.ShowSyncStatusColumn = !preferencesItem.ColumnsViewModel.StatusColumn.UserCollapsed; - UserSettingsService.FoldersSettingsService.SyncStatusColumnWidth = preferencesItem.ColumnsViewModel.StatusColumn.UserLengthPixels; + UserSettingsService.LayoutSettingsService.ShowSyncStatusColumn = !preferencesItem.ColumnsViewModel.StatusColumn.UserCollapsed; + UserSettingsService.LayoutSettingsService.SyncStatusColumnWidth = preferencesItem.ColumnsViewModel.StatusColumn.UserLengthPixels; } } } private static LayoutPreferencesItem? GetLayoutPreferencesForPath(string path) { - if (!UserSettingsService.FoldersSettingsService.SyncFolderPreferencesAcrossDirectories) + if (!UserSettingsService.LayoutSettingsService.SyncFolderPreferencesAcrossDirectories) { path = path.TrimPath() ?? string.Empty; diff --git a/src/Files.App/Services/Settings/FoldersSettingsService.cs b/src/Files.App/Services/Settings/FoldersSettingsService.cs index aa2d3fddf934..08b44d02873b 100644 --- a/src/Files.App/Services/Settings/FoldersSettingsService.cs +++ b/src/Files.App/Services/Settings/FoldersSettingsService.cs @@ -13,248 +13,6 @@ public FoldersSettingsService(ISettingsSharingContext settingsSharingContext) RegisterSettingsContext(settingsSharingContext); } - public bool SyncFolderPreferencesAcrossDirectories - { - get => Get(false); - set => Set(value); - } - - public FolderLayoutModes DefaultLayoutMode - { - get => (FolderLayoutModes)Get((long)FolderLayoutModes.Adaptive); - set => Set((long)value); - } - - public double GitStatusColumnWidth - { - get => Get(80d); - set - { - if (ShowGitStatusColumn) - Set(value); - } - } - - public double GitLastCommitDateColumnWidth - { - get => Get(140d); - set - { - if (ShowGitLastCommitDateColumn) - Set(value); - } - } - - public double GitLastCommitMessageColumnWidth - { - get => Get(140d); - set - { - if (ShowGitLastCommitMessageColumn) - Set(value); - } - } - - public double GitCommitAuthorColumnWidth - { - get => Get(140d); - set - { - if (ShowGitCommitAuthorColumn) - Set(value); - } - } - - public double GitLastCommitShaColumnWidth - { - get => Get(80d); - set - { - if (ShowGitLastCommitShaColumn) - Set(value); - } - } - - public double TagColumnWidth - { - get => Get(140d); - set - { - if (ShowFileTagColumn) - Set(value); - } - } - - public double NameColumnWidth - { - get => Get(240d); - set => Set(value); - } - - public double DateModifiedColumnWidth - { - get => Get(200d); - set - { - if (ShowDateColumn) - Set(value); - } - } - - public double TypeColumnWidth - { - get => Get(140d); - set - { - if (ShowTypeColumn) - Set(value); - } - } - - public double DateCreatedColumnWidth - { - get => Get(200d); - set - { - if (ShowDateCreatedColumn) - Set(value); - } - } - - public double SizeColumnWidth - { - get => Get(100d); - set - { - if (ShowSizeColumn) - Set(value); - } - } - - public double DateDeletedColumnWidth - { - get => Get(200d); - set - { - if (ShowDateDeletedColumn) - Set(value); - } - } - - public double PathColumnWidth - { - get => Get(200d); - set - { - if (ShowPathColumn) - Set(value); - } - } - - public double OriginalPathColumnWidth - { - get => Get(200d); - set - { - if (ShowOriginalPathColumn) - Set(value); - } - } - - public double SyncStatusColumnWidth - { - get => Get(50d); - set - { - if (ShowSyncStatusColumn) - Set(value); - } - } - - public bool ShowDateColumn - { - get => Get(true); - set => Set(value); - } - - public bool ShowDateCreatedColumn - { - get => Get(false); - set => Set(value); - } - - public bool ShowTypeColumn - { - get => Get(true); - set => Set(value); - } - - public bool ShowSizeColumn - { - get => Get(true); - set => Set(value); - } - - public bool ShowGitStatusColumn - { - get => Get(false); - set => Set(value); - } - - public bool ShowGitLastCommitDateColumn - { - get => Get(false); - set => Set(value); - } - - public bool ShowGitLastCommitMessageColumn - { - get => Get(false); - set => Set(value); - } - - public bool ShowGitCommitAuthorColumn - { - get => Get(false); - set => Set(value); - } - - public bool ShowGitLastCommitShaColumn - { - get => Get(false); - set => Set(value); - } - - public bool ShowFileTagColumn - { - get => Get(true); - set => Set(value); - } - - public bool ShowDateDeletedColumn - { - get => Get(true); - set => Set(value); - } - - public bool ShowPathColumn - { - get => Get(true); - set => Set(value); - } - - public bool ShowOriginalPathColumn - { - get => Get(true); - set => Set(value); - } - - public bool ShowSyncStatusColumn - { - get => Get(true); - set => Set(value); - } - public bool ShowHiddenItems { get => Get(false); @@ -309,48 +67,6 @@ public bool CalculateFolderSizes set => Set(value); } - public SortOption DefaultSortOption - { - get => (SortOption)Get((long)SortOption.Name); - set => Set((long)value); - } - - public GroupOption DefaultGroupOption - { - get => (GroupOption)Get((long)GroupOption.None); - set => Set((long)value); - } - - public SortDirection DefaultDirectorySortDirection - { - get => (SortDirection)Get((long)SortDirection.Ascending); - set => Set((long)value); - } - - public SortDirection DefaultDirectoryGroupDirection - { - get => (SortDirection)Get((long)SortDirection.Ascending); - set => Set((long)value); - } - - public GroupByDateUnit DefaultGroupByDateUnit - { - get => (GroupByDateUnit)Get((long)GroupByDateUnit.Year); - set => Set((long)value); - } - - public bool DefaultSortDirectoriesAlongsideFiles - { - get => Get(false); - set => Set(value); - } - - public bool DefaultSortFilesFirst - { - get => Get(false); - set => Set(value); - } - public bool ShowFileExtensions { get => Get(true); @@ -397,29 +113,6 @@ protected override void RaiseOnSettingChangedEvent(object sender, SettingChanged { switch (e.SettingName) { - case nameof(SyncFolderPreferencesAcrossDirectories): - case nameof(DefaultLayoutMode): - case nameof(GitStatusColumnWidth): - case nameof(GitLastCommitDateColumnWidth): - case nameof(GitLastCommitMessageColumnWidth): - case nameof(GitCommitAuthorColumnWidth): - case nameof(GitLastCommitShaColumnWidth): - case nameof(TagColumnWidth): - case nameof(NameColumnWidth): - case nameof(DateModifiedColumnWidth): - case nameof(TypeColumnWidth): - case nameof(DateCreatedColumnWidth): - case nameof(SizeColumnWidth): - case nameof(ShowDateColumn): - case nameof(ShowDateCreatedColumn): - case nameof(ShowTypeColumn): - case nameof(ShowSizeColumn): - case nameof(ShowGitStatusColumn): - case nameof(ShowGitLastCommitDateColumn): - case nameof(ShowGitLastCommitMessageColumn): - case nameof(ShowGitCommitAuthorColumn): - case nameof(ShowGitLastCommitShaColumn): - case nameof(ShowFileTagColumn): case nameof(ShowHiddenItems): case nameof(ShowProtectedSystemFiles): case nameof(AreAlternateStreamsVisible): diff --git a/src/Files.App/Services/Settings/LayoutSettingsService.cs b/src/Files.App/Services/Settings/LayoutSettingsService.cs index 5e0a7772fecf..7930848e4afc 100644 --- a/src/Files.App/Services/Settings/LayoutSettingsService.cs +++ b/src/Files.App/Services/Settings/LayoutSettingsService.cs @@ -1,6 +1,8 @@ // Copyright (c) 2023 Files Community // Licensed under the MIT License. See the LICENSE. +using Microsoft.AppCenter.Analytics; + namespace Files.App.Services.Settings { internal sealed class LayoutSettingsService : BaseObservableJsonSettings, ILayoutSettingsService @@ -11,6 +13,290 @@ public LayoutSettingsService(ISettingsSharingContext settingsSharingContext) RegisterSettingsContext(settingsSharingContext); } + public bool SyncFolderPreferencesAcrossDirectories + { + get => Get(false); + set => Set(value); + } + + public FolderLayoutModes DefaultLayoutMode + { + get => (FolderLayoutModes)Get((long)FolderLayoutModes.Adaptive); + set => Set((long)value); + } + + public SortOption DefaultSortOption + { + get => (SortOption)Get((long)SortOption.Name); + set => Set((long)value); + } + + public SortDirection DefaultDirectorySortDirection + { + get => (SortDirection)Get((long)SortDirection.Ascending); + set => Set((long)value); + } + + public bool DefaultSortDirectoriesAlongsideFiles + { + get => Get(false); + set => Set(value); + } + + public bool DefaultSortFilesFirst + { + get => Get(false); + set => Set(value); + } + + public GroupOption DefaultGroupOption + { + get => (GroupOption)Get((long)GroupOption.None); + set => Set((long)value); + } + + public SortDirection DefaultDirectoryGroupDirection + { + get => (SortDirection)Get((long)SortDirection.Ascending); + set => Set((long)value); + } + + public GroupByDateUnit DefaultGroupByDateUnit + { + get => (GroupByDateUnit)Get((long)GroupByDateUnit.Year); + set => Set((long)value); + } + + public double GitStatusColumnWidth + { + get => Get(80d); + set + { + if (ShowGitStatusColumn) + Set(value); + } + } + + public double GitLastCommitDateColumnWidth + { + get => Get(140d); + set + { + if (ShowGitLastCommitDateColumn) + Set(value); + } + } + + public double GitLastCommitMessageColumnWidth + { + get => Get(140d); + set + { + if (ShowGitLastCommitMessageColumn) + Set(value); + } + } + + public double GitCommitAuthorColumnWidth + { + get => Get(140d); + set + { + if (ShowGitCommitAuthorColumn) + Set(value); + } + } + + public double GitLastCommitShaColumnWidth + { + get => Get(80d); + set + { + if (ShowGitLastCommitShaColumn) + Set(value); + } + } + + public double TagColumnWidth + { + get => Get(140d); + set + { + if (ShowFileTagColumn) + Set(value); + } + } + + public double NameColumnWidth + { + get => Get(240d); + set => Set(value); + } + + public double DateModifiedColumnWidth + { + get => Get(200d); + set + { + if (ShowDateColumn) + Set(value); + } + } + + public double TypeColumnWidth + { + get => Get(140d); + set + { + if (ShowTypeColumn) + Set(value); + } + } + + public double DateCreatedColumnWidth + { + get => Get(200d); + set + { + if (ShowDateCreatedColumn) + Set(value); + } + } + + public double SizeColumnWidth + { + get => Get(100d); + set + { + if (ShowSizeColumn) + Set(value); + } + } + + public double DateDeletedColumnWidth + { + get => Get(200d); + set + { + if (ShowDateDeletedColumn) + Set(value); + } + } + + public double PathColumnWidth + { + get => Get(200d); + set + { + if (ShowPathColumn) + Set(value); + } + } + + public double OriginalPathColumnWidth + { + get => Get(200d); + set + { + if (ShowOriginalPathColumn) + Set(value); + } + } + + public double SyncStatusColumnWidth + { + get => Get(50d); + set + { + if (ShowSyncStatusColumn) + Set(value); + } + } + + public bool ShowDateColumn + { + get => Get(true); + set => Set(value); + } + + public bool ShowDateCreatedColumn + { + get => Get(false); + set => Set(value); + } + + public bool ShowTypeColumn + { + get => Get(true); + set => Set(value); + } + + public bool ShowSizeColumn + { + get => Get(true); + set => Set(value); + } + + public bool ShowGitStatusColumn + { + get => Get(false); + set => Set(value); + } + + public bool ShowGitLastCommitDateColumn + { + get => Get(false); + set => Set(value); + } + + public bool ShowGitLastCommitMessageColumn + { + get => Get(false); + set => Set(value); + } + + public bool ShowGitCommitAuthorColumn + { + get => Get(false); + set => Set(value); + } + + public bool ShowGitLastCommitShaColumn + { + get => Get(false); + set => Set(value); + } + + public bool ShowFileTagColumn + { + get => Get(true); + set => Set(value); + } + + public bool ShowDateDeletedColumn + { + get => Get(true); + set => Set(value); + } + + public bool ShowPathColumn + { + get => Get(true); + set => Set(value); + } + + public bool ShowOriginalPathColumn + { + get => Get(true); + set => Set(value); + } + + public bool ShowSyncStatusColumn + { + get => Get(true); + set => Set(value); + } + public DetailsViewSizeKind DetailsViewSize { get => Get(DetailsViewSizeKind.Small); @@ -40,5 +326,46 @@ public ColumnsViewSizeKind ColumnsViewSize get => Get(ColumnsViewSizeKind.Small); set => Set(value); } + + protected override void RaiseOnSettingChangedEvent(object sender, SettingChangedEventArgs e) + { + switch (e.SettingName) + { + case nameof(SyncFolderPreferencesAcrossDirectories): + case nameof(DefaultLayoutMode): + case nameof(DefaultSortOption): + case nameof(DefaultDirectorySortDirection): + case nameof(DefaultSortDirectoriesAlongsideFiles): + case nameof(DefaultSortFilesFirst): + case nameof(DefaultGroupOption): + case nameof(DefaultDirectoryGroupDirection): + case nameof(DefaultGroupByDateUnit): + case nameof(GitStatusColumnWidth): + case nameof(GitLastCommitDateColumnWidth): + case nameof(GitLastCommitMessageColumnWidth): + case nameof(GitCommitAuthorColumnWidth): + case nameof(GitLastCommitShaColumnWidth): + case nameof(TagColumnWidth): + case nameof(NameColumnWidth): + case nameof(DateModifiedColumnWidth): + case nameof(TypeColumnWidth): + case nameof(DateCreatedColumnWidth): + case nameof(SizeColumnWidth): + case nameof(ShowDateColumn): + case nameof(ShowDateCreatedColumn): + case nameof(ShowTypeColumn): + case nameof(ShowSizeColumn): + case nameof(ShowGitStatusColumn): + case nameof(ShowGitLastCommitDateColumn): + case nameof(ShowGitLastCommitMessageColumn): + case nameof(ShowGitCommitAuthorColumn): + case nameof(ShowGitLastCommitShaColumn): + case nameof(ShowFileTagColumn): + Analytics.TrackEvent($"Set {e.SettingName} to {e.NewValue}"); + break; + } + + base.RaiseOnSettingChangedEvent(sender, e); + } } } diff --git a/src/Files.App/Strings/en-US/Resources.resw b/src/Files.App/Strings/en-US/Resources.resw index d983771aa4a9..27c3707e11cc 100644 --- a/src/Files.App/Strings/en-US/Resources.resw +++ b/src/Files.App/Strings/en-US/Resources.resw @@ -1029,8 +1029,8 @@ Open in new pane - - Folders + + Files & folders Details (Ctrl+Shift+1) @@ -1842,13 +1842,13 @@ Do not adjust DPI - + Do not override DPI - + Compatibility mode - + No reduced color @@ -2019,9 +2019,6 @@ Type column - - Details layout columns - Lockscreen @@ -3713,4 +3710,10 @@ Extra large Used to describe layout sizes - + + Details view + + + Layout type + + \ No newline at end of file diff --git a/src/Files.App/ViewModels/Settings/FoldersViewModel.cs b/src/Files.App/ViewModels/Settings/FoldersViewModel.cs index fd524e6f52ac..86782abe9fe6 100644 --- a/src/Files.App/ViewModels/Settings/FoldersViewModel.cs +++ b/src/Files.App/ViewModels/Settings/FoldersViewModel.cs @@ -7,35 +7,16 @@ public class FoldersViewModel : ObservableObject { private IUserSettingsService UserSettingsService { get; } = Ioc.Default.GetRequiredService(); - // FileTag combobox indexes (required to hide SyncStatus) - private readonly int FileTagSortingIndex = 5; - private readonly int FileTagGroupingIndex = 6; + public FoldersViewModel() { - SelectedDefaultLayoutModeIndex = (int)DefaultLayoutMode; - SelectedDefaultSortingIndex = UserSettingsService.FoldersSettingsService.DefaultSortOption == SortOption.FileTag ? FileTagSortingIndex : (int)UserSettingsService.FoldersSettingsService.DefaultSortOption; - SelectedDefaultGroupingIndex = UserSettingsService.FoldersSettingsService.DefaultGroupOption == GroupOption.FileTag ? FileTagGroupingIndex : (int)UserSettingsService.FoldersSettingsService.DefaultGroupOption; - SelectedDefaultGroupByDateUnitIndex = (int)UserSettingsService.FoldersSettingsService.DefaultGroupByDateUnit; - SelectedDefaultSortPriorityIndex = UserSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles ? 2 : UserSettingsService.FoldersSettingsService.DefaultSortFilesFirst ? 1 : 0; SelectedDeleteConfirmationPolicyIndex = (int)DeleteConfirmationPolicy; } // Properties - private int selectedDefaultLayoutModeIndex; - public int SelectedDefaultLayoutModeIndex - { - get => selectedDefaultLayoutModeIndex; - set - { - if (SetProperty(ref selectedDefaultLayoutModeIndex, value)) - { - OnPropertyChanged(nameof(SelectedDefaultLayoutModeIndex)); - DefaultLayoutMode = (FolderLayoutModes)value; - } - } - } + private int selectedDeleteConfirmationPolicyIndex; public int SelectedDeleteConfirmationPolicyIndex @@ -51,105 +32,6 @@ public int SelectedDeleteConfirmationPolicyIndex } } - public bool SyncFolderPreferencesAcrossDirectories - { - get => UserSettingsService.FoldersSettingsService.SyncFolderPreferencesAcrossDirectories; - set - { - if (value != UserSettingsService.FoldersSettingsService.SyncFolderPreferencesAcrossDirectories) - { - UserSettingsService.FoldersSettingsService.SyncFolderPreferencesAcrossDirectories = value; - - ResetLayoutPreferences(); - OnPropertyChanged(); - } - } - } - - public bool ShowFileTagColumn - { - get => UserSettingsService.FoldersSettingsService.ShowFileTagColumn; - set - { - if (value != UserSettingsService.FoldersSettingsService.ShowFileTagColumn) - { - UserSettingsService.FoldersSettingsService.ShowFileTagColumn = value; - - OnPropertyChanged(); - } - } - } - - public bool ShowSizeColumn - { - get => UserSettingsService.FoldersSettingsService.ShowSizeColumn; - set - { - if (value != UserSettingsService.FoldersSettingsService.ShowSizeColumn) - { - UserSettingsService.FoldersSettingsService.ShowSizeColumn = value; - - OnPropertyChanged(); - } - } - } - - public bool ShowTypeColumn - { - get => UserSettingsService.FoldersSettingsService.ShowTypeColumn; - set - { - if (value != UserSettingsService.FoldersSettingsService.ShowTypeColumn) - { - UserSettingsService.FoldersSettingsService.ShowTypeColumn = value; - - OnPropertyChanged(); - } - } - } - - public bool ShowDateCreatedColumn - { - get => UserSettingsService.FoldersSettingsService.ShowDateCreatedColumn; - set - { - if (value != UserSettingsService.FoldersSettingsService.ShowDateCreatedColumn) - { - UserSettingsService.FoldersSettingsService.ShowDateCreatedColumn = value; - - OnPropertyChanged(); - } - } - } - - public bool ShowDateColumn - { - get => UserSettingsService.FoldersSettingsService.ShowDateColumn; - set - { - if (value != UserSettingsService.FoldersSettingsService.ShowDateColumn) - { - UserSettingsService.FoldersSettingsService.ShowDateColumn = value; - - OnPropertyChanged(); - } - } - } - - public FolderLayoutModes DefaultLayoutMode - { - get => UserSettingsService.FoldersSettingsService.DefaultLayoutMode; - set - { - if (value != UserSettingsService.FoldersSettingsService.DefaultLayoutMode) - { - UserSettingsService.FoldersSettingsService.DefaultLayoutMode = value; - - OnPropertyChanged(); - } - } - } - public bool ShowHiddenItems { get => UserSettingsService.FoldersSettingsService.ShowHiddenItems; @@ -248,82 +130,6 @@ public bool OpenFoldersNewTab } } - public bool SortInDescendingOrder - { - get => UserSettingsService.FoldersSettingsService.DefaultDirectorySortDirection == SortDirection.Descending; - set - { - if (value != (UserSettingsService.FoldersSettingsService.DefaultDirectorySortDirection == SortDirection.Descending)) - { - UserSettingsService.FoldersSettingsService.DefaultDirectorySortDirection = value ? SortDirection.Descending : SortDirection.Ascending; - OnPropertyChanged(); - } - } - } - - public bool GroupInDescendingOrder - { - get => UserSettingsService.FoldersSettingsService.DefaultDirectoryGroupDirection == SortDirection.Descending; - set - { - if (value != (UserSettingsService.FoldersSettingsService.DefaultDirectoryGroupDirection == SortDirection.Descending)) - { - UserSettingsService.FoldersSettingsService.DefaultDirectoryGroupDirection = value ? SortDirection.Descending : SortDirection.Ascending; - OnPropertyChanged(); - } - } - } - - public bool IsDefaultGrouped - => UserSettingsService.FoldersSettingsService.DefaultGroupOption != GroupOption.None; - - private int defaultGroupByDateUnitIndex; - public int SelectedDefaultGroupByDateUnitIndex - { - get => defaultGroupByDateUnitIndex; - set - { - if (SetProperty(ref defaultGroupByDateUnitIndex, value)) - { - OnPropertyChanged(nameof(SelectedDefaultGroupByDateUnitIndex)); - UserSettingsService.FoldersSettingsService.DefaultGroupByDateUnit = (GroupByDateUnit)value; - } - } - } - - public bool IsGroupByDate - => UserSettingsService.FoldersSettingsService.DefaultGroupOption.IsGroupByDate(); - - private int selectedDefaultSortPriorityIndex; - public int SelectedDefaultSortPriorityIndex - { - get => selectedDefaultSortPriorityIndex; - set - { - if (SetProperty(ref selectedDefaultSortPriorityIndex, value)) - { - OnPropertyChanged(nameof(SelectedDefaultSortPriorityIndex)); - - switch (value) - { - case 0: - UserSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles = false; - UserSettingsService.FoldersSettingsService.DefaultSortFilesFirst = false; - break; - case 1: - UserSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles = false; - UserSettingsService.FoldersSettingsService.DefaultSortFilesFirst = true; - break; - case 2: - UserSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles = true; - break; - default: - break; - } - } - } - } - public bool CalculateFolderSizes { get => UserSettingsService.FoldersSettingsService.CalculateFolderSizes; @@ -352,40 +158,6 @@ public bool ScrollToPreviousFolderWhenNavigatingUp } } - private int selectedDefaultSortingIndex; - public int SelectedDefaultSortingIndex - { - get => selectedDefaultSortingIndex; - set - { - if (SetProperty(ref selectedDefaultSortingIndex, value)) - { - OnPropertyChanged(nameof(SelectedDefaultSortingIndex)); - - UserSettingsService.FoldersSettingsService.DefaultSortOption = value == FileTagSortingIndex ? SortOption.FileTag : (SortOption)value; - } - } - } - - private int selectedDefaultGroupingIndex; - public int SelectedDefaultGroupingIndex - { - get => selectedDefaultGroupingIndex; - set - { - if (SetProperty(ref selectedDefaultGroupingIndex, value)) - { - OnPropertyChanged(nameof(SelectedDefaultGroupingIndex)); - - UserSettingsService.FoldersSettingsService.DefaultGroupOption = value == FileTagGroupingIndex ? GroupOption.FileTag : (GroupOption)value; - - // Raise an event for the grouping option toggle switches availability - OnPropertyChanged(nameof(IsDefaultGrouped)); - OnPropertyChanged(nameof(IsGroupByDate)); - } - } - } - public bool ShowFileExtensions { get => UserSettingsService.FoldersSettingsService.ShowFileExtensions; @@ -483,13 +255,5 @@ public bool ShowCheckboxesWhenSelectingItems } } } - - public void ResetLayoutPreferences() - { - // Is this proper practice? - var dbInstance = LayoutPreferencesManager.GetDatabaseManagerInstance(); - - dbInstance.ResetAll(); - } } } diff --git a/src/Files.App/ViewModels/Settings/LayoutViewModel.cs b/src/Files.App/ViewModels/Settings/LayoutViewModel.cs new file mode 100644 index 000000000000..05164b03530c --- /dev/null +++ b/src/Files.App/ViewModels/Settings/LayoutViewModel.cs @@ -0,0 +1,277 @@ +// Copyright (c) 2023 Files Community +// Licensed under the MIT License. See the LICENSE. + +namespace Files.App.ViewModels.Settings +{ + public class LayoutViewModel : ObservableObject + { + private IUserSettingsService UserSettingsService { get; } = Ioc.Default.GetRequiredService(); + + // FileTag combobox indexes (required to hide SyncStatus) + private readonly int FileTagSortingIndex = 5; + private readonly int FileTagGroupingIndex = 6; + + public LayoutViewModel() + { + // Layout mode + SelectedDefaultLayoutModeIndex = (int)DefaultLayoutMode; + + // Sorting options + SelectedDefaultSortingIndex = UserSettingsService.LayoutSettingsService.DefaultSortOption == SortOption.FileTag ? FileTagSortingIndex : (int)UserSettingsService.LayoutSettingsService.DefaultSortOption; + SelectedDefaultSortPriorityIndex = UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles ? 2 : UserSettingsService.LayoutSettingsService.DefaultSortFilesFirst ? 1 : 0; + + // Grouping options + SelectedDefaultGroupingIndex = UserSettingsService.LayoutSettingsService.DefaultGroupOption == GroupOption.FileTag ? FileTagGroupingIndex : (int)UserSettingsService.LayoutSettingsService.DefaultGroupOption; + SelectedDefaultGroupByDateUnitIndex = (int)UserSettingsService.LayoutSettingsService.DefaultGroupByDateUnit; + } + + // Properties + + public bool SyncFolderPreferencesAcrossDirectories + { + get => UserSettingsService.LayoutSettingsService.SyncFolderPreferencesAcrossDirectories; + set + { + if (value != UserSettingsService.LayoutSettingsService.SyncFolderPreferencesAcrossDirectories) + { + UserSettingsService.LayoutSettingsService.SyncFolderPreferencesAcrossDirectories = value; + + ResetLayoutPreferences(); + OnPropertyChanged(); + } + } + } + + // Layout mode + + public FolderLayoutModes DefaultLayoutMode + { + get => UserSettingsService.LayoutSettingsService.DefaultLayoutMode; + set + { + if (value != UserSettingsService.LayoutSettingsService.DefaultLayoutMode) + { + UserSettingsService.LayoutSettingsService.DefaultLayoutMode = value; + + OnPropertyChanged(); + } + } + } + + private int selectedDefaultLayoutModeIndex; + public int SelectedDefaultLayoutModeIndex + { + get => selectedDefaultLayoutModeIndex; + set + { + if (SetProperty(ref selectedDefaultLayoutModeIndex, value)) + { + OnPropertyChanged(nameof(SelectedDefaultLayoutModeIndex)); + DefaultLayoutMode = (FolderLayoutModes)value; + } + } + } + + + // Sorting options + + private int selectedDefaultSortingIndex; + public int SelectedDefaultSortingIndex + { + get => selectedDefaultSortingIndex; + set + { + if (SetProperty(ref selectedDefaultSortingIndex, value)) + { + OnPropertyChanged(nameof(SelectedDefaultSortingIndex)); + + UserSettingsService.LayoutSettingsService.DefaultSortOption = value == FileTagSortingIndex ? SortOption.FileTag : (SortOption)value; + } + } + } + + public bool SortInDescendingOrder + { + get => UserSettingsService.LayoutSettingsService.DefaultDirectorySortDirection == SortDirection.Descending; + set + { + if (value != (UserSettingsService.LayoutSettingsService.DefaultDirectorySortDirection == SortDirection.Descending)) + { + UserSettingsService.LayoutSettingsService.DefaultDirectorySortDirection = value ? SortDirection.Descending : SortDirection.Ascending; + OnPropertyChanged(); + } + } + } + + + private int selectedDefaultSortPriorityIndex; + public int SelectedDefaultSortPriorityIndex + { + get => selectedDefaultSortPriorityIndex; + set + { + if (SetProperty(ref selectedDefaultSortPriorityIndex, value)) + { + OnPropertyChanged(nameof(SelectedDefaultSortPriorityIndex)); + + switch (value) + { + case 0: + UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles = false; + UserSettingsService.LayoutSettingsService.DefaultSortFilesFirst = false; + break; + case 1: + UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles = false; + UserSettingsService.LayoutSettingsService.DefaultSortFilesFirst = true; + break; + case 2: + UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles = true; + break; + default: + break; + } + } + } + } + + + // Grouping options + + private int selectedDefaultGroupingIndex; + public int SelectedDefaultGroupingIndex + { + get => selectedDefaultGroupingIndex; + set + { + if (SetProperty(ref selectedDefaultGroupingIndex, value)) + { + OnPropertyChanged(nameof(SelectedDefaultGroupingIndex)); + + UserSettingsService.LayoutSettingsService.DefaultGroupOption = value == FileTagGroupingIndex ? GroupOption.FileTag : (GroupOption)value; + + // Raise an event for the grouping option toggle switches availability + OnPropertyChanged(nameof(IsDefaultGrouped)); + OnPropertyChanged(nameof(IsGroupByDate)); + } + } + } + + public bool GroupInDescendingOrder + { + get => UserSettingsService.LayoutSettingsService.DefaultDirectoryGroupDirection == SortDirection.Descending; + set + { + if (value != (UserSettingsService.LayoutSettingsService.DefaultDirectoryGroupDirection == SortDirection.Descending)) + { + UserSettingsService.LayoutSettingsService.DefaultDirectoryGroupDirection = value ? SortDirection.Descending : SortDirection.Ascending; + OnPropertyChanged(); + } + } + } + + private int defaultGroupByDateUnitIndex; + + public int SelectedDefaultGroupByDateUnitIndex + { + get => defaultGroupByDateUnitIndex; + set + { + if (SetProperty(ref defaultGroupByDateUnitIndex, value)) + { + OnPropertyChanged(nameof(SelectedDefaultGroupByDateUnitIndex)); + UserSettingsService.LayoutSettingsService.DefaultGroupByDateUnit = (GroupByDateUnit)value; + } + } + } + + public bool IsGroupByDate + => UserSettingsService.LayoutSettingsService.DefaultGroupOption.IsGroupByDate(); + + public bool IsDefaultGrouped + => UserSettingsService.LayoutSettingsService.DefaultGroupOption != GroupOption.None; + + + // Details view + + public bool ShowFileTagColumn + { + get => UserSettingsService.LayoutSettingsService.ShowFileTagColumn; + set + { + if (value != UserSettingsService.LayoutSettingsService.ShowFileTagColumn) + { + UserSettingsService.LayoutSettingsService.ShowFileTagColumn = value; + + OnPropertyChanged(); + } + } + } + + public bool ShowSizeColumn + { + get => UserSettingsService.LayoutSettingsService.ShowSizeColumn; + set + { + if (value != UserSettingsService.LayoutSettingsService.ShowSizeColumn) + { + UserSettingsService.LayoutSettingsService.ShowSizeColumn = value; + + OnPropertyChanged(); + } + } + } + + public bool ShowTypeColumn + { + get => UserSettingsService.LayoutSettingsService.ShowTypeColumn; + set + { + if (value != UserSettingsService.LayoutSettingsService.ShowTypeColumn) + { + UserSettingsService.LayoutSettingsService.ShowTypeColumn = value; + + OnPropertyChanged(); + } + } + } + + public bool ShowDateCreatedColumn + { + get => UserSettingsService.LayoutSettingsService.ShowDateCreatedColumn; + set + { + if (value != UserSettingsService.LayoutSettingsService.ShowDateCreatedColumn) + { + UserSettingsService.LayoutSettingsService.ShowDateCreatedColumn = value; + + OnPropertyChanged(); + } + } + } + + public bool ShowDateColumn + { + get => UserSettingsService.LayoutSettingsService.ShowDateColumn; + set + { + if (value != UserSettingsService.LayoutSettingsService.ShowDateColumn) + { + UserSettingsService.LayoutSettingsService.ShowDateColumn = value; + + OnPropertyChanged(); + } + } + } + + + // Methods + + public void ResetLayoutPreferences() + { + // Is this proper practice? + var dbInstance = LayoutPreferencesManager.GetDatabaseManagerInstance(); + + dbInstance.ResetAll(); + } + } +} diff --git a/src/Files.App/Views/Settings/FoldersPage.xaml b/src/Files.App/Views/Settings/FoldersPage.xaml index 719a55efe06b..eb488f945152 100644 --- a/src/Files.App/Views/Settings/FoldersPage.xaml +++ b/src/Files.App/Views/Settings/FoldersPage.xaml @@ -34,153 +34,7 @@ Padding="0,0,0,12" FontSize="24" FontWeight="Medium" - Text="{helpers:ResourceString Name=Folders}" /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + Text="{helpers:ResourceString Name=FilesAndFolders}" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Files.App/Views/Settings/LayoutPage.xaml.cs b/src/Files.App/Views/Settings/LayoutPage.xaml.cs new file mode 100644 index 000000000000..211cd08ac94f --- /dev/null +++ b/src/Files.App/Views/Settings/LayoutPage.xaml.cs @@ -0,0 +1,15 @@ +// Copyright (c) 2023 Files Community +// Licensed under the MIT License. See the LICENSE. + +using Microsoft.UI.Xaml.Controls; + +namespace Files.App.Views.Settings +{ + public sealed partial class LayoutPage : Page + { + public LayoutPage() + { + InitializeComponent(); + } + } +} diff --git a/src/Files.Core/Services/Settings/IFoldersSettingsService.cs b/src/Files.Core/Services/Settings/IFoldersSettingsService.cs index 316d2fde8636..133f505e714c 100644 --- a/src/Files.Core/Services/Settings/IFoldersSettingsService.cs +++ b/src/Files.Core/Services/Settings/IFoldersSettingsService.cs @@ -5,161 +5,6 @@ namespace Files.Core.Services.Settings { public interface IFoldersSettingsService : IBaseSettingsService, INotifyPropertyChanged { - /// - /// Gets or sets a value indicating whether or not the date column should be visible by default. - /// - bool ShowDateColumn { get; set; } - - /// - /// Gets or sets a value indicating whether or not the date created column should be visible by default. - /// - bool ShowDateCreatedColumn { get; set; } - - /// - /// Gets or sets a value indicating whether or not the type column should be visible by default. - /// - bool ShowTypeColumn { get; set; } - - /// - /// Gets or sets a value indicating whether or not the size column should be visible by default. - /// - bool ShowSizeColumn { get; set; } - - /// - /// Gets or sets a value indicating whether or not the git status column should be visible by default. - /// - bool ShowGitStatusColumn { get; set; } - - /// - /// Gets or sets a value indicating whether or not the git last commit date column should be visible by default. - /// - bool ShowGitLastCommitDateColumn { get; set; } - - /// - /// Gets or sets a value indicating whether or not the git last commit message column should be visible by default. - /// - bool ShowGitLastCommitMessageColumn { get; set; } - - /// - /// Gets or sets a value indicating whether or not the git last commit author column should be visible by default. - /// - bool ShowGitCommitAuthorColumn { get; set; } - - /// - /// Gets or sets a value indicating whether or not the git last commit SHA column should be visible by default. - /// - bool ShowGitLastCommitShaColumn { get; set; } - - /// - /// Gets or sets a value indicating whether or not the filetag column should be visible by default. - /// - bool ShowFileTagColumn { get; set; } - - /// - /// Gets or sets a value indicating whether or not the date deleted column should be visible by default. - /// - bool ShowDateDeletedColumn { get; set; } - - /// - /// Gets or sets a value indicating whether or not the path column should be visible by default. - /// - bool ShowPathColumn { get; set; } - - /// - /// Gets or sets a value indicating whether or not the original path column should be visible by default. - /// - bool ShowOriginalPathColumn { get; set; } - - /// - /// Gets or sets a value indicating whether or not the sync status column should be visible by default. - /// - bool ShowSyncStatusColumn { get; set; } - - /// - /// Gets or sets a value indicating the default layout mode. - /// - FolderLayoutModes DefaultLayoutMode { get; set; } - - /// - /// Gets or sets a value indicating the width of the git status column - /// - double GitStatusColumnWidth { get; set; } - - /// - /// Gets or sets a value indicating the width of the commit date column - /// - double GitLastCommitDateColumnWidth { get; set; } - - /// - /// Gets or sets a value indicating the width of the commit message column - /// - double GitLastCommitMessageColumnWidth { get; set; } - - /// - /// Gets or sets a value indicating the width of the git author column - /// - double GitCommitAuthorColumnWidth { get; set; } - - /// - /// Gets or sets a value indicating the width of the git sha column - /// - double GitLastCommitShaColumnWidth { get; set; } - - /// - /// Gets or sets a value indicating tags column's default width - /// - double TagColumnWidth { get; set; } - - /// - /// Gets or sets a value indicating name column's default width - /// - double NameColumnWidth { get; set; } - - /// - /// Gets or sets a value indicating date modified column's default width - /// - double DateModifiedColumnWidth { get; set; } - - /// - /// Gets or sets a value indicating item type column's default width - /// - double TypeColumnWidth { get; set; } - - /// - /// Gets or sets a value indicating date created column's default width - /// - double DateCreatedColumnWidth { get; set; } - - /// - /// Gets or sets a value indicating size column's default width - /// - double SizeColumnWidth { get; set; } - - /// - /// Gets or sets a value indicating date deleted column's default width - /// - double DateDeletedColumnWidth { get; set; } - - /// - /// Gets or sets a value indicating sync status column's default width - /// - double SyncStatusColumnWidth { get; set; } - - /// - /// Gets or sets a value indicating path column's default width - /// - double PathColumnWidth { get; set; } - - /// - /// Gets or sets a value indicating original path column's default width - /// - double OriginalPathColumnWidth { get; set; } - - /// - /// Sync folder preferences across all directories - /// - bool SyncFolderPreferencesAcrossDirectories { get; set; } - /// /// Gets or sets a value indicating whether or not hidden items should be visible. /// @@ -205,41 +50,6 @@ public interface IFoldersSettingsService : IBaseSettingsService, INotifyProperty /// bool ScrollToPreviousFolderWhenNavigatingUp { get; set; } - /// - /// Gets or sets a value indicating the default sorting option. - /// - SortOption DefaultSortOption { get; set; } - - /// - /// Gets or sets a value indicating the default grouping option. - /// - GroupOption DefaultGroupOption { get; set; } - - /// - /// Gets or sets a value indicating the default sorting direction. - /// - SortDirection DefaultDirectorySortDirection { get; set; } - - /// - /// Gets or sets a value indicating the default grouping direction. - /// - SortDirection DefaultDirectoryGroupDirection { get; set; } - - /// - /// Gets or sets a value indicating the unit for grouping by date. - /// - GroupByDateUnit DefaultGroupByDateUnit { get; set; } - - /// - /// Gets or sets a value indicating if directories should be sorted alongside files by. - /// - bool DefaultSortDirectoriesAlongsideFiles { get; set; } - - /// - /// Gets or sets a value indicating if files should be sorted first. - /// - bool DefaultSortFilesFirst { get; set; } - /// /// Gets or sets a value indicating if file extensions should be displayed. /// diff --git a/src/Files.Core/Services/Settings/ILayoutSettingsService.cs b/src/Files.Core/Services/Settings/ILayoutSettingsService.cs index 0ab94a05cffc..f11f5718f4fb 100644 --- a/src/Files.Core/Services/Settings/ILayoutSettingsService.cs +++ b/src/Files.Core/Services/Settings/ILayoutSettingsService.cs @@ -7,6 +7,196 @@ namespace Files.Core.Services.Settings { public interface ILayoutSettingsService : IBaseSettingsService, INotifyPropertyChanged { + /// + /// Sync folder preferences across all directories + /// + bool SyncFolderPreferencesAcrossDirectories { get; set; } + + /// + /// Gets or sets a value indicating the default layout mode. + /// + FolderLayoutModes DefaultLayoutMode { get; set; } + + /// + /// Gets or sets a value indicating the default sorting option. + /// + SortOption DefaultSortOption { get; set; } + + /// + /// Gets or sets a value indicating the default sorting direction. + /// + SortDirection DefaultDirectorySortDirection { get; set; } + + /// + /// Gets or sets a value indicating if directories should be sorted alongside files by. + /// + bool DefaultSortDirectoriesAlongsideFiles { get; set; } + + /// + /// Gets or sets a value indicating if files should be sorted first. + /// + bool DefaultSortFilesFirst { get; set; } + + /// + /// Gets or sets a value indicating the default grouping option. + /// + GroupOption DefaultGroupOption { get; set; } + + /// + /// Gets or sets a value indicating the default grouping direction. + /// + SortDirection DefaultDirectoryGroupDirection { get; set; } + + /// + /// Gets or sets a value indicating the unit for grouping by date. + /// + GroupByDateUnit DefaultGroupByDateUnit { get; set; } + + /// + /// Gets or sets a value indicating whether or not the date column should be visible by default. + /// + bool ShowDateColumn { get; set; } + + /// + /// Gets or sets a value indicating whether or not the date created column should be visible by default. + /// + bool ShowDateCreatedColumn { get; set; } + + /// + /// Gets or sets a value indicating whether or not the type column should be visible by default. + /// + bool ShowTypeColumn { get; set; } + + /// + /// Gets or sets a value indicating whether or not the size column should be visible by default. + /// + bool ShowSizeColumn { get; set; } + + /// + /// Gets or sets a value indicating whether or not the git status column should be visible by default. + /// + bool ShowGitStatusColumn { get; set; } + + /// + /// Gets or sets a value indicating whether or not the git last commit date column should be visible by default. + /// + bool ShowGitLastCommitDateColumn { get; set; } + + /// + /// Gets or sets a value indicating whether or not the git last commit message column should be visible by default. + /// + bool ShowGitLastCommitMessageColumn { get; set; } + + /// + /// Gets or sets a value indicating whether or not the git last commit author column should be visible by default. + /// + bool ShowGitCommitAuthorColumn { get; set; } + + /// + /// Gets or sets a value indicating whether or not the git last commit SHA column should be visible by default. + /// + bool ShowGitLastCommitShaColumn { get; set; } + + /// + /// Gets or sets a value indicating whether or not the filetag column should be visible by default. + /// + bool ShowFileTagColumn { get; set; } + + /// + /// Gets or sets a value indicating whether or not the date deleted column should be visible by default. + /// + bool ShowDateDeletedColumn { get; set; } + + /// + /// Gets or sets a value indicating whether or not the path column should be visible by default. + /// + bool ShowPathColumn { get; set; } + + /// + /// Gets or sets a value indicating whether or not the original path column should be visible by default. + /// + bool ShowOriginalPathColumn { get; set; } + + /// + /// Gets or sets a value indicating whether or not the sync status column should be visible by default. + /// + bool ShowSyncStatusColumn { get; set; } + + /// + /// Gets or sets a value indicating the width of the git status column + /// + double GitStatusColumnWidth { get; set; } + + /// + /// Gets or sets a value indicating the width of the commit date column + /// + double GitLastCommitDateColumnWidth { get; set; } + + /// + /// Gets or sets a value indicating the width of the commit message column + /// + double GitLastCommitMessageColumnWidth { get; set; } + + /// + /// Gets or sets a value indicating the width of the git author column + /// + double GitCommitAuthorColumnWidth { get; set; } + + /// + /// Gets or sets a value indicating the width of the git sha column + /// + double GitLastCommitShaColumnWidth { get; set; } + + /// + /// Gets or sets a value indicating tags column's default width + /// + double TagColumnWidth { get; set; } + + /// + /// Gets or sets a value indicating name column's default width + /// + double NameColumnWidth { get; set; } + + /// + /// Gets or sets a value indicating date modified column's default width + /// + double DateModifiedColumnWidth { get; set; } + + /// + /// Gets or sets a value indicating item type column's default width + /// + double TypeColumnWidth { get; set; } + + /// + /// Gets or sets a value indicating date created column's default width + /// + double DateCreatedColumnWidth { get; set; } + + /// + /// Gets or sets a value indicating size column's default width + /// + double SizeColumnWidth { get; set; } + + /// + /// Gets or sets a value indicating date deleted column's default width + /// + double DateDeletedColumnWidth { get; set; } + + /// + /// Gets or sets a value indicating sync status column's default width + /// + double SyncStatusColumnWidth { get; set; } + + /// + /// Gets or sets a value indicating path column's default width + /// + double PathColumnWidth { get; set; } + + /// + /// Gets or sets a value indicating original path column's default width + /// + double OriginalPathColumnWidth { get; set; } + /// /// Item size in the Details View /// diff --git a/tests/Files.InteractionTests/Tests/SettingsTests.cs b/tests/Files.InteractionTests/Tests/SettingsTests.cs index 5d793d5e3162..b4311d68d2b6 100644 --- a/tests/Files.InteractionTests/Tests/SettingsTests.cs +++ b/tests/Files.InteractionTests/Tests/SettingsTests.cs @@ -28,6 +28,7 @@ public void VerifySettingsAreAccessible() { "SettingsItemGeneral", "SettingsItemAppearance", + //"SettingsItemLayout", TODO find workaround for the "Group by" setting block issue "SettingsItemFolders", "SettingsItemTags", "SettingsItemGit",