Skip to content

Commit 16b0c41

Browse files
Feature: Added option to set default column sizes (#10117)
1 parent 96384b2 commit 16b0c41

File tree

6 files changed

+684
-674
lines changed

6 files changed

+684
-674
lines changed
Lines changed: 72 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,86 @@
11
using CommunityToolkit.Mvvm.DependencyInjection;
2+
using Files.App.ViewModels;
23
using Files.Backend.Services.Settings;
34
using Files.Shared.Enums;
4-
using Files.App.ViewModels;
55

66
namespace Files.App.Helpers.LayoutPreferences
77
{
8-
public class LayoutPreferences
9-
{
10-
private IUserSettingsService UserSettingsService { get; } = Ioc.Default.GetRequiredService<IUserSettingsService>();
8+
public class LayoutPreferences
9+
{
10+
private IUserSettingsService UserSettingsService { get; } = Ioc.Default.GetRequiredService<IUserSettingsService>();
11+
12+
public SortOption DirectorySortOption;
13+
public SortDirection DirectorySortDirection;
14+
public bool SortDirectoriesAlongsideFiles;
15+
public GroupOption DirectoryGroupOption;
16+
public FolderLayoutModes LayoutMode;
17+
public int GridViewSize;
18+
public bool IsAdaptiveLayoutOverridden;
19+
20+
public ColumnsViewModel ColumnsViewModel;
21+
22+
[LiteDB.BsonIgnore]
23+
public static LayoutPreferences DefaultLayoutPreferences => new LayoutPreferences();
1124

12-
public SortOption DirectorySortOption;
13-
public SortDirection DirectorySortDirection;
14-
public bool SortDirectoriesAlongsideFiles;
15-
public GroupOption DirectoryGroupOption;
16-
public FolderLayoutModes LayoutMode;
17-
public int GridViewSize;
18-
public bool IsAdaptiveLayoutOverridden;
25+
public LayoutPreferences()
26+
{
27+
this.LayoutMode = UserSettingsService.PreferencesSettingsService.DefaultLayoutMode;
28+
this.GridViewSize = UserSettingsService.LayoutSettingsService.DefaultGridViewSize;
29+
this.DirectorySortOption = UserSettingsService.LayoutSettingsService.DefaultDirectorySortOption;
30+
this.DirectoryGroupOption = UserSettingsService.LayoutSettingsService.DefaultDirectoryGroupOption;
31+
this.DirectorySortDirection = UserSettingsService.LayoutSettingsService.DefaultDirectorySortDirection;
32+
this.SortDirectoriesAlongsideFiles = UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles;
33+
this.IsAdaptiveLayoutOverridden = false;
1934

20-
public ColumnsViewModel ColumnsViewModel;
35+
this.ColumnsViewModel = new ColumnsViewModel();
36+
this.ColumnsViewModel.DateCreatedColumn.UserCollapsed = !UserSettingsService.PreferencesSettingsService.ShowDateCreatedColumn;
37+
this.ColumnsViewModel.DateModifiedColumn.UserCollapsed = !UserSettingsService.PreferencesSettingsService.ShowDateColumn;
38+
this.ColumnsViewModel.ItemTypeColumn.UserCollapsed = !UserSettingsService.PreferencesSettingsService.ShowTypeColumn;
39+
this.ColumnsViewModel.SizeColumn.UserCollapsed = !UserSettingsService.PreferencesSettingsService.ShowSizeColumn;
40+
this.ColumnsViewModel.TagColumn.UserCollapsed = !UserSettingsService.PreferencesSettingsService.ShowFileTagColumn;
2141

22-
[LiteDB.BsonIgnore]
23-
public static LayoutPreferences DefaultLayoutPreferences => new LayoutPreferences();
42+
this.ColumnsViewModel.NameColumn.UserLengthPixels = UserSettingsService.PreferencesSettingsService.NameColumnWidth;
43+
this.ColumnsViewModel.DateModifiedColumn.UserLengthPixels = UserSettingsService.PreferencesSettingsService.DateModifiedColumnWidth;
44+
this.ColumnsViewModel.DateCreatedColumn.UserLengthPixels = UserSettingsService.PreferencesSettingsService.DateCreatedColumnWidth;
45+
this.ColumnsViewModel.ItemTypeColumn.UserLengthPixels = UserSettingsService.PreferencesSettingsService.TypeColumnWidth;
46+
this.ColumnsViewModel.SizeColumn.UserLengthPixels = UserSettingsService.PreferencesSettingsService.SizeColumnWidth;
47+
this.ColumnsViewModel.TagColumn.UserLengthPixels = UserSettingsService.PreferencesSettingsService.TagColumnWidth;
48+
}
2449

25-
public LayoutPreferences()
26-
{
27-
this.LayoutMode = UserSettingsService.PreferencesSettingsService.DefaultLayoutMode;
28-
this.GridViewSize = UserSettingsService.LayoutSettingsService.DefaultGridViewSize;
29-
this.DirectorySortOption = UserSettingsService.LayoutSettingsService.DefaultDirectorySortOption;
30-
this.DirectoryGroupOption = UserSettingsService.LayoutSettingsService.DefaultDirectoryGroupOption;
31-
this.DirectorySortDirection = UserSettingsService.LayoutSettingsService.DefaultDirectorySortDirection;
32-
this.SortDirectoriesAlongsideFiles = UserSettingsService.LayoutSettingsService.DefaultSortDirectoriesAlongsideFiles;
33-
this.IsAdaptiveLayoutOverridden = false;
50+
public override bool Equals(object? obj)
51+
{
52+
if (obj == null)
53+
return false;
3454

35-
this.ColumnsViewModel = new ColumnsViewModel();
36-
this.ColumnsViewModel.DateCreatedColumn.UserCollapsed = !UserSettingsService.PreferencesSettingsService.ShowDateCreatedColumn;
37-
this.ColumnsViewModel.DateModifiedColumn.UserCollapsed = !UserSettingsService.PreferencesSettingsService.ShowDateColumn;
38-
this.ColumnsViewModel.ItemTypeColumn.UserCollapsed = !UserSettingsService.PreferencesSettingsService.ShowTypeColumn;
39-
this.ColumnsViewModel.SizeColumn.UserCollapsed = !UserSettingsService.PreferencesSettingsService.ShowSizeColumn;
40-
this.ColumnsViewModel.TagColumn.UserCollapsed = !UserSettingsService.PreferencesSettingsService.ShowFileTagColumn;
41-
}
55+
if (obj == this)
56+
return true;
4257

43-
public override bool Equals(object obj)
44-
{
45-
if (obj == null)
46-
{
47-
return false;
48-
}
49-
if (obj == this)
50-
{
51-
return true;
52-
}
53-
if (obj is LayoutPreferences prefs)
54-
{
55-
return (
56-
prefs.LayoutMode == this.LayoutMode &&
57-
prefs.GridViewSize == this.GridViewSize &&
58-
prefs.DirectoryGroupOption == this.DirectoryGroupOption &&
59-
prefs.DirectorySortOption == this.DirectorySortOption &&
60-
prefs.DirectorySortDirection == this.DirectorySortDirection &&
61-
prefs.SortDirectoriesAlongsideFiles == this.SortDirectoriesAlongsideFiles &&
62-
prefs.IsAdaptiveLayoutOverridden == this.IsAdaptiveLayoutOverridden &&
63-
prefs.ColumnsViewModel.Equals(this.ColumnsViewModel));
64-
}
65-
return base.Equals(obj);
66-
}
58+
if (obj is LayoutPreferences prefs)
59+
{
60+
return (
61+
prefs.LayoutMode == this.LayoutMode &&
62+
prefs.GridViewSize == this.GridViewSize &&
63+
prefs.DirectoryGroupOption == this.DirectoryGroupOption &&
64+
prefs.DirectorySortOption == this.DirectorySortOption &&
65+
prefs.DirectorySortDirection == this.DirectorySortDirection &&
66+
prefs.SortDirectoriesAlongsideFiles == this.SortDirectoriesAlongsideFiles &&
67+
prefs.IsAdaptiveLayoutOverridden == this.IsAdaptiveLayoutOverridden &&
68+
prefs.ColumnsViewModel.Equals(this.ColumnsViewModel));
69+
}
70+
return base.Equals(obj);
71+
}
6772

68-
public override int GetHashCode()
69-
{
70-
var hashCode = LayoutMode.GetHashCode();
71-
hashCode = (hashCode * 397) ^ GridViewSize.GetHashCode();
72-
hashCode = (hashCode * 397) ^ DirectoryGroupOption.GetHashCode();
73-
hashCode = (hashCode * 397) ^ DirectorySortOption.GetHashCode();
74-
hashCode = (hashCode * 397) ^ DirectorySortDirection.GetHashCode();
75-
hashCode = (hashCode * 397) ^ SortDirectoriesAlongsideFiles.GetHashCode();
76-
hashCode = (hashCode * 397) ^ IsAdaptiveLayoutOverridden.GetHashCode();
77-
hashCode = (hashCode * 397) ^ ColumnsViewModel.GetHashCode();
78-
return hashCode;
79-
}
80-
}
73+
public override int GetHashCode()
74+
{
75+
var hashCode = LayoutMode.GetHashCode();
76+
hashCode = (hashCode * 397) ^ GridViewSize.GetHashCode();
77+
hashCode = (hashCode * 397) ^ DirectoryGroupOption.GetHashCode();
78+
hashCode = (hashCode * 397) ^ DirectorySortOption.GetHashCode();
79+
hashCode = (hashCode * 397) ^ DirectorySortDirection.GetHashCode();
80+
hashCode = (hashCode * 397) ^ SortDirectoriesAlongsideFiles.GetHashCode();
81+
hashCode = (hashCode * 397) ^ IsAdaptiveLayoutOverridden.GetHashCode();
82+
hashCode = (hashCode * 397) ^ ColumnsViewModel.GetHashCode();
83+
return hashCode;
84+
}
85+
}
8186
}
Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,45 @@
1+
using Files.App.Serialization;
12
using Files.Backend.Services.Settings;
23
using Files.Shared.Enums;
3-
using Files.App.Serialization;
44

55
namespace Files.App.ServicesImplementation.Settings
66
{
7-
internal sealed class LayoutSettingsService : BaseObservableJsonSettings, ILayoutSettingsService
8-
{
9-
public LayoutSettingsService(ISettingsSharingContext settingsSharingContext)
10-
{
11-
// Register root
12-
RegisterSettingsContext(settingsSharingContext);
13-
}
7+
internal sealed class LayoutSettingsService : BaseObservableJsonSettings, ILayoutSettingsService
8+
{
9+
public LayoutSettingsService(ISettingsSharingContext settingsSharingContext)
10+
{
11+
// Register root
12+
RegisterSettingsContext(settingsSharingContext);
13+
}
1414

15-
public int DefaultGridViewSize
16-
{
17-
get => (int)Get((long)Constants.Browser.GridViewBrowser.GridViewSizeSmall);
18-
set => Set((long)value);
19-
}
15+
public int DefaultGridViewSize
16+
{
17+
get => (int)Get((long)Constants.Browser.GridViewBrowser.GridViewSizeSmall);
18+
set => Set((long)value);
19+
}
2020

21-
public SortDirection DefaultDirectorySortDirection
22-
{
23-
get => (SortDirection)Get((long)SortDirection.Ascending);
24-
set => Set((long)value);
25-
}
21+
public SortDirection DefaultDirectorySortDirection
22+
{
23+
get => (SortDirection)Get((long)SortDirection.Ascending);
24+
set => Set((long)value);
25+
}
2626

27-
public SortOption DefaultDirectorySortOption
28-
{
29-
get => (SortOption)Get((long)SortOption.Name);
30-
set => Set((long)value);
31-
}
32-
33-
public bool DefaultSortDirectoriesAlongsideFiles
34-
{
35-
get => Get(false);
36-
set => Set(value);
37-
}
27+
public SortOption DefaultDirectorySortOption
28+
{
29+
get => (SortOption)Get((long)SortOption.Name);
30+
set => Set((long)value);
31+
}
32+
33+
public bool DefaultSortDirectoriesAlongsideFiles
34+
{
35+
get => Get(false);
36+
set => Set(value);
37+
}
3838

39-
public GroupOption DefaultDirectoryGroupOption
40-
{
41-
get => (GroupOption)Get((long)GroupOption.None);
42-
set => Set((long)value);
43-
}
44-
}
39+
public GroupOption DefaultDirectoryGroupOption
40+
{
41+
get => (GroupOption)Get((long)GroupOption.None);
42+
set => Set((long)value);
43+
}
44+
}
4545
}

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

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,42 @@ public FolderLayoutModes DefaultLayoutMode
189189
set => Set((long)value);
190190
}
191191

192+
public double TagColumnWidth
193+
{
194+
get => Get(200d);
195+
set => Set(value);
196+
}
197+
198+
public double NameColumnWidth
199+
{
200+
get => Get(200d);
201+
set => Set(value);
202+
}
203+
204+
public double DateModifiedColumnWidth
205+
{
206+
get => Get(200d);
207+
set => Set(value);
208+
}
209+
210+
public double TypeColumnWidth
211+
{
212+
get => Get(200d);
213+
set => Set(value);
214+
}
215+
216+
public double DateCreatedColumnWidth
217+
{
218+
get => Get(200d);
219+
set => Set(value);
220+
}
221+
222+
public double SizeColumnWidth
223+
{
224+
get => Get(200d);
225+
set => Set(value);
226+
}
227+
192228
protected override void RaiseOnSettingChangedEvent(object sender, SettingChangedEventArgs e)
193229
{
194230
switch (e.SettingName)

0 commit comments

Comments
 (0)