2 using System.Collections;
3 using System.Collections.Generic;
6 namespace ElmSharp.Wearable
8 class RotarySelectorList : IList<RotarySelectorItem>
10 RotarySelector _owner;
11 List<RotarySelectorItem> Items { get; set; }
13 public RotarySelectorList(RotarySelector owner)
16 Items = new List<RotarySelectorItem>();
19 public RotarySelectorItem this[int index] { get => Items[index]; set => Items[index] = value; }
21 public int Count => Items.Count;
23 public bool IsReadOnly => false;
25 public void Add(RotarySelectorItem item)
27 item.Handle = Interop.Eext.eext_rotary_selector_item_append(_owner);
33 Interop.Eext.eext_rotary_selector_items_clear(_owner);
36 public bool Contains(RotarySelectorItem item)
38 return Items.Contains(item);
41 public void CopyTo(RotarySelectorItem[] array, int arrayIndex)
43 Items.CopyTo(array, arrayIndex);
46 public IEnumerator<RotarySelectorItem> GetEnumerator()
48 return Items.GetEnumerator();
51 public int IndexOf(RotarySelectorItem item)
53 return Items.IndexOf(item);
56 public void Insert(int index, RotarySelectorItem item)
58 if (Items.Count <= index || index < 0)
60 throw new ArgumentOutOfRangeException("index is not valid in the RotarySelector");
62 RotarySelectorItem target = Items[index];
63 item.Handle = Interop.Eext.eext_rotary_selector_item_insert_after(_owner, target.Handle);
64 Items.Insert(index, item);
67 public bool Remove(RotarySelectorItem item)
69 if (Items.Contains(item))
71 Interop.Eext.eext_rotary_selector_item_del(item.Handle);
78 public void RemoveAt(int index)
80 if (Items.Count < index + 1 || index < 0)
82 throw new ArgumentOutOfRangeException("index is not valid in the RotarySelector");
85 RotarySelectorItem target = Items[index];
86 Interop.Eext.eext_rotary_selector_item_del(target.Handle);
87 target.Handle = IntPtr.Zero;
88 Items.RemoveAt(index);
91 IEnumerator IEnumerable.GetEnumerator()
93 return Items.GetEnumerator();