[NUI] TCSACR-226 code change (#1032)
[platform/core/csapi/tizenfx.git] / src / ElmSharp / ElmSharp / GenListItem.cs
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
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 using System;
18 using System.ComponentModel;
19
20 namespace ElmSharp
21 {
22     /// <summary>
23     /// The type of the item's part types.
24     /// </summary>
25     /// <since_tizen> preview </since_tizen>
26     [Flags]
27     public enum GenListItemFieldType
28     {
29         /// <summary>
30         /// All item's parts.
31         /// </summary>
32         All = 0,
33
34         /// <summary>
35         /// The Text part type.
36         /// </summary>
37         Text = (1 << 0),
38
39         /// <summary>
40         /// The Content part type.
41         /// </summary>
42         Content = (1 << 1),
43
44         /// <summary>
45         /// The State part type.
46         /// </summary>
47         State = (1 << 2),
48
49         /// <summary>
50         /// No part type.
51         /// </summary>
52         None = (1 << 3)
53     };
54
55     /// <summary>
56     /// It inherits <see cref="GenItem"/>.
57     /// A instance to the genlist item is added.
58     /// It contains the Update() method to update a genlist item which is given.
59     /// </summary>
60     /// <since_tizen> preview </since_tizen>
61     public class GenListItem : GenItem
62     {
63         internal GenListItem(object data, GenItemClass itemClass) : base(data, itemClass)
64         {
65         }
66
67         internal GenListItem(object data, GenItemClass itemClass, EvasObject parent) : base(data, itemClass, parent)
68         {
69         }
70
71         /// <summary>
72         /// Gets or sets whether a given genlist item is selected.
73         /// </summary>
74         /// <since_tizen> preview </since_tizen>
75         public override bool IsSelected
76         {
77             get
78             {
79                 return Interop.Elementary.elm_genlist_item_selected_get(Handle);
80             }
81             set
82             {
83                 Interop.Elementary.elm_genlist_item_selected_set(Handle, value);
84             }
85         }
86
87         /// <summary>
88         /// Gets or sets whether a given genlist item is expanded.
89         /// </summary>
90         /// <since_tizen> preview </since_tizen>
91         public bool IsExpanded
92         {
93             get
94             {
95                 return Interop.Elementary.elm_genlist_item_expanded_get(Handle);
96             }
97             set
98             {
99                 Interop.Elementary.elm_genlist_item_expanded_set(Handle, value);
100             }
101         }
102
103         /// <summary>
104         /// Updates the content of an item.
105         /// This updates an item by calling all <see cref="GenItemClass"/> again to get the content, text, and states.
106         /// Use this when the original item data has changed and the changes are desired to reflect.
107         /// To update the already realized items, use <see cref="GenList.UpdateRealizedItems"/>.
108         /// </summary>
109         /// <seealso cref="GenList.UpdateRealizedItems"/>
110         /// <since_tizen> preview </since_tizen>
111         public override void Update()
112         {
113             Interop.Elementary.elm_genlist_item_update(Handle);
114         }
115
116         /// <summary>
117         /// Updates the part of an item.
118         /// This updates an item's part by calling the item's fetching functions again to get the contents, texts, and states.
119         /// Use this when the original item data has changed and the changes are desired to be reflected.
120         /// To update an item's all property, use <see cref="GenList.UpdateRealizedItems"/>.
121         /// </summary>
122         /// <param name="part">The part could be "elm.text", "elm.swalllow.icon", "elm.swallow.end", "elm.swallow.content", and so on. It is also used for globbing to match '*', '?', and '.'. It can be used for updating multi-fields.</param>
123         /// <param name="type">The type of the item's part type.</param>
124         /// <seealso cref="GenList.UpdateRealizedItems"/>
125         /// <since_tizen> preview </since_tizen>
126         public void UpdateField(string part, GenListItemFieldType type)
127         {
128             Interop.Elementary.elm_genlist_item_fields_update(Handle, part, (uint)type);
129         }
130
131         /// <summary>
132         /// Demotes an item to the end of the list.
133         /// </summary>
134         /// <since_tizen> preview </since_tizen>
135         public void DemoteItem()
136         {
137             Interop.Elementary.elm_genlist_item_demote(Handle);
138         }
139
140         /// <summary>
141         /// Gets or sets the genlist item's select mode.
142         /// </summary>
143         /// <since_tizen> preview </since_tizen>
144         public override GenItemSelectionMode SelectionMode
145         {
146             get
147             {
148                 return (GenItemSelectionMode)Interop.Elementary.elm_genlist_item_select_mode_get(Handle);
149             }
150             set
151             {
152                 Interop.Elementary.elm_genlist_item_select_mode_set(Handle, (Interop.Elementary.Elm_Object_Select_Mode)value);
153             }
154         }
155
156         /// <summary>
157         /// Gets the next item in a genlist widget's internal list of items.
158         /// </summary>
159         /// <seealso cref="Previous"/>
160         /// <since_tizen> preview </since_tizen>
161         public GenListItem Next
162         {
163             get
164             {
165                 IntPtr next = Interop.Elementary.elm_genlist_item_next_get(Handle);
166                 if (next == IntPtr.Zero)
167                     return null;
168                 else
169                     return GetItemByHandle(next) as GenListItem;
170             }
171         }
172
173         /// <summary>
174         /// Gets the previous item in a genlist widget's internal list of items.
175         /// </summary>
176         /// <seealso cref="Next"/>
177         /// <since_tizen> preview </since_tizen>
178         public GenListItem Previous
179         {
180             get
181             {
182                 IntPtr prev = Interop.Elementary.elm_genlist_item_prev_get(Handle);
183                 if (prev == IntPtr.Zero)
184                     return null;
185                 else
186                     return GetItemByHandle(prev) as GenListItem;
187             }
188         }
189
190         /// <summary>
191         /// Sets or gets the content to be shown in the tooltip item.
192         /// </summary>
193         /// <since_tizen> preview </since_tizen>
194         [EditorBrowsable(EditorBrowsableState.Never)]
195         public override string Cursor
196         {
197             get
198             {
199                 return Interop.Elementary.elm_genlist_item_cursor_get(Handle);
200             }
201             set
202             {
203                 if (!string.IsNullOrEmpty(value))
204                 {
205                     Interop.Elementary.elm_genlist_item_cursor_set(Handle, value);
206                 }
207                 else
208                 {
209                     Interop.Elementary.elm_genlist_item_cursor_unset(Handle);
210                 }
211             }
212         }
213
214         /// <summary>
215         /// Sets or gets the style for this item cursor.
216         /// </summary>
217         /// <since_tizen> preview </since_tizen>
218         [EditorBrowsable(EditorBrowsableState.Never)]
219         public override string CursorStyle
220         {
221             get
222             {
223                 return Interop.Elementary.elm_genlist_item_cursor_style_get(Handle);
224             }
225             set
226             {
227                 Interop.Elementary.elm_genlist_item_cursor_style_set(Handle, value);
228             }
229         }
230
231         /// <summary>
232         /// Sets or gets the cursor engine only usage for this item cursor.
233         /// </summary>
234         /// <since_tizen> preview </since_tizen>
235         [EditorBrowsable(EditorBrowsableState.Never)]
236         public override bool IsUseEngineCursor
237         {
238             get
239             {
240                 return Interop.Elementary.elm_genlist_item_cursor_engine_only_get(Handle);
241             }
242             set
243             {
244                 Interop.Elementary.elm_genlist_item_cursor_engine_only_set(Handle, value);
245             }
246         }
247
248         /// <summary>
249         /// Sets the text to be shown in the genlist item.
250         /// </summary>
251         /// <param name="tooltip">The text to set in the content.</param>
252         /// <since_tizen> preview </since_tizen>
253         public override void SetTooltipText(string tooltip)
254         {
255             Interop.Elementary.elm_genlist_item_tooltip_text_set(Handle, tooltip);
256         }
257
258         /// <summary>
259         /// Unsets the tooltip from the item.
260         /// </summary>
261         /// <since_tizen> preview </since_tizen>
262         public override void UnsetTooltip()
263         {
264             Interop.Elementary.elm_genlist_item_tooltip_unset(Handle);
265         }
266
267         /// <summary>
268         /// Gets or sets the style of the given genlist item's tooltip.
269         /// </summary>
270         /// <since_tizen> preview </since_tizen>
271         public override string TooltipStyle
272         {
273             get
274             {
275                 return Interop.Elementary.elm_genlist_item_tooltip_style_get(Handle);
276             }
277             set
278             {
279                 Interop.Elementary.elm_genlist_item_tooltip_style_set(Handle, value);
280             }
281         }
282
283         /// <summary>
284         /// Gets or sets the disable size restrictions on an object's tooltip.
285         /// </summary>
286         /// <since_tizen> preview </since_tizen>
287         public bool IsTooltipWindowMode
288         {
289             get
290             {
291                 return Interop.Elementary.elm_genlist_item_tooltip_window_mode_get(Handle);
292             }
293             set
294             {
295                 Interop.Elementary.elm_genlist_item_tooltip_window_mode_set(Handle, value);
296             }
297         }
298
299         /// <summary>
300         /// Gets the index of the item. It is only valid, once displayed.
301         /// </summary>
302         /// <since_tizen> preview </since_tizen>
303         public int Index
304         {
305             get
306             {
307                 return Interop.Elementary.elm_genlist_item_index_get(Handle);
308             }
309         }
310
311         /// <summary>
312         /// Gets the depth of the expanded item.
313         /// </summary>
314         /// <since_tizen> preview </since_tizen>
315         public int ExpandedItemDepth
316         {
317             get
318             {
319                 return Interop.Elementary.elm_genlist_item_expanded_depth_get(Handle);
320             }
321         }
322
323         /// <summary>
324         /// Remove all the subitems (children) of the given item.
325         /// </summary>
326         /// <remarks>
327         /// This removes the items that are the children (and their descendants) of the given item.
328         /// </remarks>
329         /// <since_tizen> preview </since_tizen>
330         public void ClearSubitems()
331         {
332             Interop.Elementary.elm_genlist_item_subitems_clear(Handle);
333         }
334
335         /// <summary>
336         /// Updates the item class of the item.
337         /// This sets another class of the item, changing the way that it is displayed. After changing the item class, <see cref="Update"/> is called on the item.
338         /// </summary>
339         /// <param name="itemClass">The item class for the item.</param>
340         /// <param name="data">The data for the item.</param>
341         /// <since_tizen> preview </since_tizen>
342         public void UpdateItemClass(GenItemClass itemClass, object data)
343         {
344             Data = data;
345             ItemClass = itemClass;
346             Interop.Elementary.elm_genlist_item_item_class_update((IntPtr)Handle, itemClass.UnmanagedPtr);
347         }
348
349         /// <summary>
350         /// Sets the content to be shown in the tooltip item.
351         /// </summary>
352         /// <since_tizen> preview </since_tizen>
353         protected override void UpdateTooltipDelegate()
354         {
355             Interop.Elementary.elm_genlist_item_tooltip_content_cb_set(Handle,
356                 TooltipContentDelegate != null ? _tooltipCb : null,
357                 IntPtr.Zero,
358                 null);
359         }
360     }
361 }