Skip to content

Commit 82c915b

Browse files
committed
Fix exception related to items and their context menus
1 parent 8e3c666 commit 82c915b

File tree

4 files changed

+206
-135
lines changed

4 files changed

+206
-135
lines changed

Files UWP/GenericFileBrowser.xaml.cs

Lines changed: 57 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
using System.Runtime.CompilerServices;
1717
using Windows.System;
1818
using Windows.UI.Xaml.Input;
19+
using System.Linq;
1920

2021
namespace Files
2122
{
@@ -113,7 +114,7 @@ public GenericFileBrowser()
113114
UnzipItem.Click += tabInstance.instanceInteraction.ExtractItems_Click;
114115
PropertiesItem.Click += tabInstance.ShowPropertiesButton_Click;
115116
OpenInNewWindowItem.Click += tabInstance.instanceInteraction.OpenInNewWindowItem_Click;
116-
117+
117118
switch (viewModelInstance.DirectorySortOption)
118119
{
119120
case SortOption.Name:
@@ -151,7 +152,8 @@ private void ViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e
151152
SortedColumn = sizeColumn;
152153
break;
153154
}
154-
} else if (e.PropertyName == "DirectorySortDirection")
155+
}
156+
else if (e.PropertyName == "DirectorySortDirection")
155157
{
156158
// Swap arrows
157159
SortedColumn = _sortedColumn;
@@ -182,7 +184,7 @@ private void Clipboard_ContentChanged(object sender, object e)
182184
protected override void OnNavigatedTo(NavigationEventArgs eventArgs)
183185
{
184186
base.OnNavigatedTo(eventArgs);
185-
187+
186188
tabInstance.BackButton.IsEnabled = tabInstance.accessibleContentFrame.CanGoBack;
187189
tabInstance.ForwardButton.IsEnabled = tabInstance.accessibleContentFrame.CanGoForward;
188190
tabInstance.RefreshButton.IsEnabled = true;
@@ -255,13 +257,13 @@ protected override void OnNavigatedTo(NavigationEventArgs eventArgs)
255257
data.Columns[0].GetCellContent(dataGridRow).Opacity = 1;
256258
}
257259
}
258-
260+
259261
}
260262

261263
protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
262264
{
263265
base.OnNavigatingFrom(e);
264-
if(tabInstance.instanceViewModel._fileQueryResult != null)
266+
if (tabInstance.instanceViewModel._fileQueryResult != null)
265267
{
266268
tabInstance.instanceViewModel._fileQueryResult.ContentsChanged -= tabInstance.instanceViewModel.FileContentsChanged;
267269
}
@@ -272,24 +274,24 @@ protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
272274
private void AllView_DragOver(object sender, DragEventArgs e)
273275
{
274276
e.AcceptedOperation = DataPackageOperation.Copy;
275-
277+
276278
}
277279

278280
private async void AllView_DropAsync(object sender, DragEventArgs e)
279281
{
280282
if (e.DataView.Contains(StandardDataFormats.StorageItems))
281283
{
282-
foreach (IStorageItem item in await e.DataView.GetStorageItemsAsync())
284+
foreach (IStorageItem item in await e.DataView.GetStorageItemsAsync())
285+
{
286+
if (item.IsOfType(StorageItemTypes.Folder))
287+
{
288+
tabInstance.instanceInteraction.CloneDirectoryAsync((item as StorageFolder).Path, tabInstance.instanceViewModel.Universal.path, (item as StorageFolder).DisplayName);
289+
}
290+
else
283291
{
284-
if (item.IsOfType(StorageItemTypes.Folder))
285-
{
286-
tabInstance.instanceInteraction.CloneDirectoryAsync((item as StorageFolder).Path, tabInstance.instanceViewModel.Universal.path, (item as StorageFolder).DisplayName);
287-
}
288-
else
289-
{
290-
await (item as StorageFile).CopyAsync(await StorageFolder.GetFolderFromPathAsync(tabInstance.instanceViewModel.Universal.path));
291-
}
292+
await (item as StorageFile).CopyAsync(await StorageFolder.GetFolderFromPathAsync(tabInstance.instanceViewModel.Universal.path));
292293
}
294+
}
293295
}
294296
}
295297

@@ -341,13 +343,13 @@ private void GenericItemView_PointerReleased(object sender, Windows.UI.Xaml.Inpu
341343
private void AllView_SelectionChanged(object sender, SelectionChangedEventArgs e)
342344
{
343345
AllView.CommitEdit();
344-
if(e.AddedItems.Count > 0)
346+
if (e.AddedItems.Count > 0)
345347
{
346348
tabInstance.HomeItems.isEnabled = true;
347349
tabInstance.ShareItems.isEnabled = true;
348350

349351
}
350-
else if(data.SelectedItems.Count == 0)
352+
else if (data.SelectedItems.Count == 0)
351353
{
352354
tabInstance.HomeItems.isEnabled = false;
353355
tabInstance.ShareItems.isEnabled = false;
@@ -376,43 +378,66 @@ private void AllView_DragStarting(UIElement sender, DragStartingEventArgs args)
376378

377379
private void AllView_DragLeave(object sender, DragEventArgs e)
378380
{
379-
381+
380382
}
381383

382384
private void RightClickContextMenu_Opened(object sender, object e)
383385
{
384386
var selectedDataItem = AllView.SelectedItem as ListedItem;
385-
if (selectedDataItem.FileType != "Folder" || AllView.SelectedItems.Count > 1)
387+
388+
// Search selected items for non-Folders
389+
if(AllView.SelectedItems.Cast<ListedItem>().Any(x => x.FileType != "Folder"))
386390
{
387391
SidebarPinItem.Visibility = Visibility.Collapsed;
388392
OpenInNewTab.Visibility = Visibility.Collapsed;
389393
OpenInNewWindowItem.Visibility = Visibility.Collapsed;
390-
391-
if (selectedDataItem.DotFileExtension.Equals(".zip", StringComparison.OrdinalIgnoreCase))
394+
if (AllView.SelectedItems.Count == 1)
392395
{
393-
UnzipItem.Visibility = Visibility.Collapsed;
396+
if (selectedDataItem.DotFileExtension.Equals(".zip", StringComparison.OrdinalIgnoreCase))
397+
{
398+
OpenItem.Visibility = Visibility.Collapsed;
399+
UnzipItem.Visibility = Visibility.Collapsed;
400+
}
401+
else if (!selectedDataItem.DotFileExtension.Equals(".zip", StringComparison.OrdinalIgnoreCase))
402+
{
403+
OpenItem.Visibility = Visibility.Visible;
404+
UnzipItem.Visibility = Visibility.Collapsed;
405+
}
394406
}
395-
else if (!selectedDataItem.DotFileExtension.Equals(".zip", StringComparison.OrdinalIgnoreCase))
407+
else if (AllView.SelectedItems.Count > 1)
396408
{
409+
OpenItem.Visibility = Visibility.Collapsed;
397410
UnzipItem.Visibility = Visibility.Collapsed;
398411
}
399412
}
400-
else if (selectedDataItem.FileType == "Folder")
413+
else // All are Folders
401414
{
402-
SidebarPinItem.Visibility = Visibility.Visible;
403-
OpenInNewTab.Visibility = Visibility.Visible;
404-
OpenInNewWindowItem.Visibility = Visibility.Visible;
405-
UnzipItem.Visibility = Visibility.Collapsed;
415+
OpenItem.Visibility = Visibility.Collapsed;
416+
if (AllView.SelectedItems.Count <= 5 && AllView.SelectedItems.Count > 0)
417+
{
418+
SidebarPinItem.Visibility = Visibility.Visible;
419+
OpenInNewTab.Visibility = Visibility.Visible;
420+
OpenInNewWindowItem.Visibility = Visibility.Visible;
421+
UnzipItem.Visibility = Visibility.Collapsed;
422+
}
423+
else if (AllView.SelectedItems.Count > 5)
424+
{
425+
SidebarPinItem.Visibility = Visibility.Visible;
426+
OpenInNewTab.Visibility = Visibility.Collapsed;
427+
OpenInNewWindowItem.Visibility = Visibility.Collapsed;
428+
UnzipItem.Visibility = Visibility.Collapsed;
429+
}
430+
406431
}
407-
432+
}
408433
private void AllView_Sorting(object sender, DataGridColumnEventArgs e)
409434
{
410435
if (e.Column == SortedColumn)
411436
viewModelInstance.IsSortedAscending = !viewModelInstance.IsSortedAscending;
412437
else if (e.Column != iconColumn)
413438
SortedColumn = e.Column;
414439
}
415-
440+
416441
private void AllView_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
417442
{
418443
if (e.Key == VirtualKey.Enter)
@@ -422,7 +447,7 @@ private void AllView_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
422447
}
423448
}
424449
}
425-
450+
426451
public class EmptyFolderTextState : INotifyPropertyChanged
427452
{
428453
public Visibility _isVisible;
@@ -449,4 +474,4 @@ private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
449474
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
450475
}
451476
}
452-
}
477+
}

0 commit comments

Comments
 (0)