/// <summary> /// Creates the sort menu with all the sort options. /// </summary> /// <param name="folder">Folder to sort.</param> /// <returns>The flyout menu with the sort options.</returns> public static MenuFlyout CreateSortMenu(BaseFolderViewModel folder) { var currentSortOrder = UiService.GetSortOrder(folder?.FolderRootNode?.Base64Handle, folder?.FolderRootNode?.Name); MenuFlyout menuFlyout = new MenuFlyout(); menuFlyout.Items?.Add(new MenuFlyoutItem() { Text = ResourceService.UiResources.GetString("UI_SortOptionName"), Foreground = GetSortMenuItemForeground(currentSortOrder, NodesSortOrderType.ORDER_NAME), Command = new RelayCommand(() => { var newOrder = folder != null && folder.ItemCollection.IsCurrentOrderAscending ? MSortOrderType.ORDER_ALPHABETICAL_ASC : MSortOrderType.ORDER_ALPHABETICAL_DESC; if (folder == null) { return; } UiService.SetSortOrder(folder.FolderRootNode.Base64Handle, newOrder); folder.LoadChildNodes(); }) }); menuFlyout.Items?.Add(new MenuFlyoutItem() { Text = ResourceService.UiResources.GetString("UI_SortOptionSize"), Foreground = GetSortMenuItemForeground(currentSortOrder, NodesSortOrderType.ORDER_SIZE), Command = new RelayCommand(() => { var newOrder = folder != null && folder.ItemCollection.IsCurrentOrderAscending ? MSortOrderType.ORDER_SIZE_ASC : MSortOrderType.ORDER_SIZE_DESC; if (folder == null) { return; } UiService.SetSortOrder(folder.FolderRootNode.Base64Handle, newOrder); folder.LoadChildNodes(); }) }); menuFlyout.Items?.Add(new MenuFlyoutItem() { Text = ResourceService.UiResources.GetString("UI_SortOptionDateModified"), Foreground = GetSortMenuItemForeground(currentSortOrder, NodesSortOrderType.ORDER_MODIFICATION), Command = new RelayCommand(() => { var newOrder = folder != null && folder.ItemCollection.IsCurrentOrderAscending ? MSortOrderType.ORDER_MODIFICATION_ASC : MSortOrderType.ORDER_MODIFICATION_DESC; if (folder == null) { return; } UiService.SetSortOrder(folder.FolderRootNode.Base64Handle, newOrder); folder.LoadChildNodes(); }) }); menuFlyout.Items?.Add(new MenuFlyoutItem() { Text = ResourceService.UiResources.GetString("UI_SortOptionType"), Foreground = GetSortMenuItemForeground(currentSortOrder, NodesSortOrderType.ORDER_TYPE), Command = new RelayCommand(() => { var newOrder = folder != null && folder.ItemCollection.IsCurrentOrderAscending ? MSortOrderType.ORDER_DEFAULT_ASC : MSortOrderType.ORDER_DEFAULT_DESC; if (folder == null) { return; } UiService.SetSortOrder(folder.FolderRootNode.Base64Handle, newOrder); folder.LoadChildNodes(); }) }); return(menuFlyout); }