[dali_2.3.30] Merge branch 'devel/master'
[platform/core/uifw/dali-adaptor.git] / dali / internal / adaptor / common / lifecycle-controller-impl.cpp
1 /*
2  * Copyright (c) 2021 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 // CLASS HEADER
19 #include <dali/internal/adaptor/common/lifecycle-controller-impl.h>
20
21 // EXTERNAL INCLUDES
22 #include <dali/public-api/object/type-registry.h>
23
24 // INTERNAL INCLUDES
25 #include <dali/devel-api/common/singleton-service.h>
26 #include <dali/internal/adaptor/common/adaptor-impl.h>
27
28 namespace Dali
29 {
30 namespace Internal
31 {
32 namespace Adaptor
33 {
34 Dali::LifecycleController LifecycleController::Get()
35 {
36   Dali::LifecycleController lifecycleController;
37
38   Dali::SingletonService service(SingletonService::Get());
39   if(service)
40   {
41     // Check whether the singleton is already created
42     Dali::BaseHandle handle = service.GetSingleton(typeid(Dali::LifecycleController));
43     if(handle)
44     {
45       // If so, downcast the handle
46       lifecycleController = Dali::LifecycleController(dynamic_cast<LifecycleController*>(handle.GetObjectPtr()));
47     }
48     else
49     {
50       lifecycleController = Dali::LifecycleController(new LifecycleController());
51       service.Register(typeid(lifecycleController), lifecycleController);
52     }
53   }
54
55   return lifecycleController;
56 }
57
58 LifecycleController::LifecycleController()
59 {
60 }
61
62 LifecycleController::~LifecycleController()
63 {
64 }
65
66 Dali::LifecycleController::LifecycleSignalType& LifecycleController::InitSignal()
67 {
68   return mInitSignal;
69 }
70
71 void LifecycleController::EmitInitSignal()
72 {
73   if(!mInitSignal.Empty())
74   {
75     mInitSignal.Emit();
76   }
77 }
78
79 Dali::LifecycleController::LifecycleSignalType& LifecycleController::TerminateSignal()
80 {
81   return mTerminateSignal;
82 }
83
84 void LifecycleController::EmitTerminateSignal()
85 {
86   if(!mTerminateSignal.Empty())
87   {
88     mTerminateSignal.Emit();
89   }
90 }
91
92 Dali::LifecycleController::LifecycleSignalType& LifecycleController::PauseSignal()
93 {
94   return mPauseSignal;
95 }
96
97 void LifecycleController::EmitPauseSignal()
98 {
99   if(!mPauseSignal.Empty())
100   {
101     mPauseSignal.Emit();
102   }
103 }
104
105 Dali::LifecycleController::LifecycleSignalType& LifecycleController::ResumeSignal()
106 {
107   return mResumeSignal;
108 }
109
110 void LifecycleController::EmitResumeSignal()
111 {
112   if(!mResumeSignal.Empty())
113   {
114     mResumeSignal.Emit();
115   }
116 }
117
118 Dali::LifecycleController::LifecycleSignalType& LifecycleController::ResetSignal()
119 {
120   return mResetSignal;
121 }
122
123 void LifecycleController::EmitResetSignal()
124 {
125   if(!mResetSignal.Empty())
126   {
127     mResetSignal.Emit();
128   }
129 }
130
131 Dali::LifecycleController::LifecycleSignalType& LifecycleController::LanguageChangedSignal()
132 {
133   return mLanguageChangedSignal;
134 }
135
136 void LifecycleController::EmitLanguageChangedSignal()
137 {
138   if(!mLanguageChangedSignal.Empty())
139   {
140     mLanguageChangedSignal.Emit();
141   }
142 }
143
144 void LifecycleController::OnInit(Dali::Application& app)
145 {
146   EmitInitSignal();
147 }
148
149 void LifecycleController::OnTerminate(Dali::Application& app)
150 {
151   EmitTerminateSignal();
152 }
153
154 void LifecycleController::OnPause(Dali::Application& app)
155 {
156   EmitPauseSignal();
157 }
158
159 void LifecycleController::OnResume(Dali::Application& app)
160 {
161   EmitResumeSignal();
162 }
163
164 void LifecycleController::OnReset(Dali::Application& app)
165 {
166   EmitResetSignal();
167 }
168
169 void LifecycleController::OnLanguageChanged(Dali::Application& app)
170 {
171   EmitLanguageChangedSignal();
172 }
173
174 } // namespace Adaptor
175
176 } // namespace Internal
177
178 } // namespace Dali