[NUI] Add license, delete unnecessary code(public)
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / public / BaseComponents / TextFieldEvent.cs
1 /*
2  * Copyright(c) 2021 Samsung Electronics Co., Ltd.
3  *
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
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  *
16  */
17
18 using System;
19 using System.Runtime.InteropServices;
20
21 namespace Tizen.NUI.BaseComponents
22 {
23     /// <summary>
24     /// A control which provides a single line editable text field.
25     /// </summary>
26     /// <since_tizen> 3 </since_tizen>
27     public partial class TextField
28     {
29         private EventHandler<TextChangedEventArgs> textFieldTextChangedEventHandler;
30         private TextChangedCallbackDelegate textFieldTextChangedCallbackDelegate;
31         private EventHandler<MaxLengthReachedEventArgs> textFieldMaxLengthReachedEventHandler;
32         private MaxLengthReachedCallbackDelegate textFieldMaxLengthReachedCallbackDelegate;
33
34         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
35         private delegate void TextChangedCallbackDelegate(IntPtr textField);
36
37         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
38         private delegate void MaxLengthReachedCallbackDelegate(IntPtr textField);
39
40         /// <summary>
41         /// The TextChanged event.
42         /// </summary>
43         /// <since_tizen> 3 </since_tizen>
44         public event EventHandler<TextChangedEventArgs> TextChanged
45         {
46             add
47             {
48                 if (textFieldTextChangedEventHandler == null)
49                 {
50                     textFieldTextChangedCallbackDelegate = (OnTextChanged);
51                     TextChangedSignal().Connect(textFieldTextChangedCallbackDelegate);
52                 }
53                 textFieldTextChangedEventHandler += value;
54             }
55             remove
56             {
57                 textFieldTextChangedEventHandler -= value;
58                 if (textFieldTextChangedEventHandler == null && TextChangedSignal().Empty() == false)
59                 {
60                     TextChangedSignal().Disconnect(textFieldTextChangedCallbackDelegate);
61                 }
62             }
63         }
64
65         /// <summary>
66         /// The MaxLengthReached event.
67         /// </summary>
68         /// <since_tizen> 3 </since_tizen>
69         public event EventHandler<MaxLengthReachedEventArgs> MaxLengthReached
70         {
71             add
72             {
73                 if (textFieldMaxLengthReachedEventHandler == null)
74                 {
75                     textFieldMaxLengthReachedCallbackDelegate = (OnMaxLengthReached);
76                     MaxLengthReachedSignal().Connect(textFieldMaxLengthReachedCallbackDelegate);
77                 }
78                 textFieldMaxLengthReachedEventHandler += value;
79             }
80             remove
81             {
82                 if (textFieldMaxLengthReachedEventHandler == null && MaxLengthReachedSignal().Empty() == false)
83                 {
84                     this.MaxLengthReachedSignal().Disconnect(textFieldMaxLengthReachedCallbackDelegate);
85                 }
86                 textFieldMaxLengthReachedEventHandler -= value;
87             }
88         }
89
90         internal TextFieldSignal TextChangedSignal()
91         {
92             TextFieldSignal ret = new TextFieldSignal(Interop.TextField.TextChangedSignal(SwigCPtr), false);
93             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
94             return ret;
95         }
96
97         internal TextFieldSignal MaxLengthReachedSignal()
98         {
99             TextFieldSignal ret = new TextFieldSignal(Interop.TextField.MaxLengthReachedSignal(SwigCPtr), false);
100             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
101             return ret;
102         }
103
104         private void OnTextChanged(IntPtr textField)
105         {
106             if (textFieldTextChangedEventHandler != null)
107             {
108                 TextChangedEventArgs e = new TextChangedEventArgs();
109
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);
114             }
115         }
116
117         private void OnMaxLengthReached(IntPtr textField)
118         {
119             if (textFieldMaxLengthReachedEventHandler != null)
120             {
121                 MaxLengthReachedEventArgs e = new MaxLengthReachedEventArgs();
122
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);
127             }
128         }
129
130         /// <summary>
131         /// The TextChanged event arguments.
132         /// </summary>
133         /// <since_tizen> 3 </since_tizen>
134         public class TextChangedEventArgs : EventArgs
135         {
136             private TextField textField;
137
138             /// <summary>
139             /// TextField.
140             /// </summary>
141             /// <since_tizen> 3 </since_tizen>
142             public TextField TextField
143             {
144                 get
145                 {
146                     return textField;
147                 }
148                 set
149                 {
150                     textField = value;
151                 }
152             }
153         }
154
155         /// <summary>
156         /// The MaxLengthReached event arguments.
157         /// </summary>
158         /// <since_tizen> 3 </since_tizen>
159         public class MaxLengthReachedEventArgs : EventArgs
160         {
161             private TextField textField;
162
163             /// <summary>
164             /// TextField.
165             /// </summary>
166             /// <since_tizen> 3 </since_tizen>
167             public TextField TextField
168             {
169                 get
170                 {
171                     return textField;
172                 }
173                 set
174                 {
175                     textField = value;
176                 }
177             }
178         }
179     }
180 }