Release 4.0.0-preview1-00051
[platform/core/csapi/tizenfx.git] / src / ElmSharp.Wearable / ElmSharp.Wearable / MoreOption.cs
1
2 using System;
3 using System.Collections.Generic;
4 using System.Linq;
5
6 namespace ElmSharp.Wearable
7 {
8     public class MoreOption : Layout
9     {
10
11         public IList<MoreOptionItem> Items { get; private set; }
12
13         public event EventHandler<MoreOptionItemEventArgs> Selected;
14         public event EventHandler<MoreOptionItemEventArgs> Clicked;
15         public event EventHandler Opened;
16         public event EventHandler Closed;
17
18         SmartEvent<PointerEventArgs> _selectedEvent;
19         SmartEvent<PointerEventArgs> _clickedEvent;
20         SmartEvent _openedEvent;
21         SmartEvent _closedEvent;
22
23         public MoreOption(EvasObject parent) : base(parent)
24         {
25             Items = new MoreOptionList(this);
26
27             _selectedEvent = new SmartEvent<PointerEventArgs>(this, "item,selected", (d, o, info) => new PointerEventArgs { Pointer = info });
28             _clickedEvent = new SmartEvent<PointerEventArgs>(this, "item,clicked", (d, o, info) => new PointerEventArgs { Pointer = info });
29             _openedEvent = new SmartEvent(this, "more,option,opened");
30             _closedEvent = new SmartEvent(this, "more,option,closed");
31
32             _selectedEvent.On += (s, e) =>
33             {
34                 MoreOptionItem selected = Items.FirstOrDefault(i => i.Handle == e.Pointer);
35                 Selected?.Invoke(this, new MoreOptionItemEventArgs() { Item = selected });
36             };
37
38             _clickedEvent.On += (s, e) =>
39             {
40                 MoreOptionItem selected = Items.FirstOrDefault(i => i.Handle == e.Pointer);
41                 Clicked?.Invoke(this, new MoreOptionItemEventArgs() { Item = selected });
42             };
43
44             _openedEvent.On += (s, e) => Opened?.Invoke(this, EventArgs.Empty);
45             _closedEvent.On += (s, e) => Closed?.Invoke(this, EventArgs.Empty);
46
47         }
48
49         protected override IntPtr CreateHandle(EvasObject parent)
50         {
51             return Interop.Eext.eext_more_option_add(parent);
52         }
53
54         public MoreOptionDirection Direction
55         {
56             get
57             {
58                 int dir = Interop.Eext.eext_more_option_direction_get(this);
59                 return (MoreOptionDirection)dir;
60             }
61
62             set
63             {
64                 Interop.Eext.eext_more_option_direction_set(this, (int)value);
65             }
66         }
67
68         public bool IsOpened
69         {
70             get
71             {
72                 return Interop.Eext.eext_more_option_opened_get(this);
73             }
74
75             set
76             {
77                 Interop.Eext.eext_more_option_opened_set(this, value);
78             }
79         }
80     }
81
82     public enum MoreOptionDirection
83     {
84         Top,
85         Bottom,
86         Left,
87         Right
88     }
89 }