PasswordWindow.xaml.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. using ComPDFKitViewer.PdfViewer;
  2. using System;
  3. using System.Windows;
  4. using ComPDFKit.PDFDocument;
  5. namespace Compdfkit_Tools.Common
  6. {
  7. /// <summary>
  8. /// Interaction logic for PasswordWindow.xaml
  9. /// </summary>
  10. public partial class PasswordWindow : Window
  11. {
  12. private CPDFDocument document;
  13. public delegate void DialogCloseEventHandler(object sender, PasswordEventArgs e);
  14. public event DialogCloseEventHandler DialogClosed;
  15. public PasswordWindow()
  16. {
  17. InitializeComponent();
  18. }
  19. private void PasswordDialog_Loaded(object sender, RoutedEventArgs e)
  20. {
  21. PasswordDialog.Canceled += PasswordDialog_Canceled;
  22. PasswordDialog.Confirmed += PasswordDialog_Confirmed;
  23. PasswordDialog.Closed += PasswordDialog_Closed;
  24. }
  25. public void InitWithPDFViewer(CPDFViewer pdfViewer)
  26. {
  27. document = pdfViewer.Document;
  28. }
  29. public void InitWithDocument(CPDFDocument document)
  30. {
  31. this.document = document;
  32. }
  33. private void PasswordDialog_Unloaded(object sender, RoutedEventArgs e)
  34. {
  35. PasswordDialog.Canceled -= PasswordDialog_Canceled;
  36. PasswordDialog.Confirmed -= PasswordDialog_Confirmed;
  37. PasswordDialog.Closed -= PasswordDialog_Closed;
  38. }
  39. private void PasswordDialog_Closed(object sender, EventArgs e)
  40. {
  41. PasswordEventArgs passwordEventArgs = new PasswordEventArgs(string.Empty);
  42. CloseWindow(passwordEventArgs);
  43. }
  44. private void PasswordDialog_Confirmed(object sender, string e)
  45. {
  46. if (document != null)
  47. {
  48. document.UnlockWithPassword(e);
  49. if (document.IsLocked == false)
  50. {
  51. PasswordEventArgs passwordEventArgs = new PasswordEventArgs(e);
  52. CloseWindow(passwordEventArgs);
  53. }
  54. else
  55. {
  56. PasswordDialog.SetShowError("Wrong Password", Visibility.Visible);
  57. }
  58. }
  59. }
  60. private void PasswordDialog_Canceled(object sender, EventArgs e)
  61. {
  62. PasswordEventArgs passwordEventArgs = new PasswordEventArgs(string.Empty);
  63. CloseWindow(passwordEventArgs);
  64. }
  65. // The processing logic when the pop-up window is closed
  66. private void CloseWindow(PasswordEventArgs dialogResult)
  67. {
  68. // Trigger the close event and pass the return value
  69. DialogClosed?.Invoke(this, dialogResult);
  70. // Close the pop-up window
  71. Close();
  72. }
  73. }
  74. public class PasswordEventArgs : EventArgs
  75. {
  76. public string DialogResult { get; set; }
  77. public PasswordEventArgs(string dialogResult)
  78. {
  79. DialogResult = dialogResult;
  80. }
  81. }
  82. }