2 using System.Collections.Generic;
11 public class MoreOptionItemEventArgs : EventArgs
13 public MoreOptionItem item { get; set; }
17 /// The MoreOption is a widget composed of the toggle (cue button) and more option view that can change a visibility through the toggle.
19 /// <since_tizen> 6 </since_tizen>
20 public class MoreOption : Efl.Ui.Layout
22 const string IconPartName = "selector,icon";
23 const string ContentPartName = "selector,content";
24 const string BgPartName = "selector,bg_image";
26 const string ItemSelectedEventName = "item,selected";
27 const string ItemClickedEventName = "item,clicked";
29 readonly List<MoreOptionItem> Items = new List<MoreOptionItem>();
32 /// Clicked will be triggered when the user selects the already selected item again or selects a selector.
34 /// <since_tizen> 6 </since_tizen>
35 public event EventHandler<MoreOptionItemEventArgs> ClickedEvt;
38 /// Selected will be triggered when the user selects an item.
40 /// <since_tizen> 6 </since_tizen>
41 public event EventHandler<MoreOptionItemEventArgs> SelectedEvt;
43 private Interop.Evas.SmartCallback smartClicked;
44 private Interop.Evas.SmartCallback smartSelected;
47 /// Creates and initializes a new instance of the MoreOption class.
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(Interop.Eext.eext_more_option_add(parent.NativeHandle))
53 smartClicked = new Interop.Evas.SmartCallback((d, o, e) =>
55 MoreOptionItem clickedItem = FindItemByNativeHandle(e);
56 if (clickedItem != null)
57 ClickedEvt?.Invoke(this, new MoreOptionItemEventArgs { item = clickedItem });
60 smartSelected = new Interop.Evas.SmartCallback((d, o, e) =>
62 MoreOptionItem selectedItem = FindItemByNativeHandle(e);
63 if (selectedItem != null)
64 SelectedEvt?.Invoke(this, new MoreOptionItemEventArgs { item = selectedItem });
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);
71 private MoreOptionItem FindItemByNativeHandle(IntPtr handle)
73 foreach (MoreOptionItem item in Items)
75 if (item.NativeHandle == handle)
83 /// Sets or gets the edit mode of more option.
85 /// <since_tizen> 6 </since_tizen>
90 return Interop.Eext.eext_more_option_editing_enabled_get(this.NativeHandle);
94 Interop.Eext.eext_more_option_editing_enabled_set(this.NativeHandle, value);
99 /// Sets or gets the add item mode of more option.
101 /// <since_tizen> 6 </since_tizen>
102 public bool AddItemMode
106 return Interop.Eext.eext_more_option_add_item_enabled_get(this.NativeHandle);
110 Interop.Eext.eext_more_option_add_item_enabled_set(this.NativeHandle, value);
115 /// Appends a more option item.
117 /// <since_tizen> 6 </since_tizen>
118 public void Append(MoreOptionItem item)
120 if (item.NativeHandle != null)
123 item.NativeHandle = Interop.Eext.eext_more_option_item_append(this.NativeHandle);
128 /// Prepends a more option item.
130 /// <since_tizen> 6 </since_tizen>
131 public void PrependItem(MoreOptionItem item)
133 if (item.NativeHandle != null)
135 Items.Insert(0, item);
136 item.NativeHandle = Interop.Eext.eext_more_option_item_prepend(this.NativeHandle);
141 /// Inserts a more option item after the target item.
143 /// <since_tizen> 6 </since_tizen>
144 public void InsertAfter(MoreOptionItem targetItem, MoreOptionItem item)
146 if (item.NativeHandle != null && targetItem != null)
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);
155 /// Inserts a more option item before the target item.
157 /// <since_tizen> 6 </since_tizen>
158 public void InsertBefore(MoreOptionItem targetItem, MoreOptionItem item)
160 if (item.NativeHandle != null && targetItem != null)
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);
169 /// Delete a more option item.
171 /// <since_tizen> 6 </since_tizen>
172 public void DeleteItem(MoreOptionItem item)
174 if (item.NativeHandle != null)
176 if (!Items.Contains(item)) return;
178 Interop.Eext.eext_more_option_item_del(item.NativeHandle);
183 /// Clears all items of more option.
185 /// <since_tizen> 6 </since_tizen>
186 public void ClearItems()
188 if (this.NativeHandle != null)
191 Interop.Eext.eext_more_option_items_clear(this.NativeHandle);
196 /// Sets or gets the direction of more option.
198 /// <since_tizen> 6 </since_tizen>
199 public MoreOptionDirection Direction
203 int dir = Interop.Eext.eext_more_option_direction_get(this.NativeHandle);
204 return (MoreOptionDirection)dir;
209 Interop.Eext.eext_more_option_direction_set(this.NativeHandle, (int)value);
214 /// Sets or gets the visibility of the more option view.
216 /// <since_tizen> 6 </since_tizen>
221 return Interop.Eext.eext_more_option_opened_get(this.NativeHandle);
226 Interop.Eext.eext_more_option_opened_set(this.NativeHandle, value);
231 /// Enumeration for the more option direction types.
233 /// <since_tizen> 6 </since_tizen>
234 public enum MoreOptionDirection