Skip to content

Commit 8f7c27b

Browse files
authored
Move more commands from BaseLayout to BaseLayoutCommandsViewModel (#4218)
1 parent e94244e commit 8f7c27b

7 files changed

+212
-147
lines changed

Files/BaseLayout.cs

-121
Original file line numberDiff line numberDiff line change
@@ -500,76 +500,6 @@ protected virtual void Page_CharacterReceived(CoreWindow sender, CharacterReceiv
500500
}
501501
}
502502

503-
protected async void List_DragEnter(object sender, DragEventArgs e)
504-
{
505-
var deferral = e.GetDeferral();
506-
507-
ClearSelection();
508-
if (e.DataView.Contains(StandardDataFormats.StorageItems))
509-
{
510-
e.Handled = true;
511-
e.DragUIOverride.IsCaptionVisible = true;
512-
IEnumerable<IStorageItem> draggedItems = new List<IStorageItem>();
513-
try
514-
{
515-
draggedItems = await e.DataView.GetStorageItemsAsync();
516-
}
517-
catch (Exception dropEx) when ((uint)dropEx.HResult == 0x80040064)
518-
{
519-
if (Connection != null)
520-
{
521-
await Connection.SendMessageAsync(new ValueSet() {
522-
{ "Arguments", "FileOperation" },
523-
{ "fileop", "DragDrop" },
524-
{ "droptext", "DragDropWindowText".GetLocalized() },
525-
{ "droppath", ParentShellPageInstance.FilesystemViewModel.WorkingDirectory } });
526-
}
527-
}
528-
catch (Exception ex)
529-
{
530-
NLog.LogManager.GetCurrentClassLogger().Warn(ex, ex.Message);
531-
}
532-
if (!draggedItems.Any())
533-
{
534-
e.AcceptedOperation = DataPackageOperation.None;
535-
deferral.Complete();
536-
return;
537-
}
538-
539-
var folderName = Path.GetFileName(ParentShellPageInstance.FilesystemViewModel.WorkingDirectory);
540-
// As long as one file doesn't already belong to this folder
541-
if (InstanceViewModel.IsPageTypeSearchResults || draggedItems.AreItemsAlreadyInFolder(ParentShellPageInstance.FilesystemViewModel.WorkingDirectory))
542-
{
543-
e.AcceptedOperation = DataPackageOperation.None;
544-
}
545-
else if (draggedItems.AreItemsInSameDrive(ParentShellPageInstance.FilesystemViewModel.WorkingDirectory))
546-
{
547-
e.DragUIOverride.Caption = string.Format("MoveToFolderCaptionText".GetLocalized(), folderName);
548-
e.AcceptedOperation = DataPackageOperation.Move;
549-
}
550-
else
551-
{
552-
e.DragUIOverride.Caption = string.Format("CopyToFolderCaptionText".GetLocalized(), folderName);
553-
e.AcceptedOperation = DataPackageOperation.Copy;
554-
}
555-
}
556-
557-
deferral.Complete();
558-
}
559-
560-
protected async void List_Drop(object sender, DragEventArgs e)
561-
{
562-
var deferral = e.GetDeferral();
563-
564-
if (e.DataView.Contains(StandardDataFormats.StorageItems))
565-
{
566-
await ParentShellPageInstance.FilesystemHelpers.PerformOperationTypeAsync(e.AcceptedOperation, e.DataView, ParentShellPageInstance.FilesystemViewModel.WorkingDirectory, true);
567-
e.Handled = true;
568-
}
569-
570-
deferral.Complete();
571-
}
572-
573503
protected async void Item_DragStarting(object sender, DragStartingEventArgs e)
574504
{
575505
List<IStorageItem> selectedStorageItems = new List<IStorageItem>();
@@ -737,57 +667,6 @@ protected void UninitializeDrag(UIElement element)
737667

738668
public readonly VirtualKey MinusKey = (VirtualKey)189;
739669

740-
public void GridViewSizeIncrease(KeyboardAccelerator sender, KeyboardAcceleratorInvokedEventArgs args)
741-
{
742-
FolderSettings.GridViewSize = FolderSettings.GridViewSize + Constants.Browser.GridViewBrowser.GridViewIncrement; // Make Larger
743-
if (args != null)
744-
{
745-
args.Handled = true;
746-
}
747-
}
748-
749-
public void GridViewSizeDecrease(KeyboardAccelerator sender, KeyboardAcceleratorInvokedEventArgs args)
750-
{
751-
FolderSettings.GridViewSize = FolderSettings.GridViewSize - Constants.Browser.GridViewBrowser.GridViewIncrement; // Make Smaller
752-
if (args != null)
753-
{
754-
args.Handled = true;
755-
}
756-
}
757-
758-
public void BaseLayout_PointerWheelChanged(object sender, PointerRoutedEventArgs e)
759-
{
760-
if (e.KeyModifiers == VirtualKeyModifiers.Control)
761-
{
762-
if (e.GetCurrentPoint(null).Properties.MouseWheelDelta < 0) // Mouse wheel down
763-
{
764-
GridViewSizeDecrease(null, null);
765-
}
766-
else // Mouse wheel up
767-
{
768-
GridViewSizeIncrease(null, null);
769-
}
770-
771-
e.Handled = true;
772-
}
773-
}
774-
775-
public async void PinItemToStart_Click(object sender, RoutedEventArgs e)
776-
{
777-
foreach (ListedItem listedItem in SelectedItems)
778-
{
779-
await App.SecondaryTileHelper.TryPinFolderAsync(listedItem.ItemPath, listedItem.ItemName);
780-
}
781-
}
782-
783-
public async void UnpinItemFromStart_Click(object sender, RoutedEventArgs e)
784-
{
785-
foreach (ListedItem listedItem in SelectedItems)
786-
{
787-
await App.SecondaryTileHelper.UnpinFromStartAsync(listedItem.ItemPath);
788-
}
789-
}
790-
791670
public abstract void Dispose();
792671

793672
public void RefreshItems()

Files/Helpers/ContextFlyoutItemHelper.cs

+2-3
Original file line numberDiff line numberDiff line change
@@ -486,7 +486,7 @@ public static List<ContextMenuFlyoutItemViewModel> GetBaseItemMenuItems(BaseLayo
486486
{
487487
Text = "PinItemToStart/Text".GetLocalized(),
488488
Glyph = "\uE840",
489-
// TODO: Add command
489+
Command = commandsViewModel.PinItemToStartCommand,
490490
ShowOnShift = true,
491491
ShowItem = selectedItems.All(x => x.PrimaryItemAttribute == StorageItemTypes.Folder && !x.IsItemPinnedToStart),
492492
SingleItemOnly = true,
@@ -495,7 +495,7 @@ public static List<ContextMenuFlyoutItemViewModel> GetBaseItemMenuItems(BaseLayo
495495
{
496496
Text = "UnpinItemFromStart/Text".GetLocalized(),
497497
Glyph = "\uE77A",
498-
// TODO: Add command
498+
Command = commandsViewModel.UnpinItemFromStartCommand,
499499
ShowOnShift = true,
500500
ShowItem = selectedItems.All(x => x.PrimaryItemAttribute == StorageItemTypes.Folder && x.IsItemPinnedToStart),
501501
SingleItemOnly = true,
@@ -569,4 +569,3 @@ public static List<ContextMenuFlyoutItemViewModel> GetNewItemItems(BaseLayoutCom
569569
}
570570
}
571571
}
572-

Files/Interacts/BaseLayoutCommandImplementationModel.cs

+123
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,129 @@ public virtual void ItemPointerPressed(PointerRoutedEventArgs e)
404404
}
405405
}
406406

407+
public virtual async void UnpinItemFromStart(RoutedEventArgs e)
408+
{
409+
foreach (ListedItem listedItem in associatedInstance.SlimContentPage.SelectedItems)
410+
{
411+
await App.SecondaryTileHelper.UnpinFromStartAsync(listedItem.ItemPath);
412+
}
413+
}
414+
415+
public async void PinItemToStart(RoutedEventArgs e)
416+
{
417+
foreach (ListedItem listedItem in associatedInstance.SlimContentPage.SelectedItems)
418+
{
419+
await App.SecondaryTileHelper.TryPinFolderAsync(listedItem.ItemPath, listedItem.ItemName);
420+
}
421+
}
422+
423+
public virtual void PointerWheelChanged(PointerRoutedEventArgs e)
424+
{
425+
if (e.KeyModifiers == VirtualKeyModifiers.Control)
426+
{
427+
if (e.GetCurrentPoint(null).Properties.MouseWheelDelta < 0) // Mouse wheel down
428+
{
429+
GridViewSizeDecrease(null);
430+
}
431+
else // Mouse wheel up
432+
{
433+
GridViewSizeIncrease(null);
434+
}
435+
436+
e.Handled = true;
437+
}
438+
}
439+
440+
public virtual void GridViewSizeDecrease(KeyboardAcceleratorInvokedEventArgs e)
441+
{
442+
associatedInstance.InstanceViewModel.FolderSettings.GridViewSize = associatedInstance.InstanceViewModel.FolderSettings.GridViewSize - Constants.Browser.GridViewBrowser.GridViewIncrement; // Make Smaller
443+
444+
if (e != null)
445+
{
446+
e.Handled = true;
447+
}
448+
}
449+
450+
public virtual void GridViewSizeIncrease(KeyboardAcceleratorInvokedEventArgs e)
451+
{
452+
associatedInstance.InstanceViewModel.FolderSettings.GridViewSize = associatedInstance.InstanceViewModel.FolderSettings.GridViewSize + Constants.Browser.GridViewBrowser.GridViewIncrement; // Make Larger
453+
454+
if (e != null)
455+
{
456+
e.Handled = true;
457+
}
458+
}
459+
460+
public virtual async void DragEnter(DragEventArgs e)
461+
{
462+
var deferral = e.GetDeferral();
463+
464+
SlimContentPage.ClearSelection();
465+
if (e.DataView.Contains(StandardDataFormats.StorageItems))
466+
{
467+
e.Handled = true;
468+
e.DragUIOverride.IsCaptionVisible = true;
469+
IEnumerable<IStorageItem> draggedItems = new List<IStorageItem>();
470+
try
471+
{
472+
draggedItems = await e.DataView.GetStorageItemsAsync();
473+
}
474+
catch (Exception dropEx) when ((uint)dropEx.HResult == 0x80040064)
475+
{
476+
if (associatedInstance.ServiceConnection != null)
477+
{
478+
await associatedInstance.ServiceConnection.SendMessageAsync(new ValueSet() {
479+
{ "Arguments", "FileOperation" },
480+
{ "fileop", "DragDrop" },
481+
{ "droptext", "DragDropWindowText".GetLocalized() },
482+
{ "droppath", associatedInstance.FilesystemViewModel.WorkingDirectory } });
483+
}
484+
}
485+
catch (Exception ex)
486+
{
487+
NLog.LogManager.GetCurrentClassLogger().Warn(ex, ex.Message);
488+
}
489+
if (!draggedItems.Any())
490+
{
491+
e.AcceptedOperation = DataPackageOperation.None;
492+
deferral.Complete();
493+
return;
494+
}
495+
496+
var folderName = System.IO.Path.GetFileName(associatedInstance.FilesystemViewModel.WorkingDirectory);
497+
// As long as one file doesn't already belong to this folder
498+
if (associatedInstance.InstanceViewModel.IsPageTypeSearchResults || draggedItems.AreItemsAlreadyInFolder(associatedInstance.FilesystemViewModel.WorkingDirectory))
499+
{
500+
e.AcceptedOperation = DataPackageOperation.None;
501+
}
502+
else if (draggedItems.AreItemsInSameDrive(associatedInstance.FilesystemViewModel.WorkingDirectory))
503+
{
504+
e.DragUIOverride.Caption = string.Format("MoveToFolderCaptionText".GetLocalized(), folderName);
505+
e.AcceptedOperation = DataPackageOperation.Move;
506+
}
507+
else
508+
{
509+
e.DragUIOverride.Caption = string.Format("CopyToFolderCaptionText".GetLocalized(), folderName);
510+
e.AcceptedOperation = DataPackageOperation.Copy;
511+
}
512+
}
513+
514+
deferral.Complete();
515+
}
516+
517+
public virtual async void Drop(DragEventArgs e)
518+
{
519+
var deferral = e.GetDeferral();
520+
521+
if (e.DataView.Contains(StandardDataFormats.StorageItems))
522+
{
523+
await associatedInstance.FilesystemHelpers.PerformOperationTypeAsync(e.AcceptedOperation, e.DataView, associatedInstance.FilesystemViewModel.WorkingDirectory, true);
524+
e.Handled = true;
525+
}
526+
527+
deferral.Complete();
528+
}
529+
407530
public virtual void RefreshItems(RoutedEventArgs e)
408531
{
409532
SlimContentPage.RefreshItems();

Files/Interacts/BaseLayoutCommandsViewModel.cs

+22
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,13 @@ private void InitializeCommands()
6161
ShareItemCommand = new RelayCommand<RoutedEventArgs>(commandsModel.ShareItem);
6262
PinDirectoryToSidebarCommand = new RelayCommand<RoutedEventArgs>(commandsModel.PinDirectoryToSidebar);
6363
ItemPointerPressedCommand = new RelayCommand<PointerRoutedEventArgs>(commandsModel.ItemPointerPressed);
64+
UnpinItemFromStartCommand = new RelayCommand<RoutedEventArgs>(commandsModel.UnpinItemFromStart);
65+
PinItemToStartCommand = new RelayCommand<RoutedEventArgs>(commandsModel.PinItemToStart);
66+
PointerWheelChangedCommand = new RelayCommand<PointerRoutedEventArgs>(commandsModel.PointerWheelChanged);
67+
GridViewSizeDecreaseCommand = new RelayCommand<KeyboardAcceleratorInvokedEventArgs>(commandsModel.GridViewSizeDecrease);
68+
GridViewSizeIncreaseCommand = new RelayCommand<KeyboardAcceleratorInvokedEventArgs>(commandsModel.GridViewSizeIncrease);
69+
DragEnterCommand = new RelayCommand<DragEventArgs>(commandsModel.DragEnter);
70+
DropCommand = new RelayCommand<DragEventArgs>(commandsModel.Drop);
6471
RefreshCommand = new RelayCommand<RoutedEventArgs>(commandsModel.RefreshItems);
6572
}
6673

@@ -129,6 +136,21 @@ private void InitializeCommands()
129136
public ICommand PinDirectoryToSidebarCommand { get; private set; }
130137

131138
public ICommand ItemPointerPressedCommand { get; private set; }
139+
140+
public ICommand UnpinItemFromStartCommand { get; private set; }
141+
142+
public ICommand PinItemToStartCommand { get; private set; }
143+
144+
public ICommand PointerWheelChangedCommand { get; private set; }
145+
146+
public ICommand GridViewSizeDecreaseCommand { get; private set; }
147+
148+
public ICommand GridViewSizeIncreaseCommand { get; private set; }
149+
150+
public ICommand DragEnterCommand { get; private set; }
151+
152+
public ICommand DropCommand { get; private set; }
153+
132154
public ICommand RefreshCommand { get; private set; }
133155

134156
#endregion Commands

Files/Interacts/IBaseLayoutCommandImplementationModel.cs

+15
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,21 @@ public interface IBaseLayoutCommandImplementationModel : IDisposable
6868
void PinDirectoryToSidebar(RoutedEventArgs e);
6969

7070
void ItemPointerPressed(PointerRoutedEventArgs e);
71+
72+
void UnpinItemFromStart(RoutedEventArgs e);
73+
74+
void PinItemToStart(RoutedEventArgs e);
75+
76+
void PointerWheelChanged(PointerRoutedEventArgs e);
77+
78+
void GridViewSizeDecrease(KeyboardAcceleratorInvokedEventArgs e);
79+
80+
void GridViewSizeIncrease(KeyboardAcceleratorInvokedEventArgs e);
81+
82+
void DragEnter(DragEventArgs e);
83+
84+
void Drop(DragEventArgs e);
85+
7186
void RefreshItems(RoutedEventArgs e);
7287
}
7388
}

0 commit comments

Comments
 (0)