Skip to content

Commit 0d90f42

Browse files
authored
Merge pull request #268 from duke7553/testing
Incorporate changes from Testing
2 parents b556239 + 29a1da3 commit 0d90f42

17 files changed

+1113
-713
lines changed

Files UWP/App.xaml.cs

Lines changed: 338 additions & 62 deletions
Large diffs are not rendered by default.

Files UWP/Assets/Files UWP Icon.png

10.3 KB
Loading
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<ContentDialog
2+
x:Class="Files.Dialogs.ExtractFilesDialog"
3+
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
4+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
5+
xmlns:local="using:Files.Dialogs"
6+
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
7+
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
8+
mc:Ignorable="d"
9+
CornerRadius="4"
10+
Title="Extract Compressed Archive"
11+
PrimaryButtonText="Extract"
12+
CloseButtonText="Cancel"
13+
DefaultButton="Primary"
14+
PrimaryButtonClick="ContentDialog_PrimaryButtonClick"
15+
CloseButtonClick="ContentDialog_CloseButtonClick">
16+
17+
<Grid MinWidth="375">
18+
<StackPanel Orientation="Vertical">
19+
<TextBlock TextWrapping="WrapWholeWords" Text="Pick a location to extract this compressed archive to. You'll need to stay in the current folder until we're done. A new tab will open up with the extracted items."/>
20+
<Grid ColumnSpacing="5" Margin="0,14,0,0" >
21+
<Grid.ColumnDefinitions>
22+
<ColumnDefinition Width="75*"/>
23+
<ColumnDefinition Width="25*"/>
24+
</Grid.ColumnDefinitions>
25+
<TextBox x:Name="DestPathText" Grid.Column="0"/>
26+
<Button x:Name="BrowseButton" Grid.Column="1" Content="Browse" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Click="BrowseButton_Click"/>
27+
</Grid>
28+
</StackPanel>
29+
</Grid>
30+
</ContentDialog>
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.IO;
4+
using System.Linq;
5+
using System.Runtime.InteropServices.WindowsRuntime;
6+
using Windows.Foundation;
7+
using Windows.Foundation.Collections;
8+
using Windows.UI.Xaml;
9+
using Windows.UI.Xaml.Controls;
10+
using Windows.UI.Xaml.Controls.Primitives;
11+
using Windows.UI.Xaml.Data;
12+
using Windows.UI.Xaml.Input;
13+
using Windows.UI.Xaml.Media;
14+
using Windows.UI.Xaml.Navigation;
15+
16+
// The Content Dialog item template is documented at https://go.microsoft.com/fwlink/?LinkId=234238
17+
18+
namespace Files.Dialogs
19+
{
20+
public sealed partial class ExtractFilesDialog : ContentDialog
21+
{
22+
public ExtractFilesDialog(string currentDirectory)
23+
{
24+
this.InitializeComponent();
25+
DestPathText.Text = currentDirectory;
26+
Windows.Storage.ApplicationData.Current.LocalSettings.Values["Extract_Destination_Path"] = currentDirectory;
27+
}
28+
29+
private void ContentDialog_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
30+
{
31+
Windows.Storage.ApplicationData.Current.LocalSettings.Values["Extract_Destination_Cancelled"] = false;
32+
}
33+
34+
35+
36+
private async void BrowseButton_Click(object sender, RoutedEventArgs e)
37+
{
38+
Windows.Storage.Pickers.FolderPicker folderPicker = new Windows.Storage.Pickers.FolderPicker();
39+
folderPicker.CommitButtonText = "Select Folder";
40+
folderPicker.FileTypeFilter.Add("*");
41+
var selectedFolder = await folderPicker.PickSingleFolderAsync();
42+
if(selectedFolder != null)
43+
{
44+
DestPathText.Text = selectedFolder.Path;
45+
Windows.Storage.ApplicationData.Current.LocalSettings.Values["Extract_Destination_Path"] = selectedFolder.Path;
46+
}
47+
}
48+
49+
private void ContentDialog_CloseButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
50+
{
51+
Windows.Storage.ApplicationData.Current.LocalSettings.Values["Extract_Destination_Cancelled"] = true;
52+
}
53+
}
54+
}

