#include <dali-toolkit/public-api/controls/control.h>
#include <dali-toolkit/public-api/controls/control-impl.h>
#include <dali-toolkit/public-api/styling/style-manager.h>
-#include <dali-toolkit/internal/styling/util.h>
#include <dali/integration-api/debug.h>
// EXTERNAL INCLUDES
}
StyleManager::StyleManager()
- : mOrientationDegrees( 0 ), // Portrait
- mSetThemeConnection( false )
+ : mOrientationDegrees( 0 ) // Portrait
{
// Add theme builder constants
mThemeBuilderConstants[ PACKAGE_PATH_KEY ] = DEFAULT_PACKAGE_PATH;
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()
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 )
{
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()
RequestThemeChange( DEFAULT_THEME );
}
-bool StyleManager::IsThemeRequestPending()
-{
- return mSetThemeConnection;
-}
-
void StyleManager::SetTheme()
{
mThemeBuilder = CreateBuilder( mThemeBuilderConstants );
LoadJSON( mThemeBuilder, mThemeFile );
- mSetThemeConnection = false;
-
StyleChange change;
change.themeChange = true;
mStyleChangeSignal.Emit( Toolkit::StyleManager::Get(), change );
+++ /dev/null
-#ifndef __DALI_TOOLKIT_INTERNAL_UTIL_H__
-#define __DALI_TOOLKIT_INTERNAL_UTIL_H__
-
-//
-// 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.
-//
-
-// EXTERNAL INCLUDES
-
-// INTERNAL INCLUDES
-
-#include <dali/dali.h>
-#include <dali-toolkit/internal/styling/style-manager-impl.h>
-
-namespace Dali
-{
-
-namespace Toolkit
-{
-
-namespace Internal
-{
-
-namespace Util
-{
-
-/**
- * @brief Callback that the EventProcessingFinishedSignal signal calls
- *
- * Priorities calls to managers
- */
-inline void EventProcessingFinishedSignalPrioritizer()
-{
- // Priority 0: Set all styles
- Toolkit::StyleManager styleManager = Toolkit::StyleManager::Get();
- if( GetImpl(styleManager).IsThemeRequestPending() )
- {
- GetImpl(styleManager).SetTheme();
- }
-
- // Todo: Priority 1: Do relayout after styles have been set
-}
-
-/**
- * @brief Connect to the EventProcessingFinishedSignal
- *
- * Needs to be called only once, but will still operate successfully if called multiple times.
- * Makes the assumption that this is the only thing connecting to the EventProcessingFinishedSignal.
- */
-inline void ConnectEventProcessingFinishedSignal()
-{
- Stage stage = Stage::GetCurrent();
-
- // This is only intended for one purpose!
- if( stage.EventProcessingFinishedSignal().GetConnectionCount() == 0 )
- {
- stage.EventProcessingFinishedSignal().Connect( &EventProcessingFinishedSignalPrioritizer );
- }
-}
-
-} // namespace Util
-
-} // namespace Internal
-
-} // namespace Toolkit
-
-} // namespace Dali
-
-#endif // __DALI_TOOLKIT_INTERNAL_STYLE_MANAGER_H__
-