Skip to content

Commit 3f5bd18

Browse files
committed
PhotoAlbum Initial Delete Command
1 parent 1267d32 commit 3f5bd18

File tree

4 files changed

+190
-66
lines changed

4 files changed

+190
-66
lines changed

Filesystem/ItemViewModel.cs

Lines changed: 51 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ public async void MemoryFriendlyGetItemsAsync(string path, CancellationToken tok
255255
return;
256256
}
257257

258-
gotName = file.Name.ToString();
258+
gotName = file.DisplayName.ToString();
259259
gotDate = file.DateCreated.ToString(); // In the future, parse date to human readable format
260260
if (file.FileType.ToString() == ".exe")
261261
{
@@ -275,6 +275,26 @@ public async void MemoryFriendlyGetItemsAsync(string path, CancellationToken tok
275275
try
276276
{
277277
gotFileImg = await file.GetThumbnailAsync(thumbnailMode, requestedSize, thumbnailOptions);
278+
BitmapImage icon = new BitmapImage();
279+
if (gotFileImg != null)
280+
{
281+
gotEmptyImgVis = Visibility.Collapsed;
282+
icon.SetSource(gotFileImg.CloneStream());
283+
}
284+
else
285+
{
286+
gotEmptyImgVis = Visibility.Visible;
287+
}
288+
gotFileImgVis = Visibility.Visible;
289+
290+
if (pageName == "ClassicModePage")
291+
{
292+
ClassicFileList.Add(new ListedItem() { FileImg = icon, FileIconVis = gotFileImgVis, FolderImg = gotFolImg, FileName = gotName, FileDate = gotDate, FileExtension = gotType, FilePath = gotPath });
293+
}
294+
else
295+
{
296+
FilesAndFolders.Add(new ListedItem() { EmptyImgVis = gotEmptyImgVis, FileImg = icon, FileIconVis = gotFileImgVis, FolderImg = gotFolImg, FileName = gotName, FileDate = gotDate, FileExtension = gotType, FilePath = gotPath });
297+
}
278298
}
279299
catch
280300
{
@@ -287,29 +307,38 @@ public async void MemoryFriendlyGetItemsAsync(string path, CancellationToken tok
287307
const uint requestedSize = 275;
288308
const ThumbnailMode thumbnailMode = ThumbnailMode.PicturesView;
289309
const ThumbnailOptions thumbnailOptions = ThumbnailOptions.ResizeThumbnail;
290-
gotFileImg = await file.GetThumbnailAsync(thumbnailMode, requestedSize, thumbnailOptions);
291-
}
292-
293-
BitmapImage icon = new BitmapImage();
294-
if (gotFileImg != null)
295-
{
296-
gotEmptyImgVis = Visibility.Collapsed;
297-
icon.SetSource(gotFileImg.CloneStream());
298-
}
299-
else
300-
{
301-
gotEmptyImgVis = Visibility.Visible;
310+
try
311+
{
312+
gotFileImg = await file.GetThumbnailAsync(thumbnailMode, requestedSize, thumbnailOptions);
313+
BitmapImage icon = new BitmapImage();
314+
if (gotFileImg != null)
315+
{
316+
gotEmptyImgVis = Visibility.Collapsed;
317+
icon.SetSource(gotFileImg.CloneStream());
318+
}
319+
else
320+
{
321+
gotEmptyImgVis = Visibility.Visible;
322+
}
323+
gotFileImgVis = Visibility.Visible;
324+
325+
if (pageName == "ClassicModePage")
326+
{
327+
ClassicFileList.Add(new ListedItem() { FileImg = icon, FileIconVis = gotFileImgVis, FolderImg = gotFolImg, FileName = gotName, FileDate = gotDate, FileExtension = gotType, FilePath = gotPath });
328+
}
329+
else
330+
{
331+
FilesAndFolders.Add(new ListedItem() { EmptyImgVis = gotEmptyImgVis, FileImg = icon, FileIconVis = gotFileImgVis, FolderImg = gotFolImg, FileName = gotName, FileDate = gotDate, FileExtension = gotType, FilePath = gotPath });
332+
}
333+
}
334+
catch
335+
{
336+
// Silent catch here to avoid crash
337+
// TODO maybe some logging could be added in the future...
338+
}
302339
}
303-
gotFileImgVis = Visibility.Visible;
304340

305-
if (pageName == "ClassicModePage")
306-
{
307-
ClassicFileList.Add(new ListedItem() { FileImg = icon, FileIconVis = gotFileImgVis, FolderImg = gotFolImg, FileName = gotName, FileDate = gotDate, FileExtension = gotType, FilePath = gotPath });
308-
}
309-
else
310-
{
311-
FilesAndFolders.Add(new ListedItem() { EmptyImgVis = gotEmptyImgVis, FileImg = icon, FileIconVis = gotFileImgVis, FolderImg = gotFolImg, FileName = gotName, FileDate = gotDate, FileExtension = gotType, FilePath = gotPath });
312-
}
341+
313342
}
314343
index += step;
315344
files = await fileQueryResult.GetFilesAsync(index, step);

Interacts/Interaction.cs

Lines changed: 89 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ public static async void List_ItemClick(object sender, DoubleTappedRoutedEventAr
328328
StorageFile file = await StorageFile.GetFileFromPathAsync(clickedOnItem.FilePath);
329329
var options = new LauncherOptions
330330
{
331-
DisplayApplicationPicker = true
331+
DisplayApplicationPicker = false
332332

333333
};
334334
await Launcher.LaunchFileAsync(file, options);
@@ -423,7 +423,17 @@ public static T FindParent<T>(DependencyObject child) where T : DependencyObject
423423

424424
public static void FileList_RightTapped(object sender, RightTappedRoutedEventArgs e)
425425
{
426-
426+
GridView gridView = (GridView)sender;
427+
var selItems = gridView.SelectedItems;
428+
if(selItems.Count > 0)
429+
{
430+
PhotoAlbum.context.ShowAt(gridView);
431+
}
432+
else
433+
{
434+
PhotoAlbum.gridContext.ShowAt(PhotoAlbum.PAPageName, e.GetPosition(PhotoAlbum.PAPageName));
435+
}
436+
427437
}
428438

429439
public static async void OpenItem_Click(object sender, RoutedEventArgs e)
@@ -503,25 +513,48 @@ public static async void DeleteItem_Click(object sender, RoutedEventArgs e)
503513
//await DeleteConfirmationDialog.ShowAsync();
504514
try
505515
{
506-
foreach (ListedItem storItem in GenericFileBrowser.data.SelectedItems)
516+
if (page.Name == "GenericItemView")
507517
{
508-
if (storItem.FileExtension != "Folder")
518+
foreach (ListedItem storItem in GenericFileBrowser.data.SelectedItems)
509519
{
510-
var item = await StorageFile.GetFileFromPathAsync(storItem.FilePath);
511-
await item.DeleteAsync(StorageDeleteOption.Default);
520+
if (storItem.FileExtension != "Folder")
521+
{
522+
var item = await StorageFile.GetFileFromPathAsync(storItem.FilePath);
523+
await item.DeleteAsync(StorageDeleteOption.Default);
524+
525+
}
526+
else
527+
{
528+
var item = await StorageFolder.GetFolderFromPathAsync(storItem.FilePath);
529+
await item.DeleteAsync(StorageDeleteOption.Default);
512530

531+
}
513532
}
514-
else
533+
NavigationActions.Refresh_Click(null, null);
534+
History.ForwardList.Clear();
535+
ItemViewModel.FS.isEnabled = false;
536+
}
537+
else if (page.Name == "PhotoAlbumViewer")
538+
{
539+
foreach (ListedItem storItem in PhotoAlbum.gv.SelectedItems)
515540
{
516-
var item = await StorageFolder.GetFolderFromPathAsync(storItem.FilePath);
517-
await item.DeleteAsync(StorageDeleteOption.Default);
518-
541+
if (storItem.FileExtension != "Folder")
542+
{
543+
var item = await StorageFile.GetFileFromPathAsync(storItem.FilePath);
544+
await item.DeleteAsync(StorageDeleteOption.Default);
545+
}
546+
else
547+
{
548+
var item = await StorageFolder.GetFolderFromPathAsync(storItem.FilePath);
549+
await item.DeleteAsync(StorageDeleteOption.Default);
550+
}
519551
}
520-
552+
553+
PhotoAlbumNavActions.Refresh_Click(null, null);
554+
History.ForwardList.Clear();
555+
ItemViewModel.FS.isEnabled = false;
521556
}
522-
NavigationActions.Refresh_Click(null, null);
523-
History.ForwardList.Clear();
524-
ItemViewModel.FS.isEnabled = false;
557+
525558
}
526559
catch (InvalidOperationException)
527560
{
@@ -551,28 +584,57 @@ public static async void CopyItem_ClickAsync(object sender, RoutedEventArgs e)
551584
{
552585
DataPackage dataPackage = new DataPackage();
553586
dataPackage.RequestedOperation = DataPackageOperation.Copy;
554-
if (GenericFileBrowser.data.SelectedItems.Count != 0)
587+
if (page.Name == "GenericItemView")
555588
{
556-
List<IStorageItem> items = new List<IStorageItem>();
557-
foreach (ListedItem StorItem in GenericFileBrowser.data.SelectedItems)
589+
if (GenericFileBrowser.data.SelectedItems.Count != 0)
558590
{
559-
if (StorItem.FileExtension != "Folder")
591+
List<IStorageItem> items = new List<IStorageItem>();
592+
foreach (ListedItem StorItem in GenericFileBrowser.data.SelectedItems)
560593
{
561-
var item = await StorageFile.GetFileFromPathAsync(StorItem.FilePath);
562-
items.Add(item);
594+
if (StorItem.FileExtension != "Folder")
595+
{
596+
var item = await StorageFile.GetFileFromPathAsync(StorItem.FilePath);
597+
items.Add(item);
598+
}
599+
else
600+
{
601+
var item = await StorageFolder.GetFolderFromPathAsync(StorItem.FilePath);
602+
items.Add(item);
603+
}
563604
}
564-
else
605+
606+
IEnumerable<IStorageItem> EnumerableOfItems = items;
607+
dataPackage.SetStorageItems(EnumerableOfItems);
608+
Clipboard.SetContent(dataPackage);
609+
610+
}
611+
}
612+
else if (page.Name == "PhotoAlbumViewer")
613+
{
614+
if (PhotoAlbum.gv.SelectedItems.Count != 0)
615+
{
616+
List<IStorageItem> items = new List<IStorageItem>();
617+
foreach (ListedItem StorItem in PhotoAlbum.gv.SelectedItems)
565618
{
566-
var item = await StorageFolder.GetFolderFromPathAsync(StorItem.FilePath);
567-
items.Add(item);
619+
if (StorItem.FileExtension != "Folder")
620+
{
621+
var item = await StorageFile.GetFileFromPathAsync(StorItem.FilePath);
622+
items.Add(item);
623+
}
624+
else
625+
{
626+
var item = await StorageFolder.GetFolderFromPathAsync(StorItem.FilePath);
627+
items.Add(item);
628+
}
568629
}
569-
}
570630

571-
IEnumerable<IStorageItem> EnumerableOfItems = items;
572-
dataPackage.SetStorageItems(EnumerableOfItems);
573-
Clipboard.SetContent(dataPackage);
631+
IEnumerable<IStorageItem> EnumerableOfItems = items;
632+
dataPackage.SetStorageItems(EnumerableOfItems);
633+
Clipboard.SetContent(dataPackage);
574634

635+
}
575636
}
637+
576638
}
577639
public static bool isSkipEnabled = false;
578640
public static bool isReplaceEnabled = false;

PhotoAlbum.xaml

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
mc:Ignorable="d"
1212
xmlns:navigation="using:Files.Navigation"
1313
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"
14-
Name="PhotoAlbumViewer">
14+
Name="PhotoAlbumViewer"
15+
PointerReleased="PhotoAlbumViewer_PointerReleased">
1516

1617
<Page.Resources>
1718
<navigation:BackState x:Key="BackObject"/>
@@ -237,6 +238,28 @@
237238
</Setter.Value>
238239
</Setter>
239240
</Style>
241+
242+
<MenuFlyout x:Name="GridRightClickContextMenu" x:Key="GridRightClickFlyout">
243+
<MenuFlyout.Items>
244+
<MenuFlyoutItem Text="Refresh" Name="RefreshGrid">
245+
<MenuFlyoutItem.Icon>
246+
<FontIcon Glyph="&#xE72C;"/>
247+
</MenuFlyoutItem.Icon>
248+
</MenuFlyoutItem>
249+
<MenuFlyoutItem Text="Paste" IsEnabled="{x:Bind local3:Interaction.PS.isEnabled, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Name="PasteGrid">
250+
<MenuFlyoutItem.Icon>
251+
<FontIcon Glyph="&#xE77F;"/>
252+
</MenuFlyoutItem.Icon>
253+
</MenuFlyoutItem>
254+
<MenuFlyoutSeparator/>
255+
<MenuFlyoutItem Text="Properties" Name="PropertiesItemGrid">
256+
<MenuFlyoutItem.Icon>
257+
<FontIcon Glyph="&#xE946;"/>
258+
</MenuFlyoutItem.Icon>
259+
</MenuFlyoutItem>
260+
</MenuFlyout.Items>
261+
262+
</MenuFlyout>
240263
</Page.Resources>
241264

242265
<Grid>
@@ -317,8 +340,8 @@
317340
<ProgressBar IsIndeterminate="True" Visibility="{x:Bind local2:ItemViewModel.PVIS.isVisible, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Value="{x:Bind local2:ItemViewModel.PROGRESSPER.prog, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" HorizontalAlignment="Stretch"/>
318341
</StackPanel>
319342

320-
<GridView ShowsScrollingPlaceholders="True" Margin="24,0,24,0" Grid.Row="3" IsTapEnabled="True" Tapped="FileList_Tapped" SelectionMode="Extended" IsDoubleTapEnabled="True" IsRightTapEnabled="True" ItemsSource="{x:Bind local2:ItemViewModel.FilesAndFolders}" Name="FileList" Padding="0, 0, 0, 0" >
321-
<GridView.Resources>
343+
<controls:AdaptiveGridView ShowsScrollingPlaceholders="True" Margin="24,0,24,0" Grid.Row="3" SelectionMode="Single" IsDoubleTapEnabled="True" IsRightTapEnabled="True" ItemsSource="{x:Bind local2:ItemViewModel.FilesAndFolders}" Name="FileList" Padding="0, 0, 0, 0" >
344+
<controls:AdaptiveGridView.Resources>
322345
<MenuFlyout x:Name="RightClickContextMenu" x:Key="RightClickFlyout">
323346
<MenuFlyout.Items>
324347
<MenuFlyoutItem Text="Open With..." Name="OpenItem">
@@ -363,9 +386,9 @@
363386
</MenuFlyout.Items>
364387

365388
</MenuFlyout>
366-
</GridView.Resources>
389+
</controls:AdaptiveGridView.Resources>
367390

368-
<GridView.ItemTemplate>
391+
<controls:AdaptiveGridView.ItemTemplate>
369392
<DataTemplate>
370393
<Grid IsRightTapEnabled="True" RightTapped="Grid_RightTapped" Margin="0, 0, 0, 0" Padding="5, 5, 5, 5" Width="150" Height="150" HorizontalAlignment="Center" VerticalAlignment="Center">
371394
<Grid.RowDefinitions>
@@ -392,8 +415,8 @@
392415
</Grid>
393416

394417
</DataTemplate>
395-
</GridView.ItemTemplate>
396-
</GridView>
418+
</controls:AdaptiveGridView.ItemTemplate>
419+
</controls:AdaptiveGridView>
397420

398421
<ContentDialog PrimaryButtonText="Replace" SecondaryButtonText="Skip" Title="{x:Bind local2:ItemViewModel.ConflictBoxHeader.Header, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Name="ReviewBox" Grid.RowSpan="4">
399422
<Grid>

PhotoAlbum.xaml.cs

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ public sealed partial class PhotoAlbum : Page
1414
public static GridView gv;
1515
public static Image largeImg;
1616
public static MenuFlyout context;
17+
public static MenuFlyout gridContext;
1718
public static Page PAPageName;
1819

1920
public PhotoAlbum()
@@ -22,6 +23,7 @@ public PhotoAlbum()
2223
PAPageName = PhotoAlbumViewer;
2324
gv = FileList;
2425
context = RightClickContextMenu;
26+
gridContext = GridRightClickContextMenu;
2527
}
2628

2729

@@ -30,15 +32,17 @@ protected override void OnNavigatedTo(NavigationEventArgs eventArgs)
3032
{
3133
base.OnNavigatedTo(eventArgs);
3234
var parameters = eventArgs.Parameter.ToString();
33-
ItemViewModel.ViewModel = new ItemViewModel(parameters, this.PhotoAlbumViewer);
34-
Interacts.Interaction.page = this;
35-
FileList.DoubleTapped += Interacts.Interaction.List_ItemClick;
35+
ItemViewModel.ViewModel = new ItemViewModel(parameters, PhotoAlbumViewer);
36+
Interaction.page = this;
37+
FileList.DoubleTapped += Interaction.List_ItemClick;
3638
Back.Click += Navigation.PhotoAlbumNavActions.Back_Click;
3739
Forward.Click += Navigation.PhotoAlbumNavActions.Forward_Click;
3840
Refresh.Click += Navigation.PhotoAlbumNavActions.Refresh_Click;
39-
FileList.RightTapped += Interacts.Interaction.FileList_RightTapped;
40-
OpenItem.Click += Interacts.Interaction.OpenItem_Click;
41-
41+
FileList.RightTapped += Interaction.FileList_RightTapped;
42+
OpenItem.Click += Interaction.OpenItem_Click;
43+
CopyItem.Click += Interaction.CopyItem_ClickAsync;
44+
RefreshGrid.Click += Navigation.PhotoAlbumNavActions.Refresh_Click;
45+
DeleteItem.Click += Interaction.DeleteItem_Click;
4246

4347

4448
if (parameters.Equals(Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory)))
@@ -80,7 +84,7 @@ protected override void OnNavigatedTo(NavigationEventArgs eventArgs)
8084
private void Grid_RightTapped(object sender, Windows.UI.Xaml.Input.RightTappedRoutedEventArgs e)
8185
{
8286
var ObjectPressed = (sender as Grid).DataContext as ListedItem;
83-
gv.SelectedItems.Add(ObjectPressed);
87+
gv.SelectedItem = ObjectPressed;
8488
context.ShowAt(sender as Grid, e.GetPosition(sender as Grid));
8589
}
8690

@@ -92,9 +96,15 @@ private void FileList_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEv
9296
gv.SelectedItems.Clear();
9397
}
9498
}
95-
}
96-
97-
9899

100+
private void PhotoAlbumViewer_PointerReleased(object sender, Windows.UI.Xaml.Input.PointerRoutedEventArgs e)
101+
{
102+
FileList.SelectedItem = null;
103+
}
99104

105+
private void PhotoAlbumViewer_RightTapped(object sender, Windows.UI.Xaml.Input.RightTappedRoutedEventArgs e)
106+
{
107+
gridContext.ShowAt(sender as Grid, e.GetPosition(sender as Grid));
108+
}
109+
}
100110
}

0 commit comments

Comments
 (0)