Skip to content

Feature: Added settings for default order directions #11220

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Feb 9, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions src/Files.App/Helpers/LayoutPreferences/LayoutPreferences.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@ public LayoutPreferences()
GridViewSize = UserSettingsService.LayoutSettingsService.DefaultGridViewSize;
DirectorySortOption = UserSettingsService.FoldersSettingsService.DefaultSortOption;
DirectoryGroupOption = UserSettingsService.FoldersSettingsService.DefaultGroupOption;
DirectorySortDirection = UserSettingsService.LayoutSettingsService.DefaultDirectorySortDirection;
DirectoryGroupDirection = UserSettingsService.LayoutSettingsService.DefaultDirectoryGroupDirection;
SortDirectoriesAlongsideFiles = UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles;
DirectorySortDirection = UserSettingsService.FoldersSettingsService.DefaultDirectorySortDirection;
DirectoryGroupDirection = UserSettingsService.FoldersSettingsService.DefaultDirectoryGroupDirection;
SortDirectoriesAlongsideFiles = UserSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles;
IsAdaptiveLayoutOverridden = defaultLayout is not FolderLayoutModes.Adaptive;

ColumnsViewModel = new ColumnsViewModel();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -226,6 +226,24 @@ public GroupOption DefaultGroupOption
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 bool DefaultSortDirectoriesAlongsideFiles
{
get => Get(false);
set => Set(value);
}

