[ElmSharp] Mark ElmSharp API as API Level: preview
[platform/core/csapi/tizenfx.git] / src / ElmSharp.Wearable / ElmSharp.Wearable / RotarySelectorItem.cs
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 using System;
18 using System.Collections.Generic;
19 using System.Text;
20
21 namespace ElmSharp.Wearable
22 {
23     /// <summary>
24     /// A instance to the Rotary Selector Item added. And an item can be selected by rotary event or user item click.
25     /// </summary>
26     /// <since_tizen> preview </since_tizen>
27     public class RotarySelectorItem
28     {
29         const string MainTextPartName = "selector,main_text";
30         const string SubTextPartName = "selector,sub_text";
31         const string IconPartName = "item,icon";
32         const string BgPartName = "item,bg_image";
33         const string SelectorIconPartName = "selector,icon";
34
35         string _mainText;
36         string _subText;
37
38         Color _mainTextColor;
39         Color _subTextColor;
40
41         Image _normalIconImage;
42         Image _pressedIconImage;
43         Image _disabledIconImage;
44         Image _selectedIconImage;
45
46         Image _normalBgImage;
47         Image _pressedBgImage;
48         Image _disabledBgImage;
49         Image _selectedBgImage;
50
51         Color _normalBgColor;
52         Color _pressedBgColor;
53         Color _disabledBgColor;
54         Color _selectedBgColor;
55
56         Image _selectorIconImage;
57
58         IntPtr _handle;
59
60         /// <summary>
61         /// Sets or gets the handle of a rotary selector item object.
62         /// </summary>
63         /// <since_tizen> preview </since_tizen>
64         public IntPtr Handle
65         {
66             set
67             {
68                 if (_handle == value) return;
69                 _handle = value;
70
71                 if (_handle == null) return;
72
73                 setPart(ref _mainText, MainTextPartName);
74                 setPart(ref _subText, SubTextPartName);
75                 setPart(ref _mainTextColor, MainTextPartName, ItemState.Normal);
76                 setPart(ref _subTextColor, SubTextPartName, ItemState.Normal);
77
78                 setPart(ref _normalIconImage, IconPartName, ItemState.Normal);
79                 setPart(ref _pressedIconImage, IconPartName, ItemState.Pressed);
80                 setPart(ref _disabledIconImage, IconPartName, ItemState.Disabled);
81                 setPart(ref _selectedIconImage, IconPartName, ItemState.Selected);
82
83                 setPart(ref _normalBgImage, BgPartName, ItemState.Normal);
84                 setPart(ref _pressedBgImage, BgPartName, ItemState.Pressed);
85                 setPart(ref _disabledBgImage, BgPartName, ItemState.Disabled);
86                 setPart(ref _selectedBgImage, BgPartName, ItemState.Selected);
87
88                 setPart(ref _normalBgColor, BgPartName, ItemState.Normal);
89                 setPart(ref _pressedBgColor, BgPartName, ItemState.Pressed);
90                 setPart(ref _disabledBgColor, BgPartName, ItemState.Disabled);
91                 setPart(ref _selectedBgColor, BgPartName, ItemState.Selected);
92
93                 setPart(ref _selectorIconImage, SelectorIconPartName, ItemState.Normal);
94             }
95
96             get
97             {
98                 return _handle;
99             }
100         }
101
102         void setPart(ref Image prop, string partName, ItemState state)
103         {
104             if (prop != null)
105             {
106                 Interop.Eext.eext_rotary_selector_item_part_content_set(Handle, partName, (int)state, prop);
107             }
108         }
109         void setPart(ref Color prop, string partName, ItemState state)
110         {
111             if (prop != default(Color))
112             {
113                 Interop.Eext.eext_rotary_selector_item_part_color_set(Handle, partName, (int)state, prop.R, prop.G, prop.B, prop.A);
114             }
115         }
116
117         void setPart(ref string prop, string partName)
118         {
119             if (prop != null)
120             {
121                 Interop.Eext.eext_rotary_selector_item_part_text_set(Handle, partName, prop);
122             }
123         }
124
125         void setPart(ref Image prop, string partName, ItemState state, Image img)
126         {
127             if (prop == img) return;
128             prop = img;
129             if (Handle != null)
130             {
131                 Interop.Eext.eext_rotary_selector_item_part_content_set(Handle, partName, (int)state, img);
132             }
133         }
134
135         void setPart(ref Color prop, string partName, ItemState state, Color color)
136         {
137             if (prop == color) return;
138             prop = color;
139             if (Handle != null)
140             {
141                 Interop.Eext.eext_rotary_selector_item_part_color_set(Handle, partName, (int)state, color.R, color.G, color.B, color.A);
142             }
143         }
144
145         void setPart(ref string prop, string partName, string txt)
146         {
147             if (prop == txt) return;
148             prop = txt;
149             if (Handle != null)
150             {
151                 Interop.Eext.eext_rotary_selector_item_part_text_set(Handle, partName, txt);
152             }
153         }
154
155         /// <summary>
156         /// Sets or gets the main text of a rotary selector item object.
157         /// </summary>
158         /// <since_tizen> preview </since_tizen>
159         public string MainText { set => setPart(ref _mainText, MainTextPartName, value); get => _mainText; }
160
161         /// <summary>
162         /// Sets or gets the sub text of a rotary selector item object.
163         /// </summary>
164         /// <since_tizen> preview </since_tizen>
165         public string SubText { set => setPart(ref _subText, SubTextPartName, value); get => _subText; }
166
167         /// <summary>
168         /// Sets or gets the sub text color of a rotary selector item object.
169         /// </summary>
170         /// <since_tizen> preview </since_tizen>
171         public Color MainTextColor { set => setPart(ref _mainTextColor, MainTextPartName, ItemState.Normal, value); get => _mainTextColor; }
172
173         /// <summary>
174         /// Sets or gets the sub text color of a rotary selector item object.
175         /// </summary>
176         /// <since_tizen> preview </since_tizen>
177         public Color SubTextColor { set => setPart(ref _subTextColor, SubTextPartName, ItemState.Normal, value); get => _subTextColor; }
178
179         /// <summary>
180         /// Sets or gets the normal icon image of a rotary selector item object.
181         /// </summary>
182         /// <since_tizen> preview </since_tizen>
183         public Image NormalIconImage { set => setPart(ref _normalIconImage, IconPartName, ItemState.Normal, value); get => _normalIconImage; }
184
185         /// <summary>
186         /// Sets or gets the press icon image of a rotary selector item object.
187         /// </summary>
188         /// <since_tizen> preview </since_tizen>
189         public Image PressedIconImage { set => setPart(ref _pressedIconImage, IconPartName, ItemState.Pressed, value); get => _pressedIconImage; }
190
191         /// <summary>
192         /// Sets or gets the disable icon image of a rotary selector item object.
193         /// </summary>
194         /// <since_tizen> preview </since_tizen>
195         public Image DisabledIconImage { set => setPart(ref _disabledIconImage, IconPartName, ItemState.Disabled, value); get => _disabledIconImage; }
196
197         /// <summary>
198         /// Sets or gets the selected icon image of a rotary selector item object.
199         /// </summary>
200         /// <since_tizen> preview </since_tizen>
201         public Image SelectedIconImage { set => setPart(ref _selectedIconImage, IconPartName, ItemState.Selected, value); get => _selectedIconImage; }
202
203         /// <summary>
204         /// Sets or gets the normal background image of a rotary selector item object.
205         /// </summary>
206         /// <since_tizen> preview </since_tizen>
207         public Image NormalBackgroundImage { set => setPart(ref _normalBgImage, BgPartName, ItemState.Normal, value); get => _normalBgImage; }
208
209         /// <summary>
210         /// Sets or gets the pressed background image of a rotary selector item object.
211         /// </summary>
212         /// <since_tizen> preview </since_tizen>
213         public Image PressedBackgroundImage { set => setPart(ref _pressedBgImage, BgPartName, ItemState.Pressed, value); get => _pressedBgImage; }
214
215         /// <summary>
216         /// Sets or gets the disabled background image of a rotary selector item object.
217         /// </summary>
218         /// <since_tizen> preview </since_tizen>
219         public Image DisabledBackgroundImage { set => setPart(ref _disabledBgImage, BgPartName, ItemState.Disabled, value); get => _disabledBgImage; }
220
221         /// <summary>
222         /// Sets or gets the selected background image of a rotary selector item object.
223         /// </summary>
224         /// <since_tizen> preview </since_tizen>
225         public Image SelectedBackgroundImage { set => setPart(ref _selectedBgImage, BgPartName, ItemState.Selected, value); get => _selectedBgImage; }
226
227         /// <summary>
228         /// Sets or gets the normal background color of a rotary selector item object.
229         /// </summary>
230         /// <since_tizen> preview </since_tizen>
231         public Color NormalBackgroundColor { set => setPart(ref _normalBgColor, BgPartName, ItemState.Normal, value); get => _normalBgColor; }
232
233         /// <summary>
234         /// Sets or gets the pressed background color of a rotary selector item object.
235         /// </summary>
236         /// <since_tizen> preview </since_tizen>
237         public Color PressedBackgroundColor { set => setPart(ref _pressedBgColor, BgPartName, ItemState.Pressed, value); get => _pressedBgColor; }
238
239         /// <summary>
240         /// Sets or gets the disabled background color of a rotary selector item object.
241         /// </summary>
242         /// <since_tizen> preview </since_tizen>
243         public Color DisabledBackgroundColor { set => setPart(ref _disabledBgColor, BgPartName, ItemState.Disabled, value); get => _disabledBgColor; }
244
245         /// <summary>
246         /// Sets or gets the selected background color of a rotary selector item object.
247         /// </summary>
248         /// <since_tizen> preview </since_tizen>
249         public Color SelectedBackgroundColor { set => setPart(ref _selectedBgColor, BgPartName, ItemState.Selected, value); get => _selectedBgColor; }
250
251         /// <summary>
252         /// Sets or gets the selector icon image of a rotary selector item object.
253         /// </summary>
254         /// <since_tizen> preview </since_tizen>
255         public Image SelectorIconImage { set => setPart(ref _selectorIconImage, SelectorIconPartName, ItemState.Normal, value); get => _selectorIconImage; }
256
257         internal enum ItemState
258         {
259             Normal,
260             Pressed,
261             Disabled,
262             Selected
263         }
264     }
265 }