diff --git a/src/Files.Uwp/BaseLayout.cs b/src/Files.Uwp/BaseLayout.cs index 517a5d99e992..1e5fa67bbe32 100644 --- a/src/Files.Uwp/BaseLayout.cs +++ b/src/Files.Uwp/BaseLayout.cs @@ -648,7 +648,7 @@ private async Task LoadMenuItemsAsync() } shellContextMenuItemCancellationToken?.Cancel(); shellContextMenuItemCancellationToken = new CancellationTokenSource(); - SelectedItemsPropertiesViewModel.CheckFileExtension(SelectedItem?.FileExtension); + SelectedItemsPropertiesViewModel.CheckAllFileExtensions(this.SelectedItems.Select(selectedItem => selectedItem?.FileExtension).ToList()); var shiftPressed = Window.Current.CoreWindow.GetKeyState(VirtualKey.Shift).HasFlag(CoreVirtualKeyStates.Down); var items = ContextFlyoutItemHelper.GetItemContextCommandsWithoutShellItems(currentInstanceViewModel: InstanceViewModel, workingDir: ParentShellPageInstance.FilesystemViewModel.WorkingDirectory, selectedItems: SelectedItems, selectedItemsPropertiesViewModel: SelectedItemsPropertiesViewModel, commandsViewModel: CommandsViewModel, shiftPressed: shiftPressed, showOpenMenu: false); ItemContextMenuFlyout.PrimaryCommands.Clear(); diff --git a/src/Files.Uwp/Helpers/ContextFlyoutItemHelper.cs b/src/Files.Uwp/Helpers/ContextFlyoutItemHelper.cs index 4290f1075f97..b7f3952f3a15 100644 --- a/src/Files.Uwp/Helpers/ContextFlyoutItemHelper.cs +++ b/src/Files.Uwp/Helpers/ContextFlyoutItemHelper.cs @@ -727,6 +727,7 @@ public static List GetBaseItemMenuItems(BaseLayo Glyph = "\uE91B", Command = commandsViewModel.SetAsDesktopBackgroundItemCommand, ShowInSearchPage = true, + ShowItem = (selectedItemsPropertiesViewModel.SelectedItemsCount == 1) }, new ContextMenuFlyoutItemViewModel() { @@ -735,6 +736,16 @@ public static List GetBaseItemMenuItems(BaseLayo GlyphFontFamilyName = "CustomGlyph", Command = commandsViewModel.SetAsLockscreenBackgroundItemCommand, ShowInSearchPage = true, + ShowItem = (selectedItemsPropertiesViewModel.SelectedItemsCount == 1) + }, + new ContextMenuFlyoutItemViewModel() + { + Text = "SetAsSlideshow".GetLocalized(), + Glyph = "\uE91B", + GlyphFontFamilyName = "CustomGlyph", + Command = commandsViewModel.SetAsDesktopBackgroundItemCommand, + ShowInSearchPage = true, + ShowItem = (selectedItemsPropertiesViewModel.SelectedItemsCount > 1) }, } }, diff --git a/src/Files.Uwp/Helpers/FileExtensionHelpers.cs b/src/Files.Uwp/Helpers/FileExtensionHelpers.cs index a70b1bee0a54..f60069aa131f 100644 --- a/src/Files.Uwp/Helpers/FileExtensionHelpers.cs +++ b/src/Files.Uwp/Helpers/FileExtensionHelpers.cs @@ -88,5 +88,22 @@ public static bool IsFontFile(string fileExtensionToCheck) fileExtensionToCheck.Equals(".ttc", StringComparison.OrdinalIgnoreCase) || fileExtensionToCheck.Equals(".ttf", StringComparison.OrdinalIgnoreCase); } + + /// + /// Check if the file extension is a shortcut file. + /// + /// The file extension to check. + /// true if the fileExtensionToCheck is a shortcute file; + /// otherwise false. + /// Font file type is .lnkf + public static bool IsShortcutFile(string fileExtensionToCheck) + { + if (string.IsNullOrEmpty(fileExtensionToCheck)) + { + return false; + } + + return fileExtensionToCheck.Equals(".lnk", StringComparison.OrdinalIgnoreCase); + } } } diff --git a/src/Files.Uwp/ViewModels/SelectedItemsPropertiesViewModel.cs b/src/Files.Uwp/ViewModels/SelectedItemsPropertiesViewModel.cs index 15a28809179d..a4cfbb245a5d 100644 --- a/src/Files.Uwp/ViewModels/SelectedItemsPropertiesViewModel.cs +++ b/src/Files.Uwp/ViewModels/SelectedItemsPropertiesViewModel.cs @@ -5,6 +5,8 @@ using System; using System.Collections.ObjectModel; using Windows.UI.Xaml; +using System.Collections.Generic; +using Files.Uwp.Helpers; namespace Files.Uwp.ViewModels { @@ -537,29 +539,12 @@ public bool IsSelectedItemShortcut set => SetProperty(ref isSelectedItemShortcut, value); } - public void CheckFileExtension(string itemExtension) + public void CheckAllFileExtensions(List itemExtensions) { - // Set properties to false - IsSelectedItemImage = false; - IsSelectedItemShortcut = false; - - //check if the selected item is an image file - if (!string.IsNullOrEmpty(itemExtension) && SelectedItemsCount == 1) - { - if (itemExtension.Equals(".png", StringComparison.OrdinalIgnoreCase) - || itemExtension.Equals(".jpg", StringComparison.OrdinalIgnoreCase) - || itemExtension.Equals(".bmp", StringComparison.OrdinalIgnoreCase) - || itemExtension.Equals(".jpeg", StringComparison.OrdinalIgnoreCase)) - { - // Since item is an image, set the IsSelectedItemImage property to true - IsSelectedItemImage = true; - } - else if (itemExtension.Equals(".lnk", StringComparison.OrdinalIgnoreCase)) - { - // The selected item is a shortcut, so set the IsSelectedItemShortcut property to true - IsSelectedItemShortcut = true; - } - } + // Checks if all the item extensions are image extensions of some kind. + IsSelectedItemImage = itemExtensions.TrueForAll(itemExtension => FileExtensionHelpers.IsImageFile(itemExtension)); + // Checks if there is only one selected item and if it's a shortcut. + IsSelectedItemShortcut = (itemExtensions.Count == 1) && (itemExtensions.TrueForAll(itemExtension => FileExtensionHelpers.IsShortcutFile(itemExtension))); } private string shortcutItemType;