public bool ShowFileExtensions
{
get => Get(true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,23 +17,5 @@ public int DefaultGridViewSize
get => (int)Get((long)Constants.Browser.GridViewBrowser.GridViewSizeMedium);
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 bool DefaultSortDirectoriesAlongsideFiles
{
get => Get(false);
set => Set(value);
}
}
}
6 changes: 6 additions & 0 deletions src/Files.App/Strings/en-US/Resources.resw
Original file line number Diff line number Diff line change
Expand Up @@ -2841,6 +2841,12 @@
<data name="SortBy" xml:space="preserve">
<value>Sort by</value>
</data>
<data name="GroupInDescendingOrder" xml:space="preserve">
<value>Group in descending order</value>
</data>
<data name="SortInDescendingOrder" xml:space="preserve">
<value>Sort in descending order</value>
</data>
<data name="NewShortcutDialogTitle" xml:space="preserve">
<value>Create a new shortcut</value>
</data>
Expand Down
8 changes: 4 additions & 4 deletions src/Files.App/ViewModels/FolderSettingsViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -344,9 +344,9 @@ public static void SetLayoutPreferencesForPath(string folderPath, LayoutPreferen
{
userSettingsService.FoldersSettingsService.DefaultGroupOption = prefs.DirectoryGroupOption;
}
userSettingsService.LayoutSettingsService.DefaultDirectorySortDirection = prefs.DirectorySortDirection;
userSettingsService.LayoutSettingsService.DefaultDirectoryGroupDirection = prefs.DirectoryGroupDirection;
userSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles = prefs.SortDirectoriesAlongsideFiles;
userSettingsService.FoldersSettingsService.DefaultDirectorySortDirection = prefs.DirectorySortDirection;
userSettingsService.FoldersSettingsService.DefaultDirectoryGroupDirection = prefs.DirectoryGroupDirection;
userSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles = prefs.SortDirectoriesAlongsideFiles;

userSettingsService.FoldersSettingsService.ShowDateColumn = !prefs.ColumnsViewModel.DateModifiedColumn.UserCollapsed;
userSettingsService.FoldersSettingsService.ShowDateCreatedColumn = !prefs.ColumnsViewModel.DateCreatedColumn.UserCollapsed;
Expand Down Expand Up @@ -528,7 +528,7 @@ public void OnDefaultPreferencesChanged(string folderPath, string settingsName)
var prefs = GetLayoutPreferencesForPath(folderPath);
switch (settingsName)
{
case nameof(UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles):
case nameof(UserSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles):
SortDirectoriesAlongsideFiles = prefs.SortDirectoriesAlongsideFiles;
break;
case nameof(UserSettingsService.FoldersSettingsService.SyncFolderPreferencesAcrossDirectories):
Expand Down
2 changes: 1 addition & 1 deletion src/Files.App/ViewModels/ItemViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -483,7 +483,7 @@ await dispatcherQueue.EnqueueAsync(() =>
break;
case nameof(UserSettingsService.FoldersSettingsService.DefaultSortOption):
case nameof(UserSettingsService.FoldersSettingsService.DefaultGroupOption):
case nameof(UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles):
case nameof(UserSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles):
case nameof(UserSettingsService.FoldersSettingsService.SyncFolderPreferencesAcrossDirectories):
await dispatcherQueue.EnqueueAsync(() =>
{
Expand Down
37 changes: 34 additions & 3 deletions src/Files.App/ViewModels/SettingsViewModels/FoldersViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -250,14 +250,43 @@ 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;

public bool ListAndSortDirectoriesAlongsideFiles
{
get => UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles;
get => UserSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles;
set
{
if (value != UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles)
if (value != UserSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles)
{
UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles = value;
UserSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles = value;
OnPropertyChanged();
}
}
Expand Down Expand Up @@ -300,6 +329,8 @@ public int SelectedDefaultGroupingIndex
{
OnPropertyChanged(nameof(SelectedDefaultGroupingIndex));
UserSettingsService.FoldersSettingsService.DefaultGroupOption = value == FileTagGroupingIndex ? GroupOption.FileTag : (GroupOption)value;
// Raise an event for the 'Group in descending order' toggle switch availability
OnPropertyChanged(nameof(isDefaultGrouped));
}
}
}
Expand Down
17 changes: 17 additions & 0 deletions src/Files.App/Views/SettingsPages/Folders.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,14 @@
</ComboBox>
</local:SettingsBlockControl>

<!-- Sort in Descending order -->
<local:SettingsBlockControl Title="{helpers:ResourceString Name=SortInDescendingOrder}" HorizontalAlignment="Stretch">
<ToggleSwitch
AutomationProperties.Name="{helpers:ResourceString Name=SortInDescendingOrder}"
IsOn="{x:Bind ViewModel.SortInDescendingOrder, Mode=TwoWay}"
Style="{StaticResource RightAlignedToggleSwitchStyle}" />
</local:SettingsBlockControl>

<!-- Grouping Options -->
<local:SettingsBlockControl Title="{helpers:ResourceString Name=GroupBy}" HorizontalAlignment="Stretch">
<ComboBox AutomationProperties.Name="{helpers:ResourceString Name=GroupBy}" SelectedIndex="{x:Bind ViewModel.SelectedDefaultGroupingIndex, Mode=TwoWay}">
Expand All @@ -128,6 +136,15 @@
</ComboBox>
</local:SettingsBlockControl>

<!-- Group in Descending order -->
<local:SettingsBlockControl Title="{helpers:ResourceString Name=GroupInDescendingOrder}" HorizontalAlignment="Stretch">
<ToggleSwitch
AutomationProperties.Name="{helpers:ResourceString Name=GroupInDescendingOrder}"
IsOn="{x:Bind ViewModel.GroupInDescendingOrder, Mode=TwoWay}"
IsEnabled="{x:Bind ViewModel.isDefaultGrouped, Mode=OneWay}"
Style="{StaticResource RightAlignedToggleSwitchStyle}" />
</local:SettingsBlockControl>

<!-- Sort Folders Alongside Files -->
<local:SettingsBlockControl Title="{helpers:ResourceString Name=SettingsListAndSortDirectoriesAlongsideFiles}" HorizontalAlignment="Stretch">
<ToggleSwitch
Expand Down
15 changes: 15 additions & 0 deletions src/Files.Backend/Services/Settings/IFoldersSettingsService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,21 @@ public interface IFoldersSettingsService : IBaseSettingsService, INotifyProperty
/// </summary>
GroupOption DefaultGroupOption { get; set; }

/// <summary>
/// Gets or sets a value indicating the default sorting direction.
/// </summary>
SortDirection DefaultDirectorySortDirection { get; set; }

/// <summary>
/// Gets or sets a value indicating the default grouping direction.
/// </summary>
SortDirection DefaultDirectoryGroupDirection { get; set; }

/// <summary>
/// Gets or sets a value indicating if directories should be sorted alongside files by.
/// </summary>
bool DefaultSortDirectoriesAlongsideFiles { get; set; }

/// <summary>
/// Gets or sets a value indicating if file extensions should be displayed.
/// </summary>
Expand Down
6 changes: 0 additions & 6 deletions src/Files.Backend/Services/Settings/ILayoutSettingsService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,5 @@ namespace Files.Backend.Services.Settings
public interface ILayoutSettingsService : IBaseSettingsService, INotifyPropertyChanged
{
int DefaultGridViewSize { get; set; }

SortDirection DefaultDirectorySortDirection { get; set; }

SortDirection DefaultDirectoryGroupDirection { get; set; }

bool DefaultSortDirectoriesAlongsideFiles { get; set; }
}
}