// CLASS HEADER
#include "style-monitor-impl.h"
-// INTERNAL INCLUDES
+// EXTERNAL INCLUDES
#include <dali/public-api/object/type-registry.h>
+#include <fstream>
+#include <sstream>
+#include <dali/integration-api/debug.h>
+
+// INTERNAL INCLUDES
#include <adaptor-impl.h>
#include <singleton-service-impl.h>
namespace
{
-BaseHandle Create()
-{
- BaseHandle handle( StyleMonitor::Get() );
+#if defined(DEBUG_ENABLED)
+Dali::Integration::Log::Filter* gLogFilter = Dali::Integration::Log::Filter::New(Debug::NoLogging, false, "LOG_STYLE_MONITOR");
+#endif
- if ( !handle && Adaptor::IsAvailable() )
+/**
+ * Use font client to get the system default font family
+ * @param[in] fontClient handle to font client
+ * @param[out] fontFamily string representing font family
+ */
+void GetSystemDefaultFontFamily( TextAbstraction::FontClient& fontClient, std::string& fontFamily )
+{
+ TextAbstraction::FontDescription defaultFontDescription;
+ if ( fontClient )
{
- Dali::SingletonService service( SingletonService::Get() );
- if ( service )
- {
- Adaptor& adaptorImpl( Adaptor::GetImplementation( Adaptor::Get() ) );
- Dali::StyleMonitor styleMonitor = Dali::StyleMonitor( new StyleMonitor( adaptorImpl.GetPlatformAbstraction() ) );
- service.Register( typeid( styleMonitor ), styleMonitor );
- handle = styleMonitor;
- }
+ fontClient.GetDefaultPlatformFontDescription( defaultFontDescription );
+ fontFamily = defaultFontDescription.family;
}
-
- return handle;
}
-TypeRegistration STYLE_MONITOR_TYPE( typeid(Dali::StyleMonitor), typeid(Dali::BaseHandle), Create, true /* Create Instance At Startup */ );
} // unnamed namespace
Dali::StyleMonitor styleMonitor;
Dali::SingletonService service( SingletonService::Get() );
- if ( service )
+ if( service )
{
// Check whether the singleton is already created
Dali::BaseHandle handle = service.GetSingleton( typeid( Dali::StyleMonitor ) );
- if(handle)
+ if( handle )
{
// If so, downcast the handle
styleMonitor = Dali::StyleMonitor( dynamic_cast< StyleMonitor* >( handle.GetObjectPtr() ) );
}
+ else
+ {
+ styleMonitor = Dali::StyleMonitor( new StyleMonitor() );
+ service.Register( typeid( styleMonitor ), styleMonitor );
+ }
}
return styleMonitor;
}
-StyleMonitor::StyleMonitor(Integration::PlatformAbstraction& platformAbstraction)
-: mPlatformAbstraction(platformAbstraction)
+StyleMonitor::StyleMonitor()
+: mDefaultFontSize(-1)
{
+ mFontClient = TextAbstraction::FontClient::Get();
+ GetSystemDefaultFontFamily( mFontClient, mDefaultFontFamily );
+ DALI_LOG_INFO( gLogFilter, Debug::Verbose, "StyleMonitor::StyleMonitor::DefaultFontFamily(%s)\n", mDefaultFontFamily.c_str() );
+ mDefaultFontSize = mFontClient.GetDefaultFontSize();
}
StyleMonitor::~StyleMonitor()
{
}
-void StyleMonitor::StyleChanged(StyleChange styleChange)
+void StyleMonitor::StyleChanged( StyleChange::Type styleChange )
{
- if (styleChange.defaultFontChange || styleChange.defaultFontSizeChange)
+ switch ( styleChange )
{
- mPlatformAbstraction.UpdateDefaultsFromDevice();
+ case StyleChange::DEFAULT_FONT_CHANGE:
+ {
+ if ( mFontClient )
+ {
+ mFontClient.ResetSystemDefaults();
+ GetSystemDefaultFontFamily( mFontClient, mDefaultFontFamily );
+ }
+ DALI_LOG_INFO( gLogFilter, Debug::Verbose, "StyleMonitor::StyleChanged::DefaultFontFamily(%s)\n", mDefaultFontFamily.c_str() );
+ break;
+ }
+
+ case StyleChange::DEFAULT_FONT_SIZE_CHANGE:
+ {
+ mDefaultFontSize = mFontClient.GetDefaultFontSize();
+ break;
+ }
+
+ case StyleChange::THEME_CHANGE:
+ {
+ break;
+ }
}
EmitStyleChangeSignal(styleChange);
std::string StyleMonitor::GetDefaultFontFamily() const
{
- return mPlatformAbstraction.GetDefaultFontFamily();
+ return mDefaultFontFamily;
+}
+
+std::string StyleMonitor::GetDefaultFontStyle() const
+{
+ return mDefaultFontStyle;
}
-float StyleMonitor::GetDefaultFontSize() const
+int StyleMonitor::GetDefaultFontSize() const
{
- return mPlatformAbstraction.GetDefaultFontSize();
+ return mDefaultFontSize;
}
const std::string& StyleMonitor::GetTheme() const
void StyleMonitor::SetTheme(const std::string& path)
{
- StyleChange styleChange;
- styleChange.themeChange = true;
- styleChange.themeFilePath = path;
mUserDefinedThemeFilePath = path;
+ EmitStyleChangeSignal( StyleChange::THEME_CHANGE );
+}
- EmitStyleChangeSignal(styleChange);
+bool StyleMonitor::LoadThemeFile( const std::string& filename, std::string& output )
+{
+ bool retval( false );
+ std::ifstream in( filename.c_str(), std::ios::in );
+ if( in )
+ {
+ std::stringstream buffer;
+ buffer << in.rdbuf();
+
+ output = buffer.str();
+
+ in.close();
+ retval = true;
+ }
+ return retval;
}
-Dali::StyleMonitor::StyleChangeSignalV2& StyleMonitor::StyleChangeSignal()
+Dali::StyleMonitor::StyleChangeSignalType& StyleMonitor::StyleChangeSignal()
{
- return mStyleChangeSignalV2;
+ return mStyleChangeSignal;
}
-void StyleMonitor::EmitStyleChangeSignal(StyleChange styleChange)
+void StyleMonitor::EmitStyleChangeSignal( StyleChange::Type styleChange )
{
- if( !mStyleChangeSignalV2.Empty() )
+ if( !mStyleChangeSignal.Empty() )
{
+ DALI_LOG_INFO( gLogFilter, Debug::Verbose, "StyleMonitor::EmitStyleChangeSignal\n" );
Dali::StyleMonitor handle( this );
- mStyleChangeSignalV2.Emit( handle, styleChange );
+ mStyleChangeSignal.Emit( handle, styleChange );
}
}