SignatureStatusBarControl.xaml.cs 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using System.Collections.Generic;
  2. using System.ComponentModel;
  3. using System.Runtime.CompilerServices;
  4. using System.Windows;
  5. using System.Windows.Controls;
  6. namespace Compdfkit_Tools.PDFControl
  7. {
  8. public enum SignatureStatus
  9. {
  10. None,
  11. Valid,
  12. Invalid,
  13. Unknown
  14. }
  15. public partial class SignatureStatusBarControl : UserControl, INotifyPropertyChanged
  16. {
  17. private string _messageString;
  18. public string MessageString
  19. {
  20. get => _messageString;
  21. set => UpdateProper(ref _messageString, value);
  22. }
  23. private string validString = "The signature is valid and the document has not been tampered with";
  24. private string invalidString = "At least one signature is invalid";
  25. private string unknownString = "There's something wrong with at least one of the signatures";
  26. private SignatureStatus _status;
  27. public SignatureStatus Status
  28. {
  29. get => _status;
  30. set
  31. {
  32. _status = value;
  33. SetStatus(_status);
  34. }
  35. }
  36. public SignatureStatusBarControl(SignatureStatus status = SignatureStatus.None)
  37. {
  38. InitializeComponent();
  39. SetStatus(status);
  40. DataContext = this;
  41. }
  42. private void SetStatus(SignatureStatus status)
  43. {
  44. ValidBorder.Visibility = Visibility.Collapsed;
  45. InvalidBorder.Visibility = Visibility.Collapsed;
  46. UnknownBorder.Visibility = Visibility.Collapsed;
  47. switch (status)
  48. {
  49. case SignatureStatus.None:
  50. MessageString = "";
  51. break;
  52. case SignatureStatus.Valid:
  53. ValidBorder.Visibility = Visibility.Visible;
  54. MessageString = validString;
  55. break;
  56. case SignatureStatus.Invalid:
  57. InvalidBorder.Visibility = Visibility.Visible;
  58. MessageString = invalidString;
  59. break;
  60. case SignatureStatus.Unknown:
  61. UnknownBorder.Visibility = Visibility.Visible;
  62. MessageString = unknownString;
  63. break;
  64. }
  65. }
  66. public event PropertyChangedEventHandler PropertyChanged;
  67. protected void UpdateProper<T>(ref T properValue,
  68. T newValue,
  69. [CallerMemberName] string properName = "")
  70. {
  71. if (object.Equals(properValue, newValue))
  72. return;
  73. properValue = newValue;
  74. OnPropertyChanged(properName);
  75. }
  76. protected void OnPropertyChanged([CallerMemberName] string propertyName = "") =>
  77. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
  78. }
  79. }