[EflSharp] Update Circle and efl cs files (#945)
[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                 readonly List<MoreOptionItem> Items = new List<MoreOptionItem>();
30
31                 /// <summary>
32                 /// Clicked will be triggered when the user selects the already selected item again or selects a selector.
33                 /// </summary>
34                 /// <since_tizen> 6 </since_tizen>
35                 public event EventHandler<MoreOptionItemEventArgs> ClickedEvt;
36
37                 /// <summary>
38                 /// Selected will be triggered when the user selects an item.
39                 /// </summary>
40                 /// <since_tizen> 6 </since_tizen>
41                 public event EventHandler<MoreOptionItemEventArgs> SelectedEvt;
42
43                 private Interop.Evas.SmartCallback smartClicked;
44                 private Interop.Evas.SmartCallback smartSelected;
45
46                 /// <summary>
47                 /// Creates and initializes a new instance of the MoreOption class.
48                 /// </summary>
49                 /// <param name="parent">The Efl.Ui.Widget to which the new MoreOption will be attached as a child.</param>
50                 /// <since_tizen> 6 </since_tizen>
51                 public MoreOption(Efl.Ui.Widget parent) : base(new ConstructingHandle(Interop.Eext.eext_more_option_add(parent.NativeHandle)))
52                 {
53                     smartClicked = new Interop.Evas.SmartCallback((d, o, e) =>
54                     {
55                         MoreOptionItem clickedItem = FindItemByNativeHandle(e);
56                         if (clickedItem != null)
57                             ClickedEvt?.Invoke(this, new MoreOptionItemEventArgs { item = clickedItem });
58                     });
59
60                     smartSelected = new Interop.Evas.SmartCallback((d, o, e) =>
61                     {
62                         MoreOptionItem selectedItem = FindItemByNativeHandle(e);
63                         if (selectedItem != null)
64                             SelectedEvt?.Invoke(this, new MoreOptionItemEventArgs { item = selectedItem });
65                     });
66
67                     Interop.Evas.evas_object_smart_callback_add(this.NativeHandle, ItemClickedEventName, smartClicked, IntPtr.Zero);
68                     Interop.Evas.evas_object_smart_callback_add(this.NativeHandle, ItemSelectedEventName, smartSelected, IntPtr.Zero);
69                 }
70
71                 private MoreOptionItem FindItemByNativeHandle(IntPtr handle)
72                 {
73                     foreach (MoreOptionItem item in Items)
74                     {
75                         if (item.NativeHandle == handle)
76                             return item;
77                     }
78
79                     return null;
80                 }
81
82                 /// <summary>
83                 /// Sets or gets the edit mode of more option.
84                 /// </summary>
85                 /// <since_tizen> 6 </since_tizen>
86                 public bool EditMode
87                 {
88                     get
89                     {
90                         return Interop.Eext.eext_more_option_editing_enabled_get(this.NativeHandle);
91                     }
92                     set
93                     {
94                         Interop.Eext.eext_more_option_editing_enabled_set(this.NativeHandle, value);
95                     }
96                 }
97
98                 /// <summary>
99                 /// Sets or gets the add item mode of more option.
100                 /// </summary>
101                 /// <since_tizen> 6 </since_tizen>
102                 public bool AddItemMode
103                 {
104                     get
105                     {
106                         return Interop.Eext.eext_more_option_add_item_enabled_get(this.NativeHandle);
107                     }
108                     set
109                     {
110                         Interop.Eext.eext_more_option_add_item_enabled_set(this.NativeHandle, value);
111                     }
112                 }
113
114                 /// <summary>
115                 /// Appends a more option item.
116                 /// </summary>
117                 /// <since_tizen> 6 </since_tizen>
118                 public void Append(MoreOptionItem item)
119                 {
120                     if (item.NativeHandle != null)
121                     {
122                         Items.Add(item);
123                         item.NativeHandle = Interop.Eext.eext_more_option_item_append(this.NativeHandle);
124                     }
125                 }
126
127                 /// <summary>
128                 /// Prepends a more option item.
129                 /// </summary>
130                 /// <since_tizen> 6 </since_tizen>
131                 public void PrependItem(MoreOptionItem item)
132                 {
133                     if (item.NativeHandle != null)
134                     {
135                         Items.Insert(0, item);
136                         item.NativeHandle = Interop.Eext.eext_more_option_item_prepend(this.NativeHandle);
137                     }
138                 }
139
140                 /// <summary>
141                 /// Inserts a more option item after the target item.
142                 /// </summary>
143                 /// <since_tizen> 6 </since_tizen>
144                 public void InsertAfter(MoreOptionItem targetItem, MoreOptionItem item)
145                 {
146                     if (item.NativeHandle != null && targetItem != null)
147                     {
148                         if (!Items.Contains(targetItem)) return;
149                         Items.Insert(Items.IndexOf(targetItem) + 1, item);
150                         item.NativeHandle = Interop.Eext.eext_more_option_item_insert_after(this.NativeHandle, targetItem.NativeHandle);
151                     }
152                 }
153
154                 /// <summary>
155                 /// Inserts a more option item before the target item.
156                 /// </summary>
157                 /// <since_tizen> 6 </since_tizen>
158                 public void InsertBefore(MoreOptionItem targetItem, MoreOptionItem item)
159                 {
160                     if (item.NativeHandle != null && targetItem != null)
161                     {
162                         if (!Items.Contains(targetItem)) return;
163                         Items.Insert(Items.IndexOf(targetItem), item);
164                         item.NativeHandle = Interop.Eext.eext_more_option_item_insert_before(this.NativeHandle, targetItem.NativeHandle);
165                     }
166                 }
167
168                 /// <summary>
169                 /// Delete a more option item.
170                 /// </summary>
171                 /// <since_tizen> 6 </since_tizen>
172                 public void DeleteItem(MoreOptionItem item)
173                 {
174                     if (item.NativeHandle != null)
175                     {
176                         if (!Items.Contains(item)) return;
177                         Items.Remove(item);
178                         Interop.Eext.eext_more_option_item_del(item.NativeHandle);
179                     }
180                 }
181
182                 /// <summary>
183                 /// Clears all items of more option.
184                 /// </summary>
185                 /// <since_tizen> 6 </since_tizen>
186                 public void ClearItems()
187                 {
188                     if (this.NativeHandle != null)
189                     {
190                         Items.Clear();
191                         Interop.Eext.eext_more_option_items_clear(this.NativeHandle);
192                     }
193                 }
194
195                 /// <summary>
196                 /// Sets or gets the direction of more option.
197                 /// </summary>
198                 /// <since_tizen> 6 </since_tizen>
199                 public MoreOptionDirection Direction
200                 {
201                     get
202                     {
203                         int dir = Interop.Eext.eext_more_option_direction_get(this.NativeHandle);
204                         return (MoreOptionDirection)dir;
205                     }
206
207                     set
208                     {
209                         Interop.Eext.eext_more_option_direction_set(this.NativeHandle, (int)value);
210                     }
211                 }
212
213                 /// <summary>
214                 /// Sets or gets the visibility of the more option view.
215                 /// </summary>
216                 /// <since_tizen> 6 </since_tizen>
217                 public bool IsOpened
218                 {
219                     get
220                     {
221                         return Interop.Eext.eext_more_option_opened_get(this.NativeHandle);
222                     }
223
224                     set
225                     {
226                         Interop.Eext.eext_more_option_opened_set(this.NativeHandle, value);
227                     }
228                 }
229
230                 /// <summary>
231                 /// Enumeration for the more option direction types.
232                 /// </summary>
233                 /// <since_tizen> 6 </since_tizen>
234                 public enum MoreOptionDirection
235                 {
236                     Top,
237                     Bottom,
238                     Left,
239                     Right
240                 }
241             }
242         }
243     }
244 }