[EflSharp] Separate efl and Circle cs files and Update cs files (#786)
[platform/core/csapi/tizenfx.git] / internals / src / EflSharp / EflSharp / Circle / MoreOption.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4
5 namespace Efl
6 {
7     namespace Ui
8     {
9         namespace Wearable
10         {
11             public class MoreOptionItemEventArgs : EventArgs
12             {
13                 public MoreOptionItem item { get; set; }
14             }
15
16             /// <summary>
17             /// The MoreOption is a widget composed of the toggle (cue button) and more option view that can change a visibility through the toggle.
18             /// </summary>
19             /// <since_tizen> 6 </since_tizen>
20             public class MoreOption : Efl.Ui.Layout
21             {
22                 const string IconPartName = "selector,icon";
23                 const string ContentPartName = "selector,content";
24                 const string BgPartName = "selector,bg_image";
25
26                 const string ItemSelectedEventName = "item,selected";
27                 const string ItemClickedEventName = "item,clicked";
28
29                 /// <summary>
30                 /// Clicked will be triggered when the user selects the already selected item again or selects a selector.
31                 /// </summary>
32                 /// <since_tizen> 6 </since_tizen>
33                 public event EventHandler<MoreOptionItemEventArgs> Clicked;
34
35                 /// <summary>
36                 /// Selected will be triggered when the user selects an item.
37                 /// </summary>
38                 /// <since_tizen> 6 </since_tizen>
39                 public event EventHandler<MoreOptionItemEventArgs> Selected;
40
41                 private Interop.Evas.SmartCallback smartClicked;
42                 private Interop.Evas.SmartCallback smartSelected;
43
44                 /// <summary>
45                 /// Creates and initializes a new instance of the MoreOption class.
46                 /// </summary>
47                 /// <param name="parent">The Efl.Ui.Widget to which the new MoreOption will be attached as a child.</param>
48                 /// <since_tizen> 6 </since_tizen>
49                 public MoreOption(Efl.Ui.Widget parent) : base(Interop.Eext.eext_more_option_add(parent.NativeHandle))
50                 {
51                     smartClicked = new Interop.Evas.SmartCallback((d, o, e) =>
52                     {
53                         MoreOptionItem clickedItem = new MoreOptionItem();
54                         clickedItem._handle = e;
55                         Clicked?.Invoke(this, new MoreOptionItemEventArgs { item = clickedItem });
56                     });
57
58                     smartSelected = new Interop.Evas.SmartCallback((d, o, e) =>
59                     {
60                         MoreOptionItem selectedItem = new MoreOptionItem();
61                         selectedItem._handle = e;
62                         Selected?.Invoke(this, new MoreOptionItemEventArgs { item = selectedItem });
63                     });
64
65                     Interop.Evas.evas_object_smart_callback_add(this.NativeHandle, ItemClickedEventName, smartClicked, IntPtr.Zero);
66                     Interop.Evas.evas_object_smart_callback_add(this.NativeHandle, ItemSelectedEventName, smartSelected, IntPtr.Zero);
67                 }
68
69                 /// <summary>
70                 /// Appends a more option item.
71                 /// </summary>
72                 /// <since_tizen> 6 </since_tizen>
73                 public void Append(MoreOptionItem item)
74                 {
75                     if (item.NativeHandle != null)
76                       item.NativeHandle = Interop.Eext.eext_more_option_item_append(this.NativeHandle);
77                 }
78
79                 /// <summary>
80                 /// Prepends a more option item.
81                 /// </summary>
82                 /// <since_tizen> 6 </since_tizen>
83                 public void PrependItem(MoreOptionItem item)
84                 {
85                     if (item.NativeHandle != null)
86                       item.NativeHandle = Interop.Eext.eext_more_option_item_prepend(this.NativeHandle);
87                 }
88
89                 /// <summary>
90                 /// Inserts a more option item after the target item.
91                 /// </summary>
92                 /// <since_tizen> 6 </since_tizen>
93                 public void InsertAfter(MoreOptionItem targetItem, MoreOptionItem item)
94                 {
95                     if (item.NativeHandle != null)
96                       item.NativeHandle = Interop.Eext.eext_more_option_item_insert_after(this.NativeHandle, targetItem.NativeHandle);
97                 }
98
99                 /// <summary>
100                 /// Inserts a more option item before the target item.
101                 /// </summary>
102                 /// <since_tizen> 6 </since_tizen>
103                 public void InsertBefore(MoreOptionItem targetItem, MoreOptionItem item)
104                 {
105                     if (item.NativeHandle != null)
106                       item.NativeHandle = Interop.Eext.eext_more_option_item_insert_before(this.NativeHandle, targetItem.NativeHandle);
107                 }
108
109                 /// <summary>
110                 /// Delete a more option item.
111                 /// </summary>
112                 /// <since_tizen> 6 </since_tizen>
113                 public void DeleteItem(MoreOptionItem item)
114                 {
115                     if (item.NativeHandle != null)
116                       Interop.Eext.eext_more_option_item_del(item.NativeHandle);
117                 }
118
119                 /// <summary>
120                 /// Clears all items of more option.
121                 /// </summary>
122                 /// <since_tizen> 6 </since_tizen>
123                 public void ClearItems()
124                 {
125                     if (this.NativeHandle != null)
126                       Interop.Eext.eext_more_option_items_clear(this.NativeHandle);
127                 }
128
129                 /// <summary>
130                 /// Sets or gets the direction of more option.
131                 /// </summary>
132                 /// <since_tizen> 6 </since_tizen>
133                 public MoreOptionDirection Direction
134                 {
135                     get
136                     {
137                         int dir = Interop.Eext.eext_more_option_direction_get(this.NativeHandle);
138                         return (MoreOptionDirection)dir;
139                     }
140
141                     set
142                     {
143                         Interop.Eext.eext_more_option_direction_set(this.NativeHandle, (int)value);
144                     }
145                 }
146
147                 /// <summary>
148                 /// Sets or gets the visibility of the more option view.
149                 /// </summary>
150                 /// <since_tizen> 6 </since_tizen>
151                 public bool IsOpened
152                 {
153                     get
154                     {
155                         return Interop.Eext.eext_more_option_opened_get(this.NativeHandle);
156                     }
157
158                     set
159                     {
160                         Interop.Eext.eext_more_option_opened_set(this.NativeHandle, value);
161                     }
162                 }
163
164                 /// <summary>
165                 /// Enumeration for the more option direction types.
166                 /// </summary>
167                 /// <since_tizen> 6 </since_tizen>
168                 public enum MoreOptionDirection
169                 {
170                     Top,
171                     Bottom,
172                     Left,
173                     Right
174                 }
175             }
176         }
177     }
178 }