[ACR-564] deprecate unused API
[platform/core/csapi/tizenfx.git] / src / ElmSharp.Wearable / ElmSharp.Wearable / RotarySelector.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.Linq;
20 using System.Text;
21
22 namespace ElmSharp.Wearable
23 {
24     /// <summary>
25     /// The RotarySelector is a widget to display a selector and multiple items surrounding the selector.
26     /// An item can be selected by the Rotary event or user item click.
27     /// Inherits <see cref="Layout"/>.
28     /// </summary>
29     /// <since_tizen> preview </since_tizen>
30     [Obsolete("This has been deprecated in API12")]
31     public class RotarySelector : Layout
32     {
33         const string IconPartName = "selector,icon";
34         const string ContentPartName = "selector,content";
35         const string BgPartName = "selector,bg_image";
36
37         const string ItemSelectedEventName = "item,selected";
38         const string ItemClickedEventName = "item,clicked";
39
40         /// <summary>
41         /// Selected will be triggered when selecting an item.
42         /// </summary>
43         /// <since_tizen> preview </since_tizen>
44         [Obsolete("This has been deprecated in API12")]
45         public event EventHandler<RotarySelectorItemEventArgs> Selected;
46
47         /// <summary>
48         /// Clicked will be triggered when selecting again the already selected item or selecting a selector.
49         /// </summary>
50         /// <since_tizen> preview </since_tizen>
51         [Obsolete("This has been deprecated in API12")]
52         public event EventHandler<RotarySelectorItemEventArgs> Clicked;
53
54         SmartEvent<PointerEventArgs> _selectedEvent;
55         SmartEvent<PointerEventArgs> _clickedEvent;
56         Image _normalBgImage;
57
58         /// <summary>
59         /// Gets the rotary selector item list of a rotary selector object.
60         /// </summary>
61         /// <since_tizen> preview </since_tizen>
62         [Obsolete("This has been deprecated in API12")]
63         public IList<RotarySelectorItem> Items { get; private set; }
64
65         /// <summary>
66         /// Creates and initializes a new instance of the Rotary Selector class.
67         /// </summary>
68         /// <param name="parent">The parent of the new Rotary Selector instance.</param>
69         /// <since_tizen> preview </since_tizen>
70         [Obsolete("This has been deprecated in API12")]
71         public RotarySelector(EvasObject parent) : base(parent)
72         {
73             Items = new RotarySelectorList(this);
74
75             _selectedEvent = new SmartEvent<PointerEventArgs>(this, "item,selected", (d, o, info) => new PointerEventArgs { Pointer = info });
76             _clickedEvent = new SmartEvent<PointerEventArgs>(this, "item,clicked", (d, o, info) => new PointerEventArgs { Pointer = info });
77             _selectedEvent.On += (s, e) =>
78             {
79                 RotarySelectorItem selected = Items.FirstOrDefault(i => i.Handle == e.Pointer);
80                 Selected?.Invoke(this, new RotarySelectorItemEventArgs { Item = selected });
81             };
82
83             _clickedEvent.On += (s, e) =>
84             {
85                 RotarySelectorItem selected = Items.FirstOrDefault(i => i.Handle == e.Pointer);
86                 Clicked?.Invoke(this, new RotarySelectorItemEventArgs { Item = selected });
87             };
88         }
89
90         /// <summary>
91         /// Sets or gets the selected item of a rotary selector object.
92         /// </summary>
93         /// <since_tizen> preview </since_tizen>
94         [Obsolete("This has been deprecated in API12")]
95         public RotarySelectorItem SelectedItem
96         {
97             get
98             {
99                 IntPtr selectedPtr = Interop.Eext.eext_rotary_selector_selected_item_get(this);
100                 if (selectedPtr == IntPtr.Zero) return null;
101                 RotarySelectorItem item = Items.FirstOrDefault(i => i.Handle == selectedPtr);
102                 return item;
103             }
104
105             set
106             {
107                 if (!Items.Contains(value)) return;
108                 Interop.Eext.eext_rotary_selector_selected_item_set(this, value.Handle);
109             }
110         }
111
112         void setPart(ref Image prop, string partName, State state, Image img)
113         {
114             if (prop == img) return;
115             prop = img;
116             if (this != null)
117             {
118                 Interop.Eext.eext_rotary_selector_part_content_set(this, partName, (int)state, prop);
119             }
120         }
121         void setPart(ref Color prop, string partName, State state, Color color)
122         {
123             if (prop == color) return;
124             if (this != null)
125             {
126                 Interop.Eext.eext_rotary_selector_part_color_set(this, partName, (int)state, color.R, color.G, color.B, color.A);
127             }
128         }
129
130         /// <summary>
131         /// Sets or gets the background image of a rotary selector object.
132         /// </summary>
133         /// <since_tizen> preview </since_tizen>
134         [Obsolete("This has been deprecated in API12")]
135         public Image BackgroundImage { set => setPart(ref _normalBgImage, BgPartName, State.Normal, value); get => _normalBgImage; }
136
137         /// <summary>
138         /// Creates a widget handle.
139         /// </summary>
140         /// <param name="parent">Parent EvasObject.</param>
141         /// <returns>Handle IntPtr.</returns>
142         /// <since_tizen> preview </since_tizen>
143         [Obsolete("This has been deprecated in API12")]
144         protected override IntPtr CreateHandle(EvasObject parent)
145         {
146             IntPtr ptr = Interop.Eext.eext_rotary_selector_add(parent);
147             Interop.Eext.eext_rotary_object_event_activated_set(ptr, true);
148             return ptr;
149         }
150
151         internal enum State
152         {
153             Normal,
154             Pressed
155         }
156     }
157 }