Merge "DALi Version 1.2.40" into devel/master
[platform/core/uifw/dali-toolkit.git] / plugins / dali-swig / SWIG / events / progress-bar-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 PROGRESS_BAR_EVENTHANDLER_TYPEMAP_EVENTARG(NameSpace, ClassName)
19 %typemap(csimports) NameSpace::ClassName %{
20 using System;
21 using System.Runtime.InteropServices;
22
23 %}
24 %enddef
25
26 %define PROGRESS_BAR_EVENTHANDLER_TYPEMAP_HELPER(NameSpace, ClassName)
27 %typemap(cscode) NameSpace::ClassName %{
28
29 public class ValueChangedEventArgs : EventArgs
30 {
31    private ProgressBar _progressBar;
32    private float _progressValue;
33    private float _secondaryProgressValue;
34
35    public ProgressBar ProgressBar
36    {
37       get
38       {
39          return _progressBar;
40       }
41       set
42       {
43          _progressBar = value;
44       }
45    }
46
47    public float ProgressValue
48    {
49       get
50       {
51          return _progressValue;
52       }
53       set
54       {
55          _progressValue = value;
56       }
57    }
58
59    public float SecondaryProgressValue
60    {
61       get
62       {
63          return _secondaryProgressValue;
64       }
65       set
66       {
67          _secondaryProgressValue = value;
68       }
69    }
70
71 }
72
73   [UnmanagedFunctionPointer(CallingConvention.StdCall)]
74   private delegate void ValueChangedCallbackDelegate(IntPtr progressBar, float progressValue, float secondaryProgressValue);
75   private DaliEventHandler<object,ValueChangedEventArgs> _progressBarValueChangedEventHandler;
76   private ValueChangedCallbackDelegate _progressBarValueChangedCallbackDelegate;
77
78   public event DaliEventHandler<object,ValueChangedEventArgs> ValueChanged
79   {
80      add
81      {
82         lock(this)
83         {
84            // Restricted to only one listener
85            if (_progressBarValueChangedEventHandler == null)
86            {
87               _progressBarValueChangedEventHandler += value;
88
89               _progressBarValueChangedCallbackDelegate = new ValueChangedCallbackDelegate(OnValueChanged);
90               this.ValueChangedSignal().Connect(_progressBarValueChangedCallbackDelegate);
91            }
92         }
93      }
94
95      remove
96      {
97         lock(this)
98         {
99            if (_progressBarValueChangedEventHandler != null)
100            {
101               this.ValueChangedSignal().Disconnect(_progressBarValueChangedCallbackDelegate);
102            }
103
104            _progressBarValueChangedEventHandler -= value;
105         }
106      }
107   }
108
109   // Callback for ProgressBar ValueChanged signal
110   private void OnValueChanged(IntPtr progressBar, float progressValue, float secondaryProgressValue)
111   {
112      ValueChangedEventArgs e = new ValueChangedEventArgs();
113
114      // Populate all members of "e" (ValueChangedEventArgs) with real page
115      e.ProgressBar = ProgressBar.GetProgressBarFromPtr( progressBar );
116      e.ProgressValue = progressValue;
117      e.SecondaryProgressValue = secondaryProgressValue;
118
119      if (_progressBarValueChangedEventHandler != null)
120      {
121        _progressBarValueChangedEventHandler(this, e);
122      }
123   }
124
125   public static ClassName Get ## ClassName ## FromPtr(global::System.IntPtr cPtr) {
126     ClassName ret = new ClassName(cPtr, false);
127    if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
128     return ret;
129   }
130
131 %}
132
133 %enddef
134
135
136 %define DALI_PROGRESS_BAR_EVENTHANDLER_PARAM( NameSpace, ClassName)
137
138   PROGRESS_BAR_EVENTHANDLER_TYPEMAP_EVENTARG( NameSpace, ClassName);
139   PROGRESS_BAR_EVENTHANDLER_TYPEMAP_HELPER( NameSpace, ClassName);
140
141 %enddef
142
143 namespace Dali
144 {
145   DALI_PROGRESS_BAR_EVENTHANDLER_PARAM( Dali::Toolkit, ProgressBar);
146 }