68adcf19e7fabf643c3f5a292cdcca0595b2dc02
[deb_libcec.git] / src / LibCecTray / settings / CECSettingUShort.cs
1 using System.Globalization;
2 using System.Windows.Forms;
3
4 namespace LibCECTray.settings
5 {
6 /// <summary>
7 /// A setting of type ushort that can be persisted in the registry
8 /// </summary>
9 class CECSettingUShort : CECSettingString
10 {
11 public CECSettingUShort(string keyName, string friendlyName, ushort defaultValue, SettingChangedHandler changedHandler) :
12 base(CECSettingType.UShort, keyName, friendlyName, string.Format("{0,4:X}", defaultValue), changedHandler)
13 {
14 }
15
16 public new ushort Value
17 {
18 get
19 {
20 ushort iValue;
21 return base.Value != null && ushort.TryParse(base.Value, NumberStyles.AllowHexSpecifier, null, out iValue) ? iValue : ushort.MinValue;
22 }
23 set
24 {
25 base.Value = string.Format("{0,4:X}", value);
26 if (Form != null)
27 Form.SetControlText(ValueControl, base.Value);
28 }
29 }
30
31 public new ushort DefaultValue
32 {
33 get
34 {
35 ushort iValue;
36 return base.DefaultValue != null && ushort.TryParse(base.DefaultValue, NumberStyles.AllowHexSpecifier, null, out iValue) ? iValue : ushort.MinValue;
37 }
38 set { base.DefaultValue = string.Format("{0,4:X}", value); }
39 }
40
41 public new Control ValueControl
42 {
43 get
44 {
45 if (BaseValueControl == null)
46 {
47 TextBox control = new TextBox
48 {
49 MaxLength = 4,
50 Size = new System.Drawing.Size(100, 20),
51 Enabled = InitialEnabledValue,
52 Text = string.Format("{0,4:X}", Value)
53 };
54 control.TextChanged += delegate
55 {
56 ushort iValue;
57 if (
58 !ushort.TryParse(control.Text, NumberStyles.AllowHexSpecifier, null,
59 out iValue))
60 iValue = DefaultValue;
61 Value = iValue;
62 };
63 BaseValueControl = control;
64 }
65 return BaseValueControl;
66 }
67 }
68 }
69 }