2 using System.Collections.Generic;
15 public class ListItemEventArgs : EventArgs
17 public ListItem Item { get; set; }
18 internal static ListItemEventArgs CreateFromSmartEvent(IntPtr data, IntPtr obj, IntPtr info)
20 ListItem item = ItemObject.GetItemByHandle(info) as ListItem;
21 return new ListItemEventArgs() { Item = item };
25 public class List : Layout
27 HashSet<ListItem> _children = new HashSet<ListItem>();
28 Interop.SmartEvent<ListItemEventArgs> _selected;
29 Interop.SmartEvent<ListItemEventArgs> _unselected;
30 Interop.SmartEvent<ListItemEventArgs> _doubleClicked;
31 Interop.SmartEvent<ListItemEventArgs> _longpressed;
32 Interop.SmartEvent<ListItemEventArgs> _activated;
34 public List(EvasObject parent) : base(parent)
36 _selected = new Interop.SmartEvent<ListItemEventArgs>(this, Handle, "selected", ListItemEventArgs.CreateFromSmartEvent);
37 _unselected = new Interop.SmartEvent<ListItemEventArgs>(this, Handle, "unselected", ListItemEventArgs.CreateFromSmartEvent);
38 _doubleClicked = new Interop.SmartEvent<ListItemEventArgs>(this, Handle, "clicked,double", ListItemEventArgs.CreateFromSmartEvent);
39 _longpressed = new Interop.SmartEvent<ListItemEventArgs>(this, Handle, "longpressed", ListItemEventArgs.CreateFromSmartEvent);
40 _activated = new Interop.SmartEvent<ListItemEventArgs>(this, Handle, "activated", ListItemEventArgs.CreateFromSmartEvent);
41 _selected.On += (s, e) => { ItemSelected?.Invoke(this, e); };
42 _unselected.On += (s, e) => { ItemUnselected?.Invoke(this, e); };
43 _doubleClicked.On += (s, e) => { ItemDoubleClicked?.Invoke(this, e); };
44 _longpressed.On += (s, e) => { ItemLongPressed?.Invoke(this, e); };
45 _activated.On += (s, e) => { ItemActivated?.Invoke(this, e); };
52 return (ListMode)Interop.Elementary.elm_list_mode_get(Handle);
56 Interop.Elementary.elm_list_mode_set(Handle, (Interop.Elementary.Elm_List_Mode)value);
60 public ListItem SelectedItem
64 IntPtr item = Interop.Elementary.elm_list_selected_item_get(Handle);
65 return ItemObject.GetItemByHandle(item) as ListItem;
69 public event EventHandler<ListItemEventArgs> ItemSelected;
70 public event EventHandler<ListItemEventArgs> ItemUnselected;
71 public event EventHandler<ListItemEventArgs> ItemDoubleClicked;
72 public event EventHandler<ListItemEventArgs> ItemLongPressed;
73 public event EventHandler<ListItemEventArgs> ItemActivated;
77 Interop.Elementary.elm_list_go(Handle);
80 public ListItem Append(string label)
82 return Append(label, null, null);
85 public ListItem Append(string label, EvasObject leftIcon, EvasObject rightIcon)
87 ListItem item = new ListItem(label, leftIcon, rightIcon);
88 item.Handle = Interop.Elementary.elm_list_item_append(Handle, label, leftIcon, rightIcon, null, (IntPtr)item.Id);
93 public ListItem Prepend(string label)
95 return Prepend(label, null, null);
98 public ListItem Prepend(string label, EvasObject leftIcon, EvasObject rigthIcon)
100 ListItem item = new ListItem(label, leftIcon, rigthIcon);
101 item.Handle = Interop.Elementary.elm_list_item_prepend(Handle, label, leftIcon, rigthIcon, null, (IntPtr)item.Id);
108 Interop.Elementary.elm_list_clear(Handle);
109 foreach (var item in _children)
111 item.Deleted -= Item_Deleted;
116 protected override IntPtr CreateHandle(EvasObject parent)
118 return Interop.Elementary.elm_list_add(parent);
121 void AddInternal(ListItem item)
124 item.Deleted += Item_Deleted;
127 void Item_Deleted(object sender, EventArgs e)
129 _children.Remove((ListItem)sender);