Пример #1
0
        private async void AddToNewGroup_Click(object sender, RoutedEventArgs e)
        {
            var selectedItems = imagesGridView.SelectedItems.Select(i => i as ImageItem).ToList();

            await SelectedContentFolder.GroupImagesAsync(selectedItems);

            SelectedContentFolder.ReorderImages();
        }
Пример #2
0
        public async Task SetTagsToFilter(List <string> tags)
        {
            int cntrState = ++SetTagsToFilterRequestCntr;

            Source.StopTasks();

            // giving the data source time to cancel its work
            await Task.Delay(500);

            if (cntrState == SetTagsToFilterRequestCntr)
            {
                await SelectedContentFolder?.SetTagsToFilter(tags);
            }
        }
Пример #3
0
        private async void RemoveImageFromAlbum_Click(object sender, RoutedEventArgs e)
        {
            var files = imagesGridView.SelectedItems;

            string title   = "Remove image";
            string message = $"Are you sure you want to remove this image from {SelectedContentFolder?.Name}?";

            if (files.Count == 0)
            {
                return;
            }
            else if (files.Count > 1)
            {
                title   = "Remove images";
                message = $"Are you sure you want to remove those images from {SelectedContentFolder?.Name}?";
            }

            ContentDialog removeImageDialog = new ContentDialog
            {
                Title             = title,
                Content           = message,
                PrimaryButtonText = "Remove",
                CloseButtonText   = "Cancel"
            };
            ContentDialogResult result = await removeImageDialog.ShowAsync();

            // Delete the file if the user clicked the primary button.
            /// Otherwise, do nothing.
            if (result == ContentDialogResult.Primary)
            {
                foreach (var file in files)
                {
                    if (file is ImageItem imageItem)
                    {
                        try
                        {
                            await DatabaseAccessService.DeleteImageAsync(imageItem.DatabaseId);
                        }
                        catch (Exception)
                        {
                            var messageDialog = new MessageDialog("Operation failed");
                            await messageDialog.ShowAsync();
                        }
                    }
                }
                await SelectedContentFolder.UpdateQueryAsync();
            }
        }
Пример #4
0
        private void SelectGroup_Click(object sender, RoutedEventArgs e)
        {
            if (RightTappedImageItem?.Group is null)
            {
                return;
            }

            var group = SelectedContentFolder.GetGroupOfImageItems(RightTappedImageItem.Group.Id);

            imagesGridView.SelectedItems.Clear();

            foreach (var item in group)
            {
                imagesGridView.SelectedItems.Add(item);
            }
        }
Пример #5
0
        private async void ThumbnailGrid_Drop(object sender, DragEventArgs e)
        {
            var targetGroup = ((sender as Grid).DataContext as ImageItem).Group;

            if (targetGroup is null || targetGroup.Id < 0)
            {
                return;
            }

            foreach (var item in DragAndDropHelper.DraggedItems)
            {
                await(item as ImageItem).AddToGroupAsync(targetGroup);
            }

            if (DragAndDropHelper.DraggedItems.Count > 0)
            {
                SelectedContentFolder.ReorderImages();
            }
        }
Пример #6
0
        private async void MergeGroups_Click(object sender, RoutedEventArgs e)
        {
            var selectedItems = imagesGridView.SelectedItems;
            var allItems      = SelectedContentFolder.GetRawImageItems();

            if (selectedItems.Count < 2)
            {
                return;
            }

            var baseGroup      = (selectedItems[0] as ImageItem).Group;
            var prevGroup      = baseGroup;
            var selectedGroups = new List <DatabaseSimilaritygroup>();

            foreach (ImageItem item in selectedItems)
            {
                if (item.Group != prevGroup)
                {
                    prevGroup = item.Group;
                    selectedGroups.Add(prevGroup);
                }
            }

            bool reorder = false;

            foreach (var item in allItems)
            {
                if (selectedGroups.Contains(item.Group))
                {
                    await item.AddToGroupAsync(baseGroup);

                    reorder = true;
                }
            }

            if (reorder)
            {
                SelectedContentFolder.ReorderImages();
            }
        }