1-  using  Microsoft . Toolkit . Uwp . UI ; 
1+ using  Microsoft . Toolkit . Uwp . UI ; 
22using  Microsoft . Toolkit . Uwp . UI . Controls ; 
33using  System ; 
44using  System . ComponentModel ; 
1111using  Files . Filesystem ; 
1212using  Files . Interacts ; 
1313using  System . IO ; 
14+ using  Windows . UI . Xaml . Media ; 
15+ using  System . Collections . Generic ; 
1416using  System . Runtime . CompilerServices ; 
1517using  Windows . System ; 
1618using  Windows . UI . Xaml . Input ; 
19+ using  System . Linq ; 
1720
1821namespace  Files 
1922{ 
@@ -108,9 +111,10 @@ public GenericFileBrowser()
108111            NewFolder . Click  +=  tabInstance . instanceInteraction . NewFolder_Click ; 
109112            NewBitmapImage . Click  +=  tabInstance . instanceInteraction . NewBitmapImage_Click ; 
110113            NewTextDocument . Click  +=  tabInstance . instanceInteraction . NewTextDocument_Click ; 
114+             UnzipItem . Click  +=  tabInstance . instanceInteraction . ExtractItems_Click ; 
111115            PropertiesItem . Click  +=  tabInstance . ShowPropertiesButton_Click ; 
112116            OpenInNewWindowItem . Click  +=  tabInstance . instanceInteraction . OpenInNewWindowItem_Click ; 
113-              
117+ 
114118            switch  ( viewModelInstance . DirectorySortOption ) 
115119            { 
116120                case  SortOption . Name : 
@@ -148,7 +152,8 @@ private void ViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e
148152                        SortedColumn  =  sizeColumn ; 
149153                        break ; 
150154                } 
151-             }  else  if  ( e . PropertyName  ==  "DirectorySortDirection" ) 
155+             } 
156+             else  if  ( e . PropertyName  ==  "DirectorySortDirection" ) 
152157            { 
153158                // Swap arrows 
154159                SortedColumn  =  _sortedColumn ; 
@@ -179,7 +184,7 @@ private void Clipboard_ContentChanged(object sender, object e)
179184        protected  override  void  OnNavigatedTo ( NavigationEventArgs  eventArgs ) 
180185        { 
181186            base . OnNavigatedTo ( eventArgs ) ; 
182-              
187+ 
183188            tabInstance . BackButton . IsEnabled  =  tabInstance . accessibleContentFrame . CanGoBack ; 
184189            tabInstance . ForwardButton . IsEnabled  =  tabInstance . accessibleContentFrame . CanGoForward ; 
185190            tabInstance . RefreshButton . IsEnabled  =  true ; 
@@ -252,13 +257,13 @@ protected override void OnNavigatedTo(NavigationEventArgs eventArgs)
252257                    data . Columns [ 0 ] . GetCellContent ( dataGridRow ) . Opacity  =  1 ; 
253258                } 
254259            } 
255-              
260+ 
256261        } 
257262
258263        protected  override  void  OnNavigatingFrom ( NavigatingCancelEventArgs  e ) 
259264        { 
260265            base . OnNavigatingFrom ( e ) ; 
261-             if ( tabInstance . instanceViewModel . _fileQueryResult  !=  null ) 
266+             if   ( tabInstance . instanceViewModel . _fileQueryResult  !=  null ) 
262267            { 
263268                tabInstance . instanceViewModel . _fileQueryResult . ContentsChanged  -=  tabInstance . instanceViewModel . FileContentsChanged ; 
264269            } 
@@ -269,24 +274,24 @@ protected override void OnNavigatingFrom(NavigatingCancelEventArgs e)
269274        private  void  AllView_DragOver ( object  sender ,  DragEventArgs  e ) 
270275        { 
271276            e . AcceptedOperation  =  DataPackageOperation . Copy ; 
272-              
277+ 
273278        } 
274279
275280        private  async  void  AllView_DropAsync ( object  sender ,  DragEventArgs  e ) 
276281        { 
277282            if  ( e . DataView . Contains ( StandardDataFormats . StorageItems ) ) 
278283            { 
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 ) ) 
280287                    { 
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 ) ; 
289289                    } 
290+                     else 
291+                     { 
292+                         await  ( item  as  StorageFile ) . CopyAsync ( await  StorageFolder . GetFolderFromPathAsync ( tabInstance . instanceViewModel . Universal . path ) ) ; 
293+                     } 
294+                 } 
290295            } 
291296        } 
292297
@@ -338,13 +343,13 @@ private void GenericItemView_PointerReleased(object sender, Windows.UI.Xaml.Inpu
338343        private  void  AllView_SelectionChanged ( object  sender ,  SelectionChangedEventArgs  e ) 
339344        { 
340345            AllView . CommitEdit ( ) ; 
341-             if ( e . AddedItems . Count  >  0 ) 
346+             if   ( e . AddedItems . Count  >  0 ) 
342347            { 
343348                tabInstance . HomeItems . isEnabled  =  true ; 
344349                tabInstance . ShareItems . isEnabled  =  true ; 
345350
346351            } 
347-             else  if ( data . SelectedItems . Count  ==  0 ) 
352+             else  if   ( data . SelectedItems . Count  ==  0 ) 
348353            { 
349354                tabInstance . HomeItems . isEnabled  =  false ; 
350355                tabInstance . ShareItems . isEnabled  =  false ; 
@@ -373,34 +378,66 @@ private void AllView_DragStarting(UIElement sender, DragStartingEventArgs args)
373378
374379        private  void  AllView_DragLeave ( object  sender ,  DragEventArgs  e ) 
375380        { 
376-              
381+ 
377382        } 
378383
379384        private  void  RightClickContextMenu_Opened ( object  sender ,  object  e ) 
380385        { 
381386            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" ) ) 
383390            { 
384391                SidebarPinItem . Visibility  =  Visibility . Collapsed ; 
385392                OpenInNewTab . Visibility  =  Visibility . Collapsed ; 
386393                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+                 } 
387412            } 
388-             else  if   ( selectedDataItem . FileType   ==   "Folder" ) 
413+             else       // All are Folders 
389414            { 
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+                 
393431            } 
394432        } 
395- 
396433        private  void  AllView_Sorting ( object  sender ,  DataGridColumnEventArgs  e ) 
397434        { 
398435            if  ( e . Column  ==  SortedColumn ) 
399436                viewModelInstance . IsSortedAscending  =  ! viewModelInstance . IsSortedAscending ; 
400437            else  if  ( e . Column  !=  iconColumn ) 
401438                SortedColumn  =  e . Column ; 
402439        } 
403-          
440+ 
404441        private  void  AllView_PreviewKeyDown ( object  sender ,  KeyRoutedEventArgs  e ) 
405442        { 
406443            if  ( e . Key  ==  VirtualKey . Enter ) 
@@ -410,7 +447,7 @@ private void AllView_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
410447            } 
411448        } 
412449    } 
413-    
450+ 
414451    public  class  EmptyFolderTextState  :  INotifyPropertyChanged 
415452    { 
416453        public  Visibility  _isVisible ; 
@@ -437,4 +474,4 @@ private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
437474            PropertyChanged ? . Invoke ( this ,  new  PropertyChangedEventArgs ( propertyName ) ) ; 
438475        } 
439476    } 
440- } 
477+ } 
0 commit comments