/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2018 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
*/
+// HEADER
#include "toolkit-style-monitor.h"
-#include <dali/public-api/common/dali-common.h>
+// EXTERNAL INCLUDES
+#include <dali-toolkit/public-api/dali-toolkit-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.h>
-namespace Dali
+namespace
+{
+const char* DEFAULT_THEME=
+ "{\n"
+ " \"config\":\n"
+ " {\n"
+ " \"brokenImageUrl\":\"{DALI_IMAGE_DIR}broken.png\"\n"
+ " },\n"
+ " \"styles\":\n"
+ " {\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
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::StyleChangeSignalType& StyleChangeSignal();
- void EmitStyleChangeSignal(StyleChange styleChange)
+ void EmitStyleChangeSignal(StyleChange::Type styleChange)
{
mStyleChangeSignal.Emit(Dali::StyleMonitor(this), styleChange);
}
private:
Dali::StyleMonitor::StyleChangeSignalType mStyleChangeSignal;
static Dali::StyleMonitor mToolkitStyleMonitor;
- std::string mTheme;
+
+ std::string mTheme; ///<< Current theme name
};
Dali::StyleMonitor StyleMonitor::mToolkitStyleMonitor;
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
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::StyleChangeSignalType& StyleMonitor::StyleChangeSignal()
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()
{
}
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();
}
return GetImplementation(*this).GetTheme();
}
-void StyleMonitor::SetTheme(std::string themeFilePath)
+void StyleMonitor::SetTheme(const std::string& themeFilePath)
{
GetImplementation(*this).SetTheme(themeFilePath);
}
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)
}
} // 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