diff --git a/src/Files.App/Dialogs/FilesystemOperationDialog.xaml b/src/Files.App/Dialogs/FilesystemOperationDialog.xaml index 3242597f40f2..184b7e01b33c 100644 --- a/src/Files.App/Dialogs/FilesystemOperationDialog.xaml +++ b/src/Files.App/Dialogs/FilesystemOperationDialog.xaml @@ -12,6 +12,7 @@ xmlns:vm="using:Files.App.ViewModels.Dialogs.FileSystemDialog" x:Name="RootDialog" Title="{x:Bind ViewModel.Title, Mode=OneWay}" + CloseButtonText="{x:Bind ViewModel.CloseButtonText, Mode=OneWay}" Closing="RootDialog_Closing" CornerRadius="{StaticResource OverlayCornerRadius}" DefaultButton="Primary" diff --git a/src/Files.App/Helpers/Dialog/DynamicDialogFactory.cs b/src/Files.App/Helpers/Dialog/DynamicDialogFactory.cs index e13d792a8f20..b313a01d5bf2 100644 --- a/src/Files.App/Helpers/Dialog/DynamicDialogFactory.cs +++ b/src/Files.App/Helpers/Dialog/DynamicDialogFactory.cs @@ -146,8 +146,10 @@ public static DynamicDialog GetFor_FileInUseDialog(List lockingPro TitleText = Strings.FileInUseDialog_Title.GetLocalizedResource(), SubtitleText = lockingProcess.IsEmpty() ? Strings.FileInUseDialog_Text.GetLocalizedResource() : string.Format(Strings.FileInUseByDialog_Text.GetLocalizedResource(), string.Join(", ", lockingProcess.Select(x => $"{x.AppName ?? x.Name} (PID: {x.Pid})"))), - PrimaryButtonText = "OK", - DynamicButtons = DynamicDialogButtons.Primary + PrimaryButtonText = Strings.Retry.GetLocalizedResource(), + SecondaryButtonText = Strings.Skip.GetLocalizedResource(), + CloseButtonText = Strings.SkipAll.GetLocalizedResource(), + DynamicButtons = DynamicDialogButtons.Primary | DynamicDialogButtons.Secondary | DynamicDialogButtons.Cancel }); return dialog; } diff --git a/src/Files.App/Strings/en-US/Resources.resw b/src/Files.App/Strings/en-US/Resources.resw index de41704eed48..84fa129b5076 100644 --- a/src/Files.App/Strings/en-US/Resources.resw +++ b/src/Files.App/Strings/en-US/Resources.resw @@ -165,6 +165,9 @@ Skip + + Skip all + Select all diff --git a/src/Files.App/Utils/Storage/Operations/ShellFilesystemOperations.cs b/src/Files.App/Utils/Storage/Operations/ShellFilesystemOperations.cs index c89155f375e3..dd683065df1c 100644 --- a/src/Files.App/Utils/Storage/Operations/ShellFilesystemOperations.cs +++ b/src/Files.App/Utils/Storage/Operations/ShellFilesystemOperations.cs @@ -857,10 +857,17 @@ private Task GetFileInUseDialog(IEnumerable source, IEnume ? Strings.FileInUseDialog_Text.GetLocalizedResource() : string.Format(Strings.FileInUseByDialog_Text.GetLocalizedResource(), string.Join(", ", lockingProcess.Select(x => $"{x.AppName ?? x.Name} (PID: {x.Pid})"))); - return GetFileListDialog(source, titleText, subtitleText, Strings.Retry.GetLocalizedResource(), Strings.Cancel.GetLocalizedResource()); + var sourceCount = source.Count(); + + return GetFileListDialog( + source, + titleText, + subtitleText, + Strings.Retry.GetLocalizedResource(), + sourceCount > 1 ? Strings.Skip.GetLocalizedResource() : Strings.Cancel.GetLocalizedResource()); } - private async Task GetFileListDialog(IEnumerable source, string titleText, string descriptionText = null, string primaryButtonText = null, string secondaryButtonText = null) + private async Task GetFileListDialog(IEnumerable source, string titleText, string descriptionText = null, string primaryButtonText = null, string secondaryButtonText = null, string closeButtonText = null) { var incomingItems = new List(); List binItems = null; @@ -886,7 +893,7 @@ private async Task GetFileListDialog(IEnumerable source, s } var dialogViewModel = FileSystemDialogViewModel.GetDialogViewModel( - incomingItems, titleText, descriptionText, primaryButtonText, secondaryButtonText); + incomingItems, titleText, descriptionText, primaryButtonText, secondaryButtonText, closeButtonText); var dialogService = Ioc.Default.GetRequiredService(); diff --git a/src/Files.App/ViewModels/Dialogs/FileSystemDialog/FileSystemDialogViewModel.cs b/src/Files.App/ViewModels/Dialogs/FileSystemDialog/FileSystemDialogViewModel.cs index 9de1dbedcf24..da7e88e3d0de 100644 --- a/src/Files.App/ViewModels/Dialogs/FileSystemDialog/FileSystemDialogViewModel.cs +++ b/src/Files.App/ViewModels/Dialogs/FileSystemDialog/FileSystemDialogViewModel.cs @@ -216,7 +216,7 @@ public static FileSystemDialogViewModel GetDialogViewModel(FileSystemDialogMode return viewModel; } - public static FileSystemDialogViewModel GetDialogViewModel(List nonConflictingItems, string titleText, string descriptionText, string primaryButtonText, string secondaryButtonText) + public static FileSystemDialogViewModel GetDialogViewModel(List nonConflictingItems, string titleText, string descriptionText, string primaryButtonText, string secondaryButtonText, string closeButtonText = null) { var viewModel = new FileSystemDialogViewModel( new() @@ -230,6 +230,7 @@ public static FileSystemDialogViewModel GetDialogViewModel(List