Files UWP/FilesUWP.csproj

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,9 @@
131131
<Compile Include="Dialogs\ExceptionDialog.xaml.cs">
132132
<DependentUpon>ExceptionDialog.xaml</DependentUpon>
133133
</Compile>
134+
<Compile Include="Dialogs\ExtractFilesDialog.xaml.cs">
135+
<DependentUpon>ExtractFilesDialog.xaml</DependentUpon>
136+
</Compile>
134137
<Compile Include="Dialogs\LayoutDialog.xaml.cs">
135138
<DependentUpon>LayoutDialog.xaml</DependentUpon>
136139
</Compile>
@@ -146,6 +149,7 @@
146149
<Compile Include="Filesystem\DriveItem.cs" />
147150
<Compile Include="Filesystem\ItemViewModel.cs" />
148151
<Compile Include="Filesystem\ListedItem.cs" />
152+
<Compile Include="Filesystem\SidebarItem.cs" />
149153
<Compile Include="GenericFileBrowser.xaml.cs">
150154
<DependentUpon>GenericFileBrowser.xaml</DependentUpon>
151155
</Compile>
@@ -198,6 +202,7 @@
198202
</Compile>
199203
</ItemGroup>
200204
<ItemGroup>
205+
<Content Include="Assets\Files UWP Icon.png" />
201206
<Content Include="Assets\FilesHome.png" />
202207
<Content Include="Assets\FilesDrive.png" />
203208
<Content Include="Assets\logo.bmp" />
@@ -225,6 +230,10 @@
225230
<SubType>Designer</SubType>
226231
<Generator>MSBuild:Compile</Generator>
227232
</Page>
233+
<Page Include="Dialogs\ExtractFilesDialog.xaml">
234+
<SubType>Designer</SubType>
235+
<Generator>MSBuild:Compile</Generator>
236+
</Page>
228237
<Page Include="Dialogs\LayoutDialog.xaml">
229238
<SubType>Designer</SubType>
230239
<Generator>MSBuild:Compile</Generator>

Files UWP/Filesystem/DriveItem.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Text;
55
using System.Threading.Tasks;
66
using Windows.UI.Xaml;
7+
using Windows.UI.Xaml.Media.Imaging;
78

89
namespace Files.Filesystem
910
{
@@ -16,5 +17,8 @@ public class DriveItem
1617
public string tag { get; set; }
1718
public Visibility progressBarVisibility { get; set; }
1819
public string spaceText { get; set; }
20+
public Visibility cloudGlyphVisibility { get; set; } = Visibility.Collapsed;
21+
public Visibility driveGlyphVisibility { get; set; } = Visibility.Visible;
22+
1923
}
2024
}

Files UWP/Filesystem/SidebarItem.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace Files.Filesystem
8+
{
9+
public class SidebarItem
10+
{
11+
public string IconGlyph { get; set; }
12+
13+
public string Text { get; set; }
14+
15+
public bool isDefaultLocation { get; set; } = false;
16+
17+
public string Path { get; set; } = null;
18+
}
19+
}

Files UWP/GenericFileBrowser.xaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,11 @@
244244
<Setter Property="ContextFlyout">
245245
<Setter.Value>
246246
<MenuFlyout Opened="RightClickContextMenu_Opened" x:Name="RightClickContextMenu" MenuFlyoutPresenterStyle="{StaticResource MenuFlyoutFluentThemeResources}">
247+
<MenuFlyoutItem Text="Extract" x:Name="UnzipItem">
248+
<MenuFlyoutItem.Icon>
249+
<FontIcon Glyph="&#xED25;"/>
250+
</MenuFlyoutItem.Icon>
251+
</MenuFlyoutItem>
247252
<MenuFlyoutItem Text="Open with..." x:Name="OpenItem">
248253
<MenuFlyoutItem.Icon>
249254
<FontIcon Glyph="&#xE7AC;"/>

Files UWP/GenericFileBrowser.xaml.cs

Lines changed: 65 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using Microsoft.Toolkit.Uwp.UI;
1+
using Microsoft.Toolkit.Uwp.UI;
22
using Microsoft.Toolkit.Uwp.UI.Controls;
33
using System;
44
using System.ComponentModel;
@@ -11,9 +11,12 @@
1111
using Files.Filesystem;
1212
using Files.Interacts;
1313
using System.IO;
14+
using Windows.UI.Xaml.Media;
15+
using System.Collections.Generic;
1416
using System.Runtime.CompilerServices;
1517
using Windows.System;
1618
using Windows.UI.Xaml.Input;
19+
using System.Linq;
1720

1821
namespace 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

Comments
 (0)