Skip to content

Commit 68ce757

Browse files
authored
Feature: Added settings for default order directions (#11220)
1 parent 50e8524 commit 68ce757

File tree

10 files changed

+98
-35
lines changed

10 files changed

+98
-35
lines changed

src/Files.App/Helpers/LayoutPreferences/LayoutPreferences.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ public LayoutPreferences()
3131
GridViewSize = UserSettingsService.LayoutSettingsService.DefaultGridViewSize;
3232
DirectorySortOption = UserSettingsService.FoldersSettingsService.DefaultSortOption;
3333
DirectoryGroupOption = UserSettingsService.FoldersSettingsService.DefaultGroupOption;
34-
DirectorySortDirection = UserSettingsService.LayoutSettingsService.DefaultDirectorySortDirection;
35-
DirectoryGroupDirection = UserSettingsService.LayoutSettingsService.DefaultDirectoryGroupDirection;
36-
SortDirectoriesAlongsideFiles = UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles;
34+
DirectorySortDirection = UserSettingsService.FoldersSettingsService.DefaultDirectorySortDirection;
35+
DirectoryGroupDirection = UserSettingsService.FoldersSettingsService.DefaultDirectoryGroupDirection;
36+
SortDirectoriesAlongsideFiles = UserSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles;
3737
IsAdaptiveLayoutOverridden = defaultLayout is not FolderLayoutModes.Adaptive;
3838

3939
ColumnsViewModel = new ColumnsViewModel();

src/Files.App/ServicesImplementation/Settings/FoldersSettingsService.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,24 @@ public GroupOption DefaultGroupOption
226226
set => Set((long)value);
227227
}
228228

229+
public SortDirection DefaultDirectorySortDirection
230+
{
231+
get => (SortDirection)Get((long)SortDirection.Ascending);
232+
set => Set((long)value);
233+
}
234+
235+
public SortDirection DefaultDirectoryGroupDirection
236+
{
237+
get => (SortDirection)Get((long)SortDirection.Ascending);
238+
set => Set((long)value);
239+
}
240+
241+
public bool DefaultSortDirectoriesAlongsideFiles
242+
{
243+
get => Get(false);
244+
set => Set(value);
245+
}
246+
229247
public bool ShowFileExtensions
230248
{
231249
get => Get(true);

src/Files.App/ServicesImplementation/Settings/LayoutSettingsService.cs

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,5 @@ public int DefaultGridViewSize
1717
get => (int)Get((long)Constants.Browser.GridViewBrowser.GridViewSizeMedium);
1818
set => Set((long)value);
1919
}
20-
21-
public SortDirection DefaultDirectorySortDirection
22-
{
23-
get => (SortDirection)Get((long)SortDirection.Ascending);
24-
set => Set((long)value);
25-
}
26-
27-
public SortDirection DefaultDirectoryGroupDirection
28-
{
29-
get => (SortDirection)Get((long)SortDirection.Ascending);
30-
set => Set((long)value);
31-
}
32-
33-
public bool DefaultSortDirectoriesAlongsideFiles
34-
{
35-
get => Get(false);
36-
set => Set(value);
37-
}
3820
}
3921
}

src/Files.App/Strings/en-US/Resources.resw

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2841,6 +2841,12 @@
28412841
<data name="SortBy" xml:space="preserve">
28422842
<value>Sort by</value>
28432843
</data>
2844+
<data name="GroupInDescendingOrder" xml:space="preserve">
2845+
<value>Group in descending order</value>
2846+
</data>
2847+
<data name="SortInDescendingOrder" xml:space="preserve">
2848+
<value>Sort in descending order</value>
2849+
</data>
28442850
<data name="NewShortcutDialogTitle" xml:space="preserve">
28452851
<value>Create a new shortcut</value>
28462852
</data>

