2 using System.Collections;
3 using System.Collections.Generic;
6 namespace ElmSharp.Wearable
8 class MoreOptionList : IList<MoreOptionItem>
10 MoreOption Owner { get; set; }
12 List<MoreOptionItem> Items { get; set; }
14 public int Count => Items.Count;
16 public bool IsReadOnly => false;
18 public MoreOptionItem this[int index]
31 public MoreOptionList(MoreOption owner)
34 Items = new List<MoreOptionItem>();
37 public void Add(MoreOptionItem item)
39 item.Handle = Interop.Eext.eext_more_option_item_append(Owner);
43 public void AddFirst(MoreOptionItem item)
45 item.Handle = Interop.Eext.eext_more_option_item_prepend(Owner);
46 Items.Insert(0, item);
49 public void AddLast(MoreOptionItem item)
54 public int IndexOf(MoreOptionItem item)
56 return Items.IndexOf(item);
59 public void Insert(int index, MoreOptionItem item)
61 if (Items.Count < index + 1 || index < 0)
62 throw new ArgumentOutOfRangeException("index is not valid in the MoreOption");
64 MoreOptionItem target = Items[index];
65 item.Handle = Interop.Eext.eext_more_option_item_insert_after(Owner, target.Handle);
66 Items.Insert(index, item);
69 public void RemoveAt(int index)
71 if (Items.Count < index + 1 || index < 0)
72 throw new ArgumentOutOfRangeException("index is not valid in the MoreOptionList");
74 MoreOptionItem item = Items[index];
75 Interop.Eext.eext_more_option_item_del(item.Handle);
76 item.Handle = IntPtr.Zero;
77 Items.RemoveAt(index);
82 Interop.Eext.eext_more_option_items_clear(Owner);
83 foreach (MoreOptionItem item in Items)
85 item.Handle = IntPtr.Zero;
90 public bool Contains(MoreOptionItem item)
92 return Items.Contains(item);
95 public void CopyTo(MoreOptionItem[] array, int arrayIndex)
97 Items.CopyTo(array, arrayIndex);
100 public bool Remove(MoreOptionItem item)
102 if (Items.Contains(item))
104 Interop.Eext.eext_more_option_item_del(item.Handle);
111 public IEnumerator<MoreOptionItem> GetEnumerator()
113 return Items.GetEnumerator();
116 IEnumerator IEnumerable.GetEnumerator()
118 return Items.GetEnumerator();