1
- using Microsoft . Toolkit . Uwp . UI ;
1
+ using Microsoft . Toolkit . Uwp . UI ;
2
2
using Microsoft . Toolkit . Uwp . UI . Controls ;
3
3
using System ;
4
4
using System . ComponentModel ;
11
11
using Files . Filesystem ;
12
12
using Files . Interacts ;
13
13
using System . IO ;
14
+ using Windows . UI . Xaml . Media ;
15
+ using System . Collections . Generic ;
14
16
using System . Runtime . CompilerServices ;
15
17
using Windows . System ;
16
18
using Windows . UI . Xaml . Input ;
17
19
using Windows . UI . Core ;
20
+ using System . Linq ;
18
21
19
22
namespace Files
20
23
{
@@ -110,6 +113,7 @@ public GenericFileBrowser()
110
113
NewFolder . Click += tabInstance . instanceInteraction . NewFolder_Click ;
111
114
NewBitmapImage . Click += tabInstance . instanceInteraction . NewBitmapImage_Click ;
112
115
NewTextDocument . Click += tabInstance . instanceInteraction . NewTextDocument_Click ;
116
+ UnzipItem . Click += tabInstance . instanceInteraction . ExtractItems_Click ;
113
117
PropertiesItem . Click += tabInstance . ShowPropertiesButton_Click ;
114
118
OpenInNewWindowItem . Click += tabInstance . instanceInteraction . OpenInNewWindowItem_Click ;
115
119
@@ -150,7 +154,8 @@ private void ViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e
150
154
SortedColumn = sizeColumn ;
151
155
break ;
152
156
}
153
- } else if ( e . PropertyName == "DirectorySortDirection" )
157
+ }
158
+ else if ( e . PropertyName == "DirectorySortDirection" )
154
159
{
155
160
// Swap arrows
156
161
SortedColumn = _sortedColumn ;
@@ -181,7 +186,7 @@ private void Clipboard_ContentChanged(object sender, object e)
181
186
protected override void OnNavigatedTo ( NavigationEventArgs eventArgs )
182
187
{
183
188
base . OnNavigatedTo ( eventArgs ) ;
184
-
189
+
185
190
tabInstance . BackButton . IsEnabled = tabInstance . accessibleContentFrame . CanGoBack ;
186
191
tabInstance . ForwardButton . IsEnabled = tabInstance . accessibleContentFrame . CanGoForward ;
187
192
tabInstance . RefreshButton . IsEnabled = true ;
@@ -262,7 +267,7 @@ protected override void OnNavigatedTo(NavigationEventArgs eventArgs)
262
267
protected override void OnNavigatingFrom ( NavigatingCancelEventArgs e )
263
268
{
264
269
base . OnNavigatingFrom ( e ) ;
265
- if ( tabInstance . instanceViewModel . _fileQueryResult != null )
270
+ if ( tabInstance . instanceViewModel . _fileQueryResult != null )
266
271
{
267
272
tabInstance . instanceViewModel . _fileQueryResult . ContentsChanged -= tabInstance . instanceViewModel . FileContentsChanged ;
268
273
}
@@ -276,24 +281,24 @@ protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
276
281
private void AllView_DragOver ( object sender , DragEventArgs e )
277
282
{
278
283
e . AcceptedOperation = DataPackageOperation . Copy ;
279
-
284
+
280
285
}
281
286
282
287
private async void AllView_DropAsync ( object sender , DragEventArgs e )
283
288
{
284
289
if ( e . DataView . Contains ( StandardDataFormats . StorageItems ) )
285
290
{
286
- foreach ( IStorageItem item in await e . DataView . GetStorageItemsAsync ( ) )
291
+ foreach ( IStorageItem item in await e . DataView . GetStorageItemsAsync ( ) )
292
+ {
293
+ if ( item . IsOfType ( StorageItemTypes . Folder ) )
294
+ {
295
+ tabInstance . instanceInteraction . CloneDirectoryAsync ( ( item as StorageFolder ) . Path , tabInstance . instanceViewModel . Universal . path , ( item as StorageFolder ) . DisplayName ) ;
296
+ }
297
+ else
287
298
{
288
- if ( item . IsOfType ( StorageItemTypes . Folder ) )
289
- {
290
- tabInstance . instanceInteraction . CloneDirectoryAsync ( ( item as StorageFolder ) . Path , tabInstance . instanceViewModel . Universal . path , ( item as StorageFolder ) . DisplayName ) ;
291
- }
292
- else
293
- {
294
- await ( item as StorageFile ) . CopyAsync ( await StorageFolder . GetFolderFromPathAsync ( tabInstance . instanceViewModel . Universal . path ) ) ;
295
- }
299
+ await ( item as StorageFile ) . CopyAsync ( await StorageFolder . GetFolderFromPathAsync ( tabInstance . instanceViewModel . Universal . path ) ) ;
296
300
}
301
+ }
297
302
}
298
303
}
299
304
@@ -351,13 +356,13 @@ private void GenericItemView_PointerReleased(object sender, Windows.UI.Xaml.Inpu
351
356
private void AllView_SelectionChanged ( object sender , SelectionChangedEventArgs e )
352
357
{
353
358
AllView . CommitEdit ( ) ;
354
- if ( e . AddedItems . Count > 0 )
359
+ if ( e . AddedItems . Count > 0 )
355
360
{
356
361
tabInstance . HomeItems . isEnabled = true ;
357
362
tabInstance . ShareItems . isEnabled = true ;
358
363
359
364
}
360
- else if ( data . SelectedItems . Count == 0 )
365
+ else if ( data . SelectedItems . Count == 0 )
361
366
{
362
367
tabInstance . HomeItems . isEnabled = false ;
363
368
tabInstance . ShareItems . isEnabled = false ;
@@ -386,34 +391,66 @@ private void AllView_DragStarting(UIElement sender, DragStartingEventArgs args)
386
391
387
392
private void AllView_DragLeave ( object sender , DragEventArgs e )
388
393
{
389
-
394
+
390
395
}
391
396
392
397
private void RightClickContextMenu_Opened ( object sender , object e )
393
398
{
394
399
var selectedDataItem = AllView . SelectedItem as ListedItem ;
395
- if ( selectedDataItem . FileType != "Folder" || AllView . SelectedItems . Count > 1 )
400
+
401
+ // Search selected items for non-Folders
402
+ if ( AllView . SelectedItems . Cast < ListedItem > ( ) . Any ( x => x . FileType != "Folder" ) )
396
403
{
397
404
SidebarPinItem . Visibility = Visibility . Collapsed ;
398
405
OpenInNewTab . Visibility = Visibility . Collapsed ;
399
406
OpenInNewWindowItem . Visibility = Visibility . Collapsed ;
407
+ if ( AllView . SelectedItems . Count == 1 )
408
+ {
409
+ if ( selectedDataItem . DotFileExtension . Equals ( ".zip" , StringComparison . OrdinalIgnoreCase ) )
410
+ {
411
+ OpenItem . Visibility = Visibility . Collapsed ;
412
+ UnzipItem . Visibility = Visibility . Collapsed ;
413
+ }
414
+ else if ( ! selectedDataItem . DotFileExtension . Equals ( ".zip" , StringComparison . OrdinalIgnoreCase ) )
415
+ {
416
+ OpenItem . Visibility = Visibility . Visible ;
417
+ UnzipItem . Visibility = Visibility . Collapsed ;
418
+ }
419
+ }
420
+ else if ( AllView . SelectedItems . Count > 1 )
421
+ {
422
+ OpenItem . Visibility = Visibility . Collapsed ;
423
+ UnzipItem . Visibility = Visibility . Collapsed ;
424
+ }
400
425
}
401
- else if ( selectedDataItem . FileType == "Folder" )
426
+ else // All are Folders
402
427
{
403
- SidebarPinItem . Visibility = Visibility . Visible ;
404
- OpenInNewTab . Visibility = Visibility . Visible ;
405
- OpenInNewWindowItem . Visibility = Visibility . Visible ;
428
+ OpenItem . Visibility = Visibility . Collapsed ;
429
+ if ( AllView . SelectedItems . Count <= 5 && AllView . SelectedItems . Count > 0 )
430
+ {
431
+ SidebarPinItem . Visibility = Visibility . Visible ;
432
+ OpenInNewTab . Visibility = Visibility . Visible ;
433
+ OpenInNewWindowItem . Visibility = Visibility . Visible ;
434
+ UnzipItem . Visibility = Visibility . Collapsed ;
435
+ }
436
+ else if ( AllView . SelectedItems . Count > 5 )
437
+ {
438
+ SidebarPinItem . Visibility = Visibility . Visible ;
439
+ OpenInNewTab . Visibility = Visibility . Collapsed ;
440
+ OpenInNewWindowItem . Visibility = Visibility . Collapsed ;
441
+ UnzipItem . Visibility = Visibility . Collapsed ;
442
+ }
443
+
406
444
}
407
445
}
408
-
409
446
private void AllView_Sorting ( object sender , DataGridColumnEventArgs e )
410
447
{
411
448
if ( e . Column == SortedColumn )
412
449
viewModelInstance . IsSortedAscending = ! viewModelInstance . IsSortedAscending ;
413
450
else if ( e . Column != iconColumn )
414
451
SortedColumn = e . Column ;
415
452
}
416
-
453
+
417
454
private void AllView_PreviewKeyDown ( object sender , KeyRoutedEventArgs e )
418
455
{
419
456
if ( e . Key == VirtualKey . Enter )
@@ -468,4 +505,4 @@ private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
468
505
PropertyChanged ? . Invoke ( this , new PropertyChangedEventArgs ( propertyName ) ) ;
469
506
}
470
507
}
471
- }
508
+ }
0 commit comments