16
16
using System . Runtime . CompilerServices ;
17
17
using Windows . System ;
18
18
using Windows . UI . Xaml . Input ;
19
+ using System . Linq ;
19
20
20
21
namespace Files
21
22
{
@@ -113,7 +114,7 @@ public GenericFileBrowser()
113
114
UnzipItem . Click += tabInstance . instanceInteraction . ExtractItems_Click ;
114
115
PropertiesItem . Click += tabInstance . ShowPropertiesButton_Click ;
115
116
OpenInNewWindowItem . Click += tabInstance . instanceInteraction . OpenInNewWindowItem_Click ;
116
-
117
+
117
118
switch ( viewModelInstance . DirectorySortOption )
118
119
{
119
120
case SortOption . Name :
@@ -151,7 +152,8 @@ private void ViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e
151
152
SortedColumn = sizeColumn ;
152
153
break ;
153
154
}
154
- } else if ( e . PropertyName == "DirectorySortDirection" )
155
+ }
156
+ else if ( e . PropertyName == "DirectorySortDirection" )
155
157
{
156
158
// Swap arrows
157
159
SortedColumn = _sortedColumn ;
@@ -182,7 +184,7 @@ private void Clipboard_ContentChanged(object sender, object e)
182
184
protected override void OnNavigatedTo ( NavigationEventArgs eventArgs )
183
185
{
184
186
base . OnNavigatedTo ( eventArgs ) ;
185
-
187
+
186
188
tabInstance . BackButton . IsEnabled = tabInstance . accessibleContentFrame . CanGoBack ;
187
189
tabInstance . ForwardButton . IsEnabled = tabInstance . accessibleContentFrame . CanGoForward ;
188
190
tabInstance . RefreshButton . IsEnabled = true ;
@@ -255,13 +257,13 @@ protected override void OnNavigatedTo(NavigationEventArgs eventArgs)
255
257
data . Columns [ 0 ] . GetCellContent ( dataGridRow ) . Opacity = 1 ;
256
258
}
257
259
}
258
-
260
+
259
261
}
260
262
261
263
protected override void OnNavigatingFrom ( NavigatingCancelEventArgs e )
262
264
{
263
265
base . OnNavigatingFrom ( e ) ;
264
- if ( tabInstance . instanceViewModel . _fileQueryResult != null )
266
+ if ( tabInstance . instanceViewModel . _fileQueryResult != null )
265
267
{
266
268
tabInstance . instanceViewModel . _fileQueryResult . ContentsChanged -= tabInstance . instanceViewModel . FileContentsChanged ;
267
269
}
@@ -272,24 +274,24 @@ protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
272
274
private void AllView_DragOver ( object sender , DragEventArgs e )
273
275
{
274
276
e . AcceptedOperation = DataPackageOperation . Copy ;
275
-
277
+
276
278
}
277
279
278
280
private async void AllView_DropAsync ( object sender , DragEventArgs e )
279
281
{
280
282
if ( e . DataView . Contains ( StandardDataFormats . StorageItems ) )
281
283
{
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
283
291
{
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 ) ) ;
292
293
}
294
+ }
293
295
}
294
296
}
295
297
@@ -341,13 +343,13 @@ private void GenericItemView_PointerReleased(object sender, Windows.UI.Xaml.Inpu
341
343
private void AllView_SelectionChanged ( object sender , SelectionChangedEventArgs e )
342
344
{
343
345
AllView . CommitEdit ( ) ;
344
- if ( e . AddedItems . Count > 0 )
346
+ if ( e . AddedItems . Count > 0 )
345
347
{
346
348
tabInstance . HomeItems . isEnabled = true ;
347
349
tabInstance . ShareItems . isEnabled = true ;
348
350
349
351
}
350
- else if ( data . SelectedItems . Count == 0 )
352
+ else if ( data . SelectedItems . Count == 0 )
351
353
{
352
354
tabInstance . HomeItems . isEnabled = false ;
353
355
tabInstance . ShareItems . isEnabled = false ;
@@ -376,43 +378,66 @@ private void AllView_DragStarting(UIElement sender, DragStartingEventArgs args)
376
378
377
379
private void AllView_DragLeave ( object sender , DragEventArgs e )
378
380
{
379
-
381
+
380
382
}
381
383
382
384
private void RightClickContextMenu_Opened ( object sender , object e )
383
385
{
384
386
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" ) )
386
390
{
387
391
SidebarPinItem . Visibility = Visibility . Collapsed ;
388
392
OpenInNewTab . Visibility = Visibility . Collapsed ;
389
393
OpenInNewWindowItem . Visibility = Visibility . Collapsed ;
390
-
391
- if ( selectedDataItem . DotFileExtension . Equals ( ".zip" , StringComparison . OrdinalIgnoreCase ) )
394
+ if ( AllView . SelectedItems . Count == 1 )
392
395
{
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
+ }
394
406
}
395
- else if ( ! selectedDataItem . DotFileExtension . Equals ( ".zip" , StringComparison . OrdinalIgnoreCase ) )
407
+ else if ( AllView . SelectedItems . Count > 1 )
396
408
{
409
+ OpenItem . Visibility = Visibility . Collapsed ;
397
410
UnzipItem . Visibility = Visibility . Collapsed ;
398
411
}
399
412
}
400
- else if ( selectedDataItem . FileType == "Folder" )
413
+ else // All are Folders
401
414
{
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
+
406
431
}
407
-
432
+ }
408
433
private void AllView_Sorting ( object sender , DataGridColumnEventArgs e )
409
434
{
410
435
if ( e . Column == SortedColumn )
411
436
viewModelInstance . IsSortedAscending = ! viewModelInstance . IsSortedAscending ;
412
437
else if ( e . Column != iconColumn )
413
438
SortedColumn = e . Column ;
414
439
}
415
-
440
+
416
441
private void AllView_PreviewKeyDown ( object sender , KeyRoutedEventArgs e )
417
442
{
418
443
if ( e . Key == VirtualKey . Enter )
@@ -422,7 +447,7 @@ private void AllView_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
422
447
}
423
448
}
424
449
}
425
-
450
+
426
451
public class EmptyFolderTextState : INotifyPropertyChanged
427
452
{
428
453
public Visibility _isVisible ;
@@ -449,4 +474,4 @@ private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
449
474
PropertyChanged ? . Invoke ( this , new PropertyChangedEventArgs ( propertyName ) ) ;
450
475
}
451
476
}
452
- }
477
+ }
0 commit comments