Skip to content

Commit 067bade

Browse files
authored
Feature: Support setting multiple images as desktop background (#9712)
1 parent c3fcf91 commit 067bade

File tree

4 files changed

+36
-23
lines changed

4 files changed

+36
-23
lines changed

src/Files.Uwp/BaseLayout.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -648,7 +648,7 @@ private async Task LoadMenuItemsAsync()
648648
}
649649
shellContextMenuItemCancellationToken?.Cancel();
650650
shellContextMenuItemCancellationToken = new CancellationTokenSource();
651-
SelectedItemsPropertiesViewModel.CheckFileExtension(SelectedItem?.FileExtension);
651+
SelectedItemsPropertiesViewModel.CheckAllFileExtensions(this.SelectedItems.Select(selectedItem => selectedItem?.FileExtension).ToList());
652652
var shiftPressed = Window.Current.CoreWindow.GetKeyState(VirtualKey.Shift).HasFlag(CoreVirtualKeyStates.Down);
653653
var items = ContextFlyoutItemHelper.GetItemContextCommandsWithoutShellItems(currentInstanceViewModel: InstanceViewModel, workingDir: ParentShellPageInstance.FilesystemViewModel.WorkingDirectory, selectedItems: SelectedItems, selectedItemsPropertiesViewModel: SelectedItemsPropertiesViewModel, commandsViewModel: CommandsViewModel, shiftPressed: shiftPressed, showOpenMenu: false);
654654
ItemContextMenuFlyout.PrimaryCommands.Clear();

src/Files.Uwp/Helpers/ContextFlyoutItemHelper.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -727,6 +727,7 @@ public static List<ContextMenuFlyoutItemViewModel> GetBaseItemMenuItems(BaseLayo
727727
Glyph = "\uE91B",
728728
Command = commandsViewModel.SetAsDesktopBackgroundItemCommand,
729729
ShowInSearchPage = true,
730+
ShowItem = (selectedItemsPropertiesViewModel.SelectedItemsCount == 1)
730731
},
731732
new ContextMenuFlyoutItemViewModel()
732733
{
@@ -735,6 +736,16 @@ public static List<ContextMenuFlyoutItemViewModel> GetBaseItemMenuItems(BaseLayo
735736
GlyphFontFamilyName = "CustomGlyph",
736737
Command = commandsViewModel.SetAsLockscreenBackgroundItemCommand,
737738
ShowInSearchPage = true,
739+
ShowItem = (selectedItemsPropertiesViewModel.SelectedItemsCount == 1)
740+
},
741+
new ContextMenuFlyoutItemViewModel()
742+
{
743+
Text = "SetAsSlideshow".GetLocalized(),
744+
Glyph = "\uE91B",
745+
GlyphFontFamilyName = "CustomGlyph",
746+
Command = commandsViewModel.SetAsDesktopBackgroundItemCommand,
747+
ShowInSearchPage = true,
748+
ShowItem = (selectedItemsPropertiesViewModel.SelectedItemsCount > 1)
738749
},
739750
}
740751
},

src/Files.Uwp/Helpers/FileExtensionHelpers.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,5 +88,22 @@ public static bool IsFontFile(string fileExtensionToCheck)
8888
fileExtensionToCheck.Equals(".ttc", StringComparison.OrdinalIgnoreCase) ||
8989
fileExtensionToCheck.Equals(".ttf", StringComparison.OrdinalIgnoreCase);
9090
}
91+
92+
/// <summary>
93+
/// Check if the file extension is a shortcut file.
94+
/// </summary>
95+
/// <param name="fileExtensionToCheck">The file extension to check.</param>
96+
/// <returns><c>true</c> if the fileExtensionToCheck is a shortcute file;
97+
/// otherwise <c>false</c>.</returns>
98+
/// <remarks>Font file type is .lnkf</remarks>
99+
public static bool IsShortcutFile(string fileExtensionToCheck)
100+
{
101+
if (string.IsNullOrEmpty(fileExtensionToCheck))
102+
{
103+
return false;
104+
}
105+
106+
return fileExtensionToCheck.Equals(".lnk", StringComparison.OrdinalIgnoreCase);
107+
}
91108
}
92109
}

src/Files.Uwp/ViewModels/SelectedItemsPropertiesViewModel.cs

Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
using System;
66
using System.Collections.ObjectModel;
77
using Windows.UI.Xaml;
8+
using System.Collections.Generic;
9+
using Files.Uwp.Helpers;
810

911
namespace Files.Uwp.ViewModels
1012
{
@@ -537,29 +539,12 @@ public bool IsSelectedItemShortcut
537539
set => SetProperty(ref isSelectedItemShortcut, value);
538540
}
539541

540-
public void CheckFileExtension(string itemExtension)
542+
public void CheckAllFileExtensions(List<string> itemExtensions)
541543
{
542-
// Set properties to false
543-
IsSelectedItemImage = false;
544-
IsSelectedItemShortcut = false;
545-
546-
//check if the selected item is an image file
547-
if (!string.IsNullOrEmpty(itemExtension) && SelectedItemsCount == 1)
548-
{
549-
if (itemExtension.Equals(".png", StringComparison.OrdinalIgnoreCase)
550-
|| itemExtension.Equals(".jpg", StringComparison.OrdinalIgnoreCase)
551-
|| itemExtension.Equals(".bmp", StringComparison.OrdinalIgnoreCase)
552-
|| itemExtension.Equals(".jpeg", StringComparison.OrdinalIgnoreCase))
553-
{
554-
// Since item is an image, set the IsSelectedItemImage property to true
555-
IsSelectedItemImage = true;
556-
}
557-
else if (itemExtension.Equals(".lnk", StringComparison.OrdinalIgnoreCase))
558-
{
559-
// The selected item is a shortcut, so set the IsSelectedItemShortcut property to true
560-
IsSelectedItemShortcut = true;
561-
}
562-
}
544+
// Checks if all the item extensions are image extensions of some kind.
545+
IsSelectedItemImage = itemExtensions.TrueForAll(itemExtension => FileExtensionHelpers.IsImageFile(itemExtension));
546+
// Checks if there is only one selected item and if it's a shortcut.
547+
IsSelectedItemShortcut = (itemExtensions.Count == 1) && (itemExtensions.TrueForAll(itemExtension => FileExtensionHelpers.IsShortcutFile(itemExtension)));
563548
}
564549

565550
private string shortcutItemType;

0 commit comments

Comments
 (0)