[dali_1.0.21] Merge branch 'tizen'
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / dali-toolkit-test-utils / toolkit-style-monitor.cpp
1 /*
2  * Copyright (c) 2014 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 "toolkit-style-monitor.h"
19
20 #include <dali/public-api/common/dali-common.h>
21 #include <dali/public-api/object/base-object.h>
22 #include <dali/public-api/signals/dali-signal-v2.h>
23
24 namespace Dali
25 {
26
27
28 namespace Internal
29 {
30 namespace Adaptor
31 {
32 /**
33  * Stub for the StyleMonitor
34  */
35 class StyleMonitor : public BaseObject
36 {
37 public: // Creation & Destruction
38   static Dali::StyleMonitor Get();
39   StyleMonitor();
40   ~StyleMonitor();
41
42 public: // Style Information
43   std::string GetDefaultFontFamily() const;
44   float GetDefaultFontSize() const;
45   const std::string& GetTheme() const;
46   void SetTheme(std::string theme);
47
48 public: // Signals
49   Dali::StyleMonitor::StyleChangeSignalV2& StyleChangeSignal();
50
51   void EmitStyleChangeSignal(StyleChange styleChange)
52   {
53     mStyleChangeSignal.Emit(Dali::StyleMonitor(this), styleChange);
54   }
55
56 private:
57   Dali::StyleMonitor::StyleChangeSignalV2 mStyleChangeSignal;
58   static Dali::StyleMonitor mToolkitStyleMonitor;
59   std::string mTheme;
60 };
61
62 Dali::StyleMonitor StyleMonitor::mToolkitStyleMonitor;
63
64 Dali::StyleMonitor StyleMonitor::Get()
65 {
66   if( ! mToolkitStyleMonitor )
67   {
68     mToolkitStyleMonitor = Dali::StyleMonitor( new Dali::Internal::Adaptor::StyleMonitor() );
69   }
70   return mToolkitStyleMonitor;
71 }
72
73 StyleMonitor::StyleMonitor()
74 : mTheme("default")
75 {
76 }
77
78 StyleMonitor::~StyleMonitor()
79 {
80 }
81
82 std::string StyleMonitor::GetDefaultFontFamily() const
83 {
84   return Dali::StyleMonitor::DEFAULT_FONT_FAMILY;
85 }
86
87 float StyleMonitor::GetDefaultFontSize() const
88 {
89   return Dali::StyleMonitor::DEFAULT_FONT_SIZE;
90 }
91
92 const std::string& StyleMonitor::GetTheme() const
93 {
94   return mTheme;
95 }
96
97 void StyleMonitor::SetTheme(std::string path)
98 {
99   StyleChange styleChange;
100   styleChange.themeChange = true;
101   styleChange.themeFilePath = path;
102   mTheme = path;
103   EmitStyleChangeSignal(styleChange);
104 }
105
106 Dali::StyleMonitor::StyleChangeSignalV2& StyleMonitor::StyleChangeSignal()
107 {
108   return mStyleChangeSignal;
109 }
110
111 } // namespace Adaptor
112 } // namespace Internal
113
114 ////////////////////////////////////////////////////////////////////////////////////////////////////
115
116 Internal::Adaptor::StyleMonitor& GetImplementation(Dali::StyleMonitor& monitor)
117 {
118   BaseObject& object = monitor.GetBaseObject();
119   return static_cast<Internal::Adaptor::StyleMonitor&>(object);
120 }
121 const Internal::Adaptor::StyleMonitor& GetImplementation(const Dali::StyleMonitor& monitor)
122 {
123   const BaseObject& object = monitor.GetBaseObject();
124   return static_cast<const Internal::Adaptor::StyleMonitor&>(object);
125 }
126
127 const std::string Dali::StyleMonitor::DEFAULT_FONT_FAMILY("DefaultFont");
128 const float       Dali::StyleMonitor::DEFAULT_FONT_SIZE(1.0f);
129
130 StyleMonitor::StyleMonitor()
131 {
132 }
133
134 StyleMonitor::StyleMonitor(const StyleMonitor& monitor)
135 : BaseHandle(monitor)
136 {
137 }
138
139 StyleMonitor StyleMonitor::StyleMonitor::Get()
140 {
141   return Internal::Adaptor::StyleMonitor::Get();
142 }
143
144 StyleMonitor::~StyleMonitor()
145 {
146 }
147
148 std::string StyleMonitor::GetDefaultFontFamily() const
149 {
150   return GetImplementation(*this).GetDefaultFontFamily();
151 }
152
153 float StyleMonitor::GetDefaultFontSize() const
154 {
155   return GetImplementation(*this).GetDefaultFontSize();
156 }
157
158 const std::string& StyleMonitor::GetTheme() const
159 {
160   return GetImplementation(*this).GetTheme();
161 }
162
163 void StyleMonitor::SetTheme(std::string themeFilePath)
164 {
165   GetImplementation(*this).SetTheme(themeFilePath);
166 }
167
168 StyleMonitor::StyleChangeSignalV2& StyleMonitor::StyleChangeSignal()
169 {
170   return GetImplementation(*this).StyleChangeSignal();
171 }
172
173 void StyleMonitor::EmitStyleChangeSignal(StyleChange styleChange)
174 {
175   GetImplementation(*this).EmitStyleChangeSignal(styleChange);
176 }
177
178 StyleMonitor& StyleMonitor::operator=(const StyleMonitor& monitor)
179 {
180   if( *this != monitor )
181   {
182     BaseHandle::operator=(monitor);
183   }
184   return *this;
185 }
186
187 StyleMonitor::StyleMonitor(Internal::Adaptor::StyleMonitor* internal)
188 : BaseHandle(internal)
189 {
190 }
191
192 } // namespace Dali