Demo of Dali toolkit and core capabilities
[platform/core/uifw/dali-demo.git] / examples / hello-world / hello-world-example.cpp
1 //
2 // Copyright (c) 2014 Samsung Electronics Co., Ltd.
3 //
4 // Licensed under the Flora License, Version 1.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://floralicense.org/license/
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 #include <dali/dali.h>
18
19 using namespace Dali;
20
21 // This example shows how to create and display Hello World! using a simple TextActor
22 //
23 class HelloWorldController : public ConnectionTracker
24 {
25 public:
26
27   HelloWorldController( Application& application )
28   : mApplication( application )
29   {
30     std::cout << "HelloWorldController::HelloWorldController" << std::endl;
31
32     // Connect to the Application's Init signal
33     mApplication.InitSignal().Connect( this, &HelloWorldController::Create );
34   }
35
36   ~HelloWorldController()
37   {
38     // Nothing to do here;
39   }
40
41   // The Init signal is received once (only) during the Application lifetime
42   void Create( Application& application )
43   {
44     std::cout << "HelloWorldController::Create" << std::endl;
45
46     // Initialize the actor
47     TextActor textActor = TextActor::New( "Hello World" );
48
49     // Reposition the actor
50     textActor.SetParentOrigin( ParentOrigin::CENTER );
51
52     // Get a handle to the stage
53     Stage stage = Stage::GetCurrent();
54
55     // Display the actor on the stage
56     stage.Add( textActor );
57
58     // Respond to a click anywhere on the stage
59     stage.GetRootLayer().TouchedSignal().Connect( this, &HelloWorldController::OnTouch );
60   }
61
62   bool OnTouch( Actor actor, const TouchEvent& touch )
63   {
64     // quit the application
65     mApplication.Quit();
66     return true;
67   }
68
69 private:
70   Application&  mApplication;
71 };
72
73 void RunTest( Application& application )
74 {
75   HelloWorldController test( application );
76
77   application.MainLoop();
78 }
79
80 // Entry point for Linux & SLP applications
81 //
82 int main( int argc, char **argv )
83 {
84   Application application = Application::New( &argc, &argv );
85
86   RunTest( application );
87
88   return 0;
89 }