-
Notifications
You must be signed in to change notification settings - Fork 0
/
KmsLicense.cs
148 lines (134 loc) · 5.13 KB
/
KmsLicense.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
using HGM.Hotbird64.Vlmcs;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Windows;
using System.Windows.Media;
namespace HGM.Hotbird64.LicenseManager
{
[SuppressMessage("ReSharper", "InconsistentNaming")]
[SuppressMessage("ReSharper", "ExplicitCallerInfoArgument")]
public class KmsLicense : PropertyChangeBase
{
private KmsGuid id;
public IEnumerable<KmsLicense> List;
private string installMessage;
public string InstallMessage
{
get => installMessage;
set
{
if (value == installMessage) return;
installMessage = value;
NotifyOfPropertyChange();
}
}
private string installToolTip;
public string InstallToolTip
{
get => installToolTip;
set
{
if (value == installToolTip) return;
installToolTip = value;
NotifyOfPropertyChange();
}
}
public BinaryProductKey? Gvlk { get; private set; }
public KmsGuid ApplicationID { get; set; }
public string PartialProductKey { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public LicenseStatus LicenseStatus { get; set; }
public bool? IsGeneratedGvlk;
private bool installSuccess;
public bool InstallSuccess
{
get => installSuccess;
set
{
if (value == installSuccess) return;
installSuccess = value;
NotifyOfPropertyChange();
NotifyOfPropertyChange(nameof(InstallMessageColor));
}
}
private bool isControlEnabled = true;
public bool IsControlEnabled
{
get => isControlEnabled;
set
{
if (isControlEnabled == value) return;
isControlEnabled = value;
NotifyOfPropertyChange();
}
}
private bool isRadioButtonChecked;
public bool IsRadioButtonChecked
{
get => isRadioButtonChecked;
set
{
if (value)
{
if (isRadioButtonChecked && !List.Any(l => l != this && l.IsRadioButtonChecked))
{
IsRadioButtonChecked = false;
return;
}
foreach (KmsLicense kmsLicense in List.Where(l => l != this)) kmsLicense.IsRadioButtonChecked = false;
}
if (isRadioButtonChecked == value) return;
isRadioButtonChecked = value;
NotifyOfPropertyChange();
}
}
private bool isCheckBoxChecked;
public bool IsCheckBoxChecked
{
get => isCheckBoxChecked;
set
{
if (isCheckBoxChecked == value) return;
isCheckBoxChecked = value;
NotifyOfPropertyChange();
}
}
public KmsGuid ID
{
get => id;
set
{
if (id == value) return;
id = value;
SkuItem skuItem = KmsLists.SkuItemList[value];
Gvlk = skuItem?.Gvlk == null ? null : (BinaryProductKey?)skuItem.Gvlk;
IsGeneratedGvlk = skuItem?.IsGeneratedGvlk;
NotifyOfPropertyChange();
NotifyOfPropertyChange(nameof(Gvlk));
NotifyOfPropertyChange(nameof(GvlkColor));
NotifyOfPropertyChange(nameof(GvlkToolTip));
}
}
public override string ToString() => DisplayName;
public string DisplayName
{
get
{
SkuItem skuItem = KmsLists.SkuItemList[ID];
return skuItem?.ToString() ?? Name ?? Description;
}
}
public bool HasProductKey => PartialProductKey != null;
public bool IsActivated => LicenseStatus == LicenseStatus.Licensed;
public bool IsNotActivated => !IsActivated;
public Visibility CheckBoxVisibility => IsGeneratedGvlk == null || ApplicationID == Kms.WinGuid ? Visibility.Collapsed : Visibility.Visible;
public Visibility RadioButtonVisibility => IsGeneratedGvlk == null || ApplicationID != Kms.WinGuid ? Visibility.Collapsed : Visibility.Visible;
public string LicenseStatusText => Model.LicenseStatus.GetText(LicenseStatus);
public Brush LicenseColor => IsActivated ? Brushes.Green : Brushes.Red;
public Brush InstallMessageColor => !IsRadioButtonChecked && !IsCheckBoxChecked ? SystemColors.WindowTextBrush : InstallSuccess ? Brushes.Green : Brushes.Red;
public Brush GvlkColor => !IsGeneratedGvlk.HasValue ? Brushes.Red : IsGeneratedGvlk.Value ? Brushes.Yellow : Brushes.Transparent;
public string GvlkToolTip => !IsGeneratedGvlk.HasValue ? "No GVLK in database" : IsGeneratedGvlk.Value ? "This GVLK is user-generated" : "This GVLK is genuine";
}
}