X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=adaptors%2Fcommon%2Fstyle-monitor-impl.cpp;h=f85e0b145fff71a3b81375651b4230ef51f87099;hb=6e329ecbaa0bc9ff01f2031434f4f266b4808752;hp=3db191bf086d0ffb0c3b2b278644117fd7ea52f4;hpb=a0ab098f5c367afe8f8087a4c08576eabd8e36af;p=platform%2Fcore%2Fuifw%2Fdali-adaptor.git diff --git a/adaptors/common/style-monitor-impl.cpp b/adaptors/common/style-monitor-impl.cpp index 3db191b..f85e0b1 100644 --- a/adaptors/common/style-monitor-impl.cpp +++ b/adaptors/common/style-monitor-impl.cpp @@ -20,6 +20,9 @@ // EXTERNAL INCLUDES #include +#include +#include +#include // INTERNAL INCLUDES #include @@ -37,25 +40,24 @@ namespace Adaptor 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 @@ -64,34 +66,63 @@ Dali::StyleMonitor StyleMonitor::Get() 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); @@ -99,12 +130,17 @@ void StyleMonitor::StyleChanged(StyleChange 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 @@ -114,12 +150,25 @@ 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::StyleChangeSignalType& StyleMonitor::StyleChangeSignal() @@ -127,10 +176,11 @@ Dali::StyleMonitor::StyleChangeSignalType& StyleMonitor::StyleChangeSignal() return mStyleChangeSignal; } -void StyleMonitor::EmitStyleChangeSignal(StyleChange styleChange) +void StyleMonitor::EmitStyleChangeSignal( StyleChange::Type styleChange ) { if( !mStyleChangeSignal.Empty() ) { + DALI_LOG_INFO( gLogFilter, Debug::Verbose, "StyleMonitor::EmitStyleChangeSignal\n" ); Dali::StyleMonitor handle( this ); mStyleChangeSignal.Emit( handle, styleChange ); }