Skip to content

Commit 2b4132f

Browse files
Code Quality: Create alike RichCommands inheritance (#13155)
1 parent bd8c78f commit 2b4132f

23 files changed

+417
-521
lines changed

src/Files.App/Actions/Content/Archives/DecompressArchiveHere.cs renamed to src/Files.App/Actions/Content/Archives/Compress/BaseCompressArchiveAction.cs

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,27 @@
33

44
namespace Files.App.Actions
55
{
6-
internal class DecompressArchiveHere : BaseUIAction, IAction
6+
internal abstract class BaseCompressArchiveAction : BaseUIAction, IAction
77
{
8-
private readonly IContentPageContext context;
8+
protected readonly IContentPageContext context;
99

10-
public string Label
11-
=> "ExtractHere".GetLocalizedResource();
10+
public abstract string Label { get; }
1211

13-
public string Description
14-
=> "DecompressArchiveHereDescription".GetLocalizedResource();
12+
public abstract string Description { get; }
1513

1614
public override bool IsExecutable =>
1715
IsContextPageTypeAdaptedToCommand() &&
18-
ArchiveHelpers.CanDecompress(context.SelectedItems) &&
16+
ArchiveHelpers.CanCompress(context.SelectedItems) &&
1917
UIHelpers.CanShowDialog;
2018

21-
public DecompressArchiveHere()
19+
public BaseCompressArchiveAction()
2220
{
2321
context = Ioc.Default.GetRequiredService<IContentPageContext>();
2422

2523
context.PropertyChanged += Context_PropertyChanged;
2624
}
2725

28-
public Task ExecuteAsync()
29-
{
30-
return ArchiveHelpers.DecompressArchiveHere(context.ShellPage);
31-
}
26+
public abstract Task ExecuteAsync();
3227

3328
private bool IsContextPageTypeAdaptedToCommand()
3429
{
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
// Copyright (c) 2023 Files Community
2+
// Licensed under the MIT License. See the LICENSE.
3+
4+
using Files.App.Dialogs;
5+
using Microsoft.UI.Xaml.Controls;
6+
7+
namespace Files.App.Actions
8+
{
9+
internal sealed class CompressIntoArchiveAction : BaseCompressArchiveAction
10+
{
11+
public override string Label
12+
=> "CreateArchive".GetLocalizedResource();
13+
14+
public override string Description
15+
=> "CompressIntoArchiveDescription".GetLocalizedResource();
16+
17+
public CompressIntoArchiveAction()
18+
{
19+
}
20+
21+
public override async Task ExecuteAsync()
22+
{
23+
var (sources, directory, fileName) = ArchiveHelpers.GetCompressDestination(context.ShellPage);
24+
25+
var dialog = new CreateArchiveDialog
26+
{
27+
FileName = fileName,
28+
};
29+
30+
var result = await dialog.TryShowAsync();
31+
32+
if (!dialog.CanCreate || result != ContentDialogResult.Primary)
33+
return;
34+
35+
IArchiveCreator creator = new ArchiveCreator
36+
{
37+
Sources = sources,
38+
Directory = directory,
39+
FileName = dialog.FileName,
40+
Password = dialog.Password,
41+
FileFormat = dialog.FileFormat,
42+
CompressionLevel = dialog.CompressionLevel,
43+
SplittingSize = dialog.SplittingSize,
44+
};
45+
46+
await ArchiveHelpers.CompressArchiveAsync(creator);
47+
}
48+
}
49+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Copyright (c) 2023 Files Community
2+
// Licensed under the MIT License. See the LICENSE.
3+
4+
namespace Files.App.Actions
5+
{
6+
internal sealed class CompressIntoSevenZipAction : BaseCompressArchiveAction
7+
{
8+
public override string Label
9+
=> string.Format("CreateNamedArchive".GetLocalizedResource(), $"{ArchiveHelpers.DetermineArchiveNameFromSelection(context.SelectedItems)}.7z");
10+
11+
public override string Description
12+
=> "CompressIntoSevenZipDescription".GetLocalizedResource();
13+
14+
public CompressIntoSevenZipAction()
15+
{
16+
}
17+
18+
public override Task ExecuteAsync()
19+
{
20+
var (sources, directory, fileName) = ArchiveHelpers.GetCompressDestination(context.ShellPage);
21+
22+
IArchiveCreator creator = new ArchiveCreator
23+
{
24+
Sources = sources,
25+
Directory = directory,
26+
FileName = fileName,
27+
FileFormat = ArchiveFormats.SevenZip,
28+
};
29+
30+
return ArchiveHelpers.CompressArchiveAsync(creator);
31+
}
32+
}
33+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Copyright (c) 2023 Files Community
2+
// Licensed under the MIT License. See the LICENSE.
3+
4+
namespace Files.App.Actions
5+
{
6+
internal sealed class CompressIntoZipAction : BaseCompressArchiveAction
7+
{
8+
public override string Label
9+
=> string.Format("CreateNamedArchive".GetLocalizedResource(), $"{ArchiveHelpers.DetermineArchiveNameFromSelection(context.SelectedItems)}.zip");
10+
11+
public override string Description
12+
=> "CompressIntoZipDescription".GetLocalizedResource();
13+
14+
public CompressIntoZipAction()
15+
{
16+
}
17+
18+
public override Task ExecuteAsync()
19+
{
20+
var (sources, directory, fileName) = ArchiveHelpers.GetCompressDestination(context.ShellPage);
21+
22+
IArchiveCreator creator = new ArchiveCreator
23+
{
24+
Sources = sources,
25+
Directory = directory,
26+
FileName = fileName,
27+
FileFormat = ArchiveFormats.Zip,
28+
};
29+
30+
return ArchiveHelpers.CompressArchiveAsync(creator);
31+
}
32+
}
33+
}

src/Files.App/Actions/Content/Archives/CompressIntoArchiveAction.cs

Lines changed: 0 additions & 79 deletions
This file was deleted.

src/Files.App/Actions/Content/Archives/CompressIntoSevenZipAction.cs

Lines changed: 0 additions & 63 deletions
This file was deleted.

src/Files.App/Actions/Content/Archives/CompressIntoZipAction.cs

Lines changed: 0 additions & 63 deletions
This file was deleted.

0 commit comments

Comments
 (0)