2 * Copyright (c) 2016 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 %define SLIDER_EVENTHANDLER_TYPEMAP_EVENTARG(NameSpace, ClassName)
19 %typemap(csimports) NameSpace::ClassName %{
21 using System.Runtime.InteropServices;
26 %define SLIDER_EVENTHANDLER_TYPEMAP_HELPER(NameSpace, ClassName)
27 %typemap(cscode) NameSpace::ClassName %{
29 public class ValueChangedEventArgs : EventArgs
31 private Slider _slider;
32 private float _slideValue;
46 public float SlideValue
59 public class SlidingFinishedEventArgs : EventArgs
61 private Slider _slider;
62 private float _slideValue;
76 public float SlideValue
89 public class MarkReachedEventArgs : EventArgs
91 private Slider _slider;
92 private int _slideValue;
106 public int SlideValue
119 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
120 public delegate bool ValueChangedEventHandler(object source, ValueChangedEventArgs e);
122 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
123 public delegate bool SlidingFinishedEventHandler(object source, SlidingFinishedEventArgs e);
125 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
126 public delegate bool MarkReachedEventHandler(object source, MarkReachedEventArgs e);
128 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
129 private delegate bool ValueChangedCallbackDelegate(IntPtr slider, float slideValue);
130 private ValueChangedEventHandler _sliderValueChangedEventHandler;
131 private ValueChangedCallbackDelegate _sliderValueChangedCallbackDelegate;
133 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
134 private delegate bool SlidingFinishedCallbackDelegate(IntPtr slider, float slideValue);
135 private SlidingFinishedEventHandler _sliderSlidingFinishedEventHandler;
136 private SlidingFinishedCallbackDelegate _sliderSlidingFinishedCallbackDelegate;
138 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
139 private delegate bool MarkReachedCallbackDelegate(IntPtr slider, int slideValue);
140 private MarkReachedEventHandler _sliderMarkReachedEventHandler;
141 private MarkReachedCallbackDelegate _sliderMarkReachedCallbackDelegate;
143 public event ValueChangedEventHandler ValueChanged
149 // Restricted to only one listener
150 if (_sliderValueChangedEventHandler == null)
152 _sliderValueChangedEventHandler += value;
154 _sliderValueChangedCallbackDelegate = new ValueChangedCallbackDelegate(OnValueChanged);
155 this.ValueChangedSignal().Connect(_sliderValueChangedCallbackDelegate);
164 if (_sliderValueChangedEventHandler != null)
166 this.ValueChangedSignal().Disconnect(_sliderValueChangedCallbackDelegate);
169 _sliderValueChangedEventHandler -= value;
174 // Callback for Slider ValueChanged signal
175 private bool OnValueChanged(IntPtr slider, float slideValue)
177 ValueChangedEventArgs e = new ValueChangedEventArgs();
179 // Populate all members of "e" (ValueChangedEventArgs) with real page
180 e.Slider = Slider.GetSliderFromPtr( slider );
181 e.SlideValue = slideValue;
183 if (_sliderValueChangedEventHandler != null)
185 //here we send all page to user event handlers
186 return _sliderValueChangedEventHandler(this, e);
191 public event SlidingFinishedEventHandler SlidingFinished
197 // Restricted to only one listener
198 if (_sliderSlidingFinishedEventHandler == null)
200 _sliderSlidingFinishedEventHandler += value;
202 _sliderSlidingFinishedCallbackDelegate = new SlidingFinishedCallbackDelegate(OnSlidingFinished);
203 this.SlidingFinishedSignal().Connect(_sliderSlidingFinishedCallbackDelegate);
212 if (_sliderSlidingFinishedEventHandler != null)
214 this.SlidingFinishedSignal().Disconnect(_sliderSlidingFinishedCallbackDelegate);
217 _sliderSlidingFinishedEventHandler -= value;
222 // Callback for Slider SlidingFinished signal
223 private bool OnSlidingFinished(IntPtr slider, float slideValue)
225 SlidingFinishedEventArgs e = new SlidingFinishedEventArgs();
227 // Populate all members of "e" (SlidingFinishedEventArgs) with real page
228 e.Slider = Slider.GetSliderFromPtr( slider );
229 e.SlideValue = slideValue;
231 if (_sliderSlidingFinishedEventHandler != null)
233 //here we send all page to user event handlers
234 return _sliderSlidingFinishedEventHandler(this, e);
239 public event MarkReachedEventHandler MarkReached
245 // Restricted to only one listener
246 if (_sliderMarkReachedEventHandler == null)
248 _sliderMarkReachedEventHandler += value;
250 _sliderMarkReachedCallbackDelegate = new MarkReachedCallbackDelegate(OnMarkReached);
251 this.MarkReachedSignal().Connect(_sliderMarkReachedCallbackDelegate);
260 if (_sliderMarkReachedEventHandler != null)
262 this.MarkReachedSignal().Disconnect(_sliderMarkReachedCallbackDelegate);
265 _sliderMarkReachedEventHandler -= value;
270 // Callback for Slider MarkReached signal
271 private bool OnMarkReached(IntPtr slider, int slideValue)
273 MarkReachedEventArgs e = new MarkReachedEventArgs();
275 // Populate all members of "e" (MarkReachedEventArgs) with real page
276 e.Slider = Slider.GetSliderFromPtr( slider );
277 e.SlideValue = slideValue;
279 if (_sliderMarkReachedEventHandler != null)
281 //here we send all page to user event handlers
282 return _sliderMarkReachedEventHandler(this, e);
287 public static ClassName Get ## ClassName ## FromPtr(global::System.IntPtr cPtr) {
288 ClassName ret = new ClassName(cPtr, false);
289 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
298 %define DALI_SLIDER_EVENTHANDLER_PARAM( NameSpace, ClassName)
300 SLIDER_EVENTHANDLER_TYPEMAP_EVENTARG( NameSpace, ClassName);
301 SLIDER_EVENTHANDLER_TYPEMAP_HELPER( NameSpace, ClassName);
307 DALI_SLIDER_EVENTHANDLER_PARAM( Dali::Toolkit, Slider);