2 using System.Collections.Generic;
13 /// The event argument of Rotary Selector.
15 /// <since_tizen> 6 </since_tizen>
16 public class RotarySelectorItemEventArgs : EventArgs
18 public RotarySelectorItem item { get; set; }
22 /// The RotarySelector is a widget to display a selector and multiple items surrounding the selector.
23 /// An item can be selected by the Rotary event or user item click.
25 /// <since_tizen> 6 </since_tizen>
26 public class RotarySelector : Efl.Ui.Layout
28 const string IconPartName = "selector,icon";
29 const string ContentPartName = "selector,content";
30 const string BgPartName = "selector,bg_image";
32 const string ItemSelectedEventName = "item,selected";
33 const string ItemClickedEventName = "item,clicked";
38 /// Clicked will be triggered when selecting again the already selected item or selecting a selector.
40 /// <since_tizen> 6 </since_tizen>
41 public event EventHandler<RotarySelectorItemEventArgs> Clicked;
44 /// Selected will be triggered when selecting an item.
46 /// <since_tizen> 6 </since_tizen>
47 public event EventHandler<RotarySelectorItemEventArgs> Selected;
49 private Interop.Evas.SmartCallback smartClicked;
50 private Interop.Evas.SmartCallback smartSelected;
53 /// Creates and initializes a new instance of the RotarySelector class.
55 /// <param name="parent">The Efl.Ui.Widget to which the new RotarySelector will be attached as a child.</param>
56 /// <since_tizen> 6 </since_tizen>
57 public RotarySelector(Efl.Ui.Widget parent) : base(Interop.Eext.eext_rotary_selector_add(parent.NativeHandle))
59 smartClicked = new Interop.Evas.SmartCallback((d, o, e) =>
61 RotarySelectorItem clickedItem = new RotarySelectorItem();
62 clickedItem._handle = e;
63 Clicked?.Invoke(this, new RotarySelectorItemEventArgs { item = clickedItem});
66 smartSelected = new Interop.Evas.SmartCallback((d, o, e) =>
68 Selected?.Invoke(this, new RotarySelectorItemEventArgs { item = this.SelectedItem });
71 Interop.Evas.evas_object_smart_callback_add(this.NativeHandle, ItemClickedEventName, smartClicked, IntPtr.Zero);
72 Interop.Evas.evas_object_smart_callback_add(this.NativeHandle, ItemSelectedEventName, smartSelected, IntPtr.Zero);
76 /// Appends a rotary selector item.
78 /// <since_tizen> 6 </since_tizen>
79 public void Append(RotarySelectorItem item)
81 if (item.NativeHandle != null)
82 item.NativeHandle = Interop.Eext.eext_rotary_selector_item_append(this.NativeHandle);
86 /// Prepends a rotary selector item.
88 /// <since_tizen> 6 </since_tizen>
89 public void Prepend(RotarySelectorItem item)
91 if (item.NativeHandle != null)
92 item.NativeHandle = Interop.Eext.eext_rotary_selector_item_prepend(this.NativeHandle);
96 /// Inserts a rotary selector item after the target item.
98 /// <since_tizen> 6 </since_tizen>
99 public void InsertAfter(RotarySelectorItem targetItem, RotarySelectorItem item)
101 if (item.NativeHandle != null)
102 item.NativeHandle = Interop.Eext.eext_rotary_selector_item_insert_after(this.NativeHandle, targetItem.NativeHandle);
106 /// Inserts a rotary selector item before the target item.
108 /// <since_tizen> 6 </since_tizen>
109 public void InsertBefore(RotarySelectorItem targetItem, RotarySelectorItem item)
111 if (item.NativeHandle != null)
112 item.NativeHandle = Interop.Eext.eext_rotary_selector_item_insert_before(this.NativeHandle, targetItem.NativeHandle);
116 /// Delete a rotary selector item.
118 /// <since_tizen> 6 </since_tizen>
119 public void DeleteItem(RotarySelectorItem item)
121 if (item.NativeHandle != null)
122 Interop.Eext.eext_rotary_selector_item_del(item.NativeHandle);
126 /// Clears all items of rotary selector.
128 /// <since_tizen> 6 </since_tizen>
129 public void ClearItems()
131 if (this.NativeHandle != null)
132 Interop.Eext.eext_rotary_selector_items_clear(this.NativeHandle);
136 /// Sets or gets the selected item of a rotary selector object.
138 /// <since_tizen> 6 </since_tizen>
139 public RotarySelectorItem SelectedItem
143 RotarySelectorItem item = new RotarySelectorItem();
144 item.NativeHandle = Interop.Eext.eext_rotary_selector_selected_item_get(this.NativeHandle);
149 Interop.Eext.eext_rotary_selector_selected_item_set(this.NativeHandle, value.NativeHandle);
153 void SetPart(string partName, State state, Image img)
156 Interop.Eext.eext_rotary_selector_part_content_set(this.NativeHandle, partName, (int)state, img.NativeHandle);
160 /// Sets or gets the background image of a rotary selector object.
162 /// <since_tizen> 6 </since_tizen>
163 public Image BackgroundImage
167 return _normalBgImage;
171 _normalBgImage = value;
172 SetPart(BgPartName, State.Normal, value);