2 * Copyright(c) 2021 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 using System.Runtime.InteropServices;
21 namespace Tizen.NUI.BaseComponents
24 /// A control which provides a single line editable text field.
26 /// <since_tizen> 3 </since_tizen>
27 public partial class TextField
29 private EventHandler<TextChangedEventArgs> textFieldTextChangedEventHandler;
30 private TextChangedCallbackDelegate textFieldTextChangedCallbackDelegate;
31 private EventHandler<MaxLengthReachedEventArgs> textFieldMaxLengthReachedEventHandler;
32 private MaxLengthReachedCallbackDelegate textFieldMaxLengthReachedCallbackDelegate;
34 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
35 private delegate void TextChangedCallbackDelegate(IntPtr textField);
37 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
38 private delegate void MaxLengthReachedCallbackDelegate(IntPtr textField);
41 /// The TextChanged event.
43 /// <since_tizen> 3 </since_tizen>
44 public event EventHandler<TextChangedEventArgs> TextChanged
48 if (textFieldTextChangedEventHandler == null)
50 textFieldTextChangedCallbackDelegate = (OnTextChanged);
51 TextChangedSignal().Connect(textFieldTextChangedCallbackDelegate);
53 textFieldTextChangedEventHandler += value;
57 textFieldTextChangedEventHandler -= value;
58 if (textFieldTextChangedEventHandler == null && TextChangedSignal().Empty() == false)
60 TextChangedSignal().Disconnect(textFieldTextChangedCallbackDelegate);
66 /// The MaxLengthReached event.
68 /// <since_tizen> 3 </since_tizen>
69 public event EventHandler<MaxLengthReachedEventArgs> MaxLengthReached
73 if (textFieldMaxLengthReachedEventHandler == null)
75 textFieldMaxLengthReachedCallbackDelegate = (OnMaxLengthReached);
76 MaxLengthReachedSignal().Connect(textFieldMaxLengthReachedCallbackDelegate);
78 textFieldMaxLengthReachedEventHandler += value;
82 if (textFieldMaxLengthReachedEventHandler == null && MaxLengthReachedSignal().Empty() == false)
84 this.MaxLengthReachedSignal().Disconnect(textFieldMaxLengthReachedCallbackDelegate);
86 textFieldMaxLengthReachedEventHandler -= value;
90 internal TextFieldSignal TextChangedSignal()
92 TextFieldSignal ret = new TextFieldSignal(Interop.TextField.TextChangedSignal(SwigCPtr), false);
93 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
97 internal TextFieldSignal MaxLengthReachedSignal()
99 TextFieldSignal ret = new TextFieldSignal(Interop.TextField.MaxLengthReachedSignal(SwigCPtr), false);
100 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
104 private void OnTextChanged(IntPtr textField)
106 if (textFieldTextChangedEventHandler != null)
108 TextChangedEventArgs e = new TextChangedEventArgs();
110 // Populate all members of "e" (TextChangedEventArgs) with real data
111 e.TextField = Registry.GetManagedBaseHandleFromNativePtr(textField) as TextField;
112 //here we send all data to user event handlers
113 textFieldTextChangedEventHandler(this, e);
117 private void OnMaxLengthReached(IntPtr textField)
119 if (textFieldMaxLengthReachedEventHandler != null)
121 MaxLengthReachedEventArgs e = new MaxLengthReachedEventArgs();
123 // Populate all members of "e" (MaxLengthReachedEventArgs) with real data
124 e.TextField = Registry.GetManagedBaseHandleFromNativePtr(textField) as TextField;
125 //here we send all data to user event handlers
126 textFieldMaxLengthReachedEventHandler(this, e);
131 /// The TextChanged event arguments.
133 /// <since_tizen> 3 </since_tizen>
134 public class TextChangedEventArgs : EventArgs
136 private TextField textField;
141 /// <since_tizen> 3 </since_tizen>
142 public TextField TextField
156 /// The MaxLengthReached event arguments.
158 /// <since_tizen> 3 </since_tizen>
159 public class MaxLengthReachedEventArgs : EventArgs
161 private TextField textField;
166 /// <since_tizen> 3 </since_tizen>
167 public TextField TextField