Merge branch 'devel/master' into tizen
[platform/core/uifw/dali-core.git] / dali / internal / event / events / key-event-processor.h
1 #ifndef DALI_INTERNAL_KEY_EVENT_PROCESSOR_H
2 #define DALI_INTERNAL_KEY_EVENT_PROCESSOR_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 #include <vector>
22
23 namespace Dali
24 {
25
26 namespace Integration
27 {
28 struct KeyEvent;
29 }
30
31 namespace Internal
32 {
33
34 class Scene;
35 class Stage;
36
37 /**
38  *  KeyEventProcessor receives the filtered key events from the Dali Event processor.
39  *
40  *  When a key event is received the KeyEventProcessor queues the event in the scene events queue.
41  *  Any actor can be set by the actor api to be the focus of key events.  The actor is then sent the key event.
42  *  If no actor is set for focus then the key event is discarded.
43  */
44 class KeyEventProcessor
45 {
46 public:
47
48   /**
49    * Create a Key event processor.
50    * @param[in] scene The scene the event processor belongs to.
51    */
52   KeyEventProcessor( Scene& scene );
53
54   /**
55    * Non-virtual destructor; KeyEventProcessor is not a base class
56    */
57   ~KeyEventProcessor();
58
59   /**
60    * This function is called by the event processor whenever a key event occurs.
61    * @param[in] event The key event that has occurred.
62    */
63   void ProcessKeyEvent(const Integration::KeyEvent& event);
64
65 private:
66
67   // Undefined
68   KeyEventProcessor(const KeyEventProcessor&);
69
70   // Undefined
71   KeyEventProcessor& operator=(const KeyEventProcessor& rhs);
72
73 private:
74
75   Scene& mScene; ///< Used to deliver key events
76 };
77
78 } // namespace Internal
79
80 } // namespace Dali
81
82 #endif // DALI_INTERNAL_KEY_EVENT_PROCESSOR_H