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 CONTROL_EVENTHANDLER_TYPEMAP_EVENTARG(NameSpace, ClassName)
19 %typemap(csimports) NameSpace::ClassName %{
21 using System.Runtime.InteropServices;
27 %define CONTROL_EVENTHANDLER_TYPEMAP_HELPER(NameSpace, ClassName)
28 %typemap(cscode) NameSpace::ClassName %{
32 * @brief Event arguments that passed via KeyInputFocusGained signal
35 public class KeyInputFocusGainedEventArgs : EventArgs
40 * @brief View - is the view that gets Key Input Focus
57 * @brief Event arguments that passed via KeyInputFocusLost signal
60 public class KeyInputFocusLostEventArgs : EventArgs
65 * @brief View - is the view that loses Key Input Focus
82 * @brief Event arguments that passed via KeyEvent signal
85 public class KeyEventArgs : EventArgs
88 private KeyEvent _keyEvent;
91 * @brief View - is the view that recieves the keyevent.
107 * @brief KeyEvent - is the keyevent sent to the View.
110 public KeyEvent KeyEvent
124 * @brief Event arguments that passed via OnRelayout signal
127 public class OnRelayoutEventArgs : EventArgs
132 * @brief View - is the view that is being resized upon relayout
150 * @brief Event arguments that passed via Touch signal
153 public class TouchEventArgs : EventArgs
156 private TouchData _touchData;
159 * @brief View - is the view that is being touched
175 * @brief TouchData - contains the information of touch points
178 public TouchData TouchData
192 * @brief Event arguments that passed via Hover signal
195 public class HoverEventArgs : EventArgs
198 private HoverEvent _hoverEvent;
201 * @brief View - is the view that is being hovered
217 * @brief HoverEvent - contains touch points that represent the points
218 * that are currently being hovered or the points where a hover has stopped
221 public HoverEvent HoverEvent
235 * @brief Event arguments that passed via Wheel signal
238 public class WheelEventArgs : EventArgs
241 private WheelEvent _wheelEvent;
244 * @brief View - is the view that is being wheeled
260 * @brief WheelEvent - store a wheel rolling type : MOUSE_WHEEL or CUSTOM_WHEEL
263 public WheelEvent WheelEvent
277 * @brief Event arguments that passed via OnStage signal
280 public class OnStageEventArgs : EventArgs
285 * @brief View - is the view that is being connected to the stage
302 * @brief Event arguments that passed via OffStage signal
305 public class OffStageEventArgs : EventArgs
310 * @brief View - is the view that is being disconnected from the stage
326 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
327 private delegate void KeyInputFocusGainedCallbackDelegate(IntPtr control);
328 private DaliEventHandler<object,KeyInputFocusGainedEventArgs> _KeyInputFocusGainedEventHandler;
329 private KeyInputFocusGainedCallbackDelegate _KeyInputFocusGainedCallbackDelegate;
331 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
332 private delegate void KeyInputFocusLostCallbackDelegate(IntPtr control);
333 private DaliEventHandler<object,KeyInputFocusLostEventArgs> _KeyInputFocusLostEventHandler;
334 private KeyInputFocusLostCallbackDelegate _KeyInputFocusLostCallbackDelegate;
336 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
337 private delegate bool KeyCallbackDelegate(IntPtr control, IntPtr keyEvent);
338 private DaliEventHandlerWithReturnType<object,KeyEventArgs,bool> _KeyEventHandler;
339 private KeyCallbackDelegate _KeyCallbackDelegate;
341 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
342 private delegate void OnRelayoutEventCallbackDelegate(IntPtr control);
343 private DaliEventHandler<object,OnRelayoutEventArgs> _viewOnRelayoutEventHandler;
344 private OnRelayoutEventCallbackDelegate _viewOnRelayoutEventCallbackDelegate;
346 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
347 private delegate bool TouchCallbackDelegate(IntPtr view, IntPtr touchData);
348 private DaliEventHandlerWithReturnType<object,TouchEventArgs,bool> _viewTouchDataEventHandler;
349 private TouchCallbackDelegate _viewTouchDataCallbackDelegate;
351 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
352 private delegate bool HoverEventCallbackDelegate(IntPtr view, IntPtr hoverEvent);
353 private DaliEventHandlerWithReturnType<object,HoverEventArgs,bool> _viewHoverEventHandler;
354 private HoverEventCallbackDelegate _viewHoverEventCallbackDelegate;
356 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
357 private delegate bool WheelEventCallbackDelegate(IntPtr view, IntPtr wheelEvent);
358 private DaliEventHandlerWithReturnType<object,WheelEventArgs,bool> _viewWheelEventHandler;
359 private WheelEventCallbackDelegate _viewWheelEventCallbackDelegate;
361 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
362 private delegate void OnStageEventCallbackDelegate(IntPtr control);
363 private DaliEventHandler<object,OnStageEventArgs> _viewOnStageEventHandler;
364 private OnStageEventCallbackDelegate _viewOnStageEventCallbackDelegate;
366 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
367 private delegate void OffStageEventCallbackDelegate(IntPtr control);
368 private DaliEventHandler<object,OffStageEventArgs> _viewOffStageEventHandler;
369 private OffStageEventCallbackDelegate _viewOffStageEventCallbackDelegate;
372 * @brief Event for KeyInputFocusGained signal which can be used to subscribe/unsubscribe the event handler
373 * (in the type of KeyInputFocusGainedEventHandler-DaliEventHandler<object,KeyInputFocusGainedEventArgs>)
374 * provided by the user. KeyInputFocusGained signal is emitted when the control gets Key Input Focus.
376 public event DaliEventHandler<object,KeyInputFocusGainedEventArgs> KeyInputFocusGained
382 // Restricted to only one listener
383 if (_KeyInputFocusGainedEventHandler == null)
385 _KeyInputFocusGainedEventHandler += value;
386 Console.WriteLine("View Keyevent EVENT Locked....");
387 _KeyInputFocusGainedCallbackDelegate = new KeyInputFocusGainedCallbackDelegate(OnKeyInputFocusGained);
388 this.KeyInputFocusGainedSignal().Connect(_KeyInputFocusGainedCallbackDelegate);
397 if (_KeyInputFocusGainedEventHandler != null)
399 this.KeyInputFocusGainedSignal().Disconnect(_KeyInputFocusGainedCallbackDelegate);
402 _KeyInputFocusGainedEventHandler -= value;
407 private void OnKeyInputFocusGained(IntPtr view)
409 KeyInputFocusGainedEventArgs e = new KeyInputFocusGainedEventArgs();
410 Console.WriteLine("View Keyevent ....");
411 // Populate all members of "e" (KeyInputFocusGainedEventArgs) with real data
412 e.View = Dali.View.GetViewFromPtr(view);
414 if (_KeyInputFocusGainedEventHandler != null)
416 //here we send all data to user event handlers
417 _KeyInputFocusGainedEventHandler(this, e);
423 * @brief Event for KeyInputFocusLost signal which can be used to subscribe/unsubscribe the event handler
424 * (in the type of KeyInputFocusLostEventHandler-DaliEventHandler<object,KeyInputFocusLostEventArgs>)
425 * provided by the user. KeyInputFocusLost signal is emitted when the control loses Key Input Focus.
427 public event DaliEventHandler<object,KeyInputFocusLostEventArgs> KeyInputFocusLost
433 // Restricted to only one listener
434 if (_KeyInputFocusLostEventHandler == null)
436 _KeyInputFocusLostEventHandler += value;
438 _KeyInputFocusLostCallbackDelegate = new KeyInputFocusLostCallbackDelegate(OnKeyInputFocusLost);
439 this.KeyInputFocusLostSignal().Connect(_KeyInputFocusLostCallbackDelegate);
448 if (_KeyInputFocusLostEventHandler != null)
450 this.KeyInputFocusLostSignal().Disconnect(_KeyInputFocusLostCallbackDelegate);
453 _KeyInputFocusLostEventHandler -= value;
458 private void OnKeyInputFocusLost(IntPtr view)
460 KeyInputFocusLostEventArgs e = new KeyInputFocusLostEventArgs();
462 // Populate all members of "e" (KeyInputFocusLostEventArgs) with real data
463 e.View = Dali.View.GetViewFromPtr(view);
465 if (_KeyInputFocusLostEventHandler != null)
467 //here we send all data to user event handlers
468 _KeyInputFocusLostEventHandler(this, e);
473 * @brief Event for KeyPressed signal which can be used to subscribe/unsubscribe the event handler
474 * (in the type of KeyEventEventHandler-DaliEventHandlerWithReturnType<object,KeyEventArgs,bool>)
475 * provided by the user. KeyPressed signal is emitted when key event is received.
477 public event DaliEventHandlerWithReturnType<object,KeyEventArgs,bool> KeyPressed
483 // Restricted to only one listener
484 if (_KeyEventHandler == null)
486 _KeyEventHandler += value;
488 _KeyCallbackDelegate = new KeyCallbackDelegate(OnKeyEvent);
489 this.KeyEventSignal().Connect(_KeyCallbackDelegate);
498 if (_KeyEventHandler != null)
500 this.KeyEventSignal().Disconnect(_KeyCallbackDelegate);
503 _KeyEventHandler -= value;
508 private bool OnKeyEvent(IntPtr view, IntPtr keyEvent)
510 KeyEventArgs e = new KeyEventArgs();
512 // Populate all members of "e" (KeyEventArgs) with real data
513 e.View = Dali.View.GetViewFromPtr(view);
514 e.KeyEvent = Dali.KeyEvent.GetKeyEventFromPtr(keyEvent);
516 if (_KeyEventHandler != null)
518 //here we send all data to user event handlers
519 return _KeyEventHandler(this, e);
526 * @brief Event for OnRelayout signal which can be used to subscribe/unsubscribe the event handler
527 * (in the type of OnRelayoutEventHandler) provided by the user.
528 * OnRelayout signal is emitted after the size has been set on the view during relayout.
530 public event DaliEventHandler<object,OnRelayoutEventArgs> OnRelayoutEvent
536 // Restricted to only one listener
537 if (_viewOnRelayoutEventHandler == null)
539 _viewOnRelayoutEventHandler += value;
540 Console.WriteLine("View OnRelayoutEventArgs Locked....");
541 _viewOnRelayoutEventCallbackDelegate = new OnRelayoutEventCallbackDelegate(OnRelayout);
542 this.OnRelayoutSignal().Connect(_viewOnRelayoutEventCallbackDelegate);
551 if (_viewOnRelayoutEventHandler != null)
553 this.OnRelayoutSignal().Disconnect(_viewOnRelayoutEventCallbackDelegate);
556 _viewOnRelayoutEventHandler -= value;
561 // Callback for View OnRelayout signal
562 private void OnRelayout(IntPtr data)
564 OnRelayoutEventArgs e = new OnRelayoutEventArgs();
565 Console.WriteLine("View OnRelayoutEventArgs....");
566 // Populate all members of "e" (OnRelayoutEventArgs) with real data
567 e.View = View.GetViewFromPtr(data);
569 if (_viewOnRelayoutEventHandler != null)
571 //here we send all data to user event handlers
572 _viewOnRelayoutEventHandler(this, e);
577 * @brief Event for Touched signal which can be used to subscribe/unsubscribe the event handler
578 * (in the type of TouchEventHandler-DaliEventHandlerWithReturnType<object,TouchEventArgs,bool>)
579 * provided by the user. Touched signal is emitted when touch input is received.
581 public event DaliEventHandlerWithReturnType<object,TouchEventArgs,bool> Touched
587 // Restricted to only one listener
588 if (_viewTouchDataEventHandler == null)
590 _viewTouchDataEventHandler += value;
591 Console.WriteLine("View Touch EVENT LOCKED....");
592 _viewTouchDataCallbackDelegate = new TouchCallbackDelegate(OnTouch);
593 this.TouchSignal().Connect(_viewTouchDataCallbackDelegate);
602 if (_viewTouchDataEventHandler != null)
604 this.TouchSignal().Disconnect(_viewTouchDataCallbackDelegate);
607 _viewTouchDataEventHandler -= value;
612 // Callback for View TouchSignal
613 private bool OnTouch(IntPtr view, IntPtr touchData)
615 TouchEventArgs e = new TouchEventArgs();
616 Console.WriteLine("View Touch EVENT....");
617 // Populate all members of "e" (TouchEventArgs) with real data
618 e.View = View.GetViewFromPtr(view);
619 e.TouchData = Dali.TouchData.GetTouchDataFromPtr(touchData);
621 if (_viewTouchDataEventHandler != null)
623 //here we send all data to user event handlers
624 return _viewTouchDataEventHandler(this, e);
631 * @brief Event for Hovered signal which can be used to subscribe/unsubscribe the event handler
632 * (in the type of HoverEventHandler-DaliEventHandlerWithReturnType<object,HoverEventArgs,bool>)
633 * provided by the user. Hovered signal is emitted when hover input is received.
635 public event DaliEventHandlerWithReturnType<object,HoverEventArgs,bool> Hovered
641 // Restricted to only one listener
642 if (_viewHoverEventHandler == null)
644 _viewHoverEventHandler += value;
646 _viewHoverEventCallbackDelegate = new HoverEventCallbackDelegate(OnHoverEvent);
647 this.HoveredSignal().Connect(_viewHoverEventCallbackDelegate);
656 if (_viewHoverEventHandler != null)
658 this.HoveredSignal().Disconnect(_viewHoverEventCallbackDelegate);
661 _viewHoverEventHandler -= value;
666 // Callback for View Hover signal
667 private bool OnHoverEvent(IntPtr view, IntPtr hoverEvent)
669 HoverEventArgs e = new HoverEventArgs();
671 // Populate all members of "e" (HoverEventArgs) with real data
672 e.View = View.GetViewFromPtr(view);
673 e.HoverEvent = Dali.HoverEvent.GetHoverEventFromPtr(hoverEvent);
675 if (_viewHoverEventHandler != null)
677 //here we send all data to user event handlers
678 return _viewHoverEventHandler(this, e);
685 * @brief Event for WheelMoved signal which can be used to subscribe/unsubscribe the event handler
686 * (in the type of WheelEventHandler-DaliEventHandlerWithReturnType<object,WheelEventArgs,bool>)
687 * provided by the user. WheelMoved signal is emitted when wheel event is received.
689 public event DaliEventHandlerWithReturnType<object,WheelEventArgs,bool> WheelMoved
695 // Restricted to only one listener
696 if (_viewWheelEventHandler == null)
698 _viewWheelEventHandler += value;
699 Console.WriteLine("View Wheel EVENT LOCKED....");
700 _viewWheelEventCallbackDelegate = new WheelEventCallbackDelegate(OnWheelEvent);
701 this.WheelEventSignal().Connect(_viewWheelEventCallbackDelegate);
710 if (_viewWheelEventHandler != null)
712 this.WheelEventSignal().Disconnect(_viewWheelEventCallbackDelegate);
715 _viewWheelEventHandler -= value;
720 // Callback for View Wheel signal
721 private bool OnWheelEvent(IntPtr view, IntPtr wheelEvent)
723 WheelEventArgs e = new WheelEventArgs();
724 Console.WriteLine("View Wheel EVENT ....");
725 // Populate all members of "e" (WheelEventArgs) with real data
726 e.View = View.GetViewFromPtr(view);
727 e.WheelEvent = Dali.WheelEvent.GetWheelEventFromPtr(wheelEvent);
729 if (_viewWheelEventHandler != null)
731 //here we send all data to user event handlers
732 return _viewWheelEventHandler(this, e);
739 * @brief Event for OnStage signal which can be used to subscribe/unsubscribe the event handler
740 * (in the type of OnStageEventHandler) provided by the user.
741 * OnStage signal is emitted after the view has been connected to the stage.
743 public event DaliEventHandler<object,OnStageEventArgs> OnStageEvent
749 // Restricted to only one listener
750 if (_viewOnStageEventHandler == null)
752 _viewOnStageEventHandler += value;
754 _viewOnStageEventCallbackDelegate = new OnStageEventCallbackDelegate(OnStage);
755 this.OnStageSignal().Connect(_viewOnStageEventCallbackDelegate);
764 if (_viewOnStageEventHandler != null)
766 this.OnStageSignal().Disconnect(_viewOnStageEventCallbackDelegate);
769 _viewOnStageEventHandler -= value;
774 // Callback for View OnStage signal
775 private void OnStage(IntPtr data)
777 OnStageEventArgs e = new OnStageEventArgs();
779 // Populate all members of "e" (OnStageEventArgs) with real data
780 e.View = View.GetViewFromPtr(data);
782 //Console.WriteLine("############# OnStage()! e.View.Name=" + e.View.Name);
784 if (_viewOnStageEventHandler != null)
786 //here we send all data to user event handlers
787 _viewOnStageEventHandler(this, e);
792 * @brief Event for OffStage signal which can be used to subscribe/unsubscribe the event handler
793 * (in the type of OffStageEventHandler) provided by the user.
794 * OffStage signal is emitted after the view has been disconnected from the stage.
796 public event DaliEventHandler<object,OffStageEventArgs> OffStageEvent
802 // Restricted to only one listener
803 if (_viewOffStageEventHandler == null)
805 _viewOffStageEventHandler += value;
807 _viewOffStageEventCallbackDelegate = new OffStageEventCallbackDelegate(OffStage);
808 this.OnStageSignal().Connect(_viewOffStageEventCallbackDelegate);
817 if (_viewOffStageEventHandler != null)
819 this.OnStageSignal().Disconnect(_viewOffStageEventCallbackDelegate);
822 _viewOffStageEventHandler -= value;
827 // Callback for View OffStage signal
828 private void OffStage(IntPtr data)
830 OffStageEventArgs e = new OffStageEventArgs();
832 // Populate all members of "e" (OffStageEventArgs) with real data
833 e.View = View.GetViewFromPtr(data);
835 if (_viewOffStageEventHandler != null)
837 //here we send all data to user event handlers
838 _viewOffStageEventHandler(this, e);
842 public static View GetViewFromPtr(global::System.IntPtr cPtr) {
843 View ret = new View(cPtr, false);
844 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
852 %define DALI_CONTROL_EVENTHANDLER_PARAM( NameSpace, ClassName)
854 CONTROL_EVENTHANDLER_TYPEMAP_EVENTARG( NameSpace, ClassName);
855 CONTROL_EVENTHANDLER_TYPEMAP_HELPER( NameSpace, ClassName);
861 DALI_CONTROL_EVENTHANDLER_PARAM( Dali::Toolkit, Control);