Merge remote-tracking branch 'origin/tizen' into new_text
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / public-api / controls / control-impl.cpp
index 4cea531..f8eded1 100644 (file)
@@ -168,6 +168,7 @@ public:
   // Construction & Destruction
   Impl(Control& controlImpl)
   : mControlImpl( controlImpl ),
   // Construction & Destruction
   Impl(Control& controlImpl)
   : mControlImpl( controlImpl ),
+    mStyleName(""),
     mBackground( NULL ),
     mStartingPinchScale( NULL ),
     mKeyEventSignal(),
     mBackground( NULL ),
     mStartingPinchScale( NULL ),
     mKeyEventSignal(),
@@ -246,6 +247,12 @@ public:
 
       switch ( index )
       {
 
       switch ( index )
       {
+        case Toolkit::Control::Property::STYLE_NAME:
+        {
+          controlImpl.SetStyleName( value.Get< std::string >() );
+          break;
+        }
+
         case Toolkit::Control::Property::BACKGROUND_COLOR:
         {
           controlImpl.SetBackgroundColor( value.Get< Vector4 >() );
         case Toolkit::Control::Property::BACKGROUND_COLOR:
         {
           controlImpl.SetBackgroundColor( value.Get< Vector4 >() );
@@ -306,6 +313,12 @@ public:
 
       switch ( index )
       {
 
       switch ( index )
       {
+        case Toolkit::Control::Property::STYLE_NAME:
+        {
+          value = controlImpl.GetStyleName();
+          break;
+        }
+
         case Toolkit::Control::Property::BACKGROUND_COLOR:
         {
           value = controlImpl.GetBackgroundColor();
         case Toolkit::Control::Property::BACKGROUND_COLOR:
         {
           value = controlImpl.GetBackgroundColor();
@@ -347,6 +360,7 @@ public:
   // Data
 
   Control& mControlImpl;
   // Data
 
   Control& mControlImpl;
+  std::string mStyleName;
   Background* mBackground;           ///< Only create the background if we use it
   Vector3* mStartingPinchScale;      ///< The scale when a pinch gesture starts, TODO: consider removing this
   Toolkit::Control::KeyEventSignalType mKeyEventSignal;
   Background* mBackground;           ///< Only create the background if we use it
   Vector3* mStartingPinchScale;      ///< The scale when a pinch gesture starts, TODO: consider removing this
   Toolkit::Control::KeyEventSignalType mKeyEventSignal;
@@ -369,12 +383,14 @@ public:
   static PropertyRegistration PROPERTY_1;
   static PropertyRegistration PROPERTY_2;
   static PropertyRegistration PROPERTY_3;
   static PropertyRegistration PROPERTY_1;
   static PropertyRegistration PROPERTY_2;
   static PropertyRegistration PROPERTY_3;
+  static PropertyRegistration PROPERTY_4;
 };
 
 // Properties registered without macro to use specific member variables.
 };
 
 // Properties registered without macro to use specific member variables.
-PropertyRegistration Control::Impl::PROPERTY_1( typeRegistration, "background-color", Toolkit::Control::Property::BACKGROUND_COLOR, Property::VECTOR4, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
-PropertyRegistration Control::Impl::PROPERTY_2( typeRegistration, "background-image", Toolkit::Control::Property::BACKGROUND_IMAGE, Property::MAP,     &Control::Impl::SetProperty, &Control::Impl::GetProperty );
-PropertyRegistration Control::Impl::PROPERTY_3( typeRegistration, "key-input-focus",  Toolkit::Control::Property::KEY_INPUT_FOCUS,  Property::BOOLEAN, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
+PropertyRegistration Control::Impl::PROPERTY_1( typeRegistration, "style-name",       Toolkit::Control::Property::STYLE_NAME,       Property::STRING,  &Control::Impl::SetProperty, &Control::Impl::GetProperty );
+PropertyRegistration Control::Impl::PROPERTY_2( typeRegistration, "background-color", Toolkit::Control::Property::BACKGROUND_COLOR, Property::VECTOR4, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
+PropertyRegistration Control::Impl::PROPERTY_3( typeRegistration, "background-image", Toolkit::Control::Property::BACKGROUND_IMAGE, Property::MAP,     &Control::Impl::SetProperty, &Control::Impl::GetProperty );
+PropertyRegistration Control::Impl::PROPERTY_4( typeRegistration, "key-input-focus",  Toolkit::Control::Property::KEY_INPUT_FOCUS,  Property::BOOLEAN, &Control::Impl::SetProperty, &Control::Impl::GetProperty );
 
 Toolkit::Control Control::New()
 {
 
 Toolkit::Control Control::New()
 {
@@ -491,6 +507,23 @@ LongPressGestureDetector Control::GetLongPressGestureDetector() const
   return mImpl->mLongPressGestureDetector;
 }
 
   return mImpl->mLongPressGestureDetector;
 }
 
+void Control::SetStyleName( const std::string& styleName )
+{
+  if( styleName != mImpl->mStyleName )
+  {
+    mImpl->mStyleName = styleName;
+
+    // Apply new style
+    Toolkit::StyleManager styleManager = Toolkit::StyleManager::Get();
+    GetImpl( styleManager ).ApplyThemeStyle( Toolkit::Control( GetOwner() ) );
+  }
+}
+
+const std::string& Control::GetStyleName() const
+{
+  return mImpl->mStyleName;
+}
+
 void Control::SetBackgroundColor( const Vector4& color )
 {
   Background& background( mImpl->GetBackground() );
 void Control::SetBackgroundColor( const Vector4& color )
 {
   Background& background( mImpl->GetBackground() );
@@ -730,7 +763,7 @@ void Control::Initialize()
     Toolkit::StyleManager styleManager = Toolkit::StyleManager::Get();
 
     // Register for style changes
     Toolkit::StyleManager styleManager = Toolkit::StyleManager::Get();
 
     // Register for style changes
-    styleManager.StyleChangeSignal().Connect( this, &Control::DoStyleChange );
+    styleManager.StyleChangeSignal().Connect( this, &Control::OnStyleChange );
 
     // SetTheme
     GetImpl( styleManager ).ApplyThemeStyle( Toolkit::Control( GetOwner() ) );
 
     // SetTheme
     GetImpl( styleManager ).ApplyThemeStyle( Toolkit::Control( GetOwner() ) );
@@ -808,13 +841,13 @@ void Control::OnActivated()
 {
 }
 
 {
 }
 
-void Control::OnThemeChange( Toolkit::StyleManager styleManager )
-{
-  GetImpl( styleManager ).ApplyThemeStyle( Toolkit::Control( GetOwner() ) );
-}
-
-void Control::OnFontChange( bool defaultFontChange, bool defaultFontSizeChange )
+void Control::OnStyleChange( Toolkit::StyleManager styleManager, StyleChange change )
 {
 {
+  // By default the control is only interested in theme (not font) changes
+  if( change.themeChange )
+  {
+    GetImpl( styleManager ).ApplyThemeStyle( Toolkit::Control( GetOwner() ) );
+  }
 }
 
 void Control::OnPinch(const PinchGesture& pinch)
 }
 
 void Control::OnPinch(const PinchGesture& pinch)
@@ -984,18 +1017,6 @@ void Control::SignalDisconnected( SlotObserver* slotObserver, CallbackBase* call
   mImpl->SignalDisconnected( slotObserver, callback );
 }
 
   mImpl->SignalDisconnected( slotObserver, callback );
 }
 
-void Control::DoStyleChange( Toolkit::StyleManager styleManager, StyleChange change )
-{
-  if( change.themeChange )
-  {
-    OnThemeChange( styleManager );
-  }
-  else if( change.defaultFontChange || change.defaultFontSizeChange )
-  {
-    OnFontChange( change.defaultFontChange, change.defaultFontSizeChange );
-  }
-}
-
 } // namespace Internal
 
 } // namespace Toolkit
 } // namespace Internal
 
 } // namespace Toolkit