public static Task Add(IWin32Window window, Overlay overlay, IFilesystem filesystem, IFolder folder, string[] files)
        {
            var view = new FileOperationView(filesystem);

            overlay.Show(view);
            return(Task.Run(() => view.ViewModel.StartAdd(folder, files)));
        }
        public static Task Extract(IWin32Window window, Overlay overlay, IFilesystem filesystem, object[] items)
        {
            if (s_folderBrowser.ShowDialog(window) != DialogResult.OK)
            {
                return(Task.CompletedTask);
            }

            var view = new FileOperationView(filesystem);

            overlay.Show(view);
            return(Task.Run(() => view.ViewModel.StartExtract(items, s_folderBrowser.SelectedPath)));
        }
        public static async Task <bool> Add(IWin32Window window, Overlay overlay, IFilesystem filesystem, IFolder folder)
        {
            if (s_fileBrowser.ShowDialog(window) != DialogResult.OK)
            {
                return(false);
            }

            var view = new FileOperationView(filesystem);

            overlay.Show(view);
            await Task.Run(() => view.ViewModel.StartAdd(folder, s_fileBrowser.FileNames));

            return(true);
        }
        public static async Task <bool> Delete(IWin32Window window, Overlay overlay, IFilesystem filesystem, object[] items)
        {
            var result = TaskDialog.Show(window, $"Are you sure you want to delete {items.Length} items?",
                                         buttons: TaskDialogStandardButtons.Yes | TaskDialogStandardButtons.No);

            if (result == TaskDialogResult.No)
            {
                return(false);
            }

            var view = new FileOperationView(filesystem);

            overlay.Show(view);
            await Task.Run(() => view.ViewModel.StartDelete(items));

            return(true);
        }