Release 4.0.0-preview1-00051
[platform/core/csapi/tizenfx.git] / src / ElmSharp.Wearable / ElmSharp.Wearable / RotarySelectorItem.cs
1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4
5 namespace ElmSharp.Wearable
6 {
7     public class RotarySelectorItem
8     {
9         const string MainTextPartName = "selector,main_text";
10         const string SubTextPartName = "selector,sub_text";
11         const string IconPartName = "item,icon";
12         const string BgPartName = "item,bg_image";
13         const string SelectorIconPartName = "selector,icon";
14
15         string _mainText;
16         string _subText;
17
18         Color _mainTextColor;
19         Color _subTextColor;
20
21         Image _normalIconImage;
22         Image _pressedIconImage;
23         Image _disabledIconImage;
24         Image _selectedIconImage;
25
26         Image _normalBgImage;
27         Image _pressedBgImage;
28         Image _disabledBgImage;
29         Image _selectedBgImage;
30
31         Color _normalBgColor;
32         Color _pressedBgColor;
33         Color _disabledBgColor;
34         Color _selectedBgColor;
35
36         Image _selectorIconImage;
37
38         IntPtr _handle;
39
40         public IntPtr Handle
41         {
42             set
43             {
44                 if (_handle == value) return;
45                 _handle = value;
46
47                 if (_handle == null) return;
48
49                 setPart(ref _mainText, MainTextPartName);
50                 setPart(ref _subText, SubTextPartName);
51                 setPart(ref _mainTextColor, MainTextPartName, ItemState.Normal);
52                 setPart(ref _subTextColor, SubTextPartName, ItemState.Normal);
53
54                 setPart(ref _normalIconImage, IconPartName, ItemState.Normal);
55                 setPart(ref _pressedIconImage, IconPartName, ItemState.Pressed);
56                 setPart(ref _disabledIconImage, IconPartName, ItemState.Disabled);
57                 setPart(ref _selectedIconImage, IconPartName, ItemState.Selected);
58
59                 setPart(ref _normalBgImage, BgPartName, ItemState.Normal);
60                 setPart(ref _pressedBgImage, BgPartName, ItemState.Pressed);
61                 setPart(ref _disabledBgImage, BgPartName, ItemState.Disabled);
62                 setPart(ref _selectedBgImage, BgPartName, ItemState.Selected);
63
64                 setPart(ref _normalBgColor, BgPartName, ItemState.Normal);
65                 setPart(ref _pressedBgColor, BgPartName, ItemState.Pressed);
66                 setPart(ref _disabledBgColor, BgPartName, ItemState.Disabled);
67                 setPart(ref _selectedBgColor, BgPartName, ItemState.Selected);
68
69                 setPart(ref _selectorIconImage, SelectorIconPartName, ItemState.Normal);
70             }
71
72             get
73             {
74                 return _handle;
75             }
76         }
77
78         void setPart(ref Image prop, string partName, ItemState state)
79         {
80             if (prop != null)
81             {
82                 Interop.Eext.eext_rotary_selector_item_part_content_set(Handle, partName, (int)state, prop);
83             }
84         }
85         void setPart(ref Color prop, string partName, ItemState state)
86         {
87             if (prop != default(Color))
88             {
89                 Interop.Eext.eext_rotary_selector_item_part_color_set(Handle, partName, (int)state, prop.R, prop.G, prop.B, prop.A);
90             }
91         }
92
93         void setPart(ref string prop, string partName)
94         {
95             if (prop != null)
96             {
97                 Interop.Eext.eext_rotary_selector_item_part_text_set(Handle, partName, prop);
98             }
99         }
100
101         void setPart(ref Image prop, string partName, ItemState state, Image img)
102         {
103             if (prop == img) return;
104             prop = img;
105             if (Handle != null)
106             {
107                 Interop.Eext.eext_rotary_selector_item_part_content_set(Handle, partName, (int)state, img);
108             }
109         }
110
111         void setPart(ref Color prop, string partName, ItemState state, Color color)
112         {
113             if (prop == color) return;
114             prop = color;
115             if (Handle != null)
116             {
117                 Interop.Eext.eext_rotary_selector_item_part_color_set(Handle, partName, (int)state, color.R, color.G, color.B, color.A);
118             }
119         }
120
121         void setPart(ref string prop, string partName, string txt)
122         {
123             if (prop == txt) return;
124             prop = txt;
125             if (Handle != null)
126             {
127                 Interop.Eext.eext_rotary_selector_item_part_text_set(Handle, partName, txt);
128             }
129         }
130
131         public string MainText { set => setPart(ref _mainText, MainTextPartName, value); get => _mainText; }
132         public string SubText { set => setPart(ref _subText, SubTextPartName, value); get => _subText; }
133
134         public Color MainTextColor { set => setPart(ref _mainTextColor, MainTextPartName, ItemState.Normal, value); get => _mainTextColor; }
135         public Color SubextColor { set => setPart(ref _subTextColor, SubTextPartName, ItemState.Normal, value); get => _subTextColor; }
136
137         public Image NormalIconImage { set => setPart(ref _normalIconImage, IconPartName, ItemState.Normal, value); get => _normalIconImage; }
138         public Image PressedIconImage { set => setPart(ref _pressedIconImage, IconPartName, ItemState.Pressed, value); get => _pressedIconImage; }
139         public Image DisabledIconImage { set => setPart(ref _disabledIconImage, IconPartName, ItemState.Disabled, value); get => _disabledIconImage; }
140         public Image SelectedIconImage { set => setPart(ref _selectedIconImage, IconPartName, ItemState.Selected, value); get => _selectedIconImage; }
141
142
143         public Image NormalBackgroundImage { set => setPart(ref _normalBgImage, BgPartName, ItemState.Normal, value); get => _normalBgImage; }
144         public Image PressedBackgroundImage { set => setPart(ref _pressedBgImage, BgPartName, ItemState.Pressed, value); get => _pressedBgImage; }
145         public Image DisabledBackgroundImage { set => setPart(ref _disabledBgImage, BgPartName, ItemState.Disabled, value); get => _disabledBgImage; }
146         public Image SelectedBackgroundImage { set => setPart(ref _selectedBgImage, BgPartName, ItemState.Selected, value); get => _selectedBgImage; }
147
148         public Color NormalBackgroundColor { set => setPart(ref _normalBgColor, BgPartName, ItemState.Normal, value); get => _normalBgColor; }
149         public Color PressedBackgroundColor { set => setPart(ref _pressedBgColor, BgPartName, ItemState.Pressed, value); get => _pressedBgColor; }
150         public Color DisabledBackgroundColor { set => setPart(ref _disabledBgColor, BgPartName, ItemState.Disabled, value); get => _disabledBgColor; }
151         public Color SelectedBackgroundColor { set => setPart(ref _selectedBgColor, BgPartName, ItemState.Selected, value); get => _selectedBgColor; }
152
153         public Image SelectorIconImage { set => setPart(ref _selectorIconImage, SelectorIconPartName, ItemState.Normal, value); get => _selectorIconImage; }
154
155         internal enum ItemState
156         {
157             Normal,
158             Pressed,
159             Disabled,
160             Selected
161         }
162     }
163 }