aa601eb6fadc8a58d43f7ec9b0cecdf536257d8f
[platform/core/uifw/dali-toolkit.git] / plugins / dali-swig / SWIG / events / resourceimage-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 ResourceImage_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 ResourceImage_EVENTHANDLER_TYPEMAP_HELPER(NameSpace, ClassName)
27 %typemap(cscode) NameSpace::ClassName %{
28
29 public class LoadingFinishedEventArgs : EventArgs
30 {
31    private ResourceImage _resourceImage;
32
33    public ResourceImage ResourceImage
34    {
35       get
36       {
37          return _resourceImage;
38       }
39       set
40       {
41          _resourceImage = value;
42       }
43    }
44 }
45
46   [UnmanagedFunctionPointer(CallingConvention.StdCall)]
47   public delegate void LoadingFinishedEventHandler(object source, LoadingFinishedEventArgs e);
48
49   [UnmanagedFunctionPointer(CallingConvention.StdCall)]
50   private delegate void LoadingFinishedEventCallbackDelegate(IntPtr ResourceImage);
51   private LoadingFinishedEventHandler _resourceImageLoadingFinishedEventHandler;
52   private LoadingFinishedEventCallbackDelegate _resourceImageLoadingFinishedEventCallbackDelegate;
53
54   public event LoadingFinishedEventHandler LoadingFinished
55   {
56      add
57      {
58         lock(this)
59         {
60            // Restricted to only one listener
61            if (_resourceImageLoadingFinishedEventHandler == null)
62            {
63               _resourceImageLoadingFinishedEventHandler += value;
64
65               _resourceImageLoadingFinishedEventCallbackDelegate = new LoadingFinishedEventCallbackDelegate(OnLoadingFinished);
66               this.LoadingFinishedSignal().Connect(_resourceImageLoadingFinishedEventCallbackDelegate);
67            }
68         }
69      }
70
71      remove
72      {
73         lock(this)
74         {
75            if (_resourceImageLoadingFinishedEventHandler != null)
76            {
77               this.LoadingFinishedSignal().Disconnect(_resourceImageLoadingFinishedEventCallbackDelegate);
78            }
79
80            _resourceImageLoadingFinishedEventHandler -= value;
81         }
82      }
83   }
84
85   // Callback for ResourceImage LoadingFinishedSignal
86   private void OnLoadingFinished(IntPtr data)
87   {
88      LoadingFinishedEventArgs e = new LoadingFinishedEventArgs();
89
90      // Populate all members of "e" (LoadingFinishedEventArgs) with real data
91      e.ResourceImage = ResourceImage.GetResourceImageFromPtr(data);
92
93      if (_resourceImageLoadingFinishedEventHandler != null)
94      {
95         //here we send all data to user event handlers
96         _resourceImageLoadingFinishedEventHandler(this, e);
97      }
98   }
99
100
101 public static ClassName Get ## ClassName ## FromPtr(global::System.IntPtr cPtr) {
102     ClassName ret = new ClassName(cPtr, false);
103    if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
104     return ret;
105   }
106
107 %}
108
109 %enddef
110
111
112 %define DALI_resourceImage_EVENTHANDLER_PARAM( NameSpace, ClassName)
113   ResourceImage_EVENTHANDLER_TYPEMAP_EVENTARG( NameSpace, ClassName);
114   ResourceImage_EVENTHANDLER_TYPEMAP_HELPER( NameSpace, ClassName);
115 %enddef
116
117 namespace Dali
118 {
119   DALI_resourceImage_EVENTHANDLER_PARAM( Dali, ResourceImage);
120 }