DALi C# binding - Write pure C# Color & Position classes and use typemaps to do the...
[platform/core/uifw/dali-toolkit.git] / plugins / dali-swig / SWIG / events / scrollbar-event.i
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd.
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
18 %define SCROLLBAR_EVENTHANDLER_TYPEMAP_EVENTARG(NameSpace, ClassName)
19 %typemap(csimports) NameSpace::ClassName %{
20 using System;
21 using System.Runtime.InteropServices;
22
23 %}
24
25 %enddef
26
27
28 %define SCROLLBAR_EVENTHANDLER_TYPEMAP_HELPER(NameSpace, ClassName)
29 %typemap(cscode) NameSpace::ClassName %{
30
31
32 public class PanFinishedEventArgs : EventArgs
33 {
34 }
35
36 public class ScrollPositionIntervalReachedEventArgs : EventArgs
37 {
38    private float _currentScrollPosition;
39
40    public float CurrentScrollPosition
41    {
42       get
43       {
44          return _currentScrollPosition;
45       }
46       set
47       {
48          _currentScrollPosition = value;
49       }
50    }
51 }
52
53   [UnmanagedFunctionPointer(CallingConvention.StdCall)]
54   private delegate void PanFinishedEventCallbackDelegate();
55   private DaliEventHandler<object,PanFinishedEventArgs> _scrollBarPanFinishedEventHandler;
56   private PanFinishedEventCallbackDelegate _scrollBarPanFinishedEventCallbackDelegate;
57
58   [UnmanagedFunctionPointer(CallingConvention.StdCall)]
59   private delegate void ScrollPositionIntervalReachedEventCallbackDelegate();
60   private DaliEventHandler<object,ScrollPositionIntervalReachedEventArgs> _scrollBarScrollPositionIntervalReachedEventHandler;
61   private ScrollPositionIntervalReachedEventCallbackDelegate _scrollBarScrollPositionIntervalReachedEventCallbackDelegate;
62
63   public event DaliEventHandler<object,PanFinishedEventArgs> PanFinished
64   {
65      add
66      {
67         lock(this)
68         {
69            // Restricted to only one listener
70            if (_scrollBarPanFinishedEventHandler == null)
71            {
72               _scrollBarPanFinishedEventHandler += value;
73
74               _scrollBarPanFinishedEventCallbackDelegate = new PanFinishedEventCallbackDelegate(OnScrollBarPanFinished);
75               this.PanFinishedSignal().Connect(_scrollBarPanFinishedEventCallbackDelegate);
76            }
77         }
78      }
79
80      remove
81      {
82         lock(this)
83         {
84            if (_scrollBarPanFinishedEventHandler != null)
85            {
86               this.PanFinishedSignal().Disconnect(_scrollBarPanFinishedEventCallbackDelegate);
87            }
88
89            _scrollBarPanFinishedEventHandler -= value;
90         }
91      }
92   }
93
94   // Callback for ScrollBar PanFinishedSignal
95   private void OnScrollBarPanFinished()
96   {
97      PanFinishedEventArgs e = new PanFinishedEventArgs();
98
99      if (_scrollBarPanFinishedEventHandler != null)
100      {
101         //here we send all data to user event handlers
102         _scrollBarPanFinishedEventHandler(this, e);
103      }
104   }
105
106
107   public event DaliEventHandler<object,ScrollPositionIntervalReachedEventArgs> ScrollPositionIntervalReached
108   {
109      add
110      {
111         lock(this)
112         {
113            // Restricted to only one listener
114            if (_scrollBarScrollPositionIntervalReachedEventHandler == null)
115            {
116               _scrollBarScrollPositionIntervalReachedEventHandler += value;
117
118               _scrollBarScrollPositionIntervalReachedEventCallbackDelegate = new ScrollPositionIntervalReachedEventCallbackDelegate(OnScrollBarScrollPositionIntervalReached);
119               this.ScrollPositionIntervalReachedSignal().Connect(_scrollBarScrollPositionIntervalReachedEventCallbackDelegate);
120            }
121         }
122      }
123
124      remove
125      {
126         lock(this)
127         {
128            if (_scrollBarScrollPositionIntervalReachedEventHandler != null)
129            {
130               this.ScrollPositionIntervalReachedSignal().Disconnect(_scrollBarScrollPositionIntervalReachedEventCallbackDelegate);
131            }
132
133            _scrollBarScrollPositionIntervalReachedEventHandler -= value;
134         }
135      }
136   }
137
138   // Callback for ScrollBar ScrollPositionIntervalReachedSignal
139   private void OnScrollBarScrollPositionIntervalReached()
140   {
141      ScrollPositionIntervalReachedEventArgs e = new ScrollPositionIntervalReachedEventArgs();
142
143      if (_scrollBarScrollPositionIntervalReachedEventHandler != null)
144      {
145         //here we send all data to user event handlers
146         _scrollBarScrollPositionIntervalReachedEventHandler(this, e);
147      }
148   }
149
150 /* Properties earlier added by Ruby Script */
151
152   public string ScrollDirection
153   {
154     get
155     {
156       string temp;
157       GetProperty( ScrollBar.Property.SCROLL_DIRECTION).Get( out temp );
158       return temp;
159     }
160     set
161     {
162       SetProperty( ScrollBar.Property.SCROLL_DIRECTION, new Dali.Property.Value( value ) );
163     }
164   }
165   public string IndicatorHeightPolicy
166   {
167     get
168     {
169       string temp;
170       GetProperty( ScrollBar.Property.INDICATOR_HEIGHT_POLICY).Get( out temp );
171       return temp;
172     }
173     set
174     {
175       SetProperty( ScrollBar.Property.INDICATOR_HEIGHT_POLICY, new Dali.Property.Value( value ) );
176     }
177   }
178   public float IndicatorFixedHeight
179   {
180     get
181     {
182       float temp = 0.0f;
183       GetProperty( ScrollBar.Property.INDICATOR_FIXED_HEIGHT).Get( ref temp );
184       return temp;
185     }
186     set
187     {
188       SetProperty( ScrollBar.Property.INDICATOR_FIXED_HEIGHT, new Dali.Property.Value( value ) );
189     }
190   }
191   public float IndicatorShowDuration
192   {
193     get
194     {
195       float temp = 0.0f;
196       GetProperty( ScrollBar.Property.INDICATOR_SHOW_DURATION).Get( ref temp );
197       return temp;
198     }
199     set
200     {
201       SetProperty( ScrollBar.Property.INDICATOR_SHOW_DURATION, new Dali.Property.Value( value ) );
202     }
203   }
204   public float IndicatorHideDuration
205   {
206     get
207     {
208       float temp = 0.0f;
209       GetProperty( ScrollBar.Property.INDICATOR_HIDE_DURATION).Get( ref temp );
210       return temp;
211     }
212     set
213     {
214       SetProperty( ScrollBar.Property.INDICATOR_HIDE_DURATION, new Dali.Property.Value( value ) );
215     }
216   }
217   public Dali.Property.Array ScrollPositionIntervals
218   {
219     get
220     {
221       Dali.Property.Array temp = new Dali.Property.Array();
222       GetProperty( ScrollBar.Property.SCROLL_POSITION_INTERVALS).Get(  temp );
223       return temp;
224     }
225     set
226     {
227       SetProperty( ScrollBar.Property.SCROLL_POSITION_INTERVALS, new Dali.Property.Value( value ) );
228     }
229   }
230   public float IndicatorMinimumHeight
231   {
232     get
233     {
234       float temp = 0.0f;
235       GetProperty( ScrollBar.Property.INDICATOR_MINIMUM_HEIGHT).Get( ref temp );
236       return temp;
237     }
238     set
239     {
240       SetProperty( ScrollBar.Property.INDICATOR_MINIMUM_HEIGHT, new Dali.Property.Value( value ) );
241     }
242   }
243   public float IndicatorStartPadding
244   {
245     get
246     {
247       float temp = 0.0f;
248       GetProperty( ScrollBar.Property.INDICATOR_START_PADDING).Get( ref temp );
249       return temp;
250     }
251     set
252     {
253       SetProperty( ScrollBar.Property.INDICATOR_START_PADDING, new Dali.Property.Value( value ) );
254     }
255   }
256   public float IndicatorEndPadding
257   {
258     get
259     {
260       float temp = 0.0f;
261       GetProperty( ScrollBar.Property.INDICATOR_END_PADDING).Get( ref temp );
262       return temp;
263     }
264     set
265     {
266       SetProperty( ScrollBar.Property.INDICATOR_END_PADDING, new Dali.Property.Value( value ) );
267     }
268   }
269 /* Properties ends */
270
271 %}
272 %enddef
273
274 %define DALI_SCROLLBAR_EVENTHANDLER_PARAM( NameSpace, ClassName)
275   SCROLLBAR_EVENTHANDLER_TYPEMAP_EVENTARG( NameSpace, ClassName);
276   SCROLLBAR_EVENTHANDLER_TYPEMAP_HELPER( NameSpace, ClassName);
277 %enddef
278
279 namespace Dali
280 {
281   DALI_SCROLLBAR_EVENTHANDLER_PARAM( Dali::Toolkit, ScrollBar);
282 }
283