Guest User

Untitled

a guest
Aug 24th, 2022
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.74 KB | None | 0 0
  1. internal class TextedElement : IElement
  2.     {
  3.         private string description;
  4.         private string header;
  5.         private ElementStatus status;
  6.  
  7.         public TextedElement((TextedElementDto Dto, Action<TextedElement, Exception> ErrorHandler,
  8.                                 EventHandler<TextedElement> StatusHandler, Func<bool> Customisation, UILanguage Language) parameters)
  9.         {
  10.             CustomisationStatus = parameters.Customisation;
  11.             Descriptions = parameters.Dto.Description ?? parameters.Dto.ChildDescription;
  12.             ErrorOccurred = parameters.ErrorHandler;
  13.             Headers = parameters.Dto.Header ?? parameters.Dto.ChildHeader;
  14.             Id = parameters.Dto.Id;
  15.             Language = parameters.Language;
  16.             StatusChanged = parameters.StatusHandler;
  17.             Tag = parameters.Dto.Tag;
  18.             ViewId = parameters.Dto.ViewId;
  19.             Windows10Supported = parameters.Dto.Windows10Supported;
  20.             Windows11Supported = parameters.Dto.Windows11Supported;
  21.         }
  22.  
  23.         public event PropertyChangedEventHandler PropertyChanged;
  24.  
  25.         public event EventHandler<TextedElement> StatusChanged;
  26.  
  27.         protected Dictionary<UILanguage, string> Descriptions { get; set; }
  28.  
  29.         internal Func<bool> CustomisationStatus { get; set; }
  30.  
  31.         internal Action<TextedElement, Exception> ErrorOccurred { get; set; }
  32.         internal UILanguage Language { get; set; }
  33.         internal bool Windows10Supported { get; private set; }
  34.         internal bool Windows11Supported { get; private set; }
  35.  
  36.         public string Description
  37.         {
  38.             get => description;
  39.             set
  40.             {
  41.                 description = value;
  42.                 OnPropertyChanged("Description");
  43.             }
  44.         }
  45.  
  46.         public string Header
  47.         {
  48.             get => header;
  49.             set
  50.             {
  51.                 header = value;
  52.                 OnPropertyChanged("Header");
  53.             }
  54.         }
  55.  
  56.         public Dictionary<UILanguage, string> Headers { get; set; }
  57.         public uint Id { get; }
  58.  
  59.         public ElementStatus Status
  60.         {
  61.             get => status;
  62.             set
  63.             {
  64.                 status = value;
  65.                 OnPropertyChanged("Status");
  66.                 StatusChanged?.Invoke(null, this);
  67.             }
  68.         }
  69.  
  70.         public string Tag { get; }
  71.         public uint ViewId { get; }
  72.  
  73.         private void OnPropertyChanged(string propertyName) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
  74.  
  75.         internal void ChangeStatus() => Status = Status == ElementStatus.UNCHECKED ? ElementStatus.CHECKED : ElementStatus.UNCHECKED;
  76.  
  77.         internal virtual bool ContainsText(string text)
  78.         {
  79.             var desiredText = text.ToLower();
  80.             return Header.ToLower().Contains(desiredText) || Description.ToLower().Contains(desiredText);
  81.         }
  82.  
  83.         internal virtual void GetCustomisationStatus()
  84.         {
  85.             try
  86.             {
  87.                 Status = CustomisationStatus.Invoke() ? ElementStatus.CHECKED : ElementStatus.UNCHECKED;
  88.             }
  89.             catch (Exception e)
  90.             {
  91.                 ErrorOccurred?.Invoke(this, e);
  92.             }
  93.         }
  94.  
  95.         internal virtual void Initialize()
  96.         {
  97.             var stopwatch = Stopwatch.StartNew();
  98.             ChangeLanguage(Language);
  99.             GetCustomisationStatus();
  100.             stopwatch.Stop();
  101.             DebugHelper.TextedElementInit(Id, stopwatch.Elapsed.TotalSeconds);
  102.         }
  103.  
  104.         public virtual void ChangeLanguage(UILanguage language)
  105.         {
  106.             Header = Headers[language];
  107.             Description = Descriptions[language];
  108.         }
  109.     }
Add Comment
Please, Sign In to add comment