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 ;
19
+ using System . Linq ;
17
20
18
21
namespace Files
19
22
{
@@ -108,9 +111,10 @@ public GenericFileBrowser()
108
111
NewFolder . Click += tabInstance . instanceInteraction . NewFolder_Click ;
109
112
NewBitmapImage . Click += tabInstance . instanceInteraction . NewBitmapImage_Click ;
110
113
NewTextDocument . Click += tabInstance . instanceInteraction . NewTextDocument_Click ;
114
+ UnzipItem . Click += tabInstance . instanceInteraction . ExtractItems_Click ;
111
115
PropertiesItem . Click += tabInstance . ShowPropertiesButton_Click ;
112
116
OpenInNewWindowItem . Click += tabInstance . instanceInteraction . OpenInNewWindowItem_Click ;
113
-
117
+
114
118
switch ( viewModelInstance . DirectorySortOption )
115
119
{
116
120
case SortOption . Name :
@@ -148,7 +152,8 @@ private void ViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e
148
152
SortedColumn = sizeColumn ;
149
153
break ;
150
154
}
151
- } else if ( e . PropertyName == "DirectorySortDirection" )
155
+ }
156
+ else if ( e . PropertyName == "DirectorySortDirection" )
152
157
{
153
158
// Swap arrows
154
159
SortedColumn = _sortedColumn ;
@@ -179,7 +184,7 @@ private void Clipboard_ContentChanged(object sender, object e)
179
184
protected override void OnNavigatedTo ( NavigationEventArgs eventArgs )
180
185
{
181
186
base . OnNavigatedTo ( eventArgs ) ;
182
-
187
+
183
188
tabInstance . BackButton . IsEnabled = tabInstance . accessibleContentFrame . CanGoBack ;
184
189
tabInstance . ForwardButton . IsEnabled = tabInstance . accessibleContentFrame . CanGoForward ;
185
190
tabInstance . RefreshButton . IsEnabled = true ;
@@ -252,13 +257,13 @@ protected override void OnNavigatedTo(NavigationEventArgs eventArgs)
252
257
data . Columns [ 0 ] . GetCellContent ( dataGridRow ) . Opacity = 1 ;
253
258
}
254
259
}
255
-
260
+
256
261
}
257
262
258
263
protected override void OnNavigatingFrom ( NavigatingCancelEventArgs e )
259
264
{
260
265
base . OnNavigatingFrom ( e ) ;
261
- if ( tabInstance . instanceViewModel . _fileQueryResult != null )
266
+ if ( tabInstance . instanceViewModel . _fileQueryResult != null )
262
267
{
263
268
tabInstance . instanceViewModel . _fileQueryResult . ContentsChanged -= tabInstance . instanceViewModel . FileContentsChanged ;
264
269
}
@@ -269,24 +274,24 @@ protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
269
274
private void AllView_DragOver ( object sender , DragEventArgs e )
270
275
{
271
276
e . AcceptedOperation = DataPackageOperation . Copy ;
272
-
277
+
273
278
}
274
279
275
280
private async void AllView_DropAsync ( object sender , DragEventArgs e )
276
281
{
277
282
if ( e . DataView . Contains ( StandardDataFormats . StorageItems ) )
278
283
{
279
- foreach ( IStorageItem item in await e . DataView . GetStorageItemsAsync ( ) )
284
+ foreach ( IStorageItem item in await e . DataView . GetStorageItemsAsync ( ) )
285
+ {
286
+ if ( item . IsOfType ( StorageItemTypes . Folder ) )
280
287
{
281
- if ( item . IsOfType ( StorageItemTypes . Folder ) )
282
- {
283
- tabInstance . instanceInteraction . CloneDirectoryAsync ( ( item as StorageFolder ) . Path , tabInstance . instanceViewModel . Universal . path , ( item as StorageFolder ) . DisplayName ) ;
284
- }
285
- else
286
- {
287
- await ( item as StorageFile ) . CopyAsync ( await StorageFolder . GetFolderFromPathAsync ( tabInstance . instanceViewModel . Universal . path ) ) ;
288
- }
288
+ tabInstance . instanceInteraction . CloneDirectoryAsync ( ( item as StorageFolder ) . Path , tabInstance . instanceViewModel . Universal . path , ( item as StorageFolder ) . DisplayName ) ;
289
289
}
290
+ else
291
+ {
292
+ await ( item as StorageFile ) . CopyAsync ( await StorageFolder . GetFolderFromPathAsync ( tabInstance . instanceViewModel . Universal . path ) ) ;
293
+ }
294
+ }
290
295
}
291
296
}
292
297
@@ -338,13 +343,13 @@ private void GenericItemView_PointerReleased(object sender, Windows.UI.Xaml.Inpu
338
343
private void AllView_SelectionChanged ( object sender , SelectionChangedEventArgs e )
339
344
{
340
345
AllView . CommitEdit ( ) ;
341
- if ( e . AddedItems . Count > 0 )
346
+ if ( e . AddedItems . Count > 0 )
342
347
{
343
348
tabInstance . HomeItems . isEnabled = true ;
344
349
tabInstance . ShareItems . isEnabled = true ;
345
350
346
351
}
347
- else if ( data . SelectedItems . Count == 0 )
352
+ else if ( data . SelectedItems . Count == 0 )
348
353
{
349
354
tabInstance . HomeItems . isEnabled = false ;
350
355
tabInstance . ShareItems . isEnabled = false ;
@@ -373,34 +378,66 @@ private void AllView_DragStarting(UIElement sender, DragStartingEventArgs args)
373
378
374
379
private void AllView_DragLeave ( object sender , DragEventArgs e )
375
380
{
376
-
381
+
377
382
}
378
383
379
384
private void RightClickContextMenu_Opened ( object sender , object e )
380
385
{
381
386
var selectedDataItem = AllView . SelectedItem as ListedItem ;
382
- 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" ) )
383
390
{
384
391
SidebarPinItem . Visibility = Visibility . Collapsed ;
385
392
OpenInNewTab . Visibility = Visibility . Collapsed ;
386
393
OpenInNewWindowItem . Visibility = Visibility . Collapsed ;
394
+ if ( AllView . SelectedItems . Count == 1 )
395
+ {
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
+ }
406
+ }
407
+ else if ( AllView . SelectedItems . Count > 1 )
408
+ {
409
+ OpenItem . Visibility = Visibility . Collapsed ;
410
+ UnzipItem . Visibility = Visibility . Collapsed ;
411
+ }
387
412
}
388
- else if ( selectedDataItem . FileType == "Folder" )
413
+ else // All are Folders
389
414
{
390
- SidebarPinItem . Visibility = Visibility . Visible ;
391
- OpenInNewTab . Visibility = Visibility . Visible ;
392
- OpenInNewWindowItem . Visibility = Visibility . Visible ;
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
+
393
431
}
394
432
}
395
-
396
433
private void AllView_Sorting ( object sender , DataGridColumnEventArgs e )
397
434
{
398
435
if ( e . Column == SortedColumn )
399
436
viewModelInstance . IsSortedAscending = ! viewModelInstance . IsSortedAscending ;
400
437
else if ( e . Column != iconColumn )
401
438
SortedColumn = e . Column ;
402
439
}
403
-
440
+
404
441
private void AllView_PreviewKeyDown ( object sender , KeyRoutedEventArgs e )
405
442
{
406
443
if ( e . Key == VirtualKey . Enter )
@@ -410,7 +447,7 @@ private void AllView_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
410
447
}
411
448
}
412
449
}
413
-
450
+
414
451
public class EmptyFolderTextState : INotifyPropertyChanged
415
452
{
416
453
public Visibility _isVisible ;
@@ -437,4 +474,4 @@ private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
437
474
PropertyChanged ? . Invoke ( this , new PropertyChangedEventArgs ( propertyName ) ) ;
438
475
}
439
476
}
440
- }
477
+ }
0 commit comments