src/Files.App/ViewModels/FolderSettingsViewModel.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -344,9 +344,9 @@ public static void SetLayoutPreferencesForPath(string folderPath, LayoutPreferen
344344
{
345345
userSettingsService.FoldersSettingsService.DefaultGroupOption = prefs.DirectoryGroupOption;
346346
}
347-
userSettingsService.LayoutSettingsService.DefaultDirectorySortDirection = prefs.DirectorySortDirection;
348-
userSettingsService.LayoutSettingsService.DefaultDirectoryGroupDirection = prefs.DirectoryGroupDirection;
349-
userSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles = prefs.SortDirectoriesAlongsideFiles;
347+
userSettingsService.FoldersSettingsService.DefaultDirectorySortDirection = prefs.DirectorySortDirection;
348+
userSettingsService.FoldersSettingsService.DefaultDirectoryGroupDirection = prefs.DirectoryGroupDirection;
349+
userSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles = prefs.SortDirectoriesAlongsideFiles;
350350

351351
userSettingsService.FoldersSettingsService.ShowDateColumn = !prefs.ColumnsViewModel.DateModifiedColumn.UserCollapsed;
352352
userSettingsService.FoldersSettingsService.ShowDateCreatedColumn = !prefs.ColumnsViewModel.DateCreatedColumn.UserCollapsed;
@@ -528,7 +528,7 @@ public void OnDefaultPreferencesChanged(string folderPath, string settingsName)
528528
var prefs = GetLayoutPreferencesForPath(folderPath);
529529
switch (settingsName)
530530
{
531-
case nameof(UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles):
531+
case nameof(UserSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles):
532532
SortDirectoriesAlongsideFiles = prefs.SortDirectoriesAlongsideFiles;
533533
break;
534534
case nameof(UserSettingsService.FoldersSettingsService.SyncFolderPreferencesAcrossDirectories):

src/Files.App/ViewModels/ItemViewModel.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,7 @@ await dispatcherQueue.EnqueueAsync(() =>
483483
break;
484484
case nameof(UserSettingsService.FoldersSettingsService.DefaultSortOption):
485485
case nameof(UserSettingsService.FoldersSettingsService.DefaultGroupOption):
486-
case nameof(UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles):
486+
case nameof(UserSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles):
487487
case nameof(UserSettingsService.FoldersSettingsService.SyncFolderPreferencesAcrossDirectories):
488488
await dispatcherQueue.EnqueueAsync(() =>
489489
{

src/Files.App/ViewModels/SettingsViewModels/FoldersViewModel.cs

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -250,14 +250,43 @@ public bool OpenFoldersNewTab
250250
}
251251
}
252252

253+
public bool SortInDescendingOrder
254+
{
255+
get => UserSettingsService.FoldersSettingsService.DefaultDirectorySortDirection == SortDirection.Descending;
256+
set
257+
{
258+
if (value != (UserSettingsService.FoldersSettingsService.DefaultDirectorySortDirection == SortDirection.Descending))
259+
{
260+
UserSettingsService.FoldersSettingsService.DefaultDirectorySortDirection = value ? SortDirection.Descending : SortDirection.Ascending;
261+
OnPropertyChanged();
262+
}
263+
}
264+
}
265+
266+
public bool GroupInDescendingOrder
267+
{
268+
get => UserSettingsService.FoldersSettingsService.DefaultDirectoryGroupDirection == SortDirection.Descending;
269+
set
270+
{
271+
if (value != (UserSettingsService.FoldersSettingsService.DefaultDirectoryGroupDirection == SortDirection.Descending))
272+
{
273+
UserSettingsService.FoldersSettingsService.DefaultDirectoryGroupDirection = value ? SortDirection.Descending : SortDirection.Ascending;
274+
OnPropertyChanged();
275+
}
276+
}
277+
}
278+
279+
public bool isDefaultGrouped
280+
=> UserSettingsService.FoldersSettingsService.DefaultGroupOption != GroupOption.None;
281+
253282
public bool ListAndSortDirectoriesAlongsideFiles
254283
{
255-
get => UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles;
284+
get => UserSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles;
256285
set
257286
{
258-
if (value != UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles)
287+
if (value != UserSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles)
259288
{
260-
UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles = value;
289+
UserSettingsService.FoldersSettingsService.DefaultSortDirectoriesAlongsideFiles = value;
261290
OnPropertyChanged();
262291
}
263292
}
@@ -300,6 +329,8 @@ public int SelectedDefaultGroupingIndex
300329
{
301330
OnPropertyChanged(nameof(SelectedDefaultGroupingIndex));
302331
UserSettingsService.FoldersSettingsService.DefaultGroupOption = value == FileTagGroupingIndex ? GroupOption.FileTag : (GroupOption)value;
332+
// Raise an event for the 'Group in descending order' toggle switch availability
333+
OnPropertyChanged(nameof(isDefaultGrouped));
303334
}
304335
}
305336
}

src/Files.App/Views/SettingsPages/Folders.xaml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,14 @@
115115
</ComboBox>
116116
</local:SettingsBlockControl>
117117

118+
<!-- Sort in Descending order -->
119+
<local:SettingsBlockControl Title="{helpers:ResourceString Name=SortInDescendingOrder}" HorizontalAlignment="Stretch">
120+
<ToggleSwitch
121+
AutomationProperties.Name="{helpers:ResourceString Name=SortInDescendingOrder}"
122+
IsOn="{x:Bind ViewModel.SortInDescendingOrder, Mode=TwoWay}"
123+
Style="{StaticResource RightAlignedToggleSwitchStyle}" />
124+
</local:SettingsBlockControl>
125+
118126
<!-- Grouping Options -->
119127
<local:SettingsBlockControl Title="{helpers:ResourceString Name=GroupBy}" HorizontalAlignment="Stretch">
120128
<ComboBox AutomationProperties.Name="{helpers:ResourceString Name=GroupBy}" SelectedIndex="{x:Bind ViewModel.SelectedDefaultGroupingIndex, Mode=TwoWay}">
@@ -128,6 +136,15 @@
128136
</ComboBox>
129137
</local:SettingsBlockControl>
130138

139+
<!-- Group in Descending order -->
140+
<local:SettingsBlockControl Title="{helpers:ResourceString Name=GroupInDescendingOrder}" HorizontalAlignment="Stretch">
141+
<ToggleSwitch
142+
AutomationProperties.Name="{helpers:ResourceString Name=GroupInDescendingOrder}"
143+
IsOn="{x:Bind ViewModel.GroupInDescendingOrder, Mode=TwoWay}"
144+
IsEnabled="{x:Bind ViewModel.isDefaultGrouped, Mode=OneWay}"
145+
Style="{StaticResource RightAlignedToggleSwitchStyle}" />
146+
</local:SettingsBlockControl>
147+
131148
<!-- Sort Folders Alongside Files -->
132149
<local:SettingsBlockControl Title="{helpers:ResourceString Name=SettingsListAndSortDirectoriesAlongsideFiles}" HorizontalAlignment="Stretch">
133150
<ToggleSwitch

src/Files.Backend/Services/Settings/IFoldersSettingsService.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,21 @@ public interface IFoldersSettingsService : IBaseSettingsService, INotifyProperty
156156
/// </summary>
157157
GroupOption DefaultGroupOption { get; set; }
158158

159+
/// <summary>
160+
/// Gets or sets a value indicating the default sorting direction.
161+
/// </summary>
162+
SortDirection DefaultDirectorySortDirection { get; set; }
163+
164+
/// <summary>
165+
/// Gets or sets a value indicating the default grouping direction.
166+
/// </summary>
167+
SortDirection DefaultDirectoryGroupDirection { get; set; }
168+
169+
/// <summary>
170+
/// Gets or sets a value indicating if directories should be sorted alongside files by.
171+
/// </summary>
172+
bool DefaultSortDirectoriesAlongsideFiles { get; set; }
173+
159174
/// <summary>
160175
/// Gets or sets a value indicating if file extensions should be displayed.
161176
/// </summary>

src/Files.Backend/Services/Settings/ILayoutSettingsService.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,5 @@ namespace Files.Backend.Services.Settings
66
public interface ILayoutSettingsService : IBaseSettingsService, INotifyPropertyChanged
77
{
88
int DefaultGridViewSize { get; set; }
9-
10-
SortDirection DefaultDirectorySortDirection { get; set; }
11-
12-
SortDirection DefaultDirectoryGroupDirection { get; set; }
13-
14-
bool DefaultSortDirectoriesAlongsideFiles { get; set; }
159
}
1610
}

0 commit comments

Comments
 (0)