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 %{
31 * @brief Event arguments that passed via KeyInputFocusGained signal
34 public class KeyInputFocusGainedEventArgs : EventArgs
39 * @brief View - is the view that gets Key Input Focus
56 * @brief Event arguments that passed via KeyInputFocusLost signal
59 public class KeyInputFocusLostEventArgs : EventArgs
64 * @brief View - is the view that loses Key Input Focus
81 * @brief Event arguments that passed via KeyEvent signal
84 public class KeyEventArgs : EventArgs
87 private KeyEvent _keyEvent;
90 * @brief View - is the view that recieves the keyevent.
106 * @brief KeyEvent - is the keyevent sent to the View.
109 public KeyEvent KeyEvent
123 * @brief Event arguments that passed via OnRelayout signal
126 public class OnRelayoutEventArgs : EventArgs
131 * @brief View - is the view that is being resized upon relayout
149 * @brief Event arguments that passed via Touch signal
152 public class TouchEventArgs : EventArgs
155 private TouchData _touchData;
158 * @brief View - is the view that is being touched
174 * @brief TouchData - contains the information of touch points
177 public TouchData TouchData
191 * @brief Event arguments that passed via Hover signal
194 public class HoverEventArgs : EventArgs
197 private HoverEvent _hoverEvent;
200 * @brief View - is the view that is being hovered
216 * @brief HoverEvent - contains touch points that represent the points
217 * that are currently being hovered or the points where a hover has stopped
220 public HoverEvent HoverEvent
234 * @brief Event arguments that passed via Wheel signal
237 public class WheelEventArgs : EventArgs
240 private WheelEvent _wheelEvent;
243 * @brief View - is the view that is being wheeled
259 * @brief WheelEvent - store a wheel rolling type : MOUSE_WHEEL or CUSTOM_WHEEL
262 public WheelEvent WheelEvent
276 * @brief Event arguments that passed via OnStage signal
279 public class OnStageEventArgs : EventArgs
284 * @brief View - is the view that is being connected to the stage
301 * @brief Event arguments that passed via OffStage signal
304 public class OffStageEventArgs : EventArgs
309 * @brief View - is the view that is being disconnected from the stage
325 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
326 private delegate void KeyInputFocusGainedCallbackDelegate(IntPtr control);
327 private DaliEventHandler<object,KeyInputFocusGainedEventArgs> _KeyInputFocusGainedEventHandler;
328 private KeyInputFocusGainedCallbackDelegate _KeyInputFocusGainedCallbackDelegate;
330 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
331 private delegate void KeyInputFocusLostCallbackDelegate(IntPtr control);
332 private DaliEventHandler<object,KeyInputFocusLostEventArgs> _KeyInputFocusLostEventHandler;
333 private KeyInputFocusLostCallbackDelegate _KeyInputFocusLostCallbackDelegate;
335 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
336 private delegate bool KeyCallbackDelegate(IntPtr control, IntPtr keyEvent);
337 private DaliEventHandlerWithReturnType<object,KeyEventArgs,bool> _KeyEventHandler;
338 private KeyCallbackDelegate _KeyCallbackDelegate;
340 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
341 private delegate void OnRelayoutEventCallbackDelegate(IntPtr control);
342 private DaliEventHandler<object,OnRelayoutEventArgs> _viewOnRelayoutEventHandler;
343 private OnRelayoutEventCallbackDelegate _viewOnRelayoutEventCallbackDelegate;
345 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
346 private delegate bool TouchCallbackDelegate(IntPtr view, IntPtr touchData);
347 private DaliEventHandlerWithReturnType<object,TouchEventArgs,bool> _viewTouchDataEventHandler;
348 private TouchCallbackDelegate _viewTouchDataCallbackDelegate;
350 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
351 private delegate bool HoverEventCallbackDelegate(IntPtr view, IntPtr hoverEvent);
352 private DaliEventHandlerWithReturnType<object,HoverEventArgs,bool> _viewHoverEventHandler;
353 private HoverEventCallbackDelegate _viewHoverEventCallbackDelegate;
355 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
356 private delegate bool WheelEventCallbackDelegate(IntPtr view, IntPtr wheelEvent);
357 private DaliEventHandlerWithReturnType<object,WheelEventArgs,bool> _viewWheelEventHandler;
358 private WheelEventCallbackDelegate _viewWheelEventCallbackDelegate;
360 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
361 private delegate void OnStageEventCallbackDelegate(IntPtr control);
362 private DaliEventHandler<object,OnStageEventArgs> _viewOnStageEventHandler;
363 private OnStageEventCallbackDelegate _viewOnStageEventCallbackDelegate;
365 [UnmanagedFunctionPointer(CallingConvention.StdCall)]
366 private delegate void OffStageEventCallbackDelegate(IntPtr control);
367 private DaliEventHandler<object,OffStageEventArgs> _viewOffStageEventHandler;
368 private OffStageEventCallbackDelegate _viewOffStageEventCallbackDelegate;
371 * @brief Event for KeyInputFocusGained signal which can be used to subscribe/unsubscribe the event handler
372 * (in the type of KeyInputFocusGainedEventHandler-DaliEventHandler<object,KeyInputFocusGainedEventArgs>)
373 * provided by the user. KeyInputFocusGained signal is emitted when the control gets Key Input Focus.
375 public event DaliEventHandler<object,KeyInputFocusGainedEventArgs> KeyInputFocusGained
381 // Restricted to only one listener
382 if (_KeyInputFocusGainedEventHandler == null)
384 _KeyInputFocusGainedEventHandler += value;
385 Console.WriteLine("View Keyevent EVENT Locked....");
386 _KeyInputFocusGainedCallbackDelegate = new KeyInputFocusGainedCallbackDelegate(OnKeyInputFocusGained);
387 this.KeyInputFocusGainedSignal().Connect(_KeyInputFocusGainedCallbackDelegate);
396 if (_KeyInputFocusGainedEventHandler != null)
398 this.KeyInputFocusGainedSignal().Disconnect(_KeyInputFocusGainedCallbackDelegate);
401 _KeyInputFocusGainedEventHandler -= value;
406 private void OnKeyInputFocusGained(IntPtr view)
408 KeyInputFocusGainedEventArgs e = new KeyInputFocusGainedEventArgs();
409 Console.WriteLine("View Keyevent ....");
410 // Populate all members of "e" (KeyInputFocusGainedEventArgs) with real data
411 e.View = Dali.View.GetViewFromPtr(view);
413 if (_KeyInputFocusGainedEventHandler != null)
415 //here we send all data to user event handlers
416 _KeyInputFocusGainedEventHandler(this, e);
422 * @brief Event for KeyInputFocusLost signal which can be used to subscribe/unsubscribe the event handler
423 * (in the type of KeyInputFocusLostEventHandler-DaliEventHandler<object,KeyInputFocusLostEventArgs>)
424 * provided by the user. KeyInputFocusLost signal is emitted when the control loses Key Input Focus.
426 public event DaliEventHandler<object,KeyInputFocusLostEventArgs> KeyInputFocusLost
432 // Restricted to only one listener
433 if (_KeyInputFocusLostEventHandler == null)
435 _KeyInputFocusLostEventHandler += value;
437 _KeyInputFocusLostCallbackDelegate = new KeyInputFocusLostCallbackDelegate(OnKeyInputFocusLost);
438 this.KeyInputFocusLostSignal().Connect(_KeyInputFocusLostCallbackDelegate);
447 if (_KeyInputFocusLostEventHandler != null)
449 this.KeyInputFocusLostSignal().Disconnect(_KeyInputFocusLostCallbackDelegate);
452 _KeyInputFocusLostEventHandler -= value;
457 private void OnKeyInputFocusLost(IntPtr view)
459 KeyInputFocusLostEventArgs e = new KeyInputFocusLostEventArgs();
461 // Populate all members of "e" (KeyInputFocusLostEventArgs) with real data
462 e.View = Dali.View.GetViewFromPtr(view);
464 if (_KeyInputFocusLostEventHandler != null)
466 //here we send all data to user event handlers
467 _KeyInputFocusLostEventHandler(this, e);
472 * @brief Event for KeyPressed signal which can be used to subscribe/unsubscribe the event handler
473 * (in the type of KeyEventEventHandler-DaliEventHandlerWithReturnType<object,KeyEventArgs,bool>)
474 * provided by the user. KeyPressed signal is emitted when key event is received.
476 public event DaliEventHandlerWithReturnType<object,KeyEventArgs,bool> KeyPressed
482 // Restricted to only one listener
483 if (_KeyEventHandler == null)
485 _KeyEventHandler += value;
487 _KeyCallbackDelegate = new KeyCallbackDelegate(OnKeyEvent);
488 this.KeyEventSignal().Connect(_KeyCallbackDelegate);
497 if (_KeyEventHandler != null)
499 this.KeyEventSignal().Disconnect(_KeyCallbackDelegate);
502 _KeyEventHandler -= value;
507 private bool OnKeyEvent(IntPtr view, IntPtr keyEvent)
509 KeyEventArgs e = new KeyEventArgs();
511 // Populate all members of "e" (KeyEventArgs) with real data
512 e.View = Dali.View.GetViewFromPtr(view);
513 e.KeyEvent = Dali.KeyEvent.GetKeyEventFromPtr(keyEvent);
515 if (_KeyEventHandler != null)
517 //here we send all data to user event handlers
518 return _KeyEventHandler(this, e);
525 * @brief Event for OnRelayout signal which can be used to subscribe/unsubscribe the event handler
526 * (in the type of OnRelayoutEventHandler) provided by the user.
527 * OnRelayout signal is emitted after the size has been set on the view during relayout.
529 public event DaliEventHandler<object,OnRelayoutEventArgs> OnRelayoutEvent
535 // Restricted to only one listener
536 if (_viewOnRelayoutEventHandler == null)
538 _viewOnRelayoutEventHandler += value;
539 Console.WriteLine("View OnRelayoutEventArgs Locked....");
540 _viewOnRelayoutEventCallbackDelegate = new OnRelayoutEventCallbackDelegate(OnRelayout);
541 this.OnRelayoutSignal().Connect(_viewOnRelayoutEventCallbackDelegate);
550 if (_viewOnRelayoutEventHandler != null)
552 this.OnRelayoutSignal().Disconnect(_viewOnRelayoutEventCallbackDelegate);
555 _viewOnRelayoutEventHandler -= value;
560 // Callback for View OnRelayout signal
561 private void OnRelayout(IntPtr data)
563 OnRelayoutEventArgs e = new OnRelayoutEventArgs();
564 Console.WriteLine("View OnRelayoutEventArgs....");
565 // Populate all members of "e" (OnRelayoutEventArgs) with real data
566 e.View = View.GetViewFromPtr(data);
568 if (_viewOnRelayoutEventHandler != null)
570 //here we send all data to user event handlers
571 _viewOnRelayoutEventHandler(this, e);
576 * @brief Event for Touched signal which can be used to subscribe/unsubscribe the event handler
577 * (in the type of TouchEventHandler-DaliEventHandlerWithReturnType<object,TouchEventArgs,bool>)
578 * provided by the user. Touched signal is emitted when touch input is received.
580 public event DaliEventHandlerWithReturnType<object,TouchEventArgs,bool> Touched
586 // Restricted to only one listener
587 if (_viewTouchDataEventHandler == null)
589 _viewTouchDataEventHandler += value;
590 Console.WriteLine("View Touch EVENT LOCKED....");
591 _viewTouchDataCallbackDelegate = new TouchCallbackDelegate(OnTouch);
592 this.TouchSignal().Connect(_viewTouchDataCallbackDelegate);
601 if (_viewTouchDataEventHandler != null)
603 this.TouchSignal().Disconnect(_viewTouchDataCallbackDelegate);
606 _viewTouchDataEventHandler -= value;
611 // Callback for View TouchSignal
612 private bool OnTouch(IntPtr view, IntPtr touchData)
614 TouchEventArgs e = new TouchEventArgs();
615 Console.WriteLine("View Touch EVENT....");
616 // Populate all members of "e" (TouchEventArgs) with real data
617 e.View = View.GetViewFromPtr(view);
618 e.TouchData = Dali.TouchData.GetTouchDataFromPtr(touchData);
620 if (_viewTouchDataEventHandler != null)
622 //here we send all data to user event handlers
623 return _viewTouchDataEventHandler(this, e);
630 * @brief Event for Hovered signal which can be used to subscribe/unsubscribe the event handler
631 * (in the type of HoverEventHandler-DaliEventHandlerWithReturnType<object,HoverEventArgs,bool>)
632 * provided by the user. Hovered signal is emitted when hover input is received.
634 public event DaliEventHandlerWithReturnType<object,HoverEventArgs,bool> Hovered
640 // Restricted to only one listener
641 if (_viewHoverEventHandler == null)
643 _viewHoverEventHandler += value;
645 _viewHoverEventCallbackDelegate = new HoverEventCallbackDelegate(OnHoverEvent);
646 this.HoveredSignal().Connect(_viewHoverEventCallbackDelegate);
655 if (_viewHoverEventHandler != null)
657 this.HoveredSignal().Disconnect(_viewHoverEventCallbackDelegate);
660 _viewHoverEventHandler -= value;
665 // Callback for View Hover signal
666 private bool OnHoverEvent(IntPtr view, IntPtr hoverEvent)
668 HoverEventArgs e = new HoverEventArgs();
670 // Populate all members of "e" (HoverEventArgs) with real data
671 e.View = View.GetViewFromPtr(view);
672 e.HoverEvent = Dali.HoverEvent.GetHoverEventFromPtr(hoverEvent);
674 if (_viewHoverEventHandler != null)
676 //here we send all data to user event handlers
677 return _viewHoverEventHandler(this, e);
684 * @brief Event for WheelMoved signal which can be used to subscribe/unsubscribe the event handler
685 * (in the type of WheelEventHandler-DaliEventHandlerWithReturnType<object,WheelEventArgs,bool>)
686 * provided by the user. WheelMoved signal is emitted when wheel event is received.
688 public event DaliEventHandlerWithReturnType<object,WheelEventArgs,bool> WheelMoved
694 // Restricted to only one listener
695 if (_viewWheelEventHandler == null)
697 _viewWheelEventHandler += value;
698 Console.WriteLine("View Wheel EVENT LOCKED....");
699 _viewWheelEventCallbackDelegate = new WheelEventCallbackDelegate(OnWheelEvent);
700 this.WheelEventSignal().Connect(_viewWheelEventCallbackDelegate);
709 if (_viewWheelEventHandler != null)
711 this.WheelEventSignal().Disconnect(_viewWheelEventCallbackDelegate);
714 _viewWheelEventHandler -= value;
719 // Callback for View Wheel signal
720 private bool OnWheelEvent(IntPtr view, IntPtr wheelEvent)
722 WheelEventArgs e = new WheelEventArgs();
723 Console.WriteLine("View Wheel EVENT ....");
724 // Populate all members of "e" (WheelEventArgs) with real data
725 e.View = View.GetViewFromPtr(view);
726 e.WheelEvent = Dali.WheelEvent.GetWheelEventFromPtr(wheelEvent);
728 if (_viewWheelEventHandler != null)
730 //here we send all data to user event handlers
731 return _viewWheelEventHandler(this, e);
738 * @brief Event for OnStage signal which can be used to subscribe/unsubscribe the event handler
739 * (in the type of OnStageEventHandler) provided by the user.
740 * OnStage signal is emitted after the view has been connected to the stage.
742 public event DaliEventHandler<object,OnStageEventArgs> OnStageEvent
748 // Restricted to only one listener
749 if (_viewOnStageEventHandler == null)
751 _viewOnStageEventHandler += value;
753 _viewOnStageEventCallbackDelegate = new OnStageEventCallbackDelegate(OnStage);
754 this.OnStageSignal().Connect(_viewOnStageEventCallbackDelegate);
763 if (_viewOnStageEventHandler != null)
765 this.OnStageSignal().Disconnect(_viewOnStageEventCallbackDelegate);
768 _viewOnStageEventHandler -= value;
773 // Callback for View OnStage signal
774 private void OnStage(IntPtr data)
776 OnStageEventArgs e = new OnStageEventArgs();
778 // Populate all members of "e" (OnStageEventArgs) with real data
779 e.View = View.GetViewFromPtr(data);
781 //Console.WriteLine("############# OnStage()! e.View.Name=" + e.View.Name);
783 if (_viewOnStageEventHandler != null)
785 //here we send all data to user event handlers
786 _viewOnStageEventHandler(this, e);
791 * @brief Event for OffStage signal which can be used to subscribe/unsubscribe the event handler
792 * (in the type of OffStageEventHandler) provided by the user.
793 * OffStage signal is emitted after the view has been disconnected from the stage.
795 public event DaliEventHandler<object,OffStageEventArgs> OffStageEvent
801 // Restricted to only one listener
802 if (_viewOffStageEventHandler == null)
804 _viewOffStageEventHandler += value;
806 _viewOffStageEventCallbackDelegate = new OffStageEventCallbackDelegate(OffStage);
807 this.OnStageSignal().Connect(_viewOffStageEventCallbackDelegate);
816 if (_viewOffStageEventHandler != null)
818 this.OnStageSignal().Disconnect(_viewOffStageEventCallbackDelegate);
821 _viewOffStageEventHandler -= value;
826 // Callback for View OffStage signal
827 private void OffStage(IntPtr data)
829 OffStageEventArgs e = new OffStageEventArgs();
831 // Populate all members of "e" (OffStageEventArgs) with real data
832 e.View = View.GetViewFromPtr(data);
834 if (_viewOffStageEventHandler != null)
836 //here we send all data to user event handlers
837 _viewOffStageEventHandler(this, e);
841 public static View GetViewFromPtr(global::System.IntPtr cPtr) {
842 View ret = new View(cPtr, false);
843 if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
847 public Dali.Property.Map Tooltip
851 Dali.Property.Map temp = new Dali.Property.Map();
852 GetProperty( View.Property.TOOLTIP).Get( temp );
857 SetProperty( View.Property.TOOLTIP, new Dali.Property.Value( value ) );
861 public string TooltipText
865 SetProperty( View.Property.TOOLTIP, new Dali.Property.Value( value ) );
871 %define DALI_CONTROL_EVENTHANDLER_PARAM( NameSpace, ClassName)
873 CONTROL_EVENTHANDLER_TYPEMAP_EVENTARG( NameSpace, ClassName);
874 CONTROL_EVENTHANDLER_TYPEMAP_HELPER( NameSpace, ClassName);
880 DALI_CONTROL_EVENTHANDLER_PARAM( Dali::Toolkit, Control);