Updated demos to use DALi clang-format
[platform/core/uifw/dali-demo.git] / examples / hello-world / hello-world-example.cpp
1 /*
2  * Copyright (c) 2020 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 #include <dali-toolkit/dali-toolkit.h>
19
20 using namespace Dali;
21 using Dali::Toolkit::TextLabel;
22
23 // This example shows how to create and display Hello World! using a simple TextActor
24 //
25 class HelloWorldController : public ConnectionTracker
26 {
27 public:
28   HelloWorldController(Application& application)
29   : mApplication(application)
30   {
31     // Connect to the Application's Init signal
32     mApplication.InitSignal().Connect(this, &HelloWorldController::Create);
33   }
34
35   ~HelloWorldController() = default; // Nothing to do in destructor
36
37   // The Init signal is received once (only) during the Application lifetime
38   void Create(Application& application)
39   {
40     // Get a handle to the window
41     Window window = application.GetWindow();
42     window.SetBackgroundColor(Color::WHITE);
43
44     TextLabel textLabel = TextLabel::New("Hello World");
45     textLabel.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT);
46     textLabel.SetProperty(Dali::Actor::Property::NAME, "helloWorldLabel");
47     window.Add(textLabel);
48
49     // Respond to a touch anywhere on the window
50     window.GetRootLayer().TouchedSignal().Connect(this, &HelloWorldController::OnTouch);
51
52     // Respond to key events
53     window.KeyEventSignal().Connect(this, &HelloWorldController::OnKeyEvent);
54   }
55
56   bool OnTouch(Actor actor, const TouchEvent& touch)
57   {
58     // quit the application
59     mApplication.Quit();
60     return true;
61   }
62
63   void OnKeyEvent(const KeyEvent& event)
64   {
65     if(event.GetState() == KeyEvent::DOWN)
66     {
67       if(IsKey(event, Dali::DALI_KEY_ESCAPE) || IsKey(event, Dali::DALI_KEY_BACK))
68       {
69         mApplication.Quit();
70       }
71     }
72   }
73
74 private:
75   Application& mApplication;
76 };
77
78 int DALI_EXPORT_API main(int argc, char** argv)
79 {
80   Application          application = Application::New(&argc, &argv);
81   HelloWorldController test(application);
82   application.MainLoop();
83   return 0;
84 }