Example #1
0
        /// <summary>
        /// Deletes files, heals selection.
        /// </summary>
        void UIDeleteWithRecover(DeleteFilesEventArgs args, bool redraw)
        {
            // call
            UIDeleteFiles(args);
            if (args.Result == JobResult.Ignore)
            {
                return;
            }

            // to recover
            bool recover = args.Result == JobResult.Incomplete && SelectionExists;

            // update, drop selection
            Update(false);

            // recover selection
            if (recover)
            {
                if (args.FilesToStay.Count > 0)
                {
                    SelectFiles(args.FilesToStay, null);
                }
                else
                {
                    SelectFiles(args.Files, null);
                }
            }

            // done
            if (redraw)
            {
                Redraw();
            }
        }
Example #2
0
 /// <summary>
 /// Deletes the files.
 /// </summary>
 /// <param name="args">.</param>
 public virtual void DeleteFiles(DeleteFilesEventArgs args)
 {
     if (args != null)
     {
         args.Result = JobResult.Ignore;
     }
 }
Example #3
0
        /// <summary>
        /// Calls <see cref="FarNet.Explorer.DeleteFiles"/> and <see cref="OnThisFileChanged"/>.
        /// </summary>
        /// <param name="args">.</param>
        public virtual void UIDeleteFiles(DeleteFilesEventArgs args)
        {
            if (args == null)
            {
                return;
            }

            Explorer.DeleteFiles(args);

            if (args.Result != JobResult.Ignore)
            {
                OnThisFileChanged(args);
            }
        }
Example #4
0
        /// <summary>
        /// Delete action.
        /// </summary>
        /// <param name="force">The force mode flag.</param>
        public void UIDelete(bool force)
        {
            // can?
            if (!Explorer.CanDeleteFiles)
            {
                return;
            }

            // args
            var args = new DeleteFilesEventArgs(ExplorerModes.None, SelectedFiles, force);

            if (args.Files.Count == 0)
            {
                return;
            }

            // call
            UIDeleteWithRecover(args, true);
        }
Example #5
0
        void UICopyMoveComplete(CopyFilesEventArgs args)
        {
            // info
            bool isIncomplete = args.Result == JobResult.Incomplete;
            bool isAllToStay  = isIncomplete && args.FilesToStay.Count == 0;

            // Copy: do not update the source, files are the same
            if (!args.Move)
            {
                // keep it as it is
                if (isAllToStay || !SelectionExists)
                {
                    return;
                }

                // drop selection
                this.UnselectAll();

                // recover
                if (isIncomplete)
                {
                    SelectFiles(args.FilesToStay, null);
                }

                // show
                this.Redraw();
                return;
            }

            // Move: no need to delete or all to stay or cannot delete
            if (!args.ToDeleteFiles || isAllToStay || !this.Explorer.CanDeleteFiles)
            {
                // the source may have some files deleted, update, drop selection
                this.Update(false);

                // recover selection
                if (isIncomplete)
                {
                    if (isAllToStay)
                    {
                        SelectFiles(args.Files, null);
                    }
                    else
                    {
                        SelectFiles(args.FilesToStay, null);
                    }
                }

                // show
                this.Redraw();
                return;
            }

            // Move: delete is requested, delete the source files

            // exclude files to stay
            var filesToDelete = args.Files;

            if (isIncomplete)
            {
                var filesToDelete2 = new List <FarFile>(filesToDelete);
                foreach (var file in args.FilesToStay)
                {
                    filesToDelete2.Remove(file);
                }
                filesToDelete = filesToDelete2;
            }

            // call
            var argsDelete = new DeleteFilesEventArgs(ExplorerModes.Silent, filesToDelete, false);

            this.UIDeleteWithRecover(argsDelete, false);
            if (isIncomplete)
            {
                SelectFiles(args.FilesToStay, null);
            }

            // show
            Redraw();
        }