286a799809e1a17c989d7a334ad5a974bb200458
[platform/core/csapi/tizenfx.git] / src / Tizen.NUI / src / public / UIComponents / PushButton.cs
1 /*
2  * Copyright(c) 2017 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.ComponentModel;
20 using Tizen.NUI.BaseComponents;
21
22 namespace Tizen.NUI.UIComponents
23 {
24
25     /// <summary>
26     /// The PushButton changes its appearance when it is pressed, and returns to its original when it is released.
27     /// </summary>
28     /// <since_tizen> 3 </since_tizen>
29     public class PushButton : Button
30     {
31         private global::System.Runtime.InteropServices.HandleRef swigCPtr;
32
33         internal PushButton(global::System.IntPtr cPtr, bool cMemoryOwn) : base(NDalicPINVOKE.PushButton_SWIGUpcast(cPtr), cMemoryOwn)
34         {
35             swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
36         }
37
38         internal static global::System.Runtime.InteropServices.HandleRef getCPtr(PushButton obj)
39         {
40             return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
41         }
42
43         /// <summary>
44         /// To dispose the PushButton instance.
45         /// </summary>
46         /// <since_tizen> 3 </since_tizen>
47         protected override void Dispose(DisposeTypes type)
48         {
49             if (disposed)
50             {
51                 return;
52             }
53
54             if(type == DisposeTypes.Explicit)
55             {
56                 //Called by User
57                 //Release your own managed resources here.
58                 //You should release all of your own disposable objects here.
59             }
60
61             //Release your own unmanaged resources here.
62             //You should not access any managed member here except static instance.
63             //because the execution order of Finalizes is non-deterministic.
64
65             if (swigCPtr.Handle != global::System.IntPtr.Zero)
66             {
67                 if (swigCMemOwn)
68                 {
69                     swigCMemOwn = false;
70                     NDalicPINVOKE.delete_PushButton(swigCPtr);
71                 }
72                 swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
73             }
74
75             base.Dispose(type);
76         }
77
78
79         internal new class Property
80         {
81             internal static readonly int UNSELECTED_ICON = NDalicPINVOKE.PushButton_Property_UNSELECTED_ICON_get();
82             internal static readonly int SELECTED_ICON = NDalicPINVOKE.PushButton_Property_SELECTED_ICON_get();
83             internal static readonly int ICON_ALIGNMENT = NDalicPINVOKE.PushButton_Property_ICON_ALIGNMENT_get();
84             internal static readonly int LABEL_PADDING = NDalicPINVOKE.PushButton_Property_LABEL_PADDING_get();
85             internal static readonly int ICON_PADDING = NDalicPINVOKE.PushButton_Property_ICON_PADDING_get();
86         }
87
88         /// <summary>
89         /// Creates the PushButton.
90         /// </summary>
91         /// <since_tizen> 3 </since_tizen>
92         public PushButton() : this(NDalicPINVOKE.PushButton_New(), true)
93         {
94             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
95
96         }
97
98         /// <summary>
99         /// Downcasts a handle to pushButton handle.
100         /// </summary>
101         /// <since_tizen> 3 </since_tizen>
102         /// Please do not use! this will be deprecated!
103         /// Instead please use as keyword.
104         [Obsolete("Please DO NOT use! This will be deprecated, instead please USE as keyword.")]
105         [EditorBrowsable(EditorBrowsableState.Never)]
106         public new static PushButton DownCast(BaseHandle handle)
107         {
108             PushButton ret =  Registry.GetManagedBaseHandleFromNativePtr(handle) as PushButton;
109             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
110             return ret;
111         }
112
113         /// <summary>
114         /// UnselectedIcon.
115         /// </summary>
116         /// <since_tizen> 3 </since_tizen>
117         /// Please do not use! this will be deprecated!
118         /// Instead please use UnselectedVisual.
119         [Obsolete("Please DO NOT use! This will be Deprecated!. Please implement by using Visual instead!")]
120         [EditorBrowsable(EditorBrowsableState.Never)]
121         public string UnselectedIcon
122         {
123             set
124             {
125                 SetProperty(PushButton.Property.UNSELECTED_ICON, new Tizen.NUI.PropertyValue(value));
126             }
127         }
128
129         /// <summary>
130         /// SelectedIcon.
131         /// </summary>
132         /// <since_tizen> 3 </since_tizen>
133         /// Please do not use! this will be deprecated!
134         /// Instead please use SelectedVisual.
135         [Obsolete("Please do not use! this will be deprecated, instead please use SelectedVisual.")]
136         [EditorBrowsable(EditorBrowsableState.Never)]
137         public string SelectedIcon
138         {
139             set
140             {
141                 SetProperty(PushButton.Property.SELECTED_ICON, new Tizen.NUI.PropertyValue(value));
142             }
143         }
144         /// <summary>
145         /// Please do not use! this will be deprecated
146         /// </summary>
147         /// <since_tizen> 3 </since_tizen>
148         [Obsolete("Please DO NOT use! This will be deprecated, please implement by using Visual instead!")]
149         [EditorBrowsable(EditorBrowsableState.Never)]
150         public IconAlignmentType IconAlignment
151         {
152             get
153             {
154                 string temp;
155                 if (GetProperty(PushButton.Property.ICON_ALIGNMENT).Get(out temp) == false)
156                 {
157                     NUILog.Error("IconAlignment get error!");
158                 }
159                 switch (temp)
160                 {
161                     case "LEFT":
162                         return IconAlignmentType.Left;
163                     case "RIGHT":
164                         return IconAlignmentType.Right;
165                     case "TOP":
166                         return IconAlignmentType.Top;
167                     case "BOTTOM":
168                         return IconAlignmentType.Bottom;
169                     default:
170                         return IconAlignmentType.Default;
171                 }
172             }
173             set
174             {
175                 string valueToString = "";
176                 switch (value)
177                 {
178                     case IconAlignmentType.Left:
179                         {
180                             valueToString = "LEFT";
181                             break;
182                         }
183                     case IconAlignmentType.Right:
184                         {
185                             valueToString = "RIGHT";
186                             break;
187                         }
188                     case IconAlignmentType.Top:
189                         {
190                             valueToString = "TOP";
191                             break;
192                         }
193                     case IconAlignmentType.Bottom:
194                         {
195                             valueToString = "BOTTOM";
196                             break;
197                         }
198                     default:
199                         {
200                             valueToString = "DEFAULT";
201                             break;
202                         }
203                 }
204                 SetProperty(PushButton.Property.ICON_ALIGNMENT, new Tizen.NUI.PropertyValue(valueToString));
205             }
206         }
207         /// <summary>
208         /// Please do not use! this will be deprecated
209         /// </summary>
210         /// <since_tizen> 3 </since_tizen>
211         /// no use
212         [Obsolete("Please DO NOT use! This will be deprecated")]
213         [EditorBrowsable(EditorBrowsableState.Never)]
214         public new Vector4 LabelPadding
215         {
216             get
217             {
218                 Vector4 temp = new Vector4(0.0f, 0.0f, 0.0f, 0.0f);
219                 GetProperty(PushButton.Property.LABEL_PADDING).Get(temp);
220                 return temp;
221             }
222             set
223             {
224                 SetProperty(PushButton.Property.LABEL_PADDING, new Tizen.NUI.PropertyValue(value));
225             }
226         }
227
228         /// <summary>
229         /// Please do not use! this will be deprecated
230         /// </summary>
231         /// <since_tizen> 3 </since_tizen>
232         /// no use
233         [Obsolete("Please DO NOT use! This will be deprecated")]
234         [EditorBrowsable(EditorBrowsableState.Never)]
235         public Vector4 IconPadding
236         {
237             get
238             {
239                 Vector4 temp = new Vector4(0.0f, 0.0f, 0.0f, 0.0f);
240                 GetProperty(PushButton.Property.ICON_PADDING).Get(temp);
241                 return temp;
242             }
243             set
244             {
245                 SetProperty(PushButton.Property.ICON_PADDING, new Tizen.NUI.PropertyValue(value));
246             }
247         }
248
249         /// <summary>
250         /// Please do not use! this will be deprecated
251         /// </summary>
252         /// <since_tizen> 3 </since_tizen>
253         /// no use
254         [Obsolete("Please DO NOT use! This will be deprecated!")]
255         [EditorBrowsable(EditorBrowsableState.Never)]
256         public enum IconAlignmentType
257         {
258             /// <summary>
259             /// The icon located to the left of text.
260             /// </summary>
261             Left,
262             /// <summary>
263             /// The icon located to the right of text.
264             /// </summary>
265             Right,
266             /// <summary>
267             /// The icon located to the top of text.
268             /// </summary>
269             Top,
270             /// <summary>
271             /// The icon located to the bottom of text.
272             /// </summary>
273             Bottom,
274             /// <summary>
275             /// The icon located to the right of text by default.
276             /// </summary>
277             Default = Right
278         }
279
280     }
281 }