2a123857df9c4a119f50f369ec33c5a5b5ef206a
[platform/core/csapi/tizenfx.git] / src / ElmSharp / ElmSharp / Toolbar.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     /// Enumeration for the selection mode of the toolbar.
24     /// </summary>
25     /// <since_tizen> preview </since_tizen>
26     [Obsolete("This has been deprecated in API12")]
27     public enum ToolbarSelectionMode
28     {
29         /// <summary>
30         /// Default select mode.
31         /// </summary>
32         Default = 0,
33
34         /// <summary>
35         /// Always select mode.
36         /// </summary>
37         Always,
38
39         /// <summary>
40         /// No select mode.
41         /// </summary>
42         None,
43
44         /// <summary>
45         /// No select mode with no finger size rule.
46         /// </summary>
47         DisplayOnly,
48     }
49
50     /// <summary>
51     /// Enumeration for setting the toolbar items display behavior, it can be scrollable, can show a menu with exceeding items, or simply hide them.
52     /// </summary>
53     /// <since_tizen> preview </since_tizen>
54     [Obsolete("This has been deprecated in API12")]
55     public enum ToolbarShrinkMode
56     {
57         /// <summary>
58         /// Sets the minimum toolbar size to fit all the items.
59         /// </summary>
60         None = 0,
61
62         /// <summary>
63         /// Hides exceeding items.
64         /// </summary>
65         Hide,
66
67         /// <summary>
68         /// Allows accessing exceeding items through a scroller.
69         /// </summary>
70         Scroll,
71
72         /// <summary>
73         /// Inserts a button to popup a menu with exceeding items.
74         /// </summary>
75         Menu,
76
77         /// <summary>
78         /// Expands all items according to the size of the toolbar.
79         /// </summary>
80         Expand
81     }
82
83     /// <summary>
84     /// Enumeration for the icon lookup order of the toolbar.
85     /// </summary>
86     /// <since_tizen> preview </since_tizen>
87     [Obsolete("This has been deprecated in API12")]
88     public enum ToolbarIconLookupOrder
89     {
90         /// <summary>
91         /// Icon lookup order: freedesktop, theme.
92         /// </summary>
93         FreedesktopTheme,
94
95         /// <summary>
96         /// Icon lookup order: theme, freedesktop.
97         /// </summary>
98         ThemeFreedesktop,
99
100         /// <summary>
101         /// Icon lookup order: freedesktop.
102         /// </summary>
103         Freedesktop,
104
105         /// <summary>
106         /// Icon lookup order: theme.
107         /// </summary>
108         Theme,
109     }
110
111     /// <summary>
112     /// Event arguments for events of <see cref="ToolbarItem"/>.
113     /// </summary>
114     /// <remarks>
115     /// Inherits EventArgs.
116     /// </remarks>
117     /// <since_tizen> preview </since_tizen>
118     [Obsolete("This has been deprecated in API12")]
119     public class ToolbarItemEventArgs : EventArgs
120     {
121         /// <summary>
122         /// Gets the ToolbarItem.
123         /// </summary>
124         /// <since_tizen> preview </since_tizen>
125         [Obsolete("This has been deprecated in API12")]
126         public ToolbarItem Item { get; private set; }
127
128         internal static ToolbarItemEventArgs CreateFromSmartEvent(IntPtr data, IntPtr obj, IntPtr info)
129         {
130             ToolbarItem item = ItemObject.GetItemByHandle(info) as ToolbarItem;
131             return new ToolbarItemEventArgs { Item = item };
132         }
133     }
134
135     /// <summary>
136     /// The Toolbar is a widget that displays a list of items inside a box.
137     /// </summary>
138     /// <since_tizen> preview </since_tizen>
139     [Obsolete("This has been deprecated in API12")]
140     public class Toolbar : Widget
141     {
142         SmartEvent<ToolbarItemEventArgs> _clicked;
143         SmartEvent<ToolbarItemEventArgs> _selected;
144         SmartEvent<ToolbarItemEventArgs> _longpressed;
145
146         /// <summary>
147         /// Creates and initializes a new instance of the Toolbar class.
148         /// </summary>
149         /// <param name="parent">
150         /// A EvasObject to which the new Table instance will be attached.
151         /// </param>
152         /// <since_tizen> preview </since_tizen>
153         [Obsolete("This has been deprecated in API12")]
154         public Toolbar(EvasObject parent) : base(parent)
155         {
156             _selected = new SmartEvent<ToolbarItemEventArgs>(this, this.RealHandle, "selected", ToolbarItemEventArgs.CreateFromSmartEvent);
157             _selected.On += (s, e) =>
158             {
159                 if (e.Item != null)
160                 {
161                     Selected?.Invoke(this, e);
162                     e.Item.SendSelected();
163                 }
164             };
165             _longpressed = new SmartEvent<ToolbarItemEventArgs>(this, this.RealHandle, "longpressed", ToolbarItemEventArgs.CreateFromSmartEvent);
166             _longpressed.On += (s, e) =>
167             {
168                 e.Item?.SendLongPressed();
169             };
170             _clicked = new SmartEvent<ToolbarItemEventArgs>(this, this.RealHandle, "clicked", ToolbarItemEventArgs.CreateFromSmartEvent);
171             _clicked.On += (s, e) =>
172             {
173                 e.Item?.SendClicked();
174             };
175         }
176
177         /// <summary>
178         /// Selected will be triggered when toolbar has been selected.
179         /// </summary>
180         /// <since_tizen> preview </since_tizen>
181         [Obsolete("This has been deprecated in API12")]
182         public event EventHandler<ToolbarItemEventArgs> Selected;
183
184         /// <summary>
185         /// Sets or gets whether the layout of this toolbar is homogeneous.
186         /// </summary>
187         /// <remarks>True for homogeneous, False for no homogeneous.</remarks>
188         /// <since_tizen> preview </since_tizen>
189         [Obsolete("This has been deprecated in API12")]
190         public bool Homogeneous
191         {
192             get
193             {
194                 return Interop.Elementary.elm_toolbar_homogeneous_get(RealHandle);
195             }
196             set
197             {
198                 Interop.Elementary.elm_toolbar_homogeneous_set(RealHandle, value);
199             }
200         }
201
202         /// <summary>
203         /// Sets or gets the slection mode of a given Toolbar widget.
204         /// </summary>
205         /// <since_tizen> preview </since_tizen>
206         [Obsolete("This has been deprecated in API12")]
207         public ToolbarSelectionMode SelectionMode
208         {
209             get
210             {
211                 return (ToolbarSelectionMode)Interop.Elementary.elm_toolbar_select_mode_get(RealHandle);
212             }
213             set
214             {
215                 Interop.Elementary.elm_toolbar_select_mode_set(RealHandle, (int)value);
216             }
217         }
218
219         /// <summary>
220         /// Sets or gets the shrink mode of a given Toolbar widget.
221         /// </summary>
222         /// <since_tizen> preview </since_tizen>
223         [Obsolete("This has been deprecated in API12")]
224         public ToolbarShrinkMode ShrinkMode
225         {
226             get
227             {
228                 return (ToolbarShrinkMode)Interop.Elementary.elm_toolbar_shrink_mode_get(RealHandle);
229             }
230             set
231             {
232                 Interop.Elementary.elm_toolbar_shrink_mode_set(RealHandle, (int)value);
233             }
234         }
235
236         /// <summary>
237         /// Sets or gets the toolbar's current orientation.
238         /// </summary>
239         /// <since_tizen> preview </since_tizen>
240         [Obsolete("This has been deprecated in API12")]
241         [EditorBrowsable(EditorBrowsableState.Never)]
242         public bool IsHorizontal
243         {
244             get
245             {
246                 return Interop.Elementary.elm_toolbar_horizontal_get(RealHandle);
247             }
248             set
249             {
250                 Interop.Elementary.elm_toolbar_horizontal_set(RealHandle, value);
251             }
252         }
253
254         /// <summary>
255         /// Sets or gets the icon lookup order, for toolbar items' icons.
256         /// The default lookup order is ToolbarIocnLookupOrder.ThemeFreedesktop.
257         /// Icons added before calling this function will not be affected.
258         /// </summary>
259         /// <since_tizen> preview </since_tizen>
260         [Obsolete("This has been deprecated in API12")]
261         public ToolbarIconLookupOrder IconLookupOrder
262         {
263             get
264             {
265                 return (ToolbarIconLookupOrder)Interop.Elementary.elm_toolbar_icon_order_lookup_get(RealHandle);
266             }
267             set
268             {
269                 Interop.Elementary.elm_toolbar_icon_order_lookup_set(RealHandle, (int)value);
270             }
271         }
272
273         /// <summary>
274         /// Sets or gets the icon size of a given toolbar widget.
275         /// Default value is 32 pixels, to be used by toolbar items.
276         /// </summary>
277         /// <since_tizen> preview </since_tizen>
278         [Obsolete("This has been deprecated in API12")]
279         public int IconSize
280         {
281             get
282             {
283                 return Interop.Elementary.elm_toolbar_icon_size_get(RealHandle);
284             }
285             set
286             {
287                 Interop.Elementary.elm_toolbar_icon_size_set(RealHandle, value);
288             }
289         }
290
291         /// <summary>
292         /// Gets the number of items in a Toolbar widget.
293         /// </summary>
294         /// <since_tizen> preview </since_tizen>
295         [Obsolete("This has been deprecated in API12")]
296         public int ItemsCount
297         {
298             get
299             {
300                 return Interop.Elementary.elm_toolbar_items_count(RealHandle);
301             }
302         }
303
304         /// <summary>
305         /// Sets or gets the alignment of the items.
306         /// </summary>
307         /// <remarks>The toolbar items alignment, a float between 0.0 and 1.0.</remarks>
308         /// <since_tizen> preview </since_tizen>
309         [Obsolete("This has been deprecated in API12")]
310         public double ItemAlignment
311         {
312             get
313             {
314                 return Interop.Elementary.elm_toolbar_align_get(RealHandle);
315             }
316             set
317             {
318                 Interop.Elementary.elm_toolbar_align_set(RealHandle, value);
319             }
320         }
321
322         /// <summary>
323         /// Sets or gets the item's transverse expansion of a given Toolbar widget.
324         /// </summary>
325         /// <remarks>
326         /// The transverse expansion of the item, true for on and false for off.
327         /// By default it's false.
328         /// </remarks>
329         /// <since_tizen> preview </since_tizen>
330         [Obsolete("This has been deprecated in API12")]
331         public bool TransverseExpansion
332         {
333             get
334             {
335                 return Interop.Elementary.elm_toolbar_transverse_expanded_get(RealHandle);
336             }
337             set
338             {
339                 Interop.Elementary.elm_toolbar_transverse_expanded_set(RealHandle, value);
340             }
341         }
342
343         /// <summary>
344         /// Appends the ToolbarItem, which just contains label to the toolbar.
345         /// </summary>
346         /// <param name="label">The label of the item.</param>
347         /// <returns>The new ToolbarItem which is appended to the toolbar.</returns>
348         /// <seealso cref="Append(string, string)"/>
349         /// <seealso cref="Prepend(string)"/>
350         /// <since_tizen> preview </since_tizen>
351         [Obsolete("This has been deprecated in API12")]
352         public ToolbarItem Append(string label)
353         {
354             return Append(label, null);
355         }
356
357         /// <summary>
358         /// Appends the ToolbarItem, which contains label and icon to the toolbar.
359         /// </summary>
360         /// <param name="label">The label of the item.</param>
361         /// <param name="icon">A string with the icon name or the absolute path of an image file.</param>
362         /// <returns>The new ToolbarItem which is appended to the toolbar.</returns>
363         /// <seealso cref="Append(string)"/>
364         /// <seealso cref="Prepend(string)"/>
365         /// <seealso cref="Prepend(string, string)"/>
366         /// <since_tizen> preview </since_tizen>
367         [Obsolete("This has been deprecated in API12")]
368         public ToolbarItem Append(string label, string icon)
369         {
370             ToolbarItem item = new ToolbarItem(label, icon, this);
371             item.Handle = Interop.Elementary.elm_toolbar_item_append(RealHandle, icon, label, null, (IntPtr)item.Id);
372             return item;
373         }
374
375         /// <summary>
376         /// Prepends the ToolbarItem, which just contains label to the toolbar.
377         /// </summary>
378         /// <param name="label">The label of the item.</param>
379         /// <returns>The new ToolbarItem which is prepended to the toolbar.</returns>
380         /// <seealso cref="Append(string)"/>
381         /// <seealso cref="Append(string, string)"/>
382         /// <seealso cref="Prepend(string, string)"/>
383         /// <since_tizen> preview </since_tizen>
384         [Obsolete("This has been deprecated in API12")]
385         public ToolbarItem Prepend(string label)
386         {
387             return Prepend(label, null);
388         }
389
390         /// <summary>
391         /// Prepends the ToolbarItem, which contains label and icon to the toolbar.
392         /// </summary>
393         /// <param name="label">The label of the item.</param>
394         /// <param name="icon">A string with the icon name or the absolute path of an image file.</param>
395         /// <returns>The new <see cref="ToolbarItem"/> which is prepended to the toolbar.</returns>
396         /// <seealso cref="Append(string)"/>
397         /// <seealso cref="Append(string, string)"/>
398         /// <seealso cref="Prepend(string)"/>
399         /// <since_tizen> preview </since_tizen>
400         [Obsolete("This has been deprecated in API12")]
401         public ToolbarItem Prepend(string label, string icon)
402         {
403             ToolbarItem item = new ToolbarItem(label, icon, this);
404             item.Handle = Interop.Elementary.elm_toolbar_item_prepend(RealHandle, icon, label, null, (IntPtr)item.Id);
405             return item;
406         }
407
408         /// <summary>
409         /// Inserts a new item which just contains label into the toolbar object before item <paramref name="before"/>.
410         /// </summary>
411         /// <param name="before">The toolbar item to insert before.</param>
412         /// <param name="label">The label of the item.</param>
413         /// <returns>The new <see cref="ToolbarItem"/> which is inserted into the toolbar.</returns>
414         /// <seealso cref="InsertBefore(ToolbarItem, string, string)"/>
415         /// <since_tizen> preview </since_tizen>
416         [Obsolete("This has been deprecated in API12")]
417         public ToolbarItem InsertBefore(ToolbarItem before, string label)
418         {
419             return InsertBefore(before, label, string.Empty);
420         }
421
422         /// <summary>
423         /// Inserts a new item which contains label and icon into the toolbar object before item <paramref name="before"/>.
424         /// </summary>
425         /// <param name="before">The toolbar item to insert before.</param>
426         /// <param name="label">The label of the item.</param>
427         /// <param name="icon">A string with the icon name or the absolute path of an image file.</param>
428         /// <returns>The new <see cref="ToolbarItem"/> which is inserted into the toolbar.</returns>
429         /// <seealso cref="InsertBefore(ToolbarItem, string)"/>
430         /// <since_tizen> preview </since_tizen>
431         [Obsolete("This has been deprecated in API12")]
432         public ToolbarItem InsertBefore(ToolbarItem before, string label, string icon)
433         {
434             ToolbarItem item = new ToolbarItem(label, icon, this);
435             item.Handle = Interop.Elementary.elm_toolbar_item_insert_before(RealHandle, before, icon, label, null, (IntPtr)item.Id);
436             return item;
437         }
438
439         /// <summary>
440         /// Inserts a new item which contains label and icon into the toolbar object after item <paramref name="after"/>.
441         /// </summary>
442         /// <param name="after">The toolbar item to insert after.</param>
443         /// <param name="label">The label of the item.</param>
444         /// <param name="icon">A string with the icon name or the absolute path of an image file.</param>
445         /// <returns>The new <see cref="ToolbarItem"/> which is inserted into the toolbar.</returns>
446         /// <since_tizen> preview </since_tizen>
447         [Obsolete("This has been deprecated in API12")]
448         public ToolbarItem InsertAfter(ToolbarItem after, string label, string icon)
449         {
450             ToolbarItem item = new ToolbarItem(label, icon, this);
451             item.Handle = Interop.Elementary.elm_toolbar_item_insert_after(RealHandle, after, icon, label, null, (IntPtr)item.Id);
452             return item;
453         }
454
455         /// <summary>
456         /// Finds the item with that label in the toolbar.
457         /// </summary>
458         /// <param name="label">The label of the item.</param>
459         /// <returns>The <see cref="ToolbarItem"/> into the toolbar.</returns>
460         /// <since_tizen> preview </since_tizen>
461         [Obsolete("This has been deprecated in API12")]
462         public ToolbarItem FindItemByLabel(string label)
463         {
464             IntPtr handle = Interop.Elementary.elm_toolbar_item_find_by_label(RealHandle, label);
465             return ItemObject.GetItemByHandle(handle) as ToolbarItem;
466         }
467
468         /// <summary>
469         /// Gets the selected ToolbarItemItem of the toolbar.
470         /// </summary>
471         /// <since_tizen> preview </since_tizen>
472         [Obsolete("This has been deprecated in API12")]
473         public ToolbarItem SelectedItem
474         {
475             get
476             {
477                 IntPtr handle = Interop.Elementary.elm_toolbar_selected_item_get(RealHandle);
478                 return ItemObject.GetItemByHandle(handle) as ToolbarItem;
479             }
480         }
481
482         /// <summary>
483         /// Gets the first ToolbarItemItem of the toolbar.
484         /// </summary>
485         /// <since_tizen> preview </since_tizen>
486         [Obsolete("This has been deprecated in API12")]
487         public ToolbarItem FirstItem
488         {
489             get
490             {
491                 IntPtr handle = Interop.Elementary.elm_toolbar_first_item_get(RealHandle);
492                 return ItemObject.GetItemByHandle(handle) as ToolbarItem;
493             }
494         }
495
496         /// <summary>
497         /// Gets the last ToolbarItemItem of the toolbar.
498         /// </summary>
499         /// <since_tizen> preview </since_tizen>
500         [Obsolete("This has been deprecated in API12")]
501         public ToolbarItem LastItem
502         {
503             get
504             {
505                 IntPtr handle = Interop.Elementary.elm_toolbar_last_item_get(RealHandle);
506                 return ItemObject.GetItemByHandle(handle) as ToolbarItem;
507             }
508         }
509
510         /// <summary>
511         /// Creates a widget handle.
512         /// </summary>
513         /// <param name="parent">Parent EvasObject.</param>
514         /// <returns>Handle IntPtr.</returns>
515         /// <since_tizen> preview </since_tizen>
516         [Obsolete("This has been deprecated in API12")]
517         protected override IntPtr CreateHandle(EvasObject parent)
518         {
519             IntPtr handle = Interop.Elementary.elm_layout_add(parent.Handle);
520             Interop.Elementary.elm_layout_theme_set(handle, "layout", "elm_widget", "default");
521
522             RealHandle = Interop.Elementary.elm_toolbar_add(handle);
523             Interop.Elementary.elm_object_part_content_set(handle, "elm.swallow.content", RealHandle);
524
525             return handle;
526         }
527     }
528 }