/
LayoutPreferencesItem.cs
126 lines (106 loc) · 6.52 KB
/
LayoutPreferencesItem.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
// Copyright (c) 2023 Files Community
// Licensed under the MIT License. See the LICENSE.
namespace Files.App.Helpers
{
/// <summary>
/// Represents item for a folder's layout preferences.
/// </summary>
public class LayoutPreferencesItem
{
// Dependency injections
private IUserSettingsService UserSettingsService { get; } = Ioc.Default.GetRequiredService<IUserSettingsService>();
// Fields
public ColumnsViewModel ColumnsViewModel;
public bool SortDirectoriesAlongsideFiles;
public bool SortFilesFirst;
public bool IsAdaptiveLayoutOverridden;
public FolderLayoutModes LayoutMode;
public SortOption DirectorySortOption;
public SortDirection DirectorySortDirection;
public SortDirection DirectoryGroupDirection;
public GroupOption DirectoryGroupOption;
public GroupByDateUnit DirectoryGroupByDateUnit;
// Constructor
public LayoutPreferencesItem()
{
var defaultLayout = UserSettingsService.LayoutSettingsService.DefaultLayoutMode;
LayoutMode = defaultLayout is FolderLayoutModes.Adaptive ? FolderLayoutModes.DetailsView : defaultLayout;
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.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
public override bool Equals(object? obj)
{
if (obj is null)
return false;
if (obj == this)
return true;
if (obj is LayoutPreferencesItem item)
{
return (
item.LayoutMode == LayoutMode &&
item.DirectoryGroupOption == DirectoryGroupOption &&
item.DirectorySortOption == DirectorySortOption &&
item.DirectorySortDirection == DirectorySortDirection &&
item.DirectoryGroupDirection == DirectoryGroupDirection &&
item.DirectoryGroupByDateUnit == DirectoryGroupByDateUnit &&
item.SortDirectoriesAlongsideFiles == SortDirectoriesAlongsideFiles &&
item.SortFilesFirst == SortFilesFirst &&
item.IsAdaptiveLayoutOverridden == IsAdaptiveLayoutOverridden &&
item.ColumnsViewModel.Equals(ColumnsViewModel));
}
return base.Equals(obj);
}
public override int GetHashCode()
{
HashCode hash = new();
hash.Add(LayoutMode);
hash.Add(DirectoryGroupOption);
hash.Add(DirectorySortOption);
hash.Add(DirectorySortDirection);
hash.Add(DirectoryGroupDirection);
hash.Add(DirectoryGroupByDateUnit);
hash.Add(SortDirectoriesAlongsideFiles);
hash.Add(SortFilesFirst);
hash.Add(IsAdaptiveLayoutOverridden);
hash.Add(ColumnsViewModel);
return hash.ToHashCode();
}
}
}