|
12 | 12 | using Microsoft.UI.Xaml.Controls;
|
13 | 13 | using Microsoft.UI.Xaml.Input;
|
14 | 14 | using Microsoft.UI.Xaml.Navigation;
|
| 15 | +using System.Data; |
15 | 16 | using Windows.ApplicationModel;
|
| 17 | +using Windows.ApplicationModel.DataTransfer; |
16 | 18 | using Windows.Foundation.Metadata;
|
17 | 19 | using Windows.Services.Store;
|
18 | 20 | using WinRT.Interop;
|
@@ -175,10 +177,10 @@ public void MultitaskingControl_CurrentInstanceChanged(object? sender, CurrentIn
|
175 | 177 | SidebarAdaptiveViewModel.PaneHolder.PropertyChanged -= PaneHolder_PropertyChanged;
|
176 | 178 |
|
177 | 179 | var navArgs = e.CurrentInstance.TabItemParameter?.NavigationParameter;
|
178 |
| - if (e.CurrentInstance is IPaneHolder currentInstance) |
179 |
| - { |
180 |
| - SidebarAdaptiveViewModel.PaneHolder = currentInstance; |
181 |
| - SidebarAdaptiveViewModel.PaneHolder.PropertyChanged += PaneHolder_PropertyChanged; |
| 180 | + if (e.CurrentInstance is IPaneHolder currentInstance) |
| 181 | + { |
| 182 | + SidebarAdaptiveViewModel.PaneHolder = currentInstance; |
| 183 | + SidebarAdaptiveViewModel.PaneHolder.PropertyChanged += PaneHolder_PropertyChanged; |
182 | 184 | }
|
183 | 185 | SidebarAdaptiveViewModel.NotifyInstanceRelatedPropertiesChanged((navArgs as PaneNavigationArguments)?.LeftPaneNavPathParam);
|
184 | 186 |
|
@@ -474,6 +476,64 @@ private void RootGrid_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
|
474 | 476 | }
|
475 | 477 | }
|
476 | 478 |
|
| 479 | + private bool lockFlag = false; |
| 480 | + //private string[] dropableArchiveTypes = { "zip", "rar", "7z", "tar" }; |
| 481 | + |
| 482 | + private async void HorizontalMultitaskingControlAddButton_Drop(object sender, DragEventArgs e) |
| 483 | + { |
| 484 | + if (lockFlag || !FilesystemHelpers.HasDraggedStorageItems(e.DataView)) |
| 485 | + return; |
| 486 | + |
| 487 | + lockFlag = true; |
| 488 | + |
| 489 | + var items = (await FilesystemHelpers.GetDraggedStorageItems(e.DataView)) |
| 490 | + .Where(x => x.ItemType is FilesystemItemType.Directory |
| 491 | + //|| dropableArchiveTypes.Contains(x.Name.Split('.').Last().ToLower()) |
| 492 | + ); |
| 493 | + |
| 494 | + var deferral = e.GetDeferral(); |
| 495 | + try |
| 496 | + { |
| 497 | + foreach (var item in items) |
| 498 | + await NavigationHelpers.OpenPathInNewTab(item.Path); |
| 499 | + |
| 500 | + deferral.Complete(); |
| 501 | + } |
| 502 | + catch { } |
| 503 | + lockFlag = false; |
| 504 | + } |
| 505 | + |
| 506 | + private async void HorizontalMultitaskingControlAddButton_DragOver(object sender, DragEventArgs e) |
| 507 | + { |
| 508 | + if (!FilesystemHelpers.HasDraggedStorageItems(e.DataView)) |
| 509 | + { |
| 510 | + e.AcceptedOperation = DataPackageOperation.None; |
| 511 | + return; |
| 512 | + } |
| 513 | + |
| 514 | + bool hasValidDraggedItems = |
| 515 | + (await FilesystemHelpers.GetDraggedStorageItems(e.DataView)).Any(x => x.ItemType is FilesystemItemType.Directory |
| 516 | + //|| dropableArchiveTypes.Contains(x.Name.Split('.').Last().ToLower()) |
| 517 | + ); |
| 518 | + |
| 519 | + if (!hasValidDraggedItems) |
| 520 | + { |
| 521 | + e.AcceptedOperation = DataPackageOperation.None; |
| 522 | + return; |
| 523 | + } |
| 524 | + |
| 525 | + try |
| 526 | + { |
| 527 | + e.Handled = true; |
| 528 | + var deferral = e.GetDeferral(); |
| 529 | + e.DragUIOverride.IsCaptionVisible = true; |
| 530 | + e.DragUIOverride.Caption = string.Format("OpenInNewTab".GetLocalizedResource()); |
| 531 | + e.AcceptedOperation = DataPackageOperation.Link; |
| 532 | + deferral.Complete(); |
| 533 | + } |
| 534 | + catch { } |
| 535 | + } |
| 536 | + |
477 | 537 | private void NavToolbar_Loaded(object sender, RoutedEventArgs e) => UpdateNavToolbarProperties();
|
478 | 538 |
|
479 | 539 | private void PaneSplitter_ManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e)
|
|
0 commit comments