Update common test util
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / dali-toolkit-test-utils / toolkit-style-monitor.cpp
index e77d521..c17872b 100644 (file)
  *
  */
 
+// HEADER
 #include "toolkit-style-monitor.h"
 
+// EXTERNAL INCLUDES
 #include <dali/public-api/common/dali-common.h>
+#include <dali/public-api/common/vector-wrapper.h>
 #include <dali/public-api/object/base-object.h>
-#include <dali/public-api/signals/dali-signal-v2.h>
+#include <dali/public-api/signals/dali-signal.h>
 
-namespace Dali
+namespace
+{
+const char* DEFAULT_THEME=
+  "{\"styles\":{\n"
+  "  \"textlabel\":\n"
+  "    {\n"
+  "      \"fontStyle\":{\"weight\":\"normal\"},\n"
+  "      \"pointSize\":18\n"
+  "    }\n"
+  "  }\n"
+  "}\n";
+
+struct NamedTheme
 {
+  NamedTheme( const std::string& name, const std::string& theme )
+  : name(name), theme(theme)
+  {
+  }
+
+  std::string name;
+  std::string theme;
+};
+typedef std::vector< NamedTheme > NamedThemes;
+NamedThemes gThemes;
 
+std::string gTheme;
+std::string gFontFamily("LucidaSans");
+std::string gFontStyle("Regular");
+int         gFontSize(1);
+}
 
+namespace Dali
+{
 namespace Internal
 {
 namespace Adaptor
@@ -41,22 +73,25 @@ public: // Creation & Destruction
 
 public: // Style Information
   std::string GetDefaultFontFamily() const;
+  std::string GetDefaultFontStyle() const;
   float GetDefaultFontSize() const;
   const std::string& GetTheme() const;
   void SetTheme(std::string theme);
+  bool LoadThemeFile( const std::string& filename, std::string& output );
 
 public: // Signals
-  Dali::StyleMonitor::StyleChangeSignalV2& StyleChangeSignal();
+  Dali::StyleMonitor::StyleChangeSignalType& StyleChangeSignal();
 
-  void EmitStyleChangeSignal(StyleChange styleChange)
+  void EmitStyleChangeSignal(StyleChange::Type styleChange)
   {
     mStyleChangeSignal.Emit(Dali::StyleMonitor(this), styleChange);
   }
 
 private:
-  Dali::StyleMonitor::StyleChangeSignalV2 mStyleChangeSignal;
+  Dali::StyleMonitor::StyleChangeSignalType mStyleChangeSignal;
   static Dali::StyleMonitor mToolkitStyleMonitor;
-  std::string mTheme;
+
+  std::string mTheme;  ///<< Current theme name
 };
 
 Dali::StyleMonitor StyleMonitor::mToolkitStyleMonitor;
@@ -81,12 +116,17 @@ StyleMonitor::~StyleMonitor()
 
 std::string StyleMonitor::GetDefaultFontFamily() const
 {
-  return Dali::StyleMonitor::DEFAULT_FONT_FAMILY;
+  return gFontFamily;
+}
+
+std::string StyleMonitor::GetDefaultFontStyle() const
+{
+  return gFontStyle;
 }
 
 float StyleMonitor::GetDefaultFontSize() const
 {
-  return Dali::StyleMonitor::DEFAULT_FONT_SIZE;
+  return gFontSize;
 }
 
 const std::string& StyleMonitor::GetTheme() const
@@ -96,14 +136,34 @@ const std::string& StyleMonitor::GetTheme() const
 
 void StyleMonitor::SetTheme(std::string path)
 {
-  StyleChange styleChange;
-  styleChange.themeChange = true;
-  styleChange.themeFilePath = path;
   mTheme = path;
-  EmitStyleChangeSignal(styleChange);
+  EmitStyleChangeSignal( StyleChange::THEME_CHANGE );
+}
+
+bool StyleMonitor::LoadThemeFile( const std::string& filename, std::string& output )
+{
+  for( NamedThemes::iterator iter = gThemes.begin(); iter != gThemes.end(); ++iter )
+  {
+    NamedTheme& theme = *iter;
+    if( theme.name == filename )
+    {
+      output = theme.theme;
+      return true;
+    }
+  }
+
+  if( !gTheme.empty() )
+  {
+    output = gTheme;
+  }
+  else
+  {
+    output = DEFAULT_THEME;
+  }
+  return true;
 }
 
-Dali::StyleMonitor::StyleChangeSignalV2& StyleMonitor::StyleChangeSignal()
+Dali::StyleMonitor::StyleChangeSignalType& StyleMonitor::StyleChangeSignal()
 {
   return mStyleChangeSignal;
 }
@@ -124,9 +184,6 @@ const Internal::Adaptor::StyleMonitor& GetImplementation(const Dali::StyleMonito
   return static_cast<const Internal::Adaptor::StyleMonitor&>(object);
 }
 
-const std::string Dali::StyleMonitor::DEFAULT_FONT_FAMILY("DefaultFont");
-const float       Dali::StyleMonitor::DEFAULT_FONT_SIZE(1.0f);
-
 StyleMonitor::StyleMonitor()
 {
 }
@@ -150,7 +207,12 @@ std::string StyleMonitor::GetDefaultFontFamily() const
   return GetImplementation(*this).GetDefaultFontFamily();
 }
 
-float StyleMonitor::GetDefaultFontSize() const
+std::string StyleMonitor::GetDefaultFontStyle() const
+{
+  return GetImplementation(*this).GetDefaultFontStyle();
+}
+
+int StyleMonitor::GetDefaultFontSize() const
 {
   return GetImplementation(*this).GetDefaultFontSize();
 }
@@ -160,19 +222,19 @@ const std::string& StyleMonitor::GetTheme() const
   return GetImplementation(*this).GetTheme();
 }
 
-void StyleMonitor::SetTheme(std::string themeFilePath)
+void StyleMonitor::SetTheme(const std::string& themeFilePath)
 {
   GetImplementation(*this).SetTheme(themeFilePath);
 }
 
-StyleMonitor::StyleChangeSignalV2& StyleMonitor::StyleChangeSignal()
+StyleMonitor::StyleChangeSignalType& StyleMonitor::StyleChangeSignal()
 {
   return GetImplementation(*this).StyleChangeSignal();
 }
 
-void StyleMonitor::EmitStyleChangeSignal(StyleChange styleChange)
+bool StyleMonitor::LoadThemeFile( const std::string& filename, std::string& output )
 {
-  GetImplementation(*this).EmitStyleChangeSignal(styleChange);
+  return GetImplementation(*this).LoadThemeFile(filename, output);
 }
 
 StyleMonitor& StyleMonitor::operator=(const StyleMonitor& monitor)
@@ -190,3 +252,41 @@ StyleMonitor::StyleMonitor(Internal::Adaptor::StyleMonitor* internal)
 }
 
 } // namespace Dali
+
+namespace Test
+{
+namespace StyleMonitor
+{
+
+void SetThemeFileOutput( const std::string& name, const std::string& output )
+{
+  for( NamedThemes::iterator iter = gThemes.begin(); iter != gThemes.end(); ++iter )
+  {
+    NamedTheme& theme = *iter;
+    if( theme.name == name )
+    {
+      theme.theme = output;
+      return;
+    }
+  }
+
+  gThemes.push_back( NamedTheme( name, output ) );
+}
+
+void SetDefaultFontFamily(const std::string& family)
+{
+  gFontFamily = family;
+}
+
+void SetDefaultFontStyle(const std::string& style)
+{
+  gFontStyle = style;
+}
+
+void SetDefaultFontSize( float size )
+{
+  gFontSize = size;
+}
+
+} // StyleMonitor
+} // Test