Skip to content

Commit ba224f1

Browse files
authored
Feature: Added Cards View layout (#16717)
1 parent 3131400 commit ba224f1

28 files changed

+882
-505
lines changed

src/Files.App/Actions/Display/LayoutAction.cs

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@ protected override LayoutTypes LayoutType
99
=> LayoutTypes.Details;
1010

1111
public override string Label
12-
=> "Details".GetLocalizedResource();
12+
=> Strings.Details.GetLocalizedResource();
1313

1414
public override string Description
15-
=> "LayoutDetailsDescription".GetLocalizedResource();
15+
=> Strings.LayoutDetailsDescription.GetLocalizedResource();
1616

1717
public override RichGlyph Glyph
1818
=> new(themedIconStyle: "App.ThemedIcons.IconLayout.Details");
@@ -27,10 +27,10 @@ protected override LayoutTypes LayoutType
2727
=> LayoutTypes.List;
2828

2929
public override string Label
30-
=> "List".GetLocalizedResource();
30+
=> Strings.List.GetLocalizedResource();
3131

3232
public override string Description
33-
=> "LayoutListDescription".GetLocalizedResource();
33+
=> Strings.LayoutListDescription.GetLocalizedResource();
3434

3535
public override RichGlyph Glyph
3636
=> new(themedIconStyle: "App.ThemedIcons.IconLayout.List");
@@ -39,16 +39,16 @@ public override HotKey HotKey
3939
=> new(Keys.Number2, KeyModifiers.CtrlShift);
4040
}
4141

42-
internal sealed class LayoutTilesAction : ToggleLayoutAction
42+
internal sealed class LayoutCardsAction : ToggleLayoutAction
4343
{
4444
protected override LayoutTypes LayoutType
45-
=> LayoutTypes.Tiles;
45+
=> LayoutTypes.Cards;
4646

4747
public override string Label
48-
=> "Tiles".GetLocalizedResource();
48+
=> Strings.Cards.GetLocalizedResource();
4949

5050
public override string Description
51-
=> "LayoutTilesDescription".GetLocalizedResource();
51+
=> Strings.LayoutCardsDescription.GetLocalizedResource();
5252

5353
public override RichGlyph Glyph
5454
=> new(themedIconStyle: "App.ThemedIcons.IconLayout.Tiles");
@@ -63,10 +63,10 @@ protected override LayoutTypes LayoutType
6363
=> LayoutTypes.Grid;
6464

6565
public override string Label
66-
=> "Grid".GetLocalizedResource();
66+
=> Strings.Grid.GetLocalizedResource();
6767

6868
public override string Description
69-
=> "LayoutGridDescription".GetLocalizedResource();
69+
=> Strings.LayoutGridDescription.GetLocalizedResource();
7070

7171
public override RichGlyph Glyph
7272
=> new(themedIconStyle: "App.ThemedIcons.IconSize.Small");
@@ -81,10 +81,10 @@ protected override LayoutTypes LayoutType
8181
=> LayoutTypes.Columns;
8282

8383
public override string Label
84-
=> "Columns".GetLocalizedResource();
84+
=> Strings.Columns.GetLocalizedResource();
8585

8686
public override string Description
87-
=> "LayoutColumnsDescription".GetLocalizedResource();
87+
=> Strings.LayoutColumnsDescription.GetLocalizedResource();
8888

8989
public override RichGlyph Glyph
9090
=> new(themedIconStyle: "App.ThemedIcons.IconLayout.Columns");
@@ -99,10 +99,10 @@ protected override LayoutTypes LayoutType
9999
=> LayoutTypes.Adaptive;
100100

101101
public override string Label
102-
=> "Adaptive".GetLocalizedResource();
102+
=> Strings.Adaptive.GetLocalizedResource();
103103

104104
public override string Description
105-
=> "LayoutAdaptiveDescription".GetLocalizedResource();
105+
=> Strings.LayoutAdaptiveDescription.GetLocalizedResource();
106106

107107
public override bool IsExecutable
108108
=> Context.IsLayoutAdaptiveEnabled;
@@ -174,10 +174,10 @@ internal sealed class LayoutDecreaseSizeAction : ObservableObject, IAction
174174
private readonly IContentPageContext ContentPageContext = Ioc.Default.GetRequiredService<IContentPageContext>();
175175

176176
public string Label
177-
=> "DecreaseSize".GetLocalizedResource();
177+
=> Strings.DecreaseSize.GetLocalizedResource();
178178

179179
public string Description
180-
=> "LayoutDecreaseSizeDescription".GetLocalizedResource();
180+
=> Strings.LayoutDecreaseSizeDescription.GetLocalizedResource();
181181

182182
public HotKey HotKey
183183
=> new(Keys.Subtract, KeyModifiers.Ctrl);
@@ -190,6 +190,7 @@ ContentPageContext.PageType is not ContentPageTypes.Home &&
190190
ContentPageContext.ShellPage?.InstanceViewModel.FolderSettings.LayoutMode is FolderLayoutModes layoutMode &&
191191
((layoutMode is FolderLayoutModes.DetailsView && UserSettingsService.LayoutSettingsService.DetailsViewSize > DetailsViewSizeKind.Compact) ||
192192
(layoutMode is FolderLayoutModes.ListView && UserSettingsService.LayoutSettingsService.ListViewSize > ListViewSizeKind.Compact) ||
193+
(layoutMode is FolderLayoutModes.CardsView && UserSettingsService.LayoutSettingsService.CardsViewSize > CardsViewSizeKind.Small) ||
193194
(layoutMode is FolderLayoutModes.GridView && UserSettingsService.LayoutSettingsService.GridViewSize > GridViewSizeKind.Small) ||
194195
(layoutMode is FolderLayoutModes.ColumnView && UserSettingsService.LayoutSettingsService.ColumnsViewSize > ColumnsViewSizeKind.Compact));
195196

@@ -217,6 +218,7 @@ private void UserSettingsService_PropertyChanged(object? sender, PropertyChanged
217218
case nameof(ILayoutSettingsService.ListViewSize):
218219
case nameof(ILayoutSettingsService.GridViewSize):
219220
case nameof(ILayoutSettingsService.ColumnsViewSize):
221+
case nameof(ILayoutSettingsService.CardsViewSize):
220222
OnPropertyChanged(nameof(IsExecutable));
221223
break;
222224
}
@@ -234,7 +236,9 @@ public Task ExecuteAsync(object? parameter = null)
234236
if (UserSettingsService.LayoutSettingsService.ListViewSize > ListViewSizeKind.Compact)
235237
UserSettingsService.LayoutSettingsService.ListViewSize -= 1;
236238
break;
237-
case FolderLayoutModes.TilesView:
239+
case FolderLayoutModes.CardsView:
240+
if (UserSettingsService.LayoutSettingsService.CardsViewSize > CardsViewSizeKind.Small)
241+
UserSettingsService.LayoutSettingsService.CardsViewSize -= 1;
238242
break;
239243
case FolderLayoutModes.GridView:
240244
if (UserSettingsService.LayoutSettingsService.GridViewSize > GridViewSizeKind.Small)
@@ -258,10 +262,10 @@ internal sealed class LayoutIncreaseSizeAction : ObservableObject, IAction
258262
private readonly IContentPageContext ContentPageContext = Ioc.Default.GetRequiredService<IContentPageContext>();
259263

260264
public string Label
261-
=> "IncreaseSize".GetLocalizedResource();
265+
=> Strings.IncreaseSize.GetLocalizedResource();
262266

263267
public string Description
264-
=> "LayoutIncreaseSizeDescription".GetLocalizedResource();
268+
=> Strings.LayoutIncreaseSizeDescription.GetLocalizedResource();
265269

266270
public HotKey HotKey
267271
=> new(Keys.Add, KeyModifiers.Ctrl);
@@ -274,6 +278,7 @@ ContentPageContext.PageType is not ContentPageTypes.Home &&
274278
ContentPageContext.ShellPage?.InstanceViewModel.FolderSettings.LayoutMode is FolderLayoutModes layoutMode &&
275279
((layoutMode is FolderLayoutModes.DetailsView && UserSettingsService.LayoutSettingsService.DetailsViewSize < DetailsViewSizeKind.ExtraLarge) ||
276280
(layoutMode is FolderLayoutModes.ListView && UserSettingsService.LayoutSettingsService.ListViewSize < ListViewSizeKind.ExtraLarge) ||
281+
(layoutMode is FolderLayoutModes.CardsView && UserSettingsService.LayoutSettingsService.CardsViewSize < CardsViewSizeKind.ExtraLarge) ||
277282
(layoutMode is FolderLayoutModes.GridView && UserSettingsService.LayoutSettingsService.GridViewSize < GridViewSizeKind.ExtraLarge) ||
278283
(layoutMode is FolderLayoutModes.ColumnView && UserSettingsService.LayoutSettingsService.ColumnsViewSize < ColumnsViewSizeKind.ExtraLarge));
279284

@@ -318,7 +323,9 @@ public Task ExecuteAsync(object? parameter = null)
318323
if (UserSettingsService.LayoutSettingsService.ListViewSize < ListViewSizeKind.ExtraLarge)
319324
UserSettingsService.LayoutSettingsService.ListViewSize += 1;
320325
break;
321-
case FolderLayoutModes.TilesView:
326+
case FolderLayoutModes.CardsView:
327+
if (UserSettingsService.LayoutSettingsService.CardsViewSize < CardsViewSizeKind.ExtraLarge)
328+
UserSettingsService.LayoutSettingsService.CardsViewSize += 1;
322329
break;
323330
case FolderLayoutModes.GridView:
324331
if (UserSettingsService.LayoutSettingsService.GridViewSize < GridViewSizeKind.ExtraLarge)

src/Files.App/App.xaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777

7878
<Color x:Key="App.Theme.FillColorAttention">#0070CB</Color>
7979
<SolidColorBrush x:Key="App.Theme.FillColorAttentionBrush" Color="{StaticResource App.Theme.FillColorAttention}" />
80+
<SolidColorBrush x:Key="App.Theme.CardBackgroundFillColorTertiaryBrush" Color="#FFFFFFFF" />
8081
</ResourceDictionary>
8182
<ResourceDictionary x:Key="Dark">
8283
<SolidColorBrush x:Key="App.Theme.BackgroundBrush" Color="Transparent" />
@@ -94,6 +95,7 @@
9495

9596
<Color x:Key="App.Theme.FillColorAttention">#50C0FF</Color>
9697
<SolidColorBrush x:Key="App.Theme.FillColorAttentionBrush" Color="{StaticResource App.Theme.FillColorAttention}" />
98+
<SolidColorBrush x:Key="App.Theme.CardBackgroundFillColorTertiaryBrush" Color="#12FFFFFF" />
9799
</ResourceDictionary>
98100
<ResourceDictionary x:Key="HighContrast">
99101
<SolidColorBrush x:Key="App.Theme.BackgroundBrush" Color="Transparent" />
@@ -111,6 +113,7 @@
111113

112114
<Color x:Key="App.Theme.FillColorAttention">#50C0FF</Color>
113115
<SolidColorBrush x:Key="App.Theme.FillColorAttentionBrush" Color="{StaticResource App.Theme.FillColorAttention}" />
116+
<SolidColorBrush x:Key="App.Theme.CardBackgroundFillColorTertiaryBrush" Color="{StaticResource SystemColorWindowColor}" />
114117
</ResourceDictionary>
115118
</ResourceDictionary.ThemeDictionaries>
116119
</ResourceDictionary>

src/Files.App/Converters/EnumToHumanizedConverter.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ public object Convert(object value, Type targetType, object parameter, string la
1919
=> LocalizedEnumDescriptionFactory.Get(Enum.Parse<DetailsViewSizeKind>(stringValue)),
2020
"ListViewSizeKind"
2121
=> LocalizedEnumDescriptionFactory.Get(Enum.Parse<ListViewSizeKind>(stringValue)),
22-
"TilesViewSizeKind"
23-
=> LocalizedEnumDescriptionFactory.Get(Enum.Parse<TilesViewSizeKind>(stringValue)),
22+
"CardsViewSizeKind"
23+
=> LocalizedEnumDescriptionFactory.Get(Enum.Parse<CardsViewSizeKind>(stringValue)),
2424
"GridViewSizeKind"
2525
=> LocalizedEnumDescriptionFactory.Get(Enum.Parse<GridViewSizeKind>(stringValue)),
2626
"ColumnsViewSizeKind"

src/Files.App/Data/Commands/Manager/CommandCodes.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ public enum CommandCodes
133133
LayoutIncreaseSize,
134134
LayoutDetails,
135135
LayoutList,
136-
LayoutTiles,
136+
LayoutCards,
137137
LayoutGrid,
138138
LayoutColumns,
139139
LayoutAdaptive,

src/Files.App/Data/Commands/Manager/CommandManager.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ public IRichCommand this[HotKey hotKey]
132132
public IRichCommand LayoutIncreaseSize => commands[CommandCodes.LayoutIncreaseSize];
133133
public IRichCommand LayoutDetails => commands[CommandCodes.LayoutDetails];
134134
public IRichCommand LayoutList => commands[CommandCodes.LayoutList];
135-
public IRichCommand LayoutTiles => commands[CommandCodes.LayoutTiles];
135+
public IRichCommand LayoutCards=> commands[CommandCodes.LayoutCards];
136136
public IRichCommand LayoutGrid => commands[CommandCodes.LayoutGrid];
137137
public IRichCommand LayoutColumns => commands[CommandCodes.LayoutColumns];
138138
public IRichCommand LayoutAdaptive => commands[CommandCodes.LayoutAdaptive];
@@ -336,7 +336,7 @@ public IEnumerator<IRichCommand> GetEnumerator() =>
336336
[CommandCodes.LayoutIncreaseSize] = new LayoutIncreaseSizeAction(),
337337
[CommandCodes.LayoutDetails] = new LayoutDetailsAction(),
338338
[CommandCodes.LayoutList] = new LayoutListAction(),
339-
[CommandCodes.LayoutTiles] = new LayoutTilesAction(),
339+
[CommandCodes.LayoutCards] = new LayoutCardsAction(),
340340
[CommandCodes.LayoutGrid] = new LayoutGridAction(),
341341
[CommandCodes.LayoutColumns] = new LayoutColumnsAction(),
342342
[CommandCodes.LayoutAdaptive] = new LayoutAdaptiveAction(),

src/Files.App/Data/Commands/Manager/ICommandManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ public interface ICommandManager : IEnumerable<IRichCommand>
121121
IRichCommand LayoutIncreaseSize { get; }
122122
IRichCommand LayoutDetails { get; }
123123
IRichCommand LayoutList { get; }
124-
IRichCommand LayoutTiles { get; }
124+
IRichCommand LayoutCards{ get; }
125125
IRichCommand LayoutGrid { get; }
126126
IRichCommand LayoutColumns { get; }
127127
IRichCommand LayoutAdaptive { get; }

src/Files.App/Data/Contexts/DisplayPage/DisplayPageContext.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ public LayoutTypes LayoutType
2929
case LayoutTypes.List:
3030
viewModel.ToggleLayoutModeList(true);
3131
break;
32-
case LayoutTypes.Tiles:
33-
viewModel.ToggleLayoutModeTiles(true);
32+
case LayoutTypes.Cards:
33+
viewModel.ToggleLayoutModeCards(true);
3434
break;
3535
case LayoutTypes.Grid:
3636
viewModel.ToggleLayoutModeGridView(true);
@@ -230,11 +230,11 @@ private LayoutTypes GetLayoutType()
230230
{
231231
FolderLayoutModes.DetailsView => LayoutTypes.Details,
232232
FolderLayoutModes.ListView => LayoutTypes.List,
233-
FolderLayoutModes.TilesView => LayoutTypes.Tiles,
233+
FolderLayoutModes.CardsView => LayoutTypes.Cards,
234234
FolderLayoutModes.GridView => LayoutTypes.Grid,
235235
FolderLayoutModes.ColumnView => LayoutTypes.Columns,
236236
_ => throw new InvalidEnumArgumentException(),
237237
};
238238
}
239239
}
240-
}
240+
}

src/Files.App/Data/Contexts/DisplayPage/LayoutTypes.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public enum LayoutTypes : ushort
88
None,
99
Details,
1010
List,
11-
Tiles,
11+
Cards,
1212
Grid,
1313
Columns,
1414
Adaptive,

src/Files.App/Data/Contracts/ILayoutSettingsService.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,9 +206,9 @@ public interface ILayoutSettingsService : IBaseSettingsService, INotifyPropertyC
206206
ListViewSizeKind ListViewSize { get; set; }
207207

208208
/// <summary>
209-
/// Item size in the Tiles View
209+
/// Item size in the Cards View
210210
/// </summary>
211-
TilesViewSizeKind TilesViewSize { get; set; }
211+
CardsViewSizeKind CardsViewSize { get; set; }
212212

213213
/// <summary>
214214
/// Item size in the Grid View
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// Copyright (c) Files Community
2+
// Licensed under the MIT License.
3+
4+
namespace Files.App.Data.Enums
5+
{
6+
/// <summary>
7+
/// Defines constants that specify the size in the Cards View layout.
8+
/// </summary>
9+
public enum CardsViewSizeKind
10+
{
11+
/// <summary>
12+
/// The size is small.
13+
/// </summary>
14+
Small = 1,
15+
16+
/// <summary>
17+
/// The size is medium.
18+
/// </summary>
19+
Medium = 2,
20+
21+
/// <summary>
22+
/// The size is large.
23+
/// </summary>
24+
Large = 3,
25+
26+
/// <summary>
27+
/// The size is extra large.
28+
/// </summary>
29+
ExtraLarge = 4,
30+
}
31+
}

0 commit comments

Comments
 (0)