Add Window Effect Start/End signal
[platform/core/uifw/dali-adaptor.git] / dali / devel-api / adaptor-framework / window-devel.h
1 #ifndef DALI_WINDOW_DEVEL_H
2 #define DALI_WINDOW_DEVEL_H
3
4 /*
5  * Copyright (c) 2019 Samsung Electronics Co., Ltd.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  */
20
21 // INTERNAL INCLUDES
22 #include <dali/public-api/adaptor-framework/window.h>
23
24 namespace Dali
25 {
26 class KeyEvent;
27 class TouchData;
28 class WheelEvent;
29 class RenderTaskList;
30
31 namespace DevelWindow
32 {
33 /**
34  * @brief Enumeration for transition effect's state.
35  */
36 enum class EffectState
37 {
38   NONE = 0,    ///< None state
39   START,       ///< Transition effect is started.
40   END          ///< Transition effect is ended.
41 };
42
43 /**
44  * @brief Enumeration for transition effect's type.
45  */
46 enum class  EffectType
47 {
48   NONE = 0,    ///< None type
49   SHOW,        ///< Window show effect.
50   HIDE,        ///< Window hide effect.
51 };
52
53 typedef Signal< void () > EventProcessingFinishedSignalType;       ///< Event Processing finished signal type
54
55 typedef Signal< void (const KeyEvent&) > KeyEventSignalType;       ///< Key event signal type
56
57 typedef Signal< void (const TouchData&) > TouchSignalType;         ///< Touch signal type
58
59 typedef Signal< void (const WheelEvent&) > WheelEventSignalType;   ///< Touched signal type
60
61 typedef Signal< void ( Window, bool ) > VisibilityChangedSignalType; ///< Visibility changed signal type
62
63 typedef Signal< void (Window, EffectState, EffectType) > TransitionEffectEventSignalType; ///< Effect signal type and state
64
65 /**
66  * @brief Sets position and size of the window. This API guarantees that both moving and resizing of window will appear on the screen at once.
67  *
68  * @param[in] window The window instance
69  * @param[in] positionSize The new window position and size
70  */
71 DALI_ADAPTOR_API void SetPositionSize( Window window, PositionSize positionSize );
72
73 /**
74  * @brief Retrieves the list of render-tasks in the window.
75  *
76  * @param[in] window The window instance
77  * @return A valid handle to a RenderTaskList
78  */
79 DALI_ADAPTOR_API Dali::RenderTaskList GetRenderTaskList( Window window );
80
81 /**
82  * @brief Retrieve the window that the given actor is added to.
83  *
84  * @param[in] actor The actor
85  * @return The window the actor is added to or an empty handle if the actor is not added to any window.
86  */
87 DALI_ADAPTOR_API Window Get( Actor actor );
88
89 /**
90  * @brief This signal is emitted just after the event processing is finished.
91  *
92  * @param[in] window The window instance
93  * @return The signal to connect to
94  */
95 DALI_ADAPTOR_API EventProcessingFinishedSignalType& EventProcessingFinishedSignal( Window window );
96
97 /**
98  * @brief This signal is emitted when key event is received.
99  *
100  * A callback of the following type may be connected:
101  * @code
102  *   void YourCallbackName(const KeyEvent& event);
103  * @endcode
104  * @param[in] window The window instance
105  * @return The signal to connect to
106  */
107 DALI_ADAPTOR_API KeyEventSignalType& KeyEventSignal( Window window );
108
109 /**
110  * @brief This signal is emitted when the screen is touched and when the touch ends
111  * (i.e. the down & up touch events only).
112  *
113  * If there are multiple touch points, then this will be emitted when the first touch occurs and
114  * then when the last finger is lifted.
115  * An interrupted event will also be emitted (if it occurs).
116  * A callback of the following type may be connected:
117  * @code
118  *   void YourCallbackName( TouchData event );
119  * @endcode
120  *
121  * @param[in] window The window instance
122  * @return The touch signal to connect to
123  * @note Motion events are not emitted.
124  */
125 DALI_ADAPTOR_API TouchSignalType& TouchSignal( Window window );
126
127 /**
128  * @brief This signal is emitted when wheel event is received.
129  *
130  * A callback of the following type may be connected:
131  * @code
132  *   void YourCallbackName(const WheelEvent& event);
133  * @endcode
134  * @param[in] window The window instance
135  * @return The signal to connect to
136  */
137 DALI_ADAPTOR_API WheelEventSignalType& WheelEventSignal( Window window );
138
139 /**
140  * @brief This signal is emitted when the window is shown or hidden.
141  *
142  * A callback of the following type may be connected:
143  * @code
144  *   void YourCallbackName( Window window, bool visible );
145  * @endcode
146  * @param[in] window The window instance
147  * @return The signal to connect to
148  */
149 DALI_ADAPTOR_API VisibilityChangedSignalType& VisibilityChangedSignal( Window window );
150
151 /**
152  * @brief This signal is emitted for transition effect.
153  *
154  * The transition animation is appeared when the window is shown/hidden.
155  * When the animation is started, START signal is emitted.
156  * Then the animation is ended, END signal is emitted, too.
157  * A callback of the following type may be connected:
158  * @code
159  *   void YourCallbackName( Window window, EffectState state, EffectType type );
160  * @endcode
161  * @param[in] window The window instance
162  * @return The signal to connect to
163  */
164 DALI_ADAPTOR_API TransitionEffectEventSignalType& TransitionEffectEventSignal( Window window );
165
166 /**
167  * @brief Sets parent window of the window.
168  *
169  * After setting that, these windows do together when raise-up, lower and iconified/deiconified.
170  * Initially, the window is located on top of the parent. The window can go below parent by calling Lower().
171  * If parent's window stack is changed by calling Raise() or Lower(), child windows are located on top of the parent again.
172  *
173  * @param[in] window The window instance
174  * @param[in] parent The parent window instance
175  */
176 DALI_ADAPTOR_API void SetParent( Window window, Window parent );
177
178 /**
179  * @brief Unsets parent window of the window.
180  *
181  * After unsetting, the window is disconnected his parent window.
182  *
183  * @param[in] window The window instance
184  */
185 DALI_ADAPTOR_API void Unparent( Window window );
186
187 /**
188  * @brief Gets parent window of the window.
189  *
190  * @param[in] window The window instance
191  * @return The parent window of the window
192  */
193 DALI_ADAPTOR_API Window GetParent( Window window );
194
195 /**
196  * @brief Downcast sceneHolder to window
197  *
198  * @param[in] handle The handle need to downcast
199  * @return The window cast from SceneHolder
200  */
201 DALI_ADAPTOR_API Window DownCast(  BaseHandle handle );
202
203 } // namespace DevelWindow
204
205 } // namespace Dali
206
207 #endif // DALI_WINDOW_DEVEL_H