ITsiDeleteItem.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using BluePointLilac.Controls;
  2. using BluePointLilac.Methods;
  3. using System;
  4. using System.IO;
  5. using System.Windows.Forms;
  6. namespace ContextMenuManager.Controls.Interfaces
  7. {
  8. interface ITsiDeleteItem
  9. {
  10. DeleteMeMenuItem TsiDeleteMe { get; set; }
  11. void DeleteMe();
  12. }
  13. interface ITsiRegDeleteItem : ITsiDeleteItem
  14. {
  15. string Text { get; }
  16. string RegPath { get; }
  17. }
  18. sealed class DeleteMeMenuItem : ToolStripMenuItem
  19. {
  20. public DeleteMeMenuItem(ITsiDeleteItem item) : base(AppString.Menu.Delete)
  21. {
  22. this.Click += (sender, e) =>
  23. {
  24. if(item is ITsiRegDeleteItem regItem && AppConfig.AutoBackup)
  25. {
  26. if(MessageBoxEx.Show(AppString.Message.DeleteButCanRestore,
  27. MessageBoxButtons.YesNo) != DialogResult.Yes) return;
  28. string date = DateTime.Today.ToString("yyyy-MM-dd");
  29. string time = DateTime.Now.ToString("HH.mm.ss");
  30. string filePath = $@"{AppConfig.BackupDir}\{date}\{regItem.Text} - {time}.reg";
  31. Directory.CreateDirectory(Path.GetDirectoryName(filePath));
  32. RegistryEx.Export(regItem.RegPath, filePath);
  33. }
  34. else if(MessageBoxEx.Show(AppString.Message.ConfirmDeletePermanently,
  35. MessageBoxButtons.YesNo) != DialogResult.Yes) return;
  36. MyListItem listItem = (MyListItem)item;
  37. MyList list = (MyList)listItem.Parent;
  38. int index = list.GetItemIndex(listItem);
  39. index -= (index < list.Controls.Count - 1) ? 0 : 1;
  40. item.DeleteMe();
  41. list.HoveredItem = (MyListItem)list.Controls[index];
  42. };
  43. }
  44. }
  45. }