1616using System . Runtime . CompilerServices ;
1717using Windows . System ;
1818using Windows . UI . Xaml . Input ;
19+ using System . Linq ;
1920
2021namespace 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