X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=base%2Fdali-toolkit%2Finternal%2Fstyling%2Fstyle-manager-impl.cpp;h=0e43c192ce4a182111a3ef6b2cc91c4926b8937a;hp=56b97f87eb474922435f2a1207bc44ac1555422b;hb=467273430b68ef02ca30677af8dbb64277e5a668;hpb=022b76df6f53c2860f2684ef1ffee81af1805e2e diff --git a/base/dali-toolkit/internal/styling/style-manager-impl.cpp b/base/dali-toolkit/internal/styling/style-manager-impl.cpp index 56b97f8..0e43c19 100644 --- a/base/dali-toolkit/internal/styling/style-manager-impl.cpp +++ b/base/dali-toolkit/internal/styling/style-manager-impl.cpp @@ -1,18 +1,18 @@ -// -// Copyright (c) 2014 Samsung Electronics Co., Ltd. -// -// Licensed under the Flora License, Version 1.0 (the License); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://floralicense.org/license/ -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an AS IS BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// +/* + * Copyright (c) 2014 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ // CLASS HEADER #include "style-manager-impl.h" @@ -21,7 +21,6 @@ #include #include #include -#include #include // EXTERNAL INCLUDES @@ -59,11 +58,15 @@ BaseHandle Create() { BaseHandle handle = StyleManager::Get(); - if ( !handle && Adaptor::IsAvailable() ) + if ( !handle ) { - Toolkit::StyleManager manager = Toolkit::StyleManager( new Internal::StyleManager() ); - Adaptor::Get().RegisterSingleton( typeid( manager ), manager ); - handle = manager; + SingletonService singletonService( SingletonService::Get() ); + if ( singletonService ) + { + Toolkit::StyleManager manager = Toolkit::StyleManager( new Internal::StyleManager() ); + singletonService.Register( typeid( manager ), manager ); + handle = manager; + } } return handle; @@ -88,10 +91,11 @@ Toolkit::StyleManager StyleManager::Get() { Toolkit::StyleManager manager; - if ( Adaptor::IsAvailable() ) + SingletonService singletonService( SingletonService::Get() ); + if ( singletonService ) { // Check whether the style manager is already created - Dali::BaseHandle handle = Dali::Adaptor::Get().GetSingleton( typeid( Toolkit::StyleManager ) ); + Dali::BaseHandle handle = singletonService.GetSingleton( typeid( Toolkit::StyleManager ) ); if( handle ) { // If so, downcast the handle of singleton @@ -103,27 +107,33 @@ Toolkit::StyleManager StyleManager::Get() } StyleManager::StyleManager() - : mOrientationDegrees( 0 ), // Portrait - mSetThemeConnection( false ) + : mOrientationDegrees( 0 ) // Portrait { // Add theme builder constants mThemeBuilderConstants[ PACKAGE_PATH_KEY ] = DEFAULT_PACKAGE_PATH; RequestDefaultTheme(); + + StyleMonitor styleMonitor( StyleMonitor::Get() ); + if( styleMonitor ) + { + styleMonitor.StyleChangeSignal().Connect( this, &StyleManager::StyleMonitorChange ); + } } StyleManager::~StyleManager() { - // Disconnect from signal - SetOrientation( Orientation() ); } void StyleManager::SetOrientationValue( int orientation ) { - mOrientationDegrees = orientation; - - Util::ConnectEventProcessingFinishedSignal(); - mSetThemeConnection = true; + if( orientation != mOrientationDegrees ) + { + mOrientationDegrees = orientation; + // TODO: if orientation changed, apply the new style to all controls + // dont want to really do the whole load from file again if the bundle contains both portrait & landscape + SetTheme(); + } } int StyleManager::GetOrientationValue() @@ -171,12 +181,9 @@ bool StyleManager::GetStyleConstant( const std::string& key, Property::Value& va void StyleManager::OnOrientationChanged( Orientation orientation ) { mOrientation = orientation; - - if( mOrientation ) - { - Util::ConnectEventProcessingFinishedSignal(); - mSetThemeConnection = true; - } + // TODO: if orientation changed, apply the new style to all controls + // dont want to really do the whole load from file again if the bundle contains both portrait & landscape + SetTheme(); } Toolkit::Builder StyleManager::CreateBuilder( const PropertyValueMap& constants ) @@ -330,25 +337,17 @@ bool StyleManager::LoadFile( const std::string& filename, std::string& stringOut return false; } -Toolkit::StyleManager::ThemeChangeSignalType& StyleManager::ThemeChangeSignal() +Toolkit::StyleManager::StyleChangeSignalType& StyleManager::StyleChangeSignal() { - return mThemeChangeSignal; -} - -void StyleManager::EmitThemeChangeSignal() -{ - if( !mThemeChangeSignal.Empty() ) - { - mThemeChangeSignal.Emit( Toolkit::StyleManager::Get() ); - } + return mStyleChangeSignal; } void StyleManager::RequestThemeChange( const std::string& themeFile ) { mThemeFile = themeFile; - Util::ConnectEventProcessingFinishedSignal(); - mSetThemeConnection = true; + // need to do style change synchronously as app might create a UI control on the next line + SetTheme(); } void StyleManager::RequestDefaultTheme() @@ -356,19 +355,14 @@ void StyleManager::RequestDefaultTheme() RequestThemeChange( DEFAULT_THEME ); } -bool StyleManager::IsThemeRequestPending() -{ - return mSetThemeConnection; -} - void StyleManager::SetTheme() { mThemeBuilder = CreateBuilder( mThemeBuilderConstants ); LoadJSON( mThemeBuilder, mThemeFile ); - mSetThemeConnection = false; - - EmitThemeChangeSignal(); + StyleChange change; + change.themeChange = true; + mStyleChangeSignal.Emit( Toolkit::StyleManager::Get(), change ); } Toolkit::Builder StyleManager::FindCachedBuilder( const std::string& key ) @@ -387,6 +381,11 @@ void StyleManager::CacheBuilder( Toolkit::Builder builder, const std::string& ke mBuilderCache[ key ] = builder; } +void StyleManager::StyleMonitorChange( StyleMonitor styleMonitor, StyleChange styleChange ) +{ + mStyleChangeSignal.Emit( Toolkit::StyleManager::Get(), styleChange ); +} + } // namespace Internal } // namespace Toolkit