private DialogResult BeforeDelete(IVirtualItem item)
 {
     DialogResult yes = DialogResult.Yes;
     if (this.OnBeforeDelete != null)
     {
         BeforeDeleteItemEventArgs e = new BeforeDeleteItemEventArgs(item);
         this.OnBeforeDelete(this, e);
         yes = e.Action;
     }
     return yes;
 }
 private void BeforeDeleteItem(object sender, BeforeDeleteItemEventArgs e)
 {
     base.ItemFileName = e.Item.FullName;
     bool deleteNonEmptyFolder = false;
     bool deleteReadOnlyItem = false;
     if (e.Item is IVirtualFolder)
     {
         if ((this.DefaultDeleteNonEmptyFolderAction == DialogResult.Yes) || ((e.Item.Attributes & FileAttributes.ReparsePoint) != 0))
         {
             e.Action = DialogResult.Yes;
         }
         else
         {
             IVirtualFolder folder;
             bool flag3 = false;
             lock (e.Item)
             {
                 ICloneable cloneable = e.Item as ICloneable;
                 folder = (cloneable != null) ? ((IVirtualFolder) cloneable.Clone()) : ((IVirtualFolder) e.Item);
             }
             foreach (IVirtualItem item in folder.GetContent())
             {
                 flag3 = true;
                 break;
             }
             if (flag3)
             {
                 if (this.DefaultDeleteNonEmptyFolderAction != DialogResult.None)
                 {
                     e.Action = this.DefaultDeleteNonEmptyFolderAction;
                 }
                 else
                 {
                     deleteNonEmptyFolder = true;
                 }
             }
         }
     }
     else if ((e.Item.Attributes & FileAttributes.ReadOnly) > 0)
     {
         if (this.DefaultDeleteReadOnlyItemAcion != DialogResult.None)
         {
             e.Action = this.DefaultDeleteReadOnlyItemAcion;
         }
         else
         {
             deleteReadOnlyItem = true;
         }
     }
     if (deleteNonEmptyFolder || deleteReadOnlyItem)
     {
         if (base.InvokeRequired)
         {
             base.Invoke(new ShowDeleteItemDelegate(this.ShowDeleteItem), new object[] { sender, deleteNonEmptyFolder, deleteReadOnlyItem, e });
         }
         else
         {
             this.ShowDeleteItem(sender, deleteNonEmptyFolder, deleteReadOnlyItem, e);
         }
     }
 }
 private void ShowDeleteItem(object sender, bool DeleteNonEmptyFolder, bool DeleteReadOnlyItem, BeforeDeleteItemEventArgs e)
 {
     base.ShowItemName();
     this.ChangeProgressState(ProgressState.Pause);
     if (DeleteNonEmptyFolder)
     {
         this.BeforeDeleteNonEmptyFolder(sender, e);
     }
     if (DeleteReadOnlyItem)
     {
         this.BeforeDeleteReadOnlyItem(sender, e);
     }
     if (e.Action != DialogResult.Cancel)
     {
         this.ChangeProgressState(ProgressState.Normal);
     }
 }
 private void BeforeDeleteReadOnlyItem(object sender, BeforeDeleteItemEventArgs e)
 {
     bool checkBoxChecked = false;
     MessageDialogResult result = MessageDialog.Show(this, string.Format(Resources.sAskDeleteReadOnlyFile, e.Item.FullName), Resources.sConfirmFileDelete, Resources.sDoNotAskAgain, ref checkBoxChecked, this.StandardButtons, MessageBoxIcon.Question, MessageDialogResult.No);
     e.Action = ConvertDialogResult(result, ref this.DefaultDeleteReadOnlyItemAcion);
     if (checkBoxChecked)
     {
         ConfirmationSettings.Default.DeleteReadOnlyFile = false;
         if (this.DefaultDeleteReadOnlyItemAcion == DialogResult.None)
         {
             this.DefaultDeleteReadOnlyItemAcion = DialogResult.Yes;
         }
     }
 }