Imported Upstream version 2.2.0
[deb_libcec.git] / src / LibCecTray / settings / CECSettingString.cs
CommitLineData
cbbe90dd
JB
1/*
2 * This file is part of the libCEC(R) library.
3 *
4 * libCEC(R) is Copyright (C) 2011-2013 Pulse-Eight Limited. All rights reserved.
5 * libCEC(R) is an original work, containing original code.
6 *
7 * libCEC(R) is a trademark of Pulse-Eight Limited.
8 *
9 * This program is dual-licensed; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22 *
23 *
24 * Alternatively, you can license this library under a commercial license,
25 * please contact Pulse-Eight Licensing for more information.
26 *
27 * For more information contact:
28 * Pulse-Eight Licensing <license@pulse-eight.com>
29 * http://www.pulse-eight.com/
30 * http://www.pulse-eight.net/
31 */
32
33using System.Windows.Forms;
34using LibCECTray.ui;
35
36namespace LibCECTray.settings
37{
38
39 /// <summary>
40 /// A setting of type string that can be persisted in the registry
41 /// </summary>
42 class CECSettingString : CECSetting
43 {
44 public CECSettingString(string keyName, string friendlyName, string defaultValue, SettingChangedHandler changedHandler) :
45 this(CECSettingType.String, keyName, friendlyName, defaultValue, changedHandler)
46 {
47 }
48
49 public CECSettingString(CECSettingType type, string keyName, string friendlyName, string defaultValue, SettingChangedHandler changedHandler) :
50 base(type, CECSettingSerialisationType.String, keyName, friendlyName, defaultValue, changedHandler)
51 {
52 }
53
54 #region Serialisation methods
55 protected override string GetSerialisedValue()
56 {
57 return Value;
58 }
59
60 protected override void SetSerialisedValue(string value)
61 {
62 Value = value;
63 }
64
65 protected override string GetSerialisedDefaultValue()
66 {
67 return DefaultValue;
68 }
69
70 protected override void SetSerialisedDefaultValue(string value)
71 {
72 DefaultValue = value;
73 }
74 #endregion
75
76 public new string Value
77 {
78 get
79 {
80 return (string)base.Value;
81 }
82 set
83 {
84 base.Value = value;
85 if (BaseValueControl != null && Form != null)
86 Form.SetControlText(BaseValueControl, value);
87 }
88 }
89
90 public new string DefaultValue
91 {
92 get
93 {
94 return (string)base.DefaultValue;
95 }
96 set
97 {
98 base.DefaultValue = value;
99 }
100 }
101
102 public new Control ValueControl
103 {
104 get
105 {
106 if (BaseValueControl == null)
107 {
108 TextBox control = new TextBox
109 {
110 Size = new System.Drawing.Size(100, 20),
111 Enabled = InitialEnabledValue,
112 Text = Value
113 };
114 control.TextChanged += delegate { Value = control.Text; };
115 BaseValueControl = control;
116 }
117 return BaseValueControl;
118 }
119 }
120
121 public void ReplaceControls(IAsyncControls form, Control.ControlCollection controls, Control labelControl, TextBox valueControl)
122 {
123 Form = form;
124 ReplaceControl(controls, labelControl, Label);
125 ReplaceControl(controls, valueControl, ValueControl);
126 if (ValueControl != null && Form != null)
127 Form.SetControlText(ValueControl, Value);
128 }
129
130 public void ReplaceControls(IAsyncControls form, Control.ControlCollection controls, TextBox valueControl)
131 {
132 Form = form;
133 ReplaceControl(controls, valueControl, ValueControl);
134 }
135 }
136}