2 * Copyright(c) 2019 Samsung Electronics Co., Ltd.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
18 using Tizen.NUI.BaseComponents;
19 using System.ComponentModel;
20 using Tizen.NUI.Binding;
22 namespace Tizen.NUI.Components
25 /// Slider value changed event data.
27 /// <since_tizen> 8 </since_tizen>
28 public class SliderValueChangedEventArgs : EventArgs
31 /// Current Slider value
33 /// <since_tizen> 8 </since_tizen>
34 public float CurrentValue { get; set; }
38 /// Slider sliding finished event data.
40 /// <since_tizen> 8 </since_tizen>
41 public class SliderSlidingStartedEventArgs : EventArgs
44 /// Current Slider value
46 /// <since_tizen> 8 </since_tizen>
47 public float CurrentValue { get; set; }
51 /// Slider sliding finished event data.
53 /// <since_tizen> 8 </since_tizen>
54 public class SliderSlidingFinishedEventArgs : EventArgs
57 /// Current Slider value
59 /// <since_tizen> 8 </since_tizen>
60 public float CurrentValue { get; set; }
64 /// A slider lets users select a value from a continuous or discrete range of values by moving the slider thumb.
66 /// <since_tizen> 6 </since_tizen>
67 public partial class Slider : Control
69 /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API.
70 [EditorBrowsable(EditorBrowsableState.Never)]
71 public static readonly BindableProperty IndicatorTypeProperty = BindableProperty.Create("IndicatorType", typeof(IndicatorType), typeof(Slider), IndicatorType.None, propertyChanged: (bindable, oldValue, newValue) =>
73 var instance = (Slider)bindable;
76 instance.privateIndicatorType = (IndicatorType)newValue;
79 defaultValueCreator: (bindable) =>
81 var instance = (Slider)bindable;
82 return instance.privateIndicatorType;
84 /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API.
85 [EditorBrowsable(EditorBrowsableState.Never)]
86 public static readonly BindableProperty SpaceBetweenTrackAndIndicatorProperty = BindableProperty.Create(nameof(SpaceBetweenTrackAndIndicator), typeof(uint), typeof(Slider), (uint)0, propertyChanged: (bindable, oldValue, newValue) =>
88 var instance = (Slider)bindable;
91 instance.privateSpaceBetweenTrackAndIndicator = (uint)newValue;
94 defaultValueCreator: (bindable) =>
96 var instance = (Slider)bindable;
97 return instance.privateSpaceBetweenTrackAndIndicator;
99 /// This will be public opened in tizen_6.0 after ACR done. Before ACR, need to be hidden as inhouse API.
100 [EditorBrowsable(EditorBrowsableState.Never)]
101 public static readonly BindableProperty TrackThicknessProperty = BindableProperty.Create(nameof(TrackThickness), typeof(uint), typeof(Slider), (uint)0, propertyChanged: (bindable, oldValue, newValue) =>
103 var instance = (Slider)bindable;
104 if (newValue != null)
106 instance.privateTrackThickness = (uint)newValue;
109 defaultValueCreator: (bindable) =>
111 var instance = (Slider)bindable;
112 return instance.privateTrackThickness;
118 /// The constructor of the Slider class.
120 /// <since_tizen> 6 </since_tizen>
127 /// The constructor of the Slider class with specific style.
129 /// <param name="style">The string to initialize the Slider</param>
130 /// <since_tizen> 8 </since_tizen>
131 public Slider(string style) : base(style)
137 /// The constructor of the Slider class with specific style.
139 /// <param name="sliderStyle">The style object to initialize the Slider</param>
140 /// <since_tizen> 8 </since_tizen>
141 public Slider(SliderStyle sliderStyle) : base(sliderStyle)
147 /// The value changed event handler.
149 /// <since_tizen> 6 </since_tizen>
150 [Obsolete("Deprecated in API8; Will be removed in API10. Please use ValueChanged event instead.")]
151 public event EventHandler<ValueChangedArgs> ValueChangedEvent
155 valueChangedHandler += value;
159 valueChangedHandler -= value;
164 /// The sliding finished event handler.
166 /// <since_tizen> 6 </since_tizen>
167 [Obsolete("Deprecated in API8; Will be removed in API10. Please use SlidingFinished event instead.")]
168 public event EventHandler<SlidingFinishedArgs> SlidingFinishedEvent
172 slidingFinishedHandler += value;
176 slidingFinishedHandler -= value;
181 /// The value changed event handler.
183 /// <since_tizen> 8 </since_tizen>
184 public event EventHandler<SliderValueChangedEventArgs> ValueChanged
188 sliderValueChangedHandler += value;
192 sliderValueChangedHandler -= value;
197 /// The sliding finished event handler.
199 /// <since_tizen> 8 </since_tizen>
200 public event EventHandler<SliderSlidingStartedEventArgs> SlidingStarted
204 sliderSlidingStartedHandler += value;
208 sliderSlidingStartedHandler -= value;
213 /// The sliding finished event handler.
215 /// <since_tizen> 8 </since_tizen>
216 public event EventHandler<SliderSlidingFinishedEventArgs> SlidingFinished
220 sliderSlidingFinishedHandler += value;
224 sliderSlidingFinishedHandler -= value;
229 /// The state changed event handler.
231 /// <since_tizen> 6 </since_tizen>
232 [Obsolete("Deprecated in API8; Will be removed in API10. Please use View.ControlStateChangedEvent")]
233 public event EventHandler<StateChangedArgs> StateChangedEvent
237 stateChangedHandler += value;
241 stateChangedHandler -= value;
246 /// The direction type of slider.
248 /// <since_tizen> 6 </since_tizen>
249 public enum DirectionType
252 /// The Horizontal type.
254 /// <since_tizen> 6 </since_tizen>
258 /// The Vertical type.
260 /// <since_tizen> 6 </since_tizen>
265 /// The indicator type of slider.
267 /// <since_tizen> 6 </since_tizen>
268 public enum IndicatorType
270 /// <summary> Only contains slider bar.</summary>
271 /// <since_tizen> 6 </since_tizen>
274 /// <summary> Contains slider bar, IndicatorImage.</summary>
275 /// <since_tizen> 6 </since_tizen>
278 /// <summary> Contains slider bar, IndicatorText.</summary>
279 /// <since_tizen> 6 </since_tizen>
284 /// Return a copied Style instance of Slider
287 /// It returns copied Style instance and changing it does not effect to the Slider.
288 /// Style setting is possible by using constructor or the function of ApplyStyle(ViewStyle viewStyle)
290 /// <since_tizen> 8 </since_tizen>
291 public new SliderStyle Style
295 var result = new SliderStyle(sliderStyle);
296 result.CopyPropertiesFromView(this);
297 result.Track.CopyPropertiesFromView(bgTrackImage);
298 result.Progress.CopyPropertiesFromView(slidedTrackImage);
299 result.Thumb.CopyPropertiesFromView(thumbImage);
300 result.LowIndicatorImage.CopyPropertiesFromView(lowIndicatorImage);
301 result.HighIndicatorImage.CopyPropertiesFromView(highIndicatorImage);
302 result.LowIndicator.CopyPropertiesFromView(lowIndicatorText);
303 result.HighIndicator.CopyPropertiesFromView(highIndicatorText);
309 /// Return a copied Style instance of Slider
311 private SliderStyle sliderStyle => ViewStyle as SliderStyle;
314 /// Gets or sets the direction type of slider.
316 /// <since_tizen> 6 </since_tizen>
317 public DirectionType Direction
325 if (direction == value)
330 RelayoutBaseComponent(false);
332 UpdateBgTrackPosition();
338 /// Gets or sets the indicator type, arrow or sign.
340 /// <since_tizen> 6 </since_tizen>
341 public IndicatorType Indicator
345 return (IndicatorType)GetValue(IndicatorTypeProperty);
349 SetValue(IndicatorTypeProperty, value);
354 /// Gets or sets the minimum value of slider.
356 /// <since_tizen> 6 </since_tizen>
357 public float MinValue
371 /// Gets or sets the maximum value of slider.
373 /// <since_tizen> 6 </since_tizen>
374 public float MaxValue
388 /// Gets or sets the current value of slider.
390 /// <since_tizen> 6 </since_tizen>
391 public float CurrentValue
405 /// Gets or sets the size of the thumb image object.
407 /// <since_tizen> 6 </since_tizen>
408 public Size ThumbSize
412 return thumbImage?.Size;
416 if (null != thumbImage)
418 thumbImage.Size = value;
419 sliderStyle.Thumb.Size = value;
425 /// Gets or sets the resource url of the thumb image object.
427 /// <since_tizen> 6 </since_tizen>
428 public string ThumbImageURL
432 return thumbImage?.ResourceUrl;
436 if (null != thumbImage)
438 thumbImage.ResourceUrl = value;
439 sliderStyle.Thumb.ResourceUrl = value;
445 /// Gets or sets the resource url selector of the thumb image object.
446 /// Getter returns copied selector value if exist, null otherwise.
448 /// <exception cref="NullReferenceException">Thrown when setting null value.</exception>
449 /// <since_tizen> 6 </since_tizen>
450 public StringSelector ThumbImageURLSelector
452 get => thumbImage == null ? null : new StringSelector((Selector<string>)thumbImage.GetValue(ImageView.ResourceUrlSelectorProperty));
455 if (value == null || thumbImage == null)
457 throw new NullReferenceException("Slider.ThumbImageURLSelector is null");
461 thumbImage.SetValue(ImageView.ResourceUrlSelectorProperty, value);
467 /// Gets or sets the color of the background track image object.
469 /// <since_tizen> 6 </since_tizen>
470 public Color BgTrackColor
474 return bgTrackImage?.BackgroundColor;
478 if (null != bgTrackImage)
480 bgTrackImage.BackgroundColor = value;
481 sliderStyle.Track.BackgroundColor = value;
487 /// Gets or sets the color of the slided track image object.
489 /// <since_tizen> 6 </since_tizen>
490 public Color SlidedTrackColor
494 return slidedTrackImage?.BackgroundColor;
498 if (null != slidedTrackImage)
500 slidedTrackImage.BackgroundColor = value;
501 sliderStyle.Progress.BackgroundColor = value;
507 /// Gets or sets the thickness value of the track.
509 /// <since_tizen> 6 </since_tizen>
510 public uint TrackThickness
514 return (uint)GetValue(TrackThicknessProperty);
518 SetValue(TrackThicknessProperty, value);
523 /// Gets or sets the resource url of the low indicator image object.
525 /// <since_tizen> 6 </since_tizen>
526 public string LowIndicatorImageURL
530 return lowIndicatorImage?.ResourceUrl;
534 if (null == lowIndicatorImage) lowIndicatorImage = new ImageView();
535 lowIndicatorImage.ResourceUrl = value;
536 sliderStyle.LowIndicatorImage.ResourceUrl = value;
541 /// Gets or sets the resource url of the high indicator image object.
543 /// <since_tizen> 6 </since_tizen>
544 public string HighIndicatorImageURL
548 return highIndicatorImage?.ResourceUrl;
552 if (null == highIndicatorImage) highIndicatorImage = new ImageView();
553 highIndicatorImage.ResourceUrl = value;
554 sliderStyle.HighIndicatorImage.ResourceUrl = value;
559 /// Gets or sets the text content of the low indicator text object.
561 /// <since_tizen> 6 </since_tizen>
562 public string LowIndicatorTextContent
566 return lowIndicatorText?.Text;
570 if (null != lowIndicatorText)
572 lowIndicatorText.Text= value;
573 sliderStyle.LowIndicator.Text= value;
579 /// Gets or sets the text content of the high indicator text object.
581 /// <since_tizen> 6 </since_tizen>
582 public string HighIndicatorTextContent
586 return highIndicatorText?.Text;
590 if (null != highIndicatorText)
592 highIndicatorText.Text = value;
593 sliderStyle.HighIndicator.Text = value;
599 /// Gets or sets the size of the low indicator object(image or text).
601 /// <since_tizen> 6 </since_tizen>
602 public Size LowIndicatorSize
606 return lowIndicatorSize;
610 lowIndicatorSize = value;
611 UpdateLowIndicatorSize();
613 UpdateBgTrackPosition();
619 /// Gets or sets the size of the high indicator object(image or text).
621 /// <since_tizen> 6 </since_tizen>
622 public Size HighIndicatorSize
626 return highIndicatorText?.Size;
630 if (null != highIndicatorText)
632 highIndicatorText.Size = value;
633 sliderStyle.HighIndicator.Size = value;
639 /// Gets or sets the value of the space between track and indicator.
641 /// <since_tizen> 6 </since_tizen>
642 public uint SpaceBetweenTrackAndIndicator
646 return (uint)GetValue(SpaceBetweenTrackAndIndicatorProperty);
650 SetValue(SpaceBetweenTrackAndIndicatorProperty, value);
654 private Extents spaceBetweenTrackAndIndicator
658 if (null == _spaceBetweenTrackAndIndicator)
660 _spaceBetweenTrackAndIndicator = new Extents((ushort start, ushort end, ushort top, ushort bottom) =>
662 Extents extents = new Extents(start, end, top, bottom);
663 _spaceBetweenTrackAndIndicator.CopyFrom(extents);
667 return _spaceBetweenTrackAndIndicator;
671 private IndicatorType privateIndicatorType
675 return indicatorType;
679 if (indicatorType == value)
683 indicatorType = value;
684 RelayoutBaseComponent(false);
686 UpdateBgTrackPosition();
691 private uint privateTrackThickness
695 return trackThickness ?? 0;
699 trackThickness = value;
700 if (bgTrackImage != null)
702 if (direction == DirectionType.Horizontal)
704 bgTrackImage.SizeHeight = (float)trackThickness.Value;
706 else if (direction == DirectionType.Vertical)
708 bgTrackImage.SizeWidth = (float)trackThickness.Value;
711 if (slidedTrackImage != null)
713 if (direction == DirectionType.Horizontal)
715 slidedTrackImage.SizeHeight = (float)trackThickness.Value;
717 else if (direction == DirectionType.Vertical)
719 slidedTrackImage.SizeWidth = (float)trackThickness.Value;
725 private uint privateSpaceBetweenTrackAndIndicator
729 return privateTrackPadding.Start;
733 ushort val = (ushort)value;
734 privateTrackPadding = new Extents(val, val, val, val);
738 private Extents privateTrackPadding
742 return spaceBetweenTrackAndIndicator;
746 spaceBetweenTrackAndIndicator.CopyFrom(value);
747 UpdateComponentByIndicatorTypeChanged();
749 UpdateBgTrackPosition();
755 /// Focus gained callback.
757 /// <since_tizen> 8 </since_tizen>
758 public override void OnFocusGained()
760 //State = ControlStates.Focused;
761 UpdateState(true, isPressed);
762 base.OnFocusGained();
766 /// Focus Lost callback.
768 /// <since_tizen> 8 </since_tizen>
769 public override void OnFocusLost()
771 //State = ControlStates.Normal;
772 UpdateState(false, isPressed);
777 /// Apply style to scrollbar.
779 /// <param name="viewStyle">The style to apply.</param>
780 /// <since_tizen> 8 </since_tizen>
781 public override void ApplyStyle(ViewStyle viewStyle)
783 base.ApplyStyle(viewStyle);
785 SliderStyle sliderStyle = viewStyle as SliderStyle;
787 if (null != sliderStyle?.Progress)
789 CreateSlidedTrack().ApplyStyle(sliderStyle.Progress);
792 if (null != sliderStyle?.LowIndicator)
794 CreateLowIndicatorText().ApplyStyle(sliderStyle.LowIndicator);
797 if (null != sliderStyle?.HighIndicator)
799 CreateHighIndicatorText().ApplyStyle(sliderStyle.HighIndicator);
802 if (null != sliderStyle?.Track)
804 CreateBackgroundTrack().ApplyStyle(sliderStyle.Track);
807 if (null != sliderStyle?.Thumb)
809 CreateThumb().ApplyStyle(sliderStyle.Thumb);
812 EnableControlStatePropagation = true;
816 /// Get Slider style.
818 /// <returns>The default slider style.</returns>
819 /// <since_tizen> 8 </since_tizen>
820 protected override ViewStyle CreateViewStyle()
822 return new SliderStyle();
828 /// <param name="type">Dispose type.</param>
829 /// <since_tizen> 6 </since_tizen>
830 protected override void Dispose(DisposeTypes type)
837 if (type == DisposeTypes.Explicit)
839 if (null != panGestureDetector)
841 if (null != thumbImage)
843 panGestureDetector.Detach(thumbImage);
845 panGestureDetector.Detected -= OnPanGestureDetected;
846 panGestureDetector.Dispose();
847 panGestureDetector = null;
850 if (null != thumbImage)
852 thumbImage.TouchEvent -= OnTouchEventForThumb;
853 Utility.Dispose(thumbImage);
855 Utility.Dispose(slidedTrackImage);
856 if (null != bgTrackImage)
858 bgTrackImage.TouchEvent -= OnTouchEventForBgTrack;
859 Utility.Dispose(bgTrackImage);
861 Utility.Dispose(lowIndicatorImage);
862 Utility.Dispose(highIndicatorImage);
863 Utility.Dispose(lowIndicatorText);
864 Utility.Dispose(highIndicatorText);
871 /// Update Slider by style.
873 /// <since_tizen> 6 </since_tizen>
874 /// This will be public opened in tizen_5.5 after ACR done. Before ACR, need to be hidden as inhouse API.
875 [EditorBrowsable(EditorBrowsableState.Never)]
876 protected override void OnUpdate()
878 RelayoutBaseComponent();
880 UpdateComponentByIndicatorTypeChanged();
882 UpdateBgTrackPosition();
883 UpdateLowIndicatorSize();
888 /// Theme change callback when theme is changed, this callback will be trigger.
890 /// <param name="sender">The sender</param>
891 /// <param name="e">The event data</param>
892 [EditorBrowsable(EditorBrowsableState.Never)]
893 protected override void OnThemeChangedEvent(object sender, StyleManager.ThemeChangeEventArgs e)
895 SliderStyle sliderStyle = StyleManager.Instance.GetViewStyle(StyleName) as SliderStyle;
896 if (sliderStyle != null)
898 ApplyStyle(sliderStyle);
903 private void CalculateCurrentValueByGesture(float offset)
905 currentSlidedOffset += offset;
907 if (currentSlidedOffset <= 0)
911 else if (currentSlidedOffset >= BgTrackLength())
917 int bgTrackLength = BgTrackLength();
918 if (bgTrackLength != 0)
920 curValue = ((currentSlidedOffset / (float)bgTrackLength) * (float)(maxValue - minValue)) + minValue;
923 if (valueChangedHandler != null)
925 ValueChangedArgs args = new ValueChangedArgs();
926 args.CurrentValue = curValue;
927 valueChangedHandler(this, args);
930 if (sliderValueChangedHandler != null)
932 SliderValueChangedEventArgs args = new SliderValueChangedEventArgs();
933 args.CurrentValue = curValue;
934 sliderValueChangedHandler(this, args);
938 private bool OnTouchEventForBgTrack(object source, TouchEventArgs e)
940 PointStateType state = e.Touch.GetState(0);
941 if (state == PointStateType.Down)
943 Vector2 pos = e.Touch.GetLocalPosition(0);
944 CalculateCurrentValueByTouch(pos);
946 if (null != slidingFinishedHandler)
948 SlidingFinishedArgs args = new SlidingFinishedArgs();
949 args.CurrentValue = curValue;
950 slidingFinishedHandler(this, args);
953 if (null !=sliderSlidingFinishedHandler)
955 SliderSlidingFinishedEventArgs args = new SliderSlidingFinishedEventArgs();
956 args.CurrentValue = curValue;
957 sliderSlidingFinishedHandler(this, args);
963 private bool OnTouchEventForThumb(object source, TouchEventArgs e)
965 PointStateType state = e.Touch.GetState(0);
966 if (state == PointStateType.Down)
968 UpdateState(isFocused, true);
970 else if (state == PointStateType.Up)
972 UpdateState(isFocused, false);
977 private void CalculateCurrentValueByTouch(Vector2 pos)
979 int bgTrackLength = BgTrackLength();
980 if (direction == DirectionType.Horizontal)
982 currentSlidedOffset = pos.X;
984 else if (direction == DirectionType.Vertical)
986 currentSlidedOffset = bgTrackLength - pos.Y;
988 if (bgTrackLength != 0)
990 curValue = ((currentSlidedOffset / (float)bgTrackLength) * (maxValue - minValue)) + minValue;
991 if (null != valueChangedHandler)
993 ValueChangedArgs args = new ValueChangedArgs();
994 args.CurrentValue = curValue;
995 valueChangedHandler(this, args);
998 if (null != sliderValueChangedHandler)
1000 SliderValueChangedEventArgs args = new SliderValueChangedEventArgs();
1001 args.CurrentValue = curValue;
1002 sliderValueChangedHandler(this, args);
1007 private void UpdateState(bool isFocusedNew, bool isPressedNew)
1009 if (isFocused == isFocusedNew && isPressed == isPressedNew)
1013 if (thumbImage == null || Style == null)
1017 isFocused = isFocusedNew;
1018 isPressed = isPressedNew;
1020 if (!isFocused && !isPressed)
1022 ControlState = ControlState.Normal;
1023 if (stateChangedHandler != null)
1025 StateChangedArgs args = new StateChangedArgs();
1026 args.CurrentState = (ControlStates)ControlStates.Normal;
1027 stateChangedHandler(this, args);
1032 ControlState = ControlState.Pressed;
1034 if (stateChangedHandler != null)
1036 StateChangedArgs args = new StateChangedArgs();
1037 args.CurrentState = (ControlStates)ControlStates.Pressed;
1038 stateChangedHandler(this, args);
1041 else if (!isPressed && isFocused)
1043 ControlState = ControlState.Focused;
1045 if (stateChangedHandler != null)
1047 StateChangedArgs args = new StateChangedArgs();
1048 args.CurrentState = (ControlStates)ControlStates.Focused;
1049 stateChangedHandler(this, args);
1054 private void UpdateComponentByIndicatorTypeChanged()
1056 IndicatorType type = CurrentIndicatorType();
1057 if (type == IndicatorType.None)
1059 if (lowIndicatorImage != null)
1061 lowIndicatorImage.Hide();
1063 if (highIndicatorImage != null)
1065 highIndicatorImage.Hide();
1067 if (lowIndicatorText != null)
1069 lowIndicatorText.Hide();
1071 if (highIndicatorText != null)
1073 highIndicatorText.Hide();
1076 else if (type == IndicatorType.Image)
1078 if (lowIndicatorImage != null)
1080 lowIndicatorImage.Show();
1082 if (highIndicatorImage != null)
1084 highIndicatorImage.Show();
1086 if (lowIndicatorText != null)
1088 lowIndicatorText.Hide();
1090 if (highIndicatorText != null)
1092 highIndicatorText.Hide();
1095 else if (type == IndicatorType.Text)
1097 if (lowIndicatorText != null)
1099 lowIndicatorText.Show();
1101 if (highIndicatorText != null)
1103 highIndicatorText.Show();
1105 if (lowIndicatorImage != null)
1107 lowIndicatorImage.Hide();
1109 if (highIndicatorImage != null)
1111 highIndicatorImage.Hide();
1117 /// Value Changed event data.
1119 /// <since_tizen> 6 </since_tizen>
1120 [Obsolete("Deprecated in API8; Will be removed in API10. Please use SliderValueChangedEventArgs instead.")]
1121 public class ValueChangedArgs : EventArgs
1126 /// <since_tizen> 6 </since_tizen>
1127 [Obsolete("Deprecated in API8; Will be removed in API10. Please use SliderValueChangedEventArgs.CurrentValue instead.")]
1128 public float CurrentValue;
1132 /// Value Changed event data.
1134 /// <since_tizen> 6 </since_tizen>
1135 [Obsolete("Deprecated in API8; Will be removed in API10. Please use SliderSlidingFinishedEventArgs instead.")]
1136 public class SlidingFinishedArgs : EventArgs
1141 /// <since_tizen> 6 </since_tizen>
1142 [Obsolete("Deprecated in API8; Will be removed in API10. Please use SliderSlidingFinishedEventArgs.CurrentValue instead.")]
1143 public float CurrentValue;
1147 /// State Changed event data.
1149 /// <since_tizen> 6 </since_tizen>
1150 [Obsolete("Deprecated in API8; Will be removed in API10. Please use View.ControlStateChangedEventArgs")]
1151 public class StateChangedArgs : EventArgs
1156 /// <since_tizen> 6 </since_tizen>
1157 [Obsolete("Deprecated in API8; Will be removed in API10")]
1158 public ControlStates CurrentState;