Release 4.0.0-preview1-00051
[platform/core/csapi/tizenfx.git] / src / ElmSharp.Wearable / ElmSharp.Wearable / RotarySelectorList.cs
1 using System;
2 using System.Collections;
3 using System.Collections.Generic;
4 using System.Text;
5
6 namespace ElmSharp.Wearable
7 {
8     class RotarySelectorList : IList<RotarySelectorItem>
9     {
10         RotarySelector _owner;
11         List<RotarySelectorItem> Items { get; set; }
12
13         public RotarySelectorList(RotarySelector owner)
14         {
15             this._owner = owner;
16             Items = new List<RotarySelectorItem>();
17         }
18
19         public RotarySelectorItem this[int index] { get => Items[index]; set => Items[index] = value; }
20
21         public int Count => Items.Count;
22
23         public bool IsReadOnly => false;
24
25         public void Add(RotarySelectorItem item)
26         {
27             item.Handle = Interop.Eext.eext_rotary_selector_item_append(_owner);
28             Items.Add(item);
29         }
30
31         public void Clear()
32         {
33             Interop.Eext.eext_rotary_selector_items_clear(_owner);
34         }
35
36         public bool Contains(RotarySelectorItem item)
37         {
38             return Items.Contains(item);
39         }
40
41         public void CopyTo(RotarySelectorItem[] array, int arrayIndex)
42         {
43             Items.CopyTo(array, arrayIndex);
44         }
45
46         public IEnumerator<RotarySelectorItem> GetEnumerator()
47         {
48             return Items.GetEnumerator();
49         }
50
51         public int IndexOf(RotarySelectorItem item)
52         {
53             return Items.IndexOf(item);
54         }
55
56         public void Insert(int index, RotarySelectorItem item)
57         {
58             if (Items.Count <= index || index < 0)
59             {
60                 throw new ArgumentOutOfRangeException("index is not valid in the RotarySelector");
61             }
62             RotarySelectorItem target = Items[index];
63             item.Handle = Interop.Eext.eext_rotary_selector_item_insert_after(_owner, target.Handle);
64             Items.Insert(index, item);
65         }
66
67         public bool Remove(RotarySelectorItem item)
68         {
69             if (Items.Contains(item))
70             {
71                 Interop.Eext.eext_rotary_selector_item_del(item.Handle);
72                 Items.Remove(item);
73                 return true;
74             }
75             return false;
76         }
77
78         public void RemoveAt(int index)
79         {
80             if (Items.Count < index + 1 || index < 0)
81             {
82                 throw new ArgumentOutOfRangeException("index is not valid in the RotarySelector");
83             }
84
85             RotarySelectorItem target = Items[index];
86             Interop.Eext.eext_rotary_selector_item_del(target.Handle);
87             target.Handle = IntPtr.Zero;
88             Items.RemoveAt(index);
89         }
90
91         IEnumerator IEnumerable.GetEnumerator()
92         {
93             return Items.GetEnumerator();
94         }
95     }
96 }