From 2acdedcc7c7e732a9ec97d08c8cee7423ed6ebf7 Mon Sep 17 00:00:00 2001 From: Heeyong Song Date: Wed, 11 Feb 2015 13:15:56 +0900 Subject: [PATCH] Button Refactoring phase 1 Change-Id: I5a11de7cb39228882358f83f0d2028af0c3db2e6 --- .../dali-toolkit-internal/utc-Dali-PushButton.cpp | 58 +- .../src/dali-toolkit/utc-Dali-CheckBoxButton.cpp | 36 +- .../src/dali-toolkit/utc-Dali-PushButton.cpp | 124 +-- .../src/dali-toolkit/utc-Dali-RadioButton.cpp | 106 +- .../internal/controls/buttons/button-impl.cpp | 624 ++++++++++- .../internal/controls/buttons/button-impl.h | 326 +++++- .../controls/buttons/button-painter-impl.h | 96 +- .../check-box-button-default-painter-impl.cpp | 804 +++++++------- .../check-box-button-default-painter-impl.h | 108 +- .../controls/buttons/check-box-button-impl.cpp | 199 +--- .../controls/buttons/check-box-button-impl.h | 170 --- .../buttons/check-box-button-painter-impl.h | 8 - .../buttons/push-button-default-painter-impl.cpp | 1163 ++++++++++---------- .../buttons/push-button-default-painter-impl.h | 133 +-- .../internal/controls/buttons/push-button-impl.cpp | 592 +--------- .../internal/controls/buttons/push-button-impl.h | 331 ------ .../controls/buttons/push-button-painter-impl.h | 39 - .../controls/buttons/radio-button-impl.cpp | 104 +- .../internal/controls/buttons/radio-button-impl.h | 53 +- .../public-api/controls/buttons/button.cpp | 83 +- dali-toolkit/public-api/controls/buttons/button.h | 151 ++- .../controls/buttons/check-box-button.cpp | 36 +- .../public-api/controls/buttons/check-box-button.h | 61 +- .../public-api/controls/buttons/push-button.cpp | 80 -- .../public-api/controls/buttons/push-button.h | 137 +-- .../public-api/controls/buttons/radio-button.cpp | 54 +- .../public-api/controls/buttons/radio-button.h | 61 +- .../default-controls/check-button-factory.cpp | 32 +- .../default-controls/check-button-factory.h | 32 +- 29 files changed, 2606 insertions(+), 3195 deletions(-) diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-PushButton.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-PushButton.cpp index 9885e19..500b653 100644 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-PushButton.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-PushButton.cpp @@ -18,10 +18,10 @@ #include #include +#include #include #include #include -#include using namespace Dali; @@ -30,10 +30,10 @@ using namespace Toolkit; namespace { -static bool gPushButtonToggleState = false; -bool PushButtonToggled( Button button, bool toggled ) +static bool gPushButtonSelectedState = false; +bool PushButtonSelected( Button button, bool selected ) { - gPushButtonToggleState = toggled && ( toggled == static_cast( button ).IsToggled() ); + gPushButtonSelectedState = selected && ( selected == static_cast( button ).IsSelected() ); return true; } @@ -67,15 +67,15 @@ class TETButton; } /** - * Creates a Button to test if interrupt events are handled correctly. + * Creates a PushButton to test if interrupt events are handled correctly. */ -class TETButton : public Button +class TETButton : public PushButton { public: // PushButton Pressed - typedef Signal< bool ( Button ) > PressedSignalType; + typedef Signal< bool ( PushButton ) > ButtonSignalType; - PressedSignalType& PressedSignal(); + ButtonSignalType& PressedSignal(); /** * Default constructor. @@ -85,7 +85,7 @@ public: /** * Copy constructor. */ - TETButton( const Button& button ); + TETButton( const PushButton& button ); /** * Assignment operator. @@ -121,7 +121,7 @@ namespace Internal /** * Internal implementation */ -class TETButton : public Button +class TETButton : public PushButton { public: /** @@ -142,7 +142,7 @@ public: /** * @return the pressed signal. */ - Toolkit::TETButton::PressedSignalType& PressedSignal(); + Toolkit::TETButton::ButtonSignalType& PressedSignal(); /** * Callback called when an interrupt events is received. @@ -154,7 +154,7 @@ public: */ void OnButtonDown(); - Toolkit::TETButton::PressedSignalType mPressedSignal; ///< Signal emitted when the button is pressed. + Toolkit::TETButton::ButtonSignalType mPressedSignal; ///< Signal emitted when the button is pressed. }; } // namespace Internal @@ -163,8 +163,8 @@ TETButton::TETButton() { } -TETButton::TETButton( const Button& button ) -: Button( button ) +TETButton::TETButton( const PushButton& button ) +: PushButton( button ) { } @@ -172,7 +172,7 @@ TETButton& TETButton::operator=( const TETButton& button ) { if( &button != this ) { - Button::operator=( button ); + PushButton::operator=( button ); } return *this; } @@ -187,7 +187,7 @@ TETButton TETButton::DownCast( BaseHandle handle ) return Control::DownCast(handle); } -TETButton::PressedSignalType& TETButton::PressedSignal() +TETButton::ButtonSignalType& TETButton::PressedSignal() { TETButton button( *this ); DALI_ASSERT_ALWAYS( button ); @@ -198,11 +198,11 @@ TETButton::PressedSignalType& TETButton::PressedSignal() } TETButton::TETButton( Internal::TETButton& implementation ) -: Button( implementation ) +: PushButton( implementation ) {} TETButton::TETButton( Dali::Internal::CustomActor* internal ) -: Button( internal ) +: PushButton( internal ) { VerifyCustomActorPointer(internal); } @@ -211,7 +211,7 @@ namespace Internal { TETButton::TETButton() -: Button(), +: PushButton(), mPressedSignal() { } @@ -235,7 +235,7 @@ Toolkit::TETButton TETButton::New() return tetButton; } -Toolkit::TETButton::PressedSignalType& TETButton::PressedSignal() +Toolkit::TETButton::ButtonSignalType& TETButton::PressedSignal() { return mPressedSignal; } @@ -277,7 +277,7 @@ public: { } - bool Callback( Button button ) + bool Callback( PushButton button ) { switch( mTest ) { @@ -660,18 +660,18 @@ int UtcDaliPushButtonProperties(void) DALI_TEST_EQUALS( 4.0f, button.GetProperty< float >( Button::PROPERTY_NEXT_AUTO_REPEATING_DELAY ), TEST_LOCATION ); // Button::PROPERTY_TOGGLABLE - button.SetToggleButton( false ); + button.SetTogglableButton( false ); DALI_TEST_CHECK( ! button.GetProperty< bool >( Button::PROPERTY_TOGGLABLE ) ); button.SetProperty( Button::PROPERTY_TOGGLABLE, true ); - DALI_TEST_CHECK( button.IsToggleButton() ) ; + DALI_TEST_CHECK( button.IsTogglableButton() ) ; DALI_TEST_CHECK( button.GetProperty< bool >( Button::PROPERTY_TOGGLABLE ) ); - // Button::PROPERTY_TOGGLED - button.SetToggled( false ); - DALI_TEST_CHECK( ! button.GetProperty< bool >( Button::PROPERTY_TOGGLED ) ); - button.SetProperty( Button::PROPERTY_TOGGLED, true ); - DALI_TEST_CHECK( button.IsToggled() ) ; - DALI_TEST_CHECK( button.GetProperty< bool >( Button::PROPERTY_TOGGLED ) ); + // Button::PROPERTY_SELECTED + button.SetSelected( false ); + DALI_TEST_CHECK( ! button.GetProperty< bool >( Button::PROPERTY_SELECTED ) ); + button.SetProperty( Button::PROPERTY_SELECTED, true ); + DALI_TEST_CHECK( button.IsSelected() ) ; + DALI_TEST_CHECK( button.GetProperty< bool >( Button::PROPERTY_SELECTED ) ); // Button::PROPERTY_NORMAL_STATE_ACTOR { diff --git a/automated-tests/src/dali-toolkit/utc-Dali-CheckBoxButton.cpp b/automated-tests/src/dali-toolkit/utc-Dali-CheckBoxButton.cpp index f016900..6892c84 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-CheckBoxButton.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-CheckBoxButton.cpp @@ -27,9 +27,9 @@ namespace { static bool gCheckBoxButtonState = false; -bool CheckBoxButtonClicked( Button button, bool state ) +bool CheckBoxButtonClicked( Button button ) { - gCheckBoxButtonState = state; + gCheckBoxButtonState = button.IsSelected(); return true; } @@ -69,10 +69,10 @@ void checkbox_button_cleanup(void) test_return_value = TET_PASS; } -int UtcDaliCheckBoxButtonSetGetChecked(void) +int UtcDaliCheckBoxButtonSetGetSelected(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliCheckBoxButtonSetGetChecked"); + tet_infoline(" UtcDaliCheckBoxButtonSetGetSelected"); CheckBoxButton checkBoxButton = CheckBoxButton::New(); checkBoxButton.StateChangedSignal().Connect( &CheckBoxButtonClicked ); @@ -80,19 +80,19 @@ int UtcDaliCheckBoxButtonSetGetChecked(void) // global var used to check if CheckBoxButtonClicked is called; gCheckBoxButtonState = false; - checkBoxButton.SetChecked( true ); + checkBoxButton.SetSelected( true ); - DALI_TEST_CHECK( checkBoxButton.IsChecked() ); + DALI_TEST_CHECK( checkBoxButton.IsSelected() ); DALI_TEST_CHECK( gCheckBoxButtonState ); - checkBoxButton.SetChecked( false ); + checkBoxButton.SetSelected( false ); - DALI_TEST_CHECK( !checkBoxButton.IsChecked() ); + DALI_TEST_CHECK( !checkBoxButton.IsSelected() ); DALI_TEST_CHECK( !gCheckBoxButtonState ); - checkBoxButton.SetChecked( true ); + checkBoxButton.SetSelected( true ); - DALI_TEST_CHECK( checkBoxButton.IsChecked() ); + DALI_TEST_CHECK( checkBoxButton.IsSelected() ); DALI_TEST_CHECK( gCheckBoxButtonState ); END_TEST; } @@ -148,22 +148,22 @@ int UtcDaliCheckBoxButtonSetImages(void) DALI_TEST_EQUALS( size.width, 20.f, TEST_LOCATION ); DALI_TEST_EQUALS( size.height, 20.f, TEST_LOCATION ); - checkBoxButton.SetCheckedImage( image02 ); + checkBoxButton.SetSelectedImage( image02 ); application.SendNotification(); application.Render(); - size = checkBoxButton.GetCheckedImage().GetCurrentSize(); + size = checkBoxButton.GetSelectedImage().GetCurrentSize(); DALI_TEST_EQUALS( size.width, 30.f, TEST_LOCATION ); DALI_TEST_EQUALS( size.height, 30.f, TEST_LOCATION ); - checkBoxButton.SetCheckedImage( imageActor02 ); + checkBoxButton.SetSelectedImage( imageActor02 ); application.SendNotification(); application.Render(); - size = checkBoxButton.GetCheckedImage().GetCurrentSize(); + size = checkBoxButton.GetSelectedImage().GetCurrentSize(); DALI_TEST_EQUALS( size.width, 40.f, TEST_LOCATION ); DALI_TEST_EQUALS( size.height, 40.f, TEST_LOCATION ); @@ -188,22 +188,22 @@ int UtcDaliCheckBoxButtonSetImages(void) DALI_TEST_EQUALS( size.width, 60.f, TEST_LOCATION ); DALI_TEST_EQUALS( size.height, 60.f, TEST_LOCATION ); - checkBoxButton.SetDisabledCheckedImage( image04 ); + checkBoxButton.SetDisabledSelectedImage( image04 ); application.SendNotification(); application.Render(); - size = checkBoxButton.GetDisabledCheckedImage().GetCurrentSize(); + size = checkBoxButton.GetDisabledSelectedImage().GetCurrentSize(); DALI_TEST_EQUALS( size.width, 70.f, TEST_LOCATION ); DALI_TEST_EQUALS( size.height, 70.f, TEST_LOCATION ); - checkBoxButton.SetDisabledCheckedImage( imageActor04 ); + checkBoxButton.SetDisabledSelectedImage( imageActor04 ); application.SendNotification(); application.Render(); - size = checkBoxButton.GetDisabledCheckedImage().GetCurrentSize(); + size = checkBoxButton.GetDisabledSelectedImage().GetCurrentSize(); DALI_TEST_EQUALS( size.width, 80.f, TEST_LOCATION ); DALI_TEST_EQUALS( size.height, 80.f, TEST_LOCATION ); diff --git a/automated-tests/src/dali-toolkit/utc-Dali-PushButton.cpp b/automated-tests/src/dali-toolkit/utc-Dali-PushButton.cpp index 2f0b7fc..7313afc 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-PushButton.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-PushButton.cpp @@ -42,10 +42,10 @@ void utc_dali_toolkit_pushbutton_cleanup(void) namespace { -static bool gPushButtonToggleState = false; -bool PushButtonToggled( Button button, bool toggled ) +static bool gPushButtonSelectedState = false; +bool PushButtonSelected( Button button ) { - gPushButtonToggleState = toggled && ( toggled == static_cast( button ).IsToggled() ); + gPushButtonSelectedState = button.IsSelected(); return true; } @@ -118,101 +118,101 @@ int UtcDaliPushButtonSetGetAutoRepeating(void) END_TEST; } -int UtcDaliPushButtonSetGetToggleButton(void) +int UtcDaliPushButtonSetGetTogglableButton(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliPushButtonSetGetToggleButton"); + tet_infoline(" UtcDaliPushButtonSetGetTogglableButton"); PushButton pushButton = PushButton::New(); - pushButton.SetToggleButton( true ); + pushButton.SetTogglableButton( true ); - DALI_TEST_CHECK( pushButton.IsToggleButton() ); + DALI_TEST_CHECK( pushButton.IsTogglableButton() ); - pushButton.SetToggleButton( false ); + pushButton.SetTogglableButton( false ); - DALI_TEST_CHECK( !pushButton.IsToggleButton() ); + DALI_TEST_CHECK( !pushButton.IsTogglableButton() ); - pushButton.SetToggleButton( true ); + pushButton.SetTogglableButton( true ); - DALI_TEST_CHECK( pushButton.IsToggleButton() ); + DALI_TEST_CHECK( pushButton.IsTogglableButton() ); END_TEST; } -int UtcDaliPushButtonSetGetAutoRepeatingAndToggleButton(void) +int UtcDaliPushButtonSetGetAutoRepeatingAndTogglableButton(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliPushButtonSetGetAutoRepeatingAndToggleButton"); + tet_infoline(" UtcDaliPushButtonSetGetAutoRepeatingAndTogglableButton"); PushButton pushButton = PushButton::New(); pushButton.SetAutoRepeating( true ); - pushButton.SetToggleButton( true ); + pushButton.SetTogglableButton( true ); - DALI_TEST_CHECK( pushButton.IsToggleButton() ); + DALI_TEST_CHECK( pushButton.IsTogglableButton() ); DALI_TEST_CHECK( !pushButton.IsAutoRepeating() ); - pushButton.SetToggleButton( true ); + pushButton.SetTogglableButton( true ); pushButton.SetAutoRepeating( true ); DALI_TEST_CHECK( pushButton.IsAutoRepeating() ); - DALI_TEST_CHECK( !pushButton.IsToggleButton() ); + DALI_TEST_CHECK( !pushButton.IsTogglableButton() ); END_TEST; } -int UtcDaliPushButtonSetGetToggled01(void) +int UtcDaliPushButtonSetGetSelected01(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliPushButtonSetGetToggled01"); + tet_infoline(" UtcDaliPushButtonSetGetSelected01"); PushButton pushButton = PushButton::New(); - pushButton.SetToggleButton( true ); - pushButton.StateChangedSignal().Connect( &PushButtonToggled ); + pushButton.SetTogglableButton( true ); + pushButton.StateChangedSignal().Connect( &PushButtonSelected ); - gPushButtonToggleState = false; - pushButton.SetToggled( true ); + gPushButtonSelectedState = false; + pushButton.SetSelected( true ); - DALI_TEST_CHECK( pushButton.IsToggled() ); - DALI_TEST_CHECK( gPushButtonToggleState ); + DALI_TEST_CHECK( pushButton.IsSelected() ); + DALI_TEST_CHECK( gPushButtonSelectedState ); - pushButton.SetToggled( false ); + pushButton.SetSelected( false ); - DALI_TEST_CHECK( !pushButton.IsToggled() ); - DALI_TEST_CHECK( !gPushButtonToggleState ); + DALI_TEST_CHECK( !pushButton.IsSelected() ); + DALI_TEST_CHECK( !gPushButtonSelectedState ); - pushButton.SetToggled( true ); + pushButton.SetSelected( true ); - DALI_TEST_CHECK( pushButton.IsToggled() ); - DALI_TEST_CHECK( gPushButtonToggleState ); + DALI_TEST_CHECK( pushButton.IsSelected() ); + DALI_TEST_CHECK( gPushButtonSelectedState ); END_TEST; } -int UtcDaliPushButtonSetGetToggled02(void) +int UtcDaliPushButtonSetGetSelected02(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliPushButtonSetGetToggled02"); + tet_infoline(" UtcDaliPushButtonSetGetSelected02"); PushButton pushButton = PushButton::New(); - pushButton.SetToggleButton( false ); - pushButton.StateChangedSignal().Connect( &PushButtonToggled ); + pushButton.SetTogglableButton( false ); + pushButton.StateChangedSignal().Connect( &PushButtonSelected ); - gPushButtonToggleState = false; - pushButton.SetToggled( true ); + gPushButtonSelectedState = false; + pushButton.SetSelected( true ); - DALI_TEST_CHECK( !pushButton.IsToggled() ); - DALI_TEST_CHECK( !gPushButtonToggleState ); + DALI_TEST_CHECK( !pushButton.IsSelected() ); + DALI_TEST_CHECK( !gPushButtonSelectedState ); - pushButton.SetToggled( false ); + pushButton.SetSelected( false ); - DALI_TEST_CHECK( !pushButton.IsToggled() ); - DALI_TEST_CHECK( !gPushButtonToggleState ); + DALI_TEST_CHECK( !pushButton.IsSelected() ); + DALI_TEST_CHECK( !gPushButtonSelectedState ); - pushButton.SetToggled( true ); + pushButton.SetSelected( true ); - DALI_TEST_CHECK( !pushButton.IsToggled() ); - DALI_TEST_CHECK( !gPushButtonToggleState ); + DALI_TEST_CHECK( !pushButton.IsSelected() ); + DALI_TEST_CHECK( !gPushButtonSelectedState ); END_TEST; } @@ -551,10 +551,10 @@ int UtcDaliPushButtonReleased(void) END_TEST; } -int UtcDaliPushButtonToggled(void) +int UtcDaliPushButtonSelected(void) { ToolkitTestApplication application; - tet_infoline(" UtcDaliPushButtonToggled"); + tet_infoline(" UtcDaliPushButtonSelected"); PushButton pushButton = PushButton::New(); pushButton.SetAnchorPoint( AnchorPoint::TOP_LEFT ); @@ -568,13 +568,13 @@ int UtcDaliPushButtonToggled(void) application.Render(); // connect to its touch signal - pushButton.StateChangedSignal().Connect( &PushButtonToggled ); + pushButton.StateChangedSignal().Connect( &PushButtonSelected ); Dali::Integration::TouchEvent event; - // Test1. No toggle button. + // Test1. No togglable button. - gPushButtonToggleState = false; + gPushButtonSelectedState = false; event = Dali::Integration::TouchEvent(); event.AddPoint( pointDownInside ); application.ProcessEvent( event ); @@ -583,13 +583,13 @@ int UtcDaliPushButtonToggled(void) event.AddPoint( pointUpInside ); application.ProcessEvent( event ); - DALI_TEST_CHECK( !gPushButtonToggleState ); + DALI_TEST_CHECK( !gPushButtonSelectedState ); - // Set toggle property. - pushButton.SetToggleButton( true ); + // Set togglable property. + pushButton.SetTogglableButton( true ); // Test2. Touch point down and up inside the button twice. - gPushButtonToggleState = false; + gPushButtonSelectedState = false; event = Dali::Integration::TouchEvent(); event.AddPoint( pointDownInside ); application.ProcessEvent( event ); @@ -598,7 +598,7 @@ int UtcDaliPushButtonToggled(void) event.AddPoint( pointUpInside ); application.ProcessEvent( event ); - DALI_TEST_CHECK( gPushButtonToggleState ); + DALI_TEST_CHECK( gPushButtonSelectedState ); event = Dali::Integration::TouchEvent(); event.AddPoint( pointDownInside ); @@ -608,11 +608,11 @@ int UtcDaliPushButtonToggled(void) event.AddPoint( pointUpInside ); application.ProcessEvent( event ); - DALI_TEST_CHECK( !gPushButtonToggleState ); + DALI_TEST_CHECK( !gPushButtonSelectedState ); // Test3. Touch point down and up outside the button. - gPushButtonToggleState = false; + gPushButtonSelectedState = false; event = Dali::Integration::TouchEvent(); event.AddPoint( pointDownOutside ); application.ProcessEvent( event ); @@ -621,11 +621,11 @@ int UtcDaliPushButtonToggled(void) event.AddPoint( pointUpOutside ); application.ProcessEvent( event ); - DALI_TEST_CHECK( !gPushButtonToggleState ); + DALI_TEST_CHECK( !gPushButtonSelectedState ); // Test4. Touch point down inside and up outside the button. - gPushButtonToggleState = false; + gPushButtonSelectedState = false; event = Dali::Integration::TouchEvent(); event.AddPoint( pointDownInside ); application.ProcessEvent( event ); @@ -638,11 +638,11 @@ int UtcDaliPushButtonToggled(void) event.AddPoint( pointUpOutside ); application.ProcessEvent( event ); - DALI_TEST_CHECK( !gPushButtonToggleState ); + DALI_TEST_CHECK( !gPushButtonSelectedState ); // Test5. Touch point down outside and up inside the button. - gPushButtonToggleState = false; + gPushButtonSelectedState = false; event = Dali::Integration::TouchEvent(); event.AddPoint( pointDownOutside ); application.ProcessEvent( event ); @@ -655,6 +655,6 @@ int UtcDaliPushButtonToggled(void) event.AddPoint( pointUpInside ); application.ProcessEvent( event ); - DALI_TEST_CHECK( !gPushButtonToggleState ); + DALI_TEST_CHECK( !gPushButtonSelectedState ); END_TEST; } diff --git a/automated-tests/src/dali-toolkit/utc-Dali-RadioButton.cpp b/automated-tests/src/dali-toolkit/utc-Dali-RadioButton.cpp index 66bb90d..9b3c9e5 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-RadioButton.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-RadioButton.cpp @@ -117,21 +117,13 @@ int UtcDaliRadioButtonLabelActor(void) END_TEST; } -int UtcDaliRadioButtonActive(void) +int UtcDaliRadioButtonSelected(void) { ToolkitTestApplication application; RadioButton radioButton = RadioButton::New(); - // Default active - DALI_TEST_CHECK( radioButton.IsSelected() == false ); - - // False to true - radioButton.ToggleState(); - DALI_TEST_CHECK( radioButton.IsSelected() == true ); - - // True to false - radioButton.ToggleState(); + // Default selected DALI_TEST_CHECK( radioButton.IsSelected() == false ); // False @@ -149,10 +141,10 @@ int UtcDaliRadioButtonActive(void) END_TEST; } -int UtcDaliRadioButtonActiveProperty(void) +int UtcDaliRadioButtonSelectedProperty(void) { ToolkitTestApplication application; // Exceptions require ToolkitTestApplication - tet_infoline(" UtcDaliRadioButtonActiveProperty"); + tet_infoline(" UtcDaliRadioButtonSelectedProperty"); // Create the RadioButton actor RadioButton radioButton = RadioButton::New(); @@ -161,20 +153,20 @@ int UtcDaliRadioButtonActiveProperty(void) radioButton.SetAnchorPoint(ParentOrigin::TOP_LEFT); radioButton.SetPosition( 0.0f, 0.0f ); - // Default active - DALI_TEST_CHECK( radioButton.GetProperty( Button::PROPERTY_TOGGLED ) == false ); + // Default selected + DALI_TEST_CHECK( radioButton.GetProperty( Button::PROPERTY_SELECTED ) == false ); - // Setting false active - radioButton.SetProperty( Button::PROPERTY_TOGGLED, false ); - DALI_TEST_CHECK( radioButton.GetProperty( Button::PROPERTY_TOGGLED ) == false ); + // Setting false selected + radioButton.SetProperty( Button::PROPERTY_SELECTED, false ); + DALI_TEST_CHECK( radioButton.GetProperty( Button::PROPERTY_SELECTED ) == false ); - // Setting true active - radioButton.SetProperty( Button::PROPERTY_TOGGLED, true ); - DALI_TEST_CHECK( radioButton.GetProperty( Button::PROPERTY_TOGGLED ) == true ); + // Setting true selected + radioButton.SetProperty( Button::PROPERTY_SELECTED, true ); + DALI_TEST_CHECK( radioButton.GetProperty( Button::PROPERTY_SELECTED ) == true ); // Setting false again - radioButton.SetProperty( Button::PROPERTY_TOGGLED, false ); - DALI_TEST_CHECK( radioButton.GetProperty( Button::PROPERTY_TOGGLED ) == false ); + radioButton.SetProperty( Button::PROPERTY_SELECTED, false ); + DALI_TEST_CHECK( radioButton.GetProperty( Button::PROPERTY_SELECTED ) == false ); // Test selecting radio buttons RadioButton radioButton2 = RadioButton::New( "label" ); @@ -201,71 +193,91 @@ int UtcDaliRadioButtonActiveProperty(void) application.Render(); // Simulate touch events - DALI_TEST_CHECK( radioButton2.GetProperty( Button::PROPERTY_TOGGLED ) == false ); - DALI_TEST_CHECK( radioButton3.GetProperty( Button::PROPERTY_TOGGLED ) == false ); + DALI_TEST_CHECK( radioButton2.GetProperty( Button::PROPERTY_SELECTED ) == false ); + DALI_TEST_CHECK( radioButton3.GetProperty( Button::PROPERTY_SELECTED ) == false ); // Select first radio { - Dali::Integration::TouchEvent event = Dali::Integration::TouchEvent(); + Dali::Integration::TouchEvent event1 = Dali::Integration::TouchEvent(); + Dali::Integration::TouchEvent event2 = Dali::Integration::TouchEvent(); + const Dali::TouchPoint pointDown( 0, TouchPoint::Down, 10.0f, 10.0f ); const Dali::TouchPoint pointUp( 0, TouchPoint::Up, 10.0f, 10.0f ); - event.AddPoint( pointUp ); - application.ProcessEvent( event ); + event1.AddPoint( pointDown ); + application.ProcessEvent( event1 ); + + event2.AddPoint( pointUp ); + application.ProcessEvent( event2 ); application.SendNotification(); application.Render(); - DALI_TEST_CHECK( radioButton2.GetProperty( Button::PROPERTY_TOGGLED ) == true ); - DALI_TEST_CHECK( radioButton3.GetProperty( Button::PROPERTY_TOGGLED ) == false ); + DALI_TEST_CHECK( radioButton2.GetProperty( Button::PROPERTY_SELECTED ) == true ); + DALI_TEST_CHECK( radioButton3.GetProperty( Button::PROPERTY_SELECTED ) == false ); } // Select an already selected radio { - Dali::Integration::TouchEvent event = Dali::Integration::TouchEvent(); + Dali::Integration::TouchEvent event1 = Dali::Integration::TouchEvent(); + Dali::Integration::TouchEvent event2 = Dali::Integration::TouchEvent(); - const Dali::TouchPoint pointDown( 0, TouchPoint::Up, 10.0f, 10.0f ); - event.AddPoint( pointDown ); + const Dali::TouchPoint pointDown( 0, TouchPoint::Down, 10.0f, 10.0f ); + const Dali::TouchPoint pointUp( 0, TouchPoint::Up, 10.0f, 10.0f ); + + event1.AddPoint( pointDown ); + application.ProcessEvent( event1 ); - application.ProcessEvent( event ); + event2.AddPoint( pointUp ); + application.ProcessEvent( event2 ); application.SendNotification(); application.Render(); - DALI_TEST_CHECK( radioButton2.GetProperty( Button::PROPERTY_TOGGLED ) == true ); - DALI_TEST_CHECK( radioButton3.GetProperty( Button::PROPERTY_TOGGLED ) == false ); + DALI_TEST_CHECK( radioButton2.GetProperty( Button::PROPERTY_SELECTED ) == true ); + DALI_TEST_CHECK( radioButton3.GetProperty( Button::PROPERTY_SELECTED ) == false ); } // Select second radio { - Dali::Integration::TouchEvent event = Dali::Integration::TouchEvent(); + Dali::Integration::TouchEvent event1 = Dali::Integration::TouchEvent(); + Dali::Integration::TouchEvent event2 = Dali::Integration::TouchEvent(); - const Dali::TouchPoint pointDown( 0, TouchPoint::Up, 10.0f, 50.0f ); - event.AddPoint( pointDown ); + const Dali::TouchPoint pointDown( 0, TouchPoint::Down, 10.0f, 50.0f ); + const Dali::TouchPoint pointUp( 0, TouchPoint::Up, 10.0f, 50.0f ); - application.ProcessEvent( event ); + event1.AddPoint( pointDown ); + application.ProcessEvent( event1 ); + + event2.AddPoint( pointUp ); + application.ProcessEvent( event2 ); application.SendNotification(); application.Render(); - DALI_TEST_CHECK( radioButton2.GetProperty( Button::PROPERTY_TOGGLED ) == false ); - DALI_TEST_CHECK( radioButton3.GetProperty( Button::PROPERTY_TOGGLED ) == true ); + DALI_TEST_CHECK( radioButton2.GetProperty( Button::PROPERTY_SELECTED ) == false ); + DALI_TEST_CHECK( radioButton3.GetProperty( Button::PROPERTY_SELECTED ) == true ); } // Select outside radio group { - Dali::Integration::TouchEvent event = Dali::Integration::TouchEvent(); + Dali::Integration::TouchEvent event1 = Dali::Integration::TouchEvent(); + Dali::Integration::TouchEvent event2 = Dali::Integration::TouchEvent(); + + const Dali::TouchPoint pointDown( 0, TouchPoint::Down, 10.0f, 500.0f ); + const Dali::TouchPoint pointUp( 0, TouchPoint::Up, 10.0f, 500.0f ); - const Dali::TouchPoint pointDown( 0, TouchPoint::Up, 10.0f, 500.0f ); - event.AddPoint( pointDown ); + event1.AddPoint( pointDown ); + application.ProcessEvent( event1 ); - application.ProcessEvent( event ); + event2.AddPoint( pointUp ); + application.ProcessEvent( event2 ); application.SendNotification(); application.Render(); - DALI_TEST_CHECK( radioButton2.GetProperty( Button::PROPERTY_TOGGLED ) == false ); - DALI_TEST_CHECK( radioButton3.GetProperty( Button::PROPERTY_TOGGLED ) == true ); + DALI_TEST_CHECK( radioButton2.GetProperty( Button::PROPERTY_SELECTED ) == false ); + DALI_TEST_CHECK( radioButton3.GetProperty( Button::PROPERTY_SELECTED ) == true ); } END_TEST; diff --git a/dali-toolkit/internal/controls/buttons/button-impl.cpp b/dali-toolkit/internal/controls/buttons/button-impl.cpp index 2cb3d72..eef0cd8 100644 --- a/dali-toolkit/internal/controls/buttons/button-impl.cpp +++ b/dali-toolkit/internal/controls/buttons/button-impl.cpp @@ -21,6 +21,9 @@ // EXTERNAL INCLUDES #include #include +#include +#include +#include namespace Dali { @@ -33,7 +36,7 @@ const Property::Index Button::PROPERTY_AUTO_REPEATING = Internal:: const Property::Index Button::PROPERTY_INITIAL_AUTO_REPEATING_DELAY = Internal::Button::BUTTON_PROPERTY_START_INDEX + 2; const Property::Index Button::PROPERTY_NEXT_AUTO_REPEATING_DELAY = Internal::Button::BUTTON_PROPERTY_START_INDEX + 3; const Property::Index Button::PROPERTY_TOGGLABLE = Internal::Button::BUTTON_PROPERTY_START_INDEX + 4; -const Property::Index Button::PROPERTY_TOGGLED = Internal::Button::BUTTON_PROPERTY_START_INDEX + 5; +const Property::Index Button::PROPERTY_SELECTED = Internal::Button::BUTTON_PROPERTY_START_INDEX + 5; const Property::Index Button::PROPERTY_NORMAL_STATE_ACTOR = Internal::Button::BUTTON_PROPERTY_START_INDEX + 6; const Property::Index Button::PROPERTY_SELECTED_STATE_ACTOR = Internal::Button::BUTTON_PROPERTY_START_INDEX + 7; const Property::Index Button::PROPERTY_DISABLED_STATE_ACTOR = Internal::Button::BUTTON_PROPERTY_START_INDEX + 8; @@ -45,6 +48,9 @@ namespace Internal namespace { +const unsigned int INITIAL_AUTOREPEATING_DELAY( 0.15f ); +const unsigned int NEXT_AUTOREPEATING_DELAY( 0.05f ); + BaseHandle Create() { // empty handle as we cannot create button (but type registered for clicked signal) @@ -53,15 +59,19 @@ BaseHandle Create() TypeRegistration typeRegistration( typeid(Toolkit::Button), typeid(Toolkit::Control), Create ); -SignalConnectorType signalConnector1( typeRegistration, Toolkit::Button::SIGNAL_CLICKED, &Button::DoConnectSignal ); -SignalConnectorType signalConnector2( typeRegistration, Toolkit::Button::SIGNAL_STATE_CHANGED, &Button::DoConnectSignal ); +SignalConnectorType signalConnector1( typeRegistration, Toolkit::Button::SIGNAL_PRESSED , &Button::DoConnectSignal ); +SignalConnectorType signalConnector2( typeRegistration, Toolkit::Button::SIGNAL_RELEASED, &Button::DoConnectSignal ); +SignalConnectorType signalConnector3( typeRegistration, Toolkit::Button::SIGNAL_CLICKED, &Button::DoConnectSignal ); +SignalConnectorType signalConnector4( typeRegistration, Toolkit::Button::SIGNAL_STATE_CHANGED, &Button::DoConnectSignal ); + +TypeAction action1( typeRegistration, Toolkit::Button::ACTION_BUTTON_CLICK, &Button::DoAction ); PropertyRegistration property1( typeRegistration, "disabled", Toolkit::Button::PROPERTY_DISABLED, Property::BOOLEAN, &Button::SetProperty, &Button::GetProperty ); PropertyRegistration property2( typeRegistration, "auto-repeating", Toolkit::Button::PROPERTY_AUTO_REPEATING, Property::BOOLEAN, &Button::SetProperty, &Button::GetProperty ); PropertyRegistration property3( typeRegistration, "initial-auto-repeating-delay", Toolkit::Button::PROPERTY_INITIAL_AUTO_REPEATING_DELAY, Property::FLOAT, &Button::SetProperty, &Button::GetProperty ); PropertyRegistration property4( typeRegistration, "next-auto-repeating-delay", Toolkit::Button::PROPERTY_NEXT_AUTO_REPEATING_DELAY, Property::FLOAT, &Button::SetProperty, &Button::GetProperty ); PropertyRegistration property5( typeRegistration, "togglable", Toolkit::Button::PROPERTY_TOGGLABLE, Property::BOOLEAN, &Button::SetProperty, &Button::GetProperty ); -PropertyRegistration property6( typeRegistration, "toggled", Toolkit::Button::PROPERTY_TOGGLED, Property::BOOLEAN, &Button::SetProperty, &Button::GetProperty ); +PropertyRegistration property6( typeRegistration, "selected", Toolkit::Button::PROPERTY_SELECTED, Property::BOOLEAN, &Button::SetProperty, &Button::GetProperty ); PropertyRegistration property7( typeRegistration, "normal-state-actor", Toolkit::Button::PROPERTY_NORMAL_STATE_ACTOR, Property::MAP, &Button::SetProperty, &Button::GetProperty ); PropertyRegistration property8( typeRegistration, "selected-state-actor", Toolkit::Button::PROPERTY_SELECTED_STATE_ACTOR, Property::MAP, &Button::SetProperty, &Button::GetProperty ); PropertyRegistration property9( typeRegistration, "disabled-state-actor", Toolkit::Button::PROPERTY_DISABLED_STATE_ACTOR, Property::MAP, &Button::SetProperty, &Button::GetProperty ); @@ -71,14 +81,27 @@ PropertyRegistration property10( typeRegistration, "label-actor", Button::Button() : Control( ControlBehaviour( REQUIRES_TOUCH_EVENTS | REQUIRES_STYLE_CHANGE_SIGNALS ) ), + mTogglableButton( false ), + mSelected( false ), mPainter( NULL ), - mState( ButtonUp ), - mDisabled( false ) + mAutoRepeatingTimer(), + mDisabled( false ), + mAutoRepeating( false ), +// mTogglableButton( false ), +// mSelected( false ), + mInitialAutoRepeatingDelay( INITIAL_AUTOREPEATING_DELAY ), + mNextAutoRepeatingDelay( NEXT_AUTOREPEATING_DELAY ), + mClickActionPerforming( false ), + mState( ButtonUp ) { } Button::~Button() { + if( mAutoRepeatingTimer ) + { + mAutoRepeatingTimer.Reset(); + } } void Button::SetDisabled( bool disabled ) @@ -98,6 +121,94 @@ bool Button::IsDisabled() const return mDisabled; } +void Button::SetAutoRepeating( bool autoRepeating ) +{ + mAutoRepeating = autoRepeating; + + // An autorepeating button can't be a togglable button. + if( autoRepeating ) + { + mTogglableButton = false; + if( mSelected ) + { + // Emit a signal is not wanted, only change the appearance. + Toolkit::Button handle( GetOwner() ); + mPainter->Selected( handle ); + mSelected = false; + } + } + + // Notifies the painter. + mPainter->SetAutoRepeating( mAutoRepeating ); +} + +bool Button::IsAutoRepeating() const +{ + return mAutoRepeating; +} + +void Button::SetInitialAutoRepeatingDelay( float initialAutoRepeatingDelay ) +{ + DALI_ASSERT_ALWAYS( initialAutoRepeatingDelay > 0.f ); + mInitialAutoRepeatingDelay = initialAutoRepeatingDelay; +} + +float Button::GetInitialAutoRepeatingDelay() const +{ + return mInitialAutoRepeatingDelay; +} + +void Button::SetNextAutoRepeatingDelay( float nextAutoRepeatingDelay ) +{ + DALI_ASSERT_ALWAYS( nextAutoRepeatingDelay > 0.f ); + mNextAutoRepeatingDelay = nextAutoRepeatingDelay; +} + +float Button::GetNextAutoRepeatingDelay() const +{ + return mNextAutoRepeatingDelay; +} + +void Button::SetTogglableButton( bool togglable ) +{ + mTogglableButton = togglable; + + // A togglable button can't be an autorepeating button. + if( togglable ) + { + mAutoRepeating = false; + + // Notifies the painter. + mPainter->SetAutoRepeating( mAutoRepeating ); + } +} + +bool Button::IsTogglableButton() const +{ + return mTogglableButton; +} + +void Button::SetSelected( bool selected ) +{ + if( !mDisabled && mTogglableButton && ( selected != mSelected ) ) + { + mSelected = selected; + + Toolkit::Button handle( GetOwner() ); + + // Notifies the painter the button has been selected. + mPainter->Selected( handle ); + + // Emit signal. + mStateChangedSignal.Emit( handle ); + } +} + +bool Button::IsSelected() const +{ + return mTogglableButton && mSelected; +} + void Button::SetAnimationTime( float animationTime ) { OnAnimationTimeSet( animationTime ); @@ -108,32 +219,325 @@ float Button::GetAnimationTime() const return OnAnimationTimeRequested(); } +void Button::SetLabel( const std::string& label ) +{ + Toolkit::TextView textView = Toolkit::TextView::New( label ); + textView.SetWidthExceedPolicy( Toolkit::TextView::ShrinkToFit ); // Make sure our text always fits inside the button + SetLabel( textView ); + + RelayoutRequest(); +} + +void Button::SetLabel( Actor label ) +{ + Toolkit::Button handle( GetOwner() ); + + mPainter->SetLabel( handle, label ); +} + +Actor Button::GetLabel() const +{ + return mLabel; +} + +Actor& Button::GetLabel() +{ + return mLabel; +} + +void Button::SetButtonImage( Image image ) +{ + SetButtonImage( ImageActor::New( image ) ); +} + +void Button::SetButtonImage( Actor image ) +{ + Toolkit::Button handle( GetOwner() ); + mPainter->SetButtonImage( handle, image ); +} + +Actor Button::GetButtonImage() const +{ + return mButtonImage; +} + +Actor& Button::GetButtonImage() +{ + return mButtonImage; +} + +void Button::SetSelectedImage( Image image ) +{ + SetSelectedImage( ImageActor::New( image ) ); +} + +void Button::SetSelectedImage( Actor image ) +{ + Toolkit::Button handle( GetOwner() ); + mPainter->SetSelectedImage( handle, image ); +} + +Actor Button::GetSelectedImage() const +{ + return mSelectedImage; +} + +Actor& Button::GetSelectedImage() +{ + return mSelectedImage; +} + +void Button::SetBackgroundImage( Image image ) +{ + SetBackgroundImage( ImageActor::New( image ) ); +} + +void Button::SetBackgroundImage( Actor image ) +{ + Toolkit::Button handle( GetOwner() ); + mPainter->SetBackgroundImage( handle, image ); +} + +Actor Button::GetBackgroundImage() const +{ + return mBackgroundImage; +} + +Actor& Button::GetBackgroundImage() +{ + return mBackgroundImage; +} + +void Button::SetDisabledImage( Image image ) +{ + SetDisabledImage( ImageActor::New( image ) ); +} + +void Button::SetDisabledImage( Actor image ) +{ + Toolkit::Button handle( GetOwner() ); + mPainter->SetDisabledImage( handle, image ); +} + +Actor Button::GetDisabledImage() const +{ + return mDisabledImage; +} + +Actor& Button::GetDisabledImage() +{ + return mDisabledImage; +} + +void Button::SetDisabledSelectedImage( Image image ) +{ + SetDisabledSelectedImage( ImageActor::New( image ) ); +} + +void Button::SetDisabledSelectedImage( Actor image ) +{ + Toolkit::Button handle( GetOwner() ); + mPainter->SetDisabledSelectedImage( handle, image ); +} + +Actor Button::GetDisabledSelectedImage() const +{ + return mDisabledSelectedImage; +} + +Actor& Button::GetDisabledSelectedImage() +{ + return mDisabledSelectedImage; +} + +void Button::SetDisabledBackgroundImage( Image image ) +{ + SetDisabledBackgroundImage( ImageActor::New( image ) ); +} + +void Button::SetDisabledBackgroundImage( Actor image ) +{ + Toolkit::Button handle( GetOwner() ); + mPainter->SetDisabledBackgroundImage( handle, image ); +} + +Actor Button::GetDisabledBackgroundImage() const +{ + return mDisabledBackgroundImage; +} + +Actor& Button::GetDisabledBackgroundImage() +{ + return mDisabledBackgroundImage; +} + +Actor& Button::GetFadeOutButtonImage() +{ + return mFadeOutButtonImage; +} + +Actor& Button::GetFadeOutSelectedImage() +{ + return mFadeOutSelectedImage; +} + +Actor& Button::GetFadeOutBackgroundImage() +{ + return mFadeOutBackgroundImage; +} + +bool Button::DoAction( BaseObject* object, const std::string& actionName, const PropertyValueContainer& attributes ) +{ + bool ret = false; + + Dali::BaseHandle handle( object ); + + Toolkit::Button button = Toolkit::Button::DownCast( handle ); + + DALI_ASSERT_ALWAYS( button ); + + if( Toolkit::Button::ACTION_BUTTON_CLICK == actionName ) + { + GetImplementation( button ).DoClickAction( attributes ); + ret = true; + } + + return ret; +} + +void Button::DoClickAction( const PropertyValueContainer& attributes ) +{ + // Prevents the button signals from doing a recursive loop by sending an action + // and re-emitting the signals. + if( !mClickActionPerforming ) + { + mClickActionPerforming = true; + OnButtonDown(); + mState = ButtonDown; + OnButtonUp(); + mClickActionPerforming = false; + } +} + void Button::OnAnimationTimeSet( float animationTime ) { - // nothing to do. + mPainter->SetAnimationTime( animationTime ); +} + +float Button::OnAnimationTimeRequested() const +{ + return mPainter->GetAnimationTime(); +} + +void Button::OnButtonStageDisconnection() +{ + if( ButtonDown == mState ) + { + if( !mTogglableButton ) + { + Toolkit::Button handle( GetOwner() ); + + // Notifies the painter the button has been released. + mPainter->Released( handle ); + + if( mAutoRepeating ) + { + mAutoRepeatingTimer.Reset(); + } + } + } } void Button::OnButtonDown() { + if( !mTogglableButton ) + { + Toolkit::Button handle( GetOwner() ); + // Notifies the painter the button has been pressed. + mPainter->Pressed( handle ); + + if( mAutoRepeating ) + { + SetUpTimer( mInitialAutoRepeatingDelay ); + } + + //Emit signal. + mPressedSignal.Emit( handle ); + } } void Button::OnButtonUp() { + if( ButtonDown == mState ) + { + if( mTogglableButton ) + { + SetSelected( !mSelected ); + } + else + { + Toolkit::Button handle( GetOwner() ); + + // Notifies the painter the button has been clicked. + mPainter->Released( handle ); + mPainter->Clicked( handle ); + if( mAutoRepeating ) + { + mAutoRepeatingTimer.Reset(); + } + + //Emit signal. + mReleasedSignal.Emit( handle ); + mClickedSignal.Emit( handle ); + } + } } -float Button::OnAnimationTimeRequested() const +void Button::OnTouchPointLeave() { - return 0.f; + if( ButtonDown == mState ) + { + if( !mTogglableButton ) + { + Toolkit::Button handle( GetOwner() ); + + // Notifies the painter the button has been released. + mPainter->Released( handle ); + + if( mAutoRepeating ) + { + mAutoRepeatingTimer.Reset(); + } + + //Emit signal. + mReleasedSignal.Emit( handle ); + } + } +} + +void Button::OnTouchPointInterrupted() +{ + OnTouchPointLeave(); +} + +Toolkit::Button::ButtonSignalType& Button::PressedSignal() +{ + return mPressedSignal; } -Toolkit::Button::ClickedSignalType& Button::ClickedSignal() +Toolkit::Button::ButtonSignalType& Button::ReleasedSignal() +{ + return mReleasedSignal; +} + +Toolkit::Button::ButtonSignalType& Button::ClickedSignal() { return mClickedSignal; } -Toolkit::Button::StateChangedSignalType& Button::StateChangedSignal() +Toolkit::Button::ButtonSignalType& Button::StateChangedSignal() { return mStateChangedSignal; } @@ -145,7 +549,15 @@ bool Button::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tr bool connected( true ); Toolkit::Button button = Toolkit::Button::DownCast(handle); - if( Dali::Toolkit::Button::SIGNAL_CLICKED == signalName ) + if( Toolkit::Button::SIGNAL_PRESSED == signalName ) + { + button.PressedSignal().Connect( tracker, functor ); + } + else if( Toolkit::Button::SIGNAL_RELEASED == signalName ) + { + button.ReleasedSignal().Connect( tracker, functor ); + } + else if( Dali::Toolkit::Button::SIGNAL_CLICKED == signalName ) { button.ClickedSignal().Connect( tracker, functor ); } @@ -246,6 +658,13 @@ void Button::OnInitialize() self.SetKeyboardFocusable( true ); } +void Button::OnActivated() +{ + // When the button is activated, it performs the click action + PropertyValueContainer attributes; + DoClickAction( attributes ); +} + void Button::OnControlSizeSet(const Vector3& targetSize) { Toolkit::Button handle( GetOwner() ); @@ -260,32 +679,203 @@ void Button::OnTap(Actor actor, const TapGesture& tap) // Do nothing. } +void Button::SetUpTimer( float delay ) +{ + mAutoRepeatingTimer = Dali::Timer::New( static_cast( 1000.f * delay ) ); + mAutoRepeatingTimer.TickSignal().Connect( this, &Button::AutoRepeatingSlot ); + mAutoRepeatingTimer.Start(); +} + +bool Button::AutoRepeatingSlot() +{ + bool consumed = false; + if( !mDisabled ) + { + // Restart the autorepeat timer. + SetUpTimer( mNextAutoRepeatingDelay ); + + Toolkit::Button handle( GetOwner() ); + + // Notifies the painter the button has been pressed. + mPainter->Pressed( handle ); + + //Emit signal. + consumed = mReleasedSignal.Emit( handle ); + consumed |= mClickedSignal.Emit( handle ); + consumed |= mPressedSignal.Emit( handle ); + } + + return consumed; +} + void Button::OnControlStageDisconnection() { OnButtonStageDisconnection(); // Notification for derived classes. mState = ButtonUp; } +void Button::SetPainter(ButtonPainterPtr painter) +{ + mPainter = painter; +} + +Button::ButtonState Button::GetState() +{ + return mState; +} + void Button::SetProperty( BaseObject* object, Property::Index index, const Property::Value& value ) { Toolkit::Button button = Toolkit::Button::DownCast( Dali::BaseHandle( object ) ); - if ( button && ( index == Toolkit::Button::PROPERTY_DISABLED ) ) + if ( button ) { - GetImplementation( button ).SetDisabled( value.Get() ); + switch ( index ) + { + case Toolkit::Button::PROPERTY_DISABLED: + { + GetImplementation( button ).SetDisabled( value.Get() ); + break; + } + + case Toolkit::Button::PROPERTY_AUTO_REPEATING: + { + GetImplementation( button ).SetAutoRepeating( value.Get< bool >() ); + break; + } + + case Toolkit::Button::PROPERTY_INITIAL_AUTO_REPEATING_DELAY: + { + GetImplementation( button ).SetInitialAutoRepeatingDelay( value.Get< float >() ); + break; + } + + case Toolkit::Button::PROPERTY_NEXT_AUTO_REPEATING_DELAY: + { + GetImplementation( button ).SetNextAutoRepeatingDelay( value.Get< float >() ); + break; + } + + case Toolkit::Button::PROPERTY_TOGGLABLE: + { + GetImplementation( button ).SetTogglableButton( value.Get< bool >() ); + break; + } + + case Toolkit::Button::PROPERTY_SELECTED: + { + GetImplementation( button ).SetSelected( value.Get< bool >() ); + break; + } + + case Toolkit::Button::PROPERTY_NORMAL_STATE_ACTOR: + { + GetImplementation( button ).SetButtonImage( Scripting::NewActor( value.Get< Property::Map >() ) ); + break; + } + + case Toolkit::Button::PROPERTY_SELECTED_STATE_ACTOR: + { + GetImplementation( button ).SetSelectedImage( Scripting::NewActor( value.Get< Property::Map >() ) ); + break; + } + + case Toolkit::Button::PROPERTY_DISABLED_STATE_ACTOR: + { + GetImplementation( button ).SetDisabledImage( Scripting::NewActor( value.Get< Property::Map >() ) ); + break; + } + + case Toolkit::Button::PROPERTY_LABEL_ACTOR: + { + GetImplementation( button ).SetLabel( Scripting::NewActor( value.Get< Property::Map >() ) ); + break; + } + } } } Property::Value Button::GetProperty( BaseObject* object, Property::Index propertyIndex ) { + Property::Value value; + Toolkit::Button button = Toolkit::Button::DownCast( Dali::BaseHandle( object ) ); - if ( button && ( propertyIndex == Toolkit::Button::PROPERTY_DISABLED ) ) + if ( button ) { - return Property::Value( GetImplementation( button ).mDisabled ); + switch ( propertyIndex ) + { + case Toolkit::Button::PROPERTY_DISABLED: + { + value = GetImplementation( button ).mDisabled; + break; + } + + case Toolkit::Button::PROPERTY_AUTO_REPEATING: + { + value = GetImplementation( button ).mAutoRepeating; + break; + } + + case Toolkit::Button::PROPERTY_INITIAL_AUTO_REPEATING_DELAY: + { + value = GetImplementation( button ).mInitialAutoRepeatingDelay; + break; + } + + case Toolkit::Button::PROPERTY_NEXT_AUTO_REPEATING_DELAY: + { + value = GetImplementation( button ).mNextAutoRepeatingDelay; + break; + } + + case Toolkit::Button::PROPERTY_TOGGLABLE: + { + value = GetImplementation( button ).mTogglableButton; + break; + } + + case Toolkit::Button::PROPERTY_SELECTED: + { + value = GetImplementation( button ).mSelected; + break; + } + + case Toolkit::Button::PROPERTY_NORMAL_STATE_ACTOR: + { + Property::Map map; + Scripting::CreatePropertyMap( GetImplementation( button ).mButtonImage, map ); + value = map; + break; + } + + case Toolkit::Button::PROPERTY_SELECTED_STATE_ACTOR: + { + Property::Map map; + Scripting::CreatePropertyMap( GetImplementation( button ).mSelectedImage, map ); + value = map; + break; + } + + case Toolkit::Button::PROPERTY_DISABLED_STATE_ACTOR: + { + Property::Map map; + Scripting::CreatePropertyMap( GetImplementation( button ).mDisabledImage, map ); + value = map; + break; + } + + case Toolkit::Button::PROPERTY_LABEL_ACTOR: + { + Property::Map map; + Scripting::CreatePropertyMap( GetImplementation( button ).mLabel, map ); + value = map; + break; + } + } } - return Property::Value(); + return value; } } // namespace Internal diff --git a/dali-toolkit/internal/controls/buttons/button-impl.h b/dali-toolkit/internal/controls/buttons/button-impl.h index 3881cc1..f0884e1 100644 --- a/dali-toolkit/internal/controls/buttons/button-impl.h +++ b/dali-toolkit/internal/controls/buttons/button-impl.h @@ -18,6 +18,9 @@ * */ +// EXTERNAL INCLUDES +#include + // INTERNAL INCLUDES #include #include @@ -73,6 +76,56 @@ public: bool IsDisabled() const; /** + * @copydoc Dali::Toolkit::Button::SetAutoRepeating( bool autoRepeating ) + */ + void SetAutoRepeating( bool autoRepeating ); + + /** + * @copydoc Dali::Toolkit::Button::IsAutoRepeating() const + */ + bool IsAutoRepeating() const; + + /** + * @copydoc Dali::Toolkit::Button::SetInitialAutoRepeatingDelay( float initialAutoRepeatingDelay ) + */ + void SetInitialAutoRepeatingDelay( float initialAutoRepeatingDelay ); + + /** + * @copydoc Dali::Toolkit::Button::GetInitialAutoRepeatingDelay() const + */ + float GetInitialAutoRepeatingDelay() const; + + /** + * @copydoc Dali::Toolkit::Button::SetNextAutoRepeatingDelay( float nextAutoRepeatingDelay ) + */ + void SetNextAutoRepeatingDelay( float nextAutoRepeatingDelay ); + + /** + * @copydoc Dali::Toolkit::Button::GetNextAutoRepeatingDelay() const + */ + float GetNextAutoRepeatingDelay() const; + + /** + * @copydoc Dali::Toolkit::Button::SetTogglableButton( bool togglable ) + */ + void SetTogglableButton( bool togglable ); + + /** + * @copydoc Dali::Toolkit::Button::IsTogglableButton() const + */ + bool IsTogglableButton() const; + + /** + * @copydoc Dali::Toolkit::Button::SetSelected( bool selected ) + */ + virtual void SetSelected( bool selected ); + + /** + * @copydoc Dali::Toolkit::Button::IsSelected() const + */ + bool IsSelected() const; + + /** * @copydoc Dali::Toolkit::Button::SetAnimationTime() */ void SetAnimationTime( float animationTime ); @@ -82,7 +135,186 @@ public: */ float GetAnimationTime() const; + /** + * @copydoc Dali::Toolkit::Button::SetLabel( const std::string& label ) + */ + void SetLabel( const std::string& label ); + + /** + * @copydoc Dali::Toolkit::Button::SetLabel( Actor label ) + */ + virtual void SetLabel( Actor label ); // TODO: After refactoring painter, virtual will be removed + + /** + * @copydoc Dali::Toolkit::Button::GetLabel() + */ + Actor GetLabel() const; + + /** + * Used by the painter only. + * @return A reference to the label actor. + */ + Actor& GetLabel(); + + /** + * @copydoc Dali::Toolkit::PushButton::SetButtonImage( const Image image ) + */ + void SetButtonImage( Image image ); + + /** + * @copydoc Dali::Toolkit::PushButton::SetButtonImage( Actor image ) + */ + void SetButtonImage( Actor image ); + + /** + * @copydoc Dali::Toolkit::PushButton::GetButtonImage() + */ + Actor GetButtonImage() const; + + /** + * Used by the painter only. + * @return A reference to the button image. + */ + Actor& GetButtonImage(); + + /** + * @copydoc Dali::Toolkit::PushButton::SetSelectedImage( const Image image ) + */ + void SetSelectedImage( Image image ); + + /** + * @copydoc Dali::Toolkit::PushButton::SetSelectedImage( Actor image ) + */ + void SetSelectedImage( Actor image ); + + /** + * @copydoc Dali::Toolkit::PushButton::GetSelectedImage() + */ + Actor GetSelectedImage() const; + + /** + * Used by the painter only. + * @return A reference to the selected image. + */ + Actor& GetSelectedImage(); + + /** + * @copydoc Dali::Toolkit::PushButton::SetBackgroundImage( const Image image ) + */ + void SetBackgroundImage( Image image ); + + /** + * @copydoc Dali::Toolkit::PushButton::SetBackgroundImage( Actor image ) + */ + void SetBackgroundImage( Actor image ); + + /** + * @copydoc Dali::Toolkit::PushButton::GetBackgroundImage() + */ + Actor GetBackgroundImage() const; + + /** + * Used by the painter only. + * @return A reference to the background image. + */ + Actor& GetBackgroundImage(); + + /** + * @copydoc Dali::Toolkit::PushButton::SetDisabledImage( Image image ) + */ + void SetDisabledImage( Image image ); + + /** + * @copydoc Dali::Toolkit::PushButton::SetDisabledImage( Actor image ) + */ + void SetDisabledImage( Actor image ); + + /** + * @copydoc Dali::Toolkit::PushButton::GetDisabledImage() + */ + Actor GetDisabledImage() const; + + /** + * Used by the painter only. + * @return A reference to the disabled button image. + */ + Actor& GetDisabledImage(); + + /** + * @copydoc Dali::Toolkit::CheckBoxButton::SetDisabledSelectedImage( Image image ) + */ + void SetDisabledSelectedImage( Image image ); + + /** + * @copydoc Dali::Toolkit::CheckBoxButton::SetDisabledSelectedImage( Actor image ) + */ + void SetDisabledSelectedImage( Actor image ); + + /** + * @copydoc Dali::Toolkit::CheckBoxButton::GetDisabledSelectedImage() + */ + Actor GetDisabledSelectedImage() const; + + /** + * Used by the painter only. + * @return A reference to the disabled selected image. + */ + Actor& GetDisabledSelectedImage(); + + /** + * @copydoc Dali::Toolkit::PushButton::SetDisabledBackgroundImage( Image image ) + */ + void SetDisabledBackgroundImage( Image image ); + + /** + * @copydoc Dali::Toolkit::PushButton::SetDisabledBackgroundImage( Actor image ) + */ + void SetDisabledBackgroundImage( Actor image ); + + /** + * @copydoc Dali::Toolkit::PushButton::GetDisabledBackgroundImage() + */ + Actor GetDisabledBackgroundImage() const; + + /** + * Used by the painter only. + * @return A reference to the disabled background image. + */ + Actor& GetDisabledBackgroundImage(); + + /** + * Used by the painter only. + * @return A reference to the button image that is fading out. + */ + Actor& GetFadeOutButtonImage(); + + /** + * Used by the painter only. + * @return A reference to the selected image that is fading out. + */ + Actor& GetFadeOutSelectedImage(); + + /** + * Used by the painter only. + * @return A reference to the background image that is fading out. + */ + Actor& GetFadeOutBackgroundImage(); + + /** + * Performs actions as requested using the action name. + * @param[in] object The object on which to perform the action. + * @param[in] actionName The action to perform. + * @param[in] attributes The attributes with which to perfrom this action. + * @return true if action has been accepted by this control + */ + static bool DoAction( BaseObject* object, const std::string& actionName, const PropertyValueContainer& attributes ); + private: + /** + * Perform the click action to click the button. + * @param[in] attributes The attributes to perfrom this action. + */ + void DoClickAction( const PropertyValueContainer& attributes ); /** * This method is called after the button initialization. @@ -107,13 +339,13 @@ private: * more than one touch points are received. * Could be reimplemented in subclasses to provide specific behaviour. */ - virtual void OnTouchPointLeave() { } + virtual void OnTouchPointLeave(); /** * This method is called from the OnTouchEvent method when the touch point is interrupted. * Could be reimplemented in subclasses to provide specific behaviour. */ - virtual void OnTouchPointInterrupted() { } + virtual void OnTouchPointInterrupted(); /** * This method is called when the animation time is set. @@ -133,19 +365,29 @@ private: * This method is called when the button is removed from the stage. * Could be reimplemented in subclasses to provide specific behaviour. */ - virtual void OnButtonStageDisconnection() { } + virtual void OnButtonStageDisconnection(); public: /** + * @copydoc Dali::Toolkit::PushButton::PressedSignal() + */ + Toolkit::Button::ButtonSignalType& PressedSignal(); + + /** + * @copydoc Dali::Toolkit::PushButton::ReleasedSignal() + */ + Toolkit::Button::ButtonSignalType& ReleasedSignal(); + + /** * @copydoc Dali::Toolkit::Button::ClickedSignal() */ - Toolkit::Button::ClickedSignalType& ClickedSignal(); + Toolkit::Button::ButtonSignalType& ClickedSignal(); /** * @copydoc Dali::Toolkit::Button::StateChangedSignal() */ - Toolkit::Button::StateChangedSignalType& StateChangedSignal(); + Toolkit::Button::ButtonSignalType& StateChangedSignal(); /** * Connects a callback function with the object's signals. @@ -191,6 +433,11 @@ private: // From Control virtual void OnInitialize(); /** + * @copydoc Toolkit::Control::OnActivated() + */ + virtual void OnActivated(); + + /** * @copydoc Toolkit::Control::OnControlSizeSet( const Vector3& targetSize ) */ virtual void OnControlSizeSet( const Vector3& targetSize ); @@ -213,6 +460,33 @@ private: */ void OnTap(Actor actor, const TapGesture& tap); + /** + * Sets up the autorepeating timer. + * @param[in] delay The delay time in seconds. + */ + void SetUpTimer( float delay ); + + /** + * Slot called when Dali::Timer::SignalTick signal. Resets the autorepeating timer. + */ + bool AutoRepeatingSlot(); + +protected: + + enum ButtonState + { + ButtonUp, ///< The button is up. + ButtonDown, ///< The button is down. + }; + + void SetPainter(ButtonPainterPtr painter); + + ButtonState GetState(); + + Actor mLabel; //TODO: After refactoring painter, this will be private + bool mTogglableButton; //TODO: After refactoring painter, this will be private + bool mSelected; //TODO: After refactoring painter, this will be private + private: // Undefined @@ -221,24 +495,44 @@ private: // Undefined Button& operator = ( const Button& ); -protected: +private: - enum ButtonState - { - ButtonUp, ///< The button is up. - ButtonDown, ///< The button is down. - }; + ButtonPainterPtr mPainter; ///< Pointer to a ButtonPainter base class. + + // Signals + Toolkit::Button::ButtonSignalType mPressedSignal; ///< Signal emitted when the button is pressed. + Toolkit::Button::ButtonSignalType mReleasedSignal; ///< Signal emitted when the button is released. + Toolkit::Button::ButtonSignalType mClickedSignal; ///< Signal emitted when the button is clicked. + Toolkit::Button::ButtonSignalType mStateChangedSignal; ///< Signal emitted when the button's state is changed. + + Timer mAutoRepeatingTimer; ///< Timer used to implement the autorepeating property. - ButtonPainterPtr mPainter; ///< Pointer to a ButtonPainter base class. +// Actor mLabel; ///< Stores the button label. - Toolkit::Button::ClickedSignalType mClickedSignal; ///< Signal emitted when the button is clicked. - Toolkit::Button::StateChangedSignalType mStateChangedSignal; ///< Signal emitted when the button's state is changed. + Actor mButtonImage; ///< Stores the unselected image. + Actor mSelectedImage; ///< Stores the selected image. + Actor mBackgroundImage; ///< Stores the background image. + Actor mDisabledImage; ///< Stores the disabled image. + Actor mDisabledSelectedImage; ///< Stores the disabled selected image. + Actor mDisabledBackgroundImage; ///< Stores the disabled background image. + + Actor mFadeOutButtonImage; ///< Stores a foreground image, which is in a fade out animation, to be removed when the animation finishes. + Actor mFadeOutSelectedImage; ///< Stores a foreground image, which is in a fade out animation, to be removed when the animation finishes. + Actor mFadeOutBackgroundImage; ///< Stores a background image, which is in a fade out animation, to be removed when the animation finishes. TapGestureDetector mTapDetector; - ButtonState mState; ///< Stores the button state. + bool mDisabled; ///< Stores the disabled property. + bool mAutoRepeating; ///< Stores the autorepeating property. +// bool mTogglableButton; ///< Stores the togglable property. +// bool mSelected; ///< Stores the selected state. + float mInitialAutoRepeatingDelay; ///< Stores the initial autorepeating delay in seconds. + float mNextAutoRepeatingDelay; ///< Stores the next autorepeating delay in seconds. + + // Actions + bool mClickActionPerforming; - bool mDisabled; ///< Stores the disabled property. + ButtonState mState; ///< Stores the button state. }; } // namespace Internal diff --git a/dali-toolkit/internal/controls/buttons/button-painter-impl.h b/dali-toolkit/internal/controls/buttons/button-painter-impl.h index 70215c5..3014a75 100644 --- a/dali-toolkit/internal/controls/buttons/button-painter-impl.h +++ b/dali-toolkit/internal/controls/buttons/button-painter-impl.h @@ -81,7 +81,7 @@ public: virtual void SetSize( Toolkit::Button& button, const Vector3& size ) = 0; /** - * This method is called from the Dali::Toolkit::Internal::PushButton when the \e disabled property changes. + * This method is called from the Dali::Toolkit::Internal::Button when the \e disabled property changes. * * @param[inout] button The button in which all actors that form its appearance are going to be added. * @param[in] disabled The disabled state. @@ -89,6 +89,12 @@ public: virtual void SetDisabled( Toolkit::Button& button, bool disabled ) = 0; /** + * This method is called from the Dali::Toolkit::Internal::PushButton when the \e autorepeating property changes. + * @param[in] autorepeating property. + */ + virtual void SetAutoRepeating( bool autorepeating ) {} + + /** * Sets the animation time. * @param [in] animationTime The animation time in seconds. */ @@ -99,6 +105,94 @@ public: * @return The animation time in seconds. */ virtual float GetAnimationTime() const = 0; + + /** + * Sets the label. + * It adds the label to the root actor. + * @param[inout] button The button in which all actors that form its appearance are going to be added. + * @param[in] label Button label. + */ + virtual void SetLabel( Toolkit::Button& button, Actor label ) {} + + /** + * Sets the button image. + * It adds the button image to the root actor and creates the image transition if needed. + * @param[inout] button The button in which all actors that form its appearance are going to be added. + * @param[in] image The button image. + */ + virtual void SetButtonImage( Toolkit::Button& button, Actor image ) {} + + /** + * Sets the selected image. + * It adds the selected image to the root actor and creates the image transition if needed. + * @param[inout] button The button in which all actors that form its appearance are going to be added. + * @param[in] image The selected image. + */ + virtual void SetSelectedImage( Toolkit::Button& button, Actor image ) {} + + /** + * Sets the background image. + * It adds the background image to the root actor and creates the image transition if needed. + * @param[inout] button The button in which all actors that form its appearance are going to be added. + * @param[in] image The background image. + */ + virtual void SetBackgroundImage( Toolkit::Button& button, Actor image ) {} + + /** + * Sets the disabled image. + * It adds the disabled image to the root actor and creates the image transition if needed. + * @param[inout] button The button in which all actors that form its appearance are going to be added. + * @param[in] image The disabled button image. + */ + virtual void SetDisabledImage( Toolkit::Button& button, Actor image ) {} + + /** + * Sets the disabled selected image. + * It adds the disabled selected image to the root actor and creates the image transition if needed. + * @param[inout] button The button in which all actors that form its appearance are going to be added. + * @param[in] image The disabled selected image. + */ + virtual void SetDisabledSelectedImage( Toolkit::Button& button, Actor image ) {} + + /** + * Sets the disabled background image. + * It adds the disabled background image to the root actor and creates the image transition if needed. + * @param[inout] button The button in which all actors that form its appearance are going to be added. + * @param[in] image The disabled background image. + */ + virtual void SetDisabledBackgroundImage( Toolkit::Button& button, Actor image ) {} + + /** + * This method is called when the Dali::Toolkit::Internal::Button, in which this + * object is registered, is pressed. + * @param[inout] button The Dali::Toolkit::Button, linked to the internal + * implementation, in which this object is registered. + */ + virtual void Pressed( Toolkit::Button& button ) {} + + /** + * This method is called when the Dali::Toolkit::Internal::Button, in which this + * object is registered, is released. + * @param[inout] button The Dali::Toolkit::Button, linked to the internal + * implementation, in which this object is registered. + */ + virtual void Released( Toolkit::Button& button ) {} + + /** + * This method is called when the Dali::Toolkit::Internal::Button, in which this + * object is registered, is clicked. + * @param[inout] button The Dali::Toolkit::Button, linked to the internal + * implementation, in which this object is registered. + */ + virtual void Clicked( Toolkit::Button& button ) {} + + /** + * This method is called when the Dali::Toolkit::Internal::Button, in which this + * object is registered, changes its state. + * @param[inout] button The Dali::Toolkit::Button, linked to the internal + * implementation, in which this object is registered. + */ + virtual void Selected( Toolkit::Button& button ) {} }; } // namespace Internal diff --git a/dali-toolkit/internal/controls/buttons/check-box-button-default-painter-impl.cpp b/dali-toolkit/internal/controls/buttons/check-box-button-default-painter-impl.cpp index 3885f5f..d18afb5 100644 --- a/dali-toolkit/internal/controls/buttons/check-box-button-default-painter-impl.cpp +++ b/dali-toolkit/internal/controls/buttons/check-box-button-default-painter-impl.cpp @@ -65,7 +65,7 @@ inline const Toolkit::Internal::CheckBoxButton& GetCheckBoxButtonImpl( const Too CheckBoxButtonDefaultPainter::CheckBoxButtonDefaultPainter() : CheckBoxButtonPainter(), mDisabled( false ), - mPaintState( UncheckedState ), + mPaintState( UnselectedState ), mButton(NULL), mAnimationTime( ANIMATION_TIME ) { @@ -83,303 +83,13 @@ CheckBoxButtonDefaultPainter::~CheckBoxButtonDefaultPainter() } } -void CheckBoxButtonDefaultPainter::SetBackgroundImage( Toolkit::CheckBoxButton& checkBox, Actor image ) -{ - Toolkit::Internal::CheckBoxButton& checkBoxImpl = GetImplementation( checkBox ); - Actor& backgroundImage = checkBoxImpl.GetBackgroundImage(); - Actor& fadeOutBackgroundImage = checkBoxImpl.GetFadeOutBackgroundImage(); - - switch( mPaintState ) - { - case UncheckedState: // FALLTHROUGH - case CheckedState: - case UncheckedCheckedTransition: - case CheckedUncheckedTransition: - { - if( backgroundImage && backgroundImage.GetParent() ) - { - StopCheckOutAnimation( checkBox ); - FadeOutImage( checkBox, Background, backgroundImage ); - - backgroundImage = image; - - FadeInImage( checkBox, backgroundImage ); - - StartCheckOutAnimation( checkBox ); - StartCheckInAnimation(); - } - else - { - backgroundImage = image; - checkBox.Add( backgroundImage ); - } - break; - } - case DisabledUncheckedTransition: // FALLTHROUGH - case DisabledCheckedTransition: - { - StopCheckInAnimation(); - checkBox.Remove( backgroundImage ); - - backgroundImage = image; - - FadeInImage( checkBox, backgroundImage ); - StartCheckInAnimation(); - break; - } - case CheckedDisabledTransition: // FALLTHROUGH - case UncheckedDisabledTransition: - { - float opacity = 1.f; - if( fadeOutBackgroundImage ) - { - opacity = fadeOutBackgroundImage.GetCurrentOpacity(); - } - StopCheckOutAnimation( checkBox ); - - // Replaces the button image. - backgroundImage = image; - - checkBox.Add( backgroundImage ); - FadeOutImage( checkBox, Background, backgroundImage, opacity ); - - StartCheckOutAnimation( checkBox ); - break; - } - default: - { - backgroundImage = image; - break; - } - } - - backgroundImage.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - backgroundImage.SetParentOrigin( ParentOrigin::TOP_LEFT ); - ApplyConstraint( backgroundImage, BACKGROUND_DEPTH ); -} - -void CheckBoxButtonDefaultPainter::SetCheckedImage( Toolkit::CheckBoxButton& checkBox, Actor image ) -{ - Toolkit::Internal::CheckBoxButton& checkBoxImpl = GetImplementation( checkBox ); - Actor& checkedImage = checkBoxImpl.GetCheckedImage(); - Actor& fadeOutCheckedImage = checkBoxImpl.GetFadeOutCheckedImage(); - - switch( mPaintState ) - { - case CheckedState: - { - if( checkedImage && checkedImage.GetParent() ) - { - StopCheckOutAnimation( checkBox ); - FadeOutImage( checkBox, Foreground, checkedImage ); - - checkedImage = image; - - FadeInImage( checkBox, checkedImage ); - - StartCheckOutAnimation( checkBox ); - StartCheckInAnimation(); - } - else - { - checkedImage = image; - checkBox.Add( checkedImage ); - } - break; - } - case UncheckedCheckedTransition: // FALLTHROUGH - case DisabledCheckedTransition: - { - StopCheckInAnimation(); - checkBox.Remove( checkedImage ); - - checkedImage = image; - - FadeInImage( checkBox, checkedImage ); - StartCheckInAnimation(); - break; - } - case CheckedUncheckedTransition: // FALLTHROUGH - case CheckedDisabledTransition: - { - float opacity = 1.f; - if( fadeOutCheckedImage ) - { - opacity = fadeOutCheckedImage.GetCurrentOpacity(); - } - StopCheckOutAnimation( checkBox ); - - // Replaces the button image. - checkedImage = image; - - checkBox.Add( checkedImage ); - FadeOutImage( checkBox, Foreground, checkedImage, opacity ); - - StartCheckOutAnimation( checkBox ); - break; - } - default: - { - checkedImage = image; - break; - } - } - - checkedImage.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - checkedImage.SetParentOrigin( ParentOrigin::TOP_LEFT ); - ApplyCheckedConstraint( checkedImage, FOREGROUND_DEPTH ); -} - -void CheckBoxButtonDefaultPainter::SetDisabledCheckedImage( Toolkit::CheckBoxButton& checkBox, Actor image ) -{ - Toolkit::Internal::CheckBoxButton& checkBoxImpl = GetImplementation( checkBox ); - Actor& disabledCheckedImage = checkBoxImpl.GetDisabledCheckedImage(); - Actor& fadeOutCheckedImage = checkBoxImpl.GetFadeOutCheckedImage(); - - switch( mPaintState ) - { - case DisabledCheckedState: - { - if( disabledCheckedImage && disabledCheckedImage.GetParent() ) - { - StopCheckOutAnimation( checkBox ); - FadeOutImage( checkBox, Foreground, disabledCheckedImage ); - - disabledCheckedImage = image; - - FadeInImage( checkBox, disabledCheckedImage ); - - StartCheckOutAnimation( checkBox ); - StartCheckInAnimation(); - } - else - { - disabledCheckedImage = image; - checkBox.Add( disabledCheckedImage ); - } - break; - } - case CheckedDisabledTransition: - { - StopCheckInAnimation(); - checkBox.Remove( disabledCheckedImage ); - - disabledCheckedImage = image; - - FadeInImage( checkBox, disabledCheckedImage ); - StartCheckInAnimation(); - break; - } - case DisabledCheckedTransition: - { - float opacity = 1.f; - if( fadeOutCheckedImage ) - { - opacity = fadeOutCheckedImage.GetCurrentOpacity(); - } - StopCheckOutAnimation( checkBox ); - - // Replaces the button image. - disabledCheckedImage = image; - - checkBox.Add( disabledCheckedImage ); - FadeOutImage( checkBox, Foreground, disabledCheckedImage, opacity ); - - StartCheckOutAnimation( checkBox ); - break; - } - default: - { - disabledCheckedImage = image; - break; - } - } - - disabledCheckedImage.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - disabledCheckedImage.SetParentOrigin( ParentOrigin::TOP_LEFT ); - ApplyConstraint( disabledCheckedImage, FOREGROUND_DEPTH ); -} - -void CheckBoxButtonDefaultPainter::SetDisabledBackgroundImage( Toolkit::CheckBoxButton& checkBox, Actor image ) -{ - Toolkit::Internal::CheckBoxButton& checkBoxImpl = GetImplementation( checkBox ); - Actor& disabledBackgroundImage = checkBoxImpl.GetDisabledBackgroundImage(); - Actor& fadeOutBackgroundImage = checkBoxImpl.GetFadeOutBackgroundImage(); - - switch( mPaintState ) - { - case DisabledCheckedState: // FALLTHROUGH - case DisabledUncheckedState: - { - if( disabledBackgroundImage && disabledBackgroundImage.GetParent() ) - { - StopCheckOutAnimation( checkBox ); - FadeOutImage( checkBox, Background, disabledBackgroundImage ); - - disabledBackgroundImage = image; - - FadeInImage( checkBox, disabledBackgroundImage ); - - StartCheckOutAnimation( checkBox ); - StartCheckInAnimation(); - } - else - { - disabledBackgroundImage = image; - checkBox.Add( disabledBackgroundImage ); - } - break; - } - case UncheckedDisabledTransition: // FALLTHROUGH - case CheckedDisabledTransition: - { - StopCheckInAnimation(); - checkBox.Remove( disabledBackgroundImage ); - - disabledBackgroundImage = image; - - FadeInImage( checkBox, disabledBackgroundImage ); - StartCheckInAnimation(); - break; - } - case DisabledUncheckedTransition: // FALLTHROUGH - case DisabledCheckedTransition: - { - float opacity = 1.f; - if( fadeOutBackgroundImage ) - { - opacity = fadeOutBackgroundImage.GetCurrentOpacity(); - } - StopCheckOutAnimation( checkBox ); - - // Replaces the button image. - disabledBackgroundImage = image; - - checkBox.Add( disabledBackgroundImage ); - FadeOutImage( checkBox, Background, disabledBackgroundImage, opacity ); - - StartCheckOutAnimation( checkBox ); - break; - } - default: - { - disabledBackgroundImage = image; - break; - } - } - - disabledBackgroundImage.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - disabledBackgroundImage.SetParentOrigin( ParentOrigin::TOP_LEFT ); - ApplyConstraint( disabledBackgroundImage, BACKGROUND_DEPTH ); -} - void CheckBoxButtonDefaultPainter::Initialize( Toolkit::Button& button ) { Toolkit::Internal::CheckBoxButton& buttonImpl = GetCheckBoxButtonImpl( button ); Actor& backgroundImage = buttonImpl.GetBackgroundImage(); - Actor& checkedImage = buttonImpl.GetCheckedImage(); + Actor& selectedImage = buttonImpl.GetSelectedImage(); Actor& disabledBackgroundImage = buttonImpl.GetDisabledBackgroundImage(); - Actor& disabledCheckedImage = buttonImpl.GetDisabledCheckedImage(); + Actor& disabledSelectedImage = buttonImpl.GetDisabledSelectedImage(); Toolkit::CheckBoxButton& checkBox = static_cast( button ); @@ -388,9 +98,9 @@ void CheckBoxButtonDefaultPainter::Initialize( Toolkit::Button& button ) SetBackgroundImage( checkBox, backgroundImage ); } - if( checkedImage ) + if( selectedImage ) { - SetCheckedImage( checkBox, checkedImage ); + SetSelectedImage( checkBox, selectedImage ); } if( disabledBackgroundImage ) @@ -398,9 +108,9 @@ void CheckBoxButtonDefaultPainter::Initialize( Toolkit::Button& button ) SetDisabledBackgroundImage( checkBox, disabledBackgroundImage ); } - if( disabledCheckedImage ) + if( disabledSelectedImage ) { - SetDisabledCheckedImage( checkBox, disabledCheckedImage ); + SetDisabledSelectedImage( checkBox, disabledSelectedImage ); } SetDisabled( button, mDisabled ); @@ -410,13 +120,13 @@ void CheckBoxButtonDefaultPainter::SetSize( Toolkit::Button& button, const Vecto { Toolkit::Internal::CheckBoxButton& buttonImpl = GetCheckBoxButtonImpl( button ); Actor& backgroundImage = buttonImpl.GetBackgroundImage(); - Actor& checkedImage = buttonImpl.GetCheckedImage(); + Actor& selectedImage = buttonImpl.GetSelectedImage(); Actor& disabledBackgroundImage = buttonImpl.GetDisabledBackgroundImage(); - Actor& disabledCheckedImage = buttonImpl.GetDisabledCheckedImage(); + Actor& disabledSelectedImage = buttonImpl.GetDisabledSelectedImage(); - ApplyCheckedConstraint( checkedImage, FOREGROUND_DEPTH ); + ApplySelectedConstraint( selectedImage, FOREGROUND_DEPTH ); ApplyConstraint( backgroundImage, BACKGROUND_DEPTH ); - ApplyConstraint( disabledCheckedImage, FOREGROUND_DEPTH ); + ApplyConstraint( disabledSelectedImage, FOREGROUND_DEPTH ); ApplyConstraint( disabledBackgroundImage, BACKGROUND_DEPTH ); } @@ -426,17 +136,17 @@ void CheckBoxButtonDefaultPainter::SetDisabled( Toolkit::Button& button, bool di Toolkit::Internal::CheckBoxButton& buttonImpl = GetCheckBoxButtonImpl( button ); Actor& backgroundImage = buttonImpl.GetBackgroundImage(); - Actor& checkedImage = buttonImpl.GetCheckedImage(); + Actor& selectedImage = buttonImpl.GetSelectedImage(); Actor& disabledBackgroundImage = buttonImpl.GetDisabledBackgroundImage(); - Actor& disabledCheckedImage = buttonImpl.GetDisabledCheckedImage(); - Actor& fadeOutCheckedImage = buttonImpl.GetFadeOutCheckedImage(); + Actor& disabledSelectedImage = buttonImpl.GetDisabledSelectedImage(); + Actor& fadeOutSelectedImage = buttonImpl.GetFadeOutSelectedImage(); Actor& fadeOutBackgroundImage = buttonImpl.GetFadeOutBackgroundImage(); Toolkit::CheckBoxButton& checkBox = static_cast( button ); switch( mPaintState ) { - case UncheckedState: + case UnselectedState: { if( disabled ) { @@ -446,27 +156,27 @@ void CheckBoxButtonDefaultPainter::SetDisabled( Toolkit::Button& button, bool di StartCheckOutAnimation( checkBox ); StartCheckInAnimation(); - mPaintState = UncheckedDisabledTransition; + mPaintState = UnselectedDisabledTransition; } break; } - case CheckedState: + case SelectedState: { if( disabled ) { StopCheckOutAnimation( checkBox ); FadeOutImage( checkBox, Background, backgroundImage ); - FadeOutImage( checkBox, Foreground, checkedImage ); - FadeInImage( checkBox, disabledCheckedImage ); + FadeOutImage( checkBox, Foreground, selectedImage ); + FadeInImage( checkBox, disabledSelectedImage ); FadeInImage( checkBox, disabledBackgroundImage ); StartCheckOutAnimation( checkBox ); StartCheckInAnimation(); - mPaintState = CheckedDisabledTransition; + mPaintState = SelectedDisabledTransition; } break; } - case DisabledUncheckedState: + case DisabledUnselectedState: { if( !disabled ) { @@ -476,65 +186,65 @@ void CheckBoxButtonDefaultPainter::SetDisabled( Toolkit::Button& button, bool di StartCheckOutAnimation( checkBox ); StartCheckInAnimation(); - mPaintState = DisabledUncheckedTransition; + mPaintState = DisabledUnselectedTransition; } break; } - case DisabledCheckedState: + case DisabledSelectedState: { if( !disabled ) { StopCheckOutAnimation( checkBox ); FadeOutImage( checkBox, Background, disabledBackgroundImage ); - FadeOutImage( checkBox, Foreground, disabledCheckedImage ); + FadeOutImage( checkBox, Foreground, disabledSelectedImage ); FadeInImage( checkBox, backgroundImage ); - FadeInImage( checkBox, checkedImage ); + FadeInImage( checkBox, selectedImage ); StartCheckOutAnimation( checkBox ); StartCheckInAnimation(); - mPaintState = DisabledCheckedTransition; + mPaintState = DisabledSelectedTransition; } break; } - case UncheckedCheckedTransition: + case UnselectedSelectedTransition: { if( disabled ) { float opacity = 1.f; - if( checkedImage ) + if( selectedImage ) { - opacity = checkedImage.GetCurrentOpacity(); + opacity = selectedImage.GetCurrentOpacity(); } StopCheckOutAnimation( checkBox ); StopCheckInAnimation(); - FadeOutImage( checkBox, Foreground, checkedImage, opacity ); + FadeOutImage( checkBox, Foreground, selectedImage, opacity ); FadeOutImage( checkBox, Background, backgroundImage ); - FadeInImage( checkBox, disabledCheckedImage ); + FadeInImage( checkBox, disabledSelectedImage ); FadeInImage( checkBox, disabledBackgroundImage ); StartCheckOutAnimation( checkBox ); StartCheckInAnimation(); - mPaintState = CheckedDisabledTransition; + mPaintState = SelectedDisabledTransition; } break; } - case CheckedUncheckedTransition: + case SelectedUnselectedTransition: { if( disabled ) { float opacity = 1.f; - if( fadeOutCheckedImage ) + if( fadeOutSelectedImage ) { - opacity = fadeOutCheckedImage.GetCurrentOpacity(); + opacity = fadeOutSelectedImage.GetCurrentOpacity(); } StopCheckOutAnimation( checkBox ); StopCheckInAnimation(); - button.Add( disabledCheckedImage ); - FadeOutImage( checkBox, Foreground, disabledCheckedImage, opacity ); + button.Add( disabledSelectedImage ); + FadeOutImage( checkBox, Foreground, disabledSelectedImage, opacity ); FadeOutImage( checkBox, Background, backgroundImage ); FadeInImage( checkBox, disabledBackgroundImage ); @@ -542,11 +252,11 @@ void CheckBoxButtonDefaultPainter::SetDisabled( Toolkit::Button& button, bool di StartCheckOutAnimation( checkBox ); StartCheckInAnimation(); - mPaintState = UncheckedDisabledTransition; + mPaintState = UnselectedDisabledTransition; } break; } - case UncheckedDisabledTransition: + case UnselectedDisabledTransition: { if( !disabled ) { @@ -564,11 +274,11 @@ void CheckBoxButtonDefaultPainter::SetDisabled( Toolkit::Button& button, bool di StartCheckOutAnimation( checkBox ); StartCheckInAnimation(); - mPaintState = DisabledUncheckedTransition; + mPaintState = DisabledUnselectedTransition; } break; } - case DisabledUncheckedTransition: + case DisabledUnselectedTransition: { if( disabled ) { @@ -586,11 +296,11 @@ void CheckBoxButtonDefaultPainter::SetDisabled( Toolkit::Button& button, bool di StartCheckOutAnimation( checkBox ); StartCheckInAnimation(); - mPaintState = UncheckedDisabledTransition; + mPaintState = UnselectedDisabledTransition; } break; } - case CheckedDisabledTransition: + case SelectedDisabledTransition: { if( !disabled ) { @@ -602,19 +312,19 @@ void CheckBoxButtonDefaultPainter::SetDisabled( Toolkit::Button& button, bool di StopCheckOutAnimation( checkBox, false ); StopCheckInAnimation(); - FadeOutImage( checkBox, Foreground, disabledCheckedImage, 1.f - opacity ); + FadeOutImage( checkBox, Foreground, disabledSelectedImage, 1.f - opacity ); FadeOutImage( checkBox, Background, disabledBackgroundImage, 1.f - opacity ); - FadeInImage( checkBox, checkedImage, opacity ); + FadeInImage( checkBox, selectedImage, opacity ); FadeInImage( checkBox, backgroundImage, opacity ); StartCheckOutAnimation( checkBox ); StartCheckInAnimation(); - mPaintState = DisabledCheckedTransition; + mPaintState = DisabledSelectedTransition; } break; } - case DisabledCheckedTransition: + case DisabledSelectedTransition: { if( disabled ) { @@ -626,15 +336,15 @@ void CheckBoxButtonDefaultPainter::SetDisabled( Toolkit::Button& button, bool di StopCheckOutAnimation( checkBox, false ); StopCheckInAnimation(); - FadeOutImage( checkBox, Foreground, checkedImage, 1.f - opacity ); + FadeOutImage( checkBox, Foreground, selectedImage, 1.f - opacity ); FadeOutImage( checkBox, Background, backgroundImage, 1.f - opacity ); - FadeInImage( checkBox, disabledCheckedImage, opacity ); + FadeInImage( checkBox, disabledSelectedImage, opacity ); FadeInImage( checkBox, disabledBackgroundImage, opacity ); StartCheckOutAnimation( checkBox ); StartCheckInAnimation(); - mPaintState = CheckedDisabledTransition; + mPaintState = SelectedDisabledTransition; } break; } @@ -653,65 +363,365 @@ float CheckBoxButtonDefaultPainter::GetAnimationTime() const return mAnimationTime; } -void CheckBoxButtonDefaultPainter::Checked( Toolkit::CheckBoxButton& button ) +void CheckBoxButtonDefaultPainter::SetSelectedImage( Toolkit::Button& button, Actor image ) { Toolkit::Internal::CheckBoxButton& checkBoxImpl = GetCheckBoxButtonImpl( button ); - Actor& checkedImage = checkBoxImpl.GetCheckedImage(); - Actor& fadeOutCheckedImage = checkBoxImpl.GetFadeOutCheckedImage(); + Actor& selectedImage = checkBoxImpl.GetSelectedImage(); + Actor& fadeOutSelectedImage = checkBoxImpl.GetFadeOutSelectedImage(); + + Toolkit::CheckBoxButton& checkBox = static_cast( button ); + + switch( mPaintState ) + { + case SelectedState: + { + if( selectedImage && selectedImage.GetParent() ) + { + StopCheckOutAnimation( checkBox ); + FadeOutImage( checkBox, Foreground, selectedImage ); + + selectedImage = image; + + FadeInImage( checkBox, selectedImage ); + + StartCheckOutAnimation( checkBox ); + StartCheckInAnimation(); + } + else + { + selectedImage = image; + checkBox.Add( selectedImage ); + } + break; + } + case UnselectedSelectedTransition: // FALLTHROUGH + case DisabledSelectedTransition: + { + StopCheckInAnimation(); + checkBox.Remove( selectedImage ); + + selectedImage = image; + + FadeInImage( checkBox, selectedImage ); + StartCheckInAnimation(); + break; + } + case SelectedUnselectedTransition: // FALLTHROUGH + case SelectedDisabledTransition: + { + float opacity = 1.f; + if( fadeOutSelectedImage ) + { + opacity = fadeOutSelectedImage.GetCurrentOpacity(); + } + StopCheckOutAnimation( checkBox ); + + // Replaces the button image. + selectedImage = image; + + checkBox.Add( selectedImage ); + FadeOutImage( checkBox, Foreground, selectedImage, opacity ); + + StartCheckOutAnimation( checkBox ); + break; + } + default: + { + selectedImage = image; + break; + } + } + + selectedImage.SetAnchorPoint( AnchorPoint::TOP_LEFT ); + selectedImage.SetParentOrigin( ParentOrigin::TOP_LEFT ); + ApplySelectedConstraint( selectedImage, FOREGROUND_DEPTH ); +} + +void CheckBoxButtonDefaultPainter::SetBackgroundImage( Toolkit::Button& button, Actor image ) +{ + Toolkit::Internal::CheckBoxButton& checkBoxImpl = GetCheckBoxButtonImpl( button ); + Actor& backgroundImage = checkBoxImpl.GetBackgroundImage(); + Actor& fadeOutBackgroundImage = checkBoxImpl.GetFadeOutBackgroundImage(); + + Toolkit::CheckBoxButton& checkBox = static_cast( button ); + + switch( mPaintState ) + { + case UnselectedState: // FALLTHROUGH + case SelectedState: + case UnselectedSelectedTransition: + case SelectedUnselectedTransition: + { + if( backgroundImage && backgroundImage.GetParent() ) + { + StopCheckOutAnimation( checkBox ); + FadeOutImage( checkBox, Background, backgroundImage ); + + backgroundImage = image; + + FadeInImage( checkBox, backgroundImage ); + + StartCheckOutAnimation( checkBox ); + StartCheckInAnimation(); + } + else + { + backgroundImage = image; + checkBox.Add( backgroundImage ); + } + break; + } + case DisabledUnselectedTransition: // FALLTHROUGH + case DisabledSelectedTransition: + { + StopCheckInAnimation(); + checkBox.Remove( backgroundImage ); + + backgroundImage = image; + + FadeInImage( checkBox, backgroundImage ); + StartCheckInAnimation(); + break; + } + case SelectedDisabledTransition: // FALLTHROUGH + case UnselectedDisabledTransition: + { + float opacity = 1.f; + if( fadeOutBackgroundImage ) + { + opacity = fadeOutBackgroundImage.GetCurrentOpacity(); + } + StopCheckOutAnimation( checkBox ); + + // Replaces the button image. + backgroundImage = image; + + checkBox.Add( backgroundImage ); + FadeOutImage( checkBox, Background, backgroundImage, opacity ); + + StartCheckOutAnimation( checkBox ); + break; + } + default: + { + backgroundImage = image; + break; + } + } + + backgroundImage.SetAnchorPoint( AnchorPoint::TOP_LEFT ); + backgroundImage.SetParentOrigin( ParentOrigin::TOP_LEFT ); + ApplyConstraint( backgroundImage, BACKGROUND_DEPTH ); +} + +void CheckBoxButtonDefaultPainter::SetDisabledSelectedImage( Toolkit::Button& button, Actor image ) +{ + Toolkit::Internal::CheckBoxButton& checkBoxImpl = GetCheckBoxButtonImpl( button ); + Actor& disabledSelectedImage = checkBoxImpl.GetDisabledSelectedImage(); + Actor& fadeOutSelectedImage = checkBoxImpl.GetFadeOutSelectedImage(); + + Toolkit::CheckBoxButton& checkBox = static_cast( button ); + + switch( mPaintState ) + { + case DisabledSelectedState: + { + if( disabledSelectedImage && disabledSelectedImage.GetParent() ) + { + StopCheckOutAnimation( checkBox ); + FadeOutImage( checkBox, Foreground, disabledSelectedImage ); + + disabledSelectedImage = image; + + FadeInImage( checkBox, disabledSelectedImage ); + + StartCheckOutAnimation( checkBox ); + StartCheckInAnimation(); + } + else + { + disabledSelectedImage = image; + checkBox.Add( disabledSelectedImage ); + } + break; + } + case SelectedDisabledTransition: + { + StopCheckInAnimation(); + checkBox.Remove( disabledSelectedImage ); + + disabledSelectedImage = image; + + FadeInImage( checkBox, disabledSelectedImage ); + StartCheckInAnimation(); + break; + } + case DisabledSelectedTransition: + { + float opacity = 1.f; + if( fadeOutSelectedImage ) + { + opacity = fadeOutSelectedImage.GetCurrentOpacity(); + } + StopCheckOutAnimation( checkBox ); + + // Replaces the button image. + disabledSelectedImage = image; + + checkBox.Add( disabledSelectedImage ); + FadeOutImage( checkBox, Foreground, disabledSelectedImage, opacity ); + + StartCheckOutAnimation( checkBox ); + break; + } + default: + { + disabledSelectedImage = image; + break; + } + } + + disabledSelectedImage.SetAnchorPoint( AnchorPoint::TOP_LEFT ); + disabledSelectedImage.SetParentOrigin( ParentOrigin::TOP_LEFT ); + ApplyConstraint( disabledSelectedImage, FOREGROUND_DEPTH ); +} + +void CheckBoxButtonDefaultPainter::SetDisabledBackgroundImage( Toolkit::Button& button, Actor image ) +{ + Toolkit::Internal::CheckBoxButton& checkBoxImpl = GetCheckBoxButtonImpl( button ); + Actor& disabledBackgroundImage = checkBoxImpl.GetDisabledBackgroundImage(); + Actor& fadeOutBackgroundImage = checkBoxImpl.GetFadeOutBackgroundImage(); + + Toolkit::CheckBoxButton& checkBox = static_cast( button ); + + switch( mPaintState ) + { + case DisabledSelectedState: // FALLTHROUGH + case DisabledUnselectedState: + { + if( disabledBackgroundImage && disabledBackgroundImage.GetParent() ) + { + StopCheckOutAnimation( checkBox ); + FadeOutImage( checkBox, Background, disabledBackgroundImage ); + + disabledBackgroundImage = image; + + FadeInImage( checkBox, disabledBackgroundImage ); + + StartCheckOutAnimation( checkBox ); + StartCheckInAnimation(); + } + else + { + disabledBackgroundImage = image; + checkBox.Add( disabledBackgroundImage ); + } + break; + } + case UnselectedDisabledTransition: // FALLTHROUGH + case SelectedDisabledTransition: + { + StopCheckInAnimation(); + checkBox.Remove( disabledBackgroundImage ); + + disabledBackgroundImage = image; + + FadeInImage( checkBox, disabledBackgroundImage ); + StartCheckInAnimation(); + break; + } + case DisabledUnselectedTransition: // FALLTHROUGH + case DisabledSelectedTransition: + { + float opacity = 1.f; + if( fadeOutBackgroundImage ) + { + opacity = fadeOutBackgroundImage.GetCurrentOpacity(); + } + StopCheckOutAnimation( checkBox ); + + // Replaces the button image. + disabledBackgroundImage = image; + + checkBox.Add( disabledBackgroundImage ); + FadeOutImage( checkBox, Background, disabledBackgroundImage, opacity ); + + StartCheckOutAnimation( checkBox ); + break; + } + default: + { + disabledBackgroundImage = image; + break; + } + } + + disabledBackgroundImage.SetAnchorPoint( AnchorPoint::TOP_LEFT ); + disabledBackgroundImage.SetParentOrigin( ParentOrigin::TOP_LEFT ); + ApplyConstraint( disabledBackgroundImage, BACKGROUND_DEPTH ); +} + +void CheckBoxButtonDefaultPainter::Selected( Toolkit::Button& button ) +{ + Toolkit::Internal::CheckBoxButton& checkBoxImpl = GetCheckBoxButtonImpl( button ); + Actor& selectedImage = checkBoxImpl.GetSelectedImage(); + Actor& fadeOutSelectedImage = checkBoxImpl.GetFadeOutSelectedImage(); + + Toolkit::CheckBoxButton& checkBoxButton = static_cast( button ); switch( mPaintState ) { - case UncheckedState: + case UnselectedState: { // Fade in the 'check' actor. - FadeInImage( button, checkedImage ); - SetupCheckedAnimation( button, checkedImage ); // Animate in the check actor + FadeInImage( checkBoxButton, selectedImage ); + SetupSelectedAnimation( checkBoxButton, selectedImage ); // Animate in the check actor StartCheckInAnimation(); - mPaintState = UncheckedCheckedTransition; + mPaintState = UnselectedSelectedTransition; break; } - case CheckedState: + case SelectedState: { // Fade out the 'check' actor. - StopCheckOutAnimation( button ); - FadeOutImage( button, Foreground, checkedImage ); - StartCheckOutAnimation( button ); + StopCheckOutAnimation( checkBoxButton ); + FadeOutImage( checkBoxButton, Foreground, selectedImage ); + StartCheckOutAnimation( checkBoxButton ); - mPaintState = UncheckedState; + mPaintState = UnselectedState; break; } - case UncheckedCheckedTransition: + case UnselectedSelectedTransition: { // Stop fade in and start fade out. - StopCheckOutAnimation( button ); + StopCheckOutAnimation( checkBoxButton ); StopCheckInAnimation(); float opacity = 0.f; - if( checkedImage ) + if( selectedImage ) { - opacity = checkedImage.GetCurrentOpacity(); + opacity = selectedImage.GetCurrentOpacity(); } - FadeOutImage( button, Foreground, checkedImage, opacity ); - StartCheckOutAnimation( button ); + FadeOutImage( checkBoxButton, Foreground, selectedImage, opacity ); + StartCheckOutAnimation( checkBoxButton ); - mPaintState = UncheckedState; + mPaintState = UnselectedState; break; } - case CheckedUncheckedTransition: + case SelectedUnselectedTransition: { // Stop fade out and start fade in. float opacity = 1.f; - if( fadeOutCheckedImage ) + if( fadeOutSelectedImage ) { - opacity = fadeOutCheckedImage.GetCurrentOpacity(); + opacity = fadeOutSelectedImage.GetCurrentOpacity(); } - StopCheckOutAnimation( button ); + StopCheckOutAnimation( checkBoxButton ); - FadeInImage( button, checkedImage, opacity ); + FadeInImage( checkBoxButton, selectedImage, opacity ); StartCheckInAnimation(); - mPaintState = UncheckedCheckedTransition; + mPaintState = UnselectedSelectedTransition; break; } default: @@ -729,7 +739,7 @@ void CheckBoxButtonDefaultPainter::ApplyConstraint( Actor& actor, float depth ) } } -void CheckBoxButtonDefaultPainter::ApplyCheckedConstraint( Actor& actor, float depth ) +void CheckBoxButtonDefaultPainter::ApplySelectedConstraint( Actor& actor, float depth ) { if( actor ) { @@ -799,14 +809,14 @@ void CheckBoxButtonDefaultPainter::StopCheckOutAnimation( Toolkit::CheckBoxButto } Toolkit::Internal::CheckBoxButton& checkBoxImpl = GetCheckBoxButtonImpl( checkBox ); - Actor& fadeOutCheckedImage = checkBoxImpl.GetFadeOutCheckedImage(); + Actor& fadeOutSelectedImage = checkBoxImpl.GetFadeOutSelectedImage(); Actor& fadeOutBackgroundImage = checkBoxImpl.GetFadeOutBackgroundImage(); if( remove ) { - if( fadeOutCheckedImage && fadeOutCheckedImage.GetParent() ) + if( fadeOutSelectedImage && fadeOutSelectedImage.GetParent() ) { - fadeOutCheckedImage.GetParent().Remove( fadeOutCheckedImage ); + fadeOutSelectedImage.GetParent().Remove( fadeOutSelectedImage ); } if( fadeOutBackgroundImage && fadeOutBackgroundImage.GetParent() ) @@ -814,7 +824,7 @@ void CheckBoxButtonDefaultPainter::StopCheckOutAnimation( Toolkit::CheckBoxButto fadeOutBackgroundImage.GetParent().Remove( fadeOutBackgroundImage ); } - fadeOutCheckedImage.Reset(); + fadeOutSelectedImage.Reset(); fadeOutBackgroundImage.Reset(); } } @@ -837,10 +847,10 @@ void CheckBoxButtonDefaultPainter::FadeOutImage( Toolkit::CheckBoxButton& checkB if( image ) { Toolkit::Internal::CheckBoxButton& checkBoxImpl = GetCheckBoxButtonImpl( checkBox ); - Actor& fadeOutCheckedImage = checkBoxImpl.GetFadeOutCheckedImage(); + Actor& fadeOutSelectedImage = checkBoxImpl.GetFadeOutSelectedImage(); Actor& fadeOutBackgroundImage = checkBoxImpl.GetFadeOutBackgroundImage(); - Actor& actorLayer = ( ( Background == layer ) ? fadeOutBackgroundImage : fadeOutCheckedImage ); + Actor& actorLayer = ( ( Background == layer ) ? fadeOutBackgroundImage : fadeOutSelectedImage ); actorLayer = image; @@ -863,7 +873,7 @@ void CheckBoxButtonDefaultPainter::AddToCheckInAnimation( const Actor& actor ) mCheckInAnimation.AnimateTo( Property( handle, Actor::SCALE_X ), 1.0f); } -void CheckBoxButtonDefaultPainter::SetupCheckedAnimation( Toolkit::CheckBoxButton& checkBox, Actor& image ) +void CheckBoxButtonDefaultPainter::SetupSelectedAnimation( Toolkit::CheckBoxButton& checkBox, Actor& image ) { if( image ) { @@ -892,34 +902,34 @@ void CheckBoxButtonDefaultPainter::EndCheckOutAnimation() { switch( mPaintState ) { - case UncheckedCheckedTransition: + case UnselectedSelectedTransition: { - mPaintState = CheckedState; + mPaintState = SelectedState; break; } - case CheckedUncheckedTransition: + case SelectedUnselectedTransition: { - mPaintState = UncheckedState; + mPaintState = UnselectedState; break; } - case UncheckedDisabledTransition: + case UnselectedDisabledTransition: { - mPaintState = DisabledUncheckedState; + mPaintState = DisabledUnselectedState; break; } - case DisabledUncheckedTransition: + case DisabledUnselectedTransition: { - mPaintState = UncheckedState; + mPaintState = UnselectedState; break; } - case CheckedDisabledTransition: + case SelectedDisabledTransition: { - mPaintState = DisabledCheckedState; + mPaintState = DisabledSelectedState; break; } - case DisabledCheckedTransition: + case DisabledSelectedTransition: { - mPaintState = CheckedState; + mPaintState = SelectedState; break; } default: @@ -942,34 +952,34 @@ void CheckBoxButtonDefaultPainter::CheckInAnimationFinished( Dali::Animation& so { switch( mPaintState ) { - case UncheckedCheckedTransition: + case UnselectedSelectedTransition: { - mPaintState = CheckedState; + mPaintState = SelectedState; break; } - case CheckedUncheckedTransition: + case SelectedUnselectedTransition: { - mPaintState = UncheckedState; + mPaintState = UnselectedState; break; } - case UncheckedDisabledTransition: + case UnselectedDisabledTransition: { - mPaintState = DisabledUncheckedState; + mPaintState = DisabledUnselectedState; break; } - case DisabledUncheckedTransition: + case DisabledUnselectedTransition: { - mPaintState = UncheckedState; + mPaintState = UnselectedState; break; } - case CheckedDisabledTransition: + case SelectedDisabledTransition: { - mPaintState = DisabledCheckedState; + mPaintState = DisabledSelectedState; break; } - case DisabledCheckedTransition: + case DisabledSelectedTransition: { - mPaintState = CheckedState; + mPaintState = SelectedState; break; } default: diff --git a/dali-toolkit/internal/controls/buttons/check-box-button-default-painter-impl.h b/dali-toolkit/internal/controls/buttons/check-box-button-default-painter-impl.h index 0addbb4..a5b5a29 100644 --- a/dali-toolkit/internal/controls/buttons/check-box-button-default-painter-impl.h +++ b/dali-toolkit/internal/controls/buttons/check-box-button-default-painter-impl.h @@ -68,88 +68,54 @@ public: */ ~CheckBoxButtonDefaultPainter(); + ///////////////////////////////////////////////////////////////////////////// + // ButtonPainter interface + ///////////////////////////////////////////////////////////////////////////// + /** - * Sets the background image. - * - * It adds the background image to the root actor and creates the image transition if needed. - * - * @param[inout] checkBox The button in which all actors that form its appearance are going to be added. - * @param[in] image The background image. + * @copydoc ButtonPainter::Initialize( Toolkit::Button& button ) */ - void SetBackgroundImage( Toolkit::CheckBoxButton& checkBox, Actor image ); + virtual void Initialize( Toolkit::Button& button ); /** - * Sets the checked image. - * - * It adds the checked image to the root actor and creates the image transition if needed. - * - * @param[inout] checkBox The button in which all actors that form its appearance are going to be added. - * @param[in] image The checked image. + * @copydoc ButtonPainter::SetSize( Toolkit::Button& button, const Vector3& size ) */ - void SetCheckedImage( Toolkit::CheckBoxButton& checkBox, Actor image ); + virtual void SetSize( Toolkit::Button& button, const Vector3& size ); /** - * Sets the disabled backgroundimage. - * - * It adds the disabled backgroundimage to the root actor and creates the image transition if needed. - * - * @param[inout] checkBox The button in which all actors that form its appearance are going to be added. - * @param[in] image The disabled backgroundimage. + * @copydoc ButtonPainter::SetDisabled( Toolkit::Button& button, bool disabled ) */ - void SetDisabledBackgroundImage( Toolkit::CheckBoxButton& checkBox, Actor image ); + virtual void SetDisabled( Toolkit::Button& button, bool disabled ); /** - * Sets the disabled checked image. - * - * It adds the disabled checked image to the root actor and creates the image transition if needed. - * - * @param[inout] checkBox The button in which all actors that form its appearance are going to be added. - * @param[in] image The disabled checked image. + * @copydoc ButtonPainter::SetAnimationTime( float animationTime ) */ - void SetDisabledCheckedImage( Toolkit::CheckBoxButton& checkBox, Actor image ); - - ///////////////////////////////////////////////////////////////////////////// - // ButtonPainter interface - ///////////////////////////////////////////////////////////////////////////// + virtual void SetAnimationTime( float animationTime ); /** - * Initializes the painter by setting the default images. - * - * @param[inout] button The button in which all actors that form its appearance are going to be added. + * @copydoc ButtonPainter::GetAnimationTime() */ - void Initialize( Toolkit::Button& button ); + virtual float GetAnimationTime() const; /** - * Sets the new size. - * - * Resizes images. It applies size constraints. - * - * @param[inout] button The button which stores button's images. - * @param[in] size The new size. + * @copydoc ButtonPainter::SetSelectedImage( Toolkit::Button& button, Actor image ) */ - void SetSize( Toolkit::Button& button, const Vector3& size ); + virtual void SetSelectedImage( Toolkit::Button& button, Actor image ); /** - * Changes the Vega::Toolkit::CheckBoxButton for the given disabled state. - * - * It creates the image transition if needed. - * - * @param[inout] button The button in which all actors that form its appearance are going to be added. - * @param[in] disabled The disabled state. + * @copydoc ButtonPainter::SetBackgroundImage( Toolkit::Button& button, Actor image ) */ - void SetDisabled( Toolkit::Button& button, bool disabled ); + virtual void SetBackgroundImage( Toolkit::Button& button, Actor image ); /** - * Sets the animation time. - * @param[in] animationTime The animation time. + * @copydoc ButtonPainter::SetDisabledSelectedImage( Toolkit::Button& button, Actor image ) */ - void SetAnimationTime( float animationTime ); + virtual void SetDisabledSelectedImage( Toolkit::Button& button, Actor image ); /** - * Retrieves the animation time. - * @return The animation time. + * @copydoc ButtonPainter::SetDisabledBackgroundImage( Toolkit::Button& button, Actor image ) */ - float GetAnimationTime() const; + virtual void SetDisabledBackgroundImage( Toolkit::Button& button, Actor image ); ///////////////////////////////////////////////////////////////////////////// // CheckBoxButtonPainter interface @@ -161,7 +127,7 @@ public: * * @param[inout] checkBox The Dali::Toolkit::CheckBoxButton in which this object is registered. */ - void Checked( Toolkit::CheckBoxButton& checkBox ); + void Selected( Toolkit::Button& checkBox ); private: @@ -178,16 +144,16 @@ private: */ enum PaintState { - UncheckedState, ///< The check box button is unchecked. - CheckedState, ///< The check box button is checked. - DisabledUncheckedState, ///< The check box button is disabled and unchecked. - DisabledCheckedState, ///< The check box button is disabled and checked. - UncheckedCheckedTransition, ///< The check box button is in transition from unchecked to checked. - CheckedUncheckedTransition, ///< The check box button is in transition from checked to unchecked. - UncheckedDisabledTransition, ///< The check box button is in transition from unchecked to disabled. - DisabledUncheckedTransition, ///< The check box button is in transition from disabled to unchecked. - CheckedDisabledTransition, ///< The check box button is in transition from checked to disabled. - DisabledCheckedTransition ///< The check box button is in transition from disabled to checked. + UnselectedState, ///< The check box button is unselected. + SelectedState, ///< The check box button is selected. + DisabledUnselectedState, ///< The check box button is disabled and unselected. + DisabledSelectedState, ///< The check box button is disabled and selected. + UnselectedSelectedTransition, ///< The check box button is in transition from unselected to selected. + SelectedUnselectedTransition, ///< The check box button is in transition from selected to unselected. + UnselectedDisabledTransition, ///< The check box button is in transition from unselected to disabled. + DisabledUnselectedTransition, ///< The check box button is in transition from disabled to unselected. + SelectedDisabledTransition, ///< The check box button is in transition from selected to disabled. + DisabledSelectedTransition ///< The check box button is in transition from disabled to selected. }; /** @@ -214,7 +180,7 @@ private: * @param[inout] actor The actor. * @param[in] depth Depth position. */ - void ApplyCheckedConstraint( Actor& actor, float depth ); + void ApplySelectedConstraint( Actor& actor, float depth ); /** * Adds the actor to the fade in animation. It creates a fade in animation if needed. @@ -255,7 +221,7 @@ private: * Stops the fade out animation. * * It removes the actor stored in CheckBoxButtonDefaultPainter::mFadeOutBackgroundImage and - * CheckBoxButtonDefaultPainter::mFadeOutCheckedImage. + * CheckBoxButtonDefaultPainter::mFadeOutSelectedImage. * * @param[inout] checkBox The button which holds images. * @param[in] remove If true, removes the fadeout actor from root. @@ -275,7 +241,7 @@ private: * It adds the actor fade out animation and stores it to be removed when the animation finishes. * * @param[inout] checkBox The button which holds images. - * @param[in] layer Defines if the actor is going to be stored in the mFadeOutBackgroundImage or mFadeOutCheckedImage member. + * @param[in] layer Defines if the actor is going to be stored in the mFadeOutBackgroundImage or mFadeOutSelectedImage member. * @param[inout] image The actor. * @param[in] opacity The initial opacity. */ @@ -294,7 +260,7 @@ private: * @param[inout] checkBox The button which holds images. * @param[inout] image The actor. */ - void SetupCheckedAnimation( Toolkit::CheckBoxButton& checkBox, Actor& image ); + void SetupSelectedAnimation( Toolkit::CheckBoxButton& checkBox, Actor& image ); /** * Signal end of check out animation diff --git a/dali-toolkit/internal/controls/buttons/check-box-button-impl.cpp b/dali-toolkit/internal/controls/buttons/check-box-button-impl.cpp index c15c15e..9c898c7 100644 --- a/dali-toolkit/internal/controls/buttons/check-box-button-impl.cpp +++ b/dali-toolkit/internal/controls/buttons/check-box-button-impl.cpp @@ -19,8 +19,6 @@ #include "check-box-button-impl.h" // EXTERNAL INCLUDES -#include -#include #include // INTERNAL INCLUDES @@ -45,19 +43,8 @@ BaseHandle Create() TypeRegistration mType( typeid(Toolkit::CheckBoxButton), typeid(Toolkit::Button), Create ); -TypeAction a1(mType, Toolkit::CheckBoxButton::ACTION_CHECK_BOX_BUTTON_CLICK, &CheckBoxButton::DoAction); - } -namespace -{ - // Helper function used to cast a ButtonPainterPtr to CheckBoxButtonDefaultPainterPtr - CheckBoxButtonDefaultPainterPtr GetCheckBoxButtonPainter( ButtonPainterPtr painter ) - { - return static_cast( painter.Get() ); - } -} // namespace - Dali::Toolkit::CheckBoxButton CheckBoxButton::New() { // Create the implementation, temporarily owned on stack @@ -73,193 +60,19 @@ Dali::Toolkit::CheckBoxButton CheckBoxButton::New() return checkBoxButton; } -void CheckBoxButton::SetChecked( bool checked ) -{ - if( !mDisabled && ( checked != mChecked ) ) - { - // Stores the state. - mChecked = checked; - - Toolkit::CheckBoxButton handle( GetOwner() ); - - // Notifies the painter the checkbox has been checked. - GetCheckBoxButtonPainter( mPainter )->Checked( handle ); - - // Raise state changed signal - mStateChangedSignal.Emit( handle, mChecked ); - } -} - -bool CheckBoxButton::IsChecked() const -{ - return mChecked; -} - -void CheckBoxButton::SetBackgroundImage( Image image ) -{ - SetBackgroundImage( ImageActor::New( image ) ); -} - -void CheckBoxButton::SetBackgroundImage( Actor image ) -{ - Toolkit::CheckBoxButton handle( GetOwner() ); - GetCheckBoxButtonPainter( mPainter )->SetBackgroundImage( handle, image ); -} - -Actor& CheckBoxButton::GetBackgroundImage() -{ - return mBackgroundImage; -} - -Actor CheckBoxButton::GetBackgroundImage() const -{ - return mBackgroundImage; -} - -void CheckBoxButton::SetCheckedImage( Image image ) -{ - SetCheckedImage( ImageActor::New( image ) ); -} - -void CheckBoxButton::SetCheckedImage( Actor image ) -{ - Toolkit::CheckBoxButton handle( GetOwner() ); - GetCheckBoxButtonPainter( mPainter )->SetCheckedImage( handle, image ); -} - -Actor& CheckBoxButton::GetCheckedImage() -{ - return mCheckedImage; -} - -Actor CheckBoxButton::GetCheckedImage() const -{ - return mCheckedImage; -} - -void CheckBoxButton::SetDisabledBackgroundImage( Image image ) -{ - SetDisabledBackgroundImage( ImageActor::New( image ) ); -} - -void CheckBoxButton::SetDisabledBackgroundImage( Actor image ) -{ - Toolkit::CheckBoxButton handle( GetOwner() ); - GetCheckBoxButtonPainter( mPainter )->SetDisabledBackgroundImage( handle, image ); -} - -Actor& CheckBoxButton::GetDisabledBackgroundImage() -{ - return mDisabledBackgroundImage; -} - -Actor CheckBoxButton::GetDisabledBackgroundImage() const -{ - return mDisabledBackgroundImage; -} - -void CheckBoxButton::SetDisabledCheckedImage( Image image ) -{ - SetDisabledCheckedImage( ImageActor::New( image ) ); -} - -void CheckBoxButton::SetDisabledCheckedImage( Actor image ) -{ - Toolkit::CheckBoxButton handle( GetOwner() ); - GetCheckBoxButtonPainter( mPainter )->SetDisabledCheckedImage( handle, image ); -} - -Actor& CheckBoxButton::GetDisabledCheckedImage() -{ - return mDisabledCheckedImage; -} - -Actor CheckBoxButton::GetDisabledCheckedImage() const -{ - return mDisabledCheckedImage; -} - -Actor& CheckBoxButton::GetFadeOutBackgroundImage() -{ - return mFadeOutBackgroundImage; -} - -Actor& CheckBoxButton::GetFadeOutCheckedImage() -{ - return mFadeOutCheckedImage; -} - -void CheckBoxButton::OnButtonInitialize() -{ -} - -void CheckBoxButton::OnButtonUp() -{ - if( ButtonDown == mState ) - { - // Stores the state, notifies the painter and emits a signal. - SetChecked( !mChecked ); - } -} - -void CheckBoxButton::OnAnimationTimeSet( float animationTime ) -{ - GetCheckBoxButtonPainter( mPainter )->SetAnimationTime( animationTime ); -} - -float CheckBoxButton::OnAnimationTimeRequested() const -{ - return GetCheckBoxButtonPainter( mPainter )->GetAnimationTime(); -} - -void CheckBoxButton::OnActivated() -{ - // When the button is activated, it performs the click action - PropertyValueContainer attributes; - DoClickAction(attributes); -} - -void CheckBoxButton::DoClickAction(const PropertyValueContainer& attributes) -{ - // Prevents the button signals from doing a recursive loop by sending an action - // and re-emitting the signals. - if(!mClickActionPerforming) - { - mClickActionPerforming = true; - SetChecked( !mChecked ); - mClickActionPerforming = false; - } -} - -bool CheckBoxButton::DoAction(BaseObject* object, const std::string& actionName, const PropertyValueContainer& attributes) -{ - bool ret = false; - - Dali::BaseHandle handle(object); - - Toolkit::CheckBoxButton button = Toolkit::CheckBoxButton::DownCast(handle); - - if(Toolkit::CheckBoxButton::ACTION_CHECK_BOX_BUTTON_CLICK == actionName) - { - GetImplementation(button).DoClickAction(attributes); - ret = true; - } - - return ret; -} - CheckBoxButton::CheckBoxButton() -: Button(), - mChecked( false ), - mClickActionPerforming(false) +: Button() { // Creates specific painter. - mPainter = new CheckBoxButtonDefaultPainter(); + ButtonPainterPtr painter = new CheckBoxButtonDefaultPainter(); + SetPainter( painter ); + + SetTogglableButton( true ); } CheckBoxButton::~CheckBoxButton() { - mPainter = NULL; + SetPainter( NULL ); } } // namespace Internal diff --git a/dali-toolkit/internal/controls/buttons/check-box-button-impl.h b/dali-toolkit/internal/controls/buttons/check-box-button-impl.h index cb5e08c..619a571 100644 --- a/dali-toolkit/internal/controls/buttons/check-box-button-impl.h +++ b/dali-toolkit/internal/controls/buttons/check-box-button-impl.h @@ -49,162 +49,6 @@ public: */ static Dali::Toolkit::CheckBoxButton New(); - /** - * @copydoc Dali::Toolkit::CheckBoxButton::SetChecked( bool checked ) - */ - void SetChecked( bool checked ); - - /** - * @copydoc Dali::Toolkit::CheckBoxButton::IsChecked() - */ - bool IsChecked() const; - - /** - * @copydoc Dali::Toolkit::CheckBoxButton::SetBackgroundImage( Image image ) - */ - void SetBackgroundImage( Image image ); - - /** - * @copydoc Dali::Toolkit::CheckBoxButton::SetBackgroundImage( Actor image ) - */ - void SetBackgroundImage( Actor image ); - - /** - * Used by the painter only. - * @return A reference to the background image. - */ - Actor& GetBackgroundImage(); - - /** - * @copydoc Dali::Toolkit::CheckBoxButton::GetBackgroundImage() - */ - Actor GetBackgroundImage() const; - - /** - * @copydoc Dali::Toolkit::CheckBoxButton::SetCheckedImage( Image image ) - */ - void SetCheckedImage( Image image ); - - /** - * @copydoc Dali::Toolkit::CheckBoxButton::SetCheckedImage( Actor image ) - */ - void SetCheckedImage( Actor image ); - - /** - * Used by the painter only. - * @return A reference to the checked image. - */ - Actor& GetCheckedImage(); - - /** - * @copydoc Dali::Toolkit::CheckBoxButton::GetCheckedImage() - */ - Actor GetCheckedImage() const; - - /** - * @copydoc Dali::Toolkit::CheckBoxButton::SetDisabledBackgroundImage( Image image ) - */ - void SetDisabledBackgroundImage( Image image ); - - /** - * @copydoc Dali::Toolkit::CheckBoxButton::SetDisabledBackgroundImage( Actor image ) - */ - void SetDisabledBackgroundImage( Actor image ); - - /** - * Used by the painter only. - * @return A reference to the disabled background image. - */ - Actor& GetDisabledBackgroundImage(); - - /** - * @copydoc Dali::Toolkit::CheckBoxButton::GetDisabledBackgroundImage() - */ - Actor GetDisabledBackgroundImage() const; - - /** - * @copydoc Dali::Toolkit::CheckBoxButton::SetDisabledCheckedImage( Image image ) - */ - void SetDisabledCheckedImage( Image image ); - - /** - * @copydoc Dali::Toolkit::CheckBoxButton::SetDisabledCheckedImage( Actor image ) - */ - void SetDisabledCheckedImage( Actor image ); - - /** - * Used by the painter only. - * @return A reference to the disabled checked image. - */ - Actor& GetDisabledCheckedImage(); - - /** - * @copydoc Dali::Toolkit::CheckBoxButton::GetDisabledCheckedImage() - */ - Actor GetDisabledCheckedImage() const; - - /** - * Used by the painter only. - * @return A reference to the background image that is fading out. - */ - Actor& GetFadeOutBackgroundImage(); - - /** - * Used by the painter only. - * @return A reference to the checked image that is fading out. - */ - Actor& GetFadeOutCheckedImage(); - -protected: // From Control - - /** - * Respond the activate notification. - */ - virtual void OnActivated(); - -private: - - /** - * Perform the click action to click the button. - * @param[in] attributes The attributes to perfrom this action. - */ - void DoClickAction(const PropertyValueContainer& attributes); - -public: - /** - * Performs actions as requested using the action name. - * @param[in] object The object on which to perform the action. - * @param[in] actionName The action to perform. - * @param[in] attributes The attributes with which to perfrom this action. - * @return true if action has been accepted by this control - */ - static bool DoAction(BaseObject* object, const std::string& actionName, const PropertyValueContainer& attributes); - -protected: // From Button - - /** - * Registers properties - */ - virtual void OnButtonInitialize(); - - /** - * Emits signals and notifies the painter accordingly with the set button - * properties when the button is released. - */ - virtual void OnButtonUp(); - - /** - * Sets the push button animation time. - * @param animationTime The animation time in seconds. - */ - virtual void OnAnimationTimeSet( float animationTime ); - - /** - * Retrieves the animation time. - * @return The animation time in seconds. - */ - virtual float OnAnimationTimeRequested() const; - protected: /** @@ -224,20 +68,6 @@ private: // Undefined CheckBoxButton& operator=( const CheckBoxButton& ); - - -private: - bool mChecked; ///< Stores the check state. - - Actor mBackgroundImage; ///< Stores the background image. - Actor mCheckedImage; ///< Stores the checked image. - Actor mDisabledCheckedImage; ///< Stores the disabled checked image. - Actor mDisabledBackgroundImage; ///< Stores the disabled background image. - Actor mFadeOutBackgroundImage; ///< Stores a background image, which is in a fade out animation, to be removed when the animation finishes. - Actor mFadeOutCheckedImage; ///< Stores a foreground image, which is in a fade out animation, to be removed when the animation finishes. - - // Actions - bool mClickActionPerforming; }; } // namespace Internal diff --git a/dali-toolkit/internal/controls/buttons/check-box-button-painter-impl.h b/dali-toolkit/internal/controls/buttons/check-box-button-painter-impl.h index c4224d4..3151809 100644 --- a/dali-toolkit/internal/controls/buttons/check-box-button-painter-impl.h +++ b/dali-toolkit/internal/controls/buttons/check-box-button-painter-impl.h @@ -53,14 +53,6 @@ public: */ virtual ~CheckBoxButtonPainter() {} - /** - * This method is called when the Dali::Toolkit::Internal::CheckBoxButton, in which this - * object is registered, changes its state. - * @param[inout] button The Dali::Toolkit::CheckBoxButton, linked to the internal - * implementation, in which this object is registered. - */ - virtual void Checked( Toolkit::CheckBoxButton& button ) = 0; - ///////////////////////////////////////////////////////////////////////////// // ButtonPainter interface ///////////////////////////////////////////////////////////////////////////// diff --git a/dali-toolkit/internal/controls/buttons/push-button-default-painter-impl.cpp b/dali-toolkit/internal/controls/buttons/push-button-default-painter-impl.cpp index cf0cf92..5a60a1d 100644 --- a/dali-toolkit/internal/controls/buttons/push-button-default-painter-impl.cpp +++ b/dali-toolkit/internal/controls/buttons/push-button-default-painter-impl.cpp @@ -26,7 +26,6 @@ // INTERNAL INCLUDES #include -#include #include "push-button-impl.h" namespace Dali @@ -89,180 +88,190 @@ PushButtonDefaultPainter::~PushButtonDefaultPainter() } } -void PushButtonDefaultPainter::SetButtonImage( Toolkit::PushButton& pushButton, Actor image ) +void PushButtonDefaultPainter::Initialize( Toolkit::Button& button ) { - Toolkit::Internal::PushButton& pushButtonImpl = GetImplementation( pushButton ); + Toolkit::Internal::PushButton& pushButtonImpl = GetPushButtonImpl( button ); Actor& buttonImage = pushButtonImpl.GetButtonImage(); - Actor& fadeOutButtonImage = pushButtonImpl.GetFadeOutButtonImage(); + Actor& selectedImage = pushButtonImpl.GetSelectedImage(); + Actor& backgroundImage = pushButtonImpl.GetBackgroundImage(); + Actor& disabledImage = pushButtonImpl.GetDisabledImage(); + Actor& disabledBackgroundImage = pushButtonImpl.GetDisabledBackgroundImage(); + Actor& label = pushButtonImpl.GetLabel(); - switch( mPaintState ) + Toolkit::PushButton& pushButton = static_cast( button ); + + if( buttonImage ) { - case ReleasedState: - { - if( buttonImage && buttonImage.GetParent() ) - { - StopFadeOutAnimation( pushButton ); - FadeOutImage( pushButton, Foreground, buttonImage ); + SetButtonImage( pushButton, buttonImage ); + } - buttonImage = image; + if( backgroundImage ) + { + SetBackgroundImage( pushButton, backgroundImage ); + } - FadeInImage( pushButton, buttonImage ); + if( selectedImage ) + { + SetSelectedImage( pushButton, selectedImage ); + } - StartFadeOutAnimation( pushButton ); - StartFadeInAnimation(); - } - else - { - buttonImage = image; - pushButton.Add( buttonImage ); - } - break; - } - case ReleasedPressedTransition: // FALLTHROUGH - case ReleasedDisabledTransition: - { - float opacity = 1.f; - if( fadeOutButtonImage ) - { - opacity = fadeOutButtonImage.GetCurrentOpacity(); - } - StopFadeOutAnimation( pushButton ); + if( disabledImage ) + { + SetDisabledImage( pushButton, disabledImage ); + } - // Replaces the button image. - buttonImage = image; + if( disabledBackgroundImage ) + { + SetDisabledBackgroundImage( pushButton, disabledBackgroundImage ); + } - pushButton.Add( buttonImage ); - FadeOutImage( pushButton, Foreground, buttonImage, opacity ); + if( label ) + { + SetLabel( pushButton, label ); + } - StartFadeOutAnimation( pushButton ); - break; - } - case PressedReleasedTransition: // FALLTHROUGH - case DisabledReleasedTransition: - { - StopFadeInAnimation(); - pushButton.Remove( buttonImage ); + SetDisabled( pushButton, mDisabled ); +} - buttonImage = image; +void PushButtonDefaultPainter::SetSize( Toolkit::Button& button, const Vector3& size ) +{ + if( size != mSize ) + { + mSize = size; - FadeInImage( pushButton, buttonImage ); - StartFadeInAnimation(); - break; + Toolkit::Internal::PushButton& pushButtonImpl = GetPushButtonImpl( button ); + Actor& buttonImage = pushButtonImpl.GetButtonImage(); + Actor& selectedImage = pushButtonImpl.GetSelectedImage(); + Actor& backgroundImage = pushButtonImpl.GetBackgroundImage(); + Actor& disabledImage = pushButtonImpl.GetDisabledImage(); + Actor& disabledBackgroundImage = pushButtonImpl.GetDisabledBackgroundImage(); + Actor& label = pushButtonImpl.GetLabel(); + + ApplyConstraint( buttonImage, FOREGROUND_DEPTH ); + ApplyConstraint( backgroundImage, BACKGROUND_DEPTH ); + ApplyConstraint( selectedImage, FOREGROUND_DEPTH ); + ApplyConstraint( disabledImage, FOREGROUND_DEPTH ); + ApplyConstraint( disabledBackgroundImage, BACKGROUND_DEPTH ); + + if( label ) + { + label.SetPosition( 0.f, 0.f, LABEL_DEPTH ); + label.SetSize( mSize ); } - default: - buttonImage = image; - break; } - - buttonImage.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - buttonImage.SetParentOrigin( ParentOrigin::TOP_LEFT ); - ApplyConstraint( buttonImage, FOREGROUND_DEPTH ); } -void PushButtonDefaultPainter::SetBackgroundImage( Toolkit::PushButton& pushButton, Actor image ) +void PushButtonDefaultPainter::SetDisabled( Toolkit::Button& button, bool disabled ) { - Toolkit::Internal::PushButton& pushButtonImpl = GetImplementation( pushButton ); + Toolkit::Internal::PushButton& pushButtonImpl = GetPushButtonImpl( button ); + Actor& buttonImage = pushButtonImpl.GetButtonImage(); + Actor& selectedImage = pushButtonImpl.GetSelectedImage(); Actor& backgroundImage = pushButtonImpl.GetBackgroundImage(); - Actor& fadeOutBackgroundImage = pushButtonImpl.GetFadeOutBackgroundImage(); + Actor& disabledImage = pushButtonImpl.GetDisabledImage(); + Actor& disabledBackgroundImage = pushButtonImpl.GetDisabledBackgroundImage(); + Actor& fadeOutButtonImage = pushButtonImpl.GetFadeOutButtonImage(); + + Toolkit::PushButton& pushButton = static_cast( button ); + + mDisabled = disabled; switch( mPaintState ) { - case ReleasedState: // FALLTHROUGH - case PressedState: - case ReleasedPressedTransition: - case PressedReleasedTransition: + case ReleasedState: + { + if( disabled ) { - if( backgroundImage && backgroundImage.GetParent() ) - { - StopFadeOutAnimation( pushButton ); - FadeOutImage( pushButton, Background, backgroundImage ); - - backgroundImage = image; - - FadeInImage( pushButton, backgroundImage ); + StopFadeOutAnimation( pushButton ); + FadeOutImage( pushButton, Background, backgroundImage ); + FadeOutImage( pushButton, Foreground, buttonImage ); + FadeInImage( pushButton, disabledBackgroundImage ); + FadeInImage( pushButton, disabledImage ); + StartFadeOutAnimation( pushButton ); + StartFadeInAnimation(); - StartFadeOutAnimation( pushButton ); - StartFadeInAnimation(); + if( buttonImage || disabledImage || backgroundImage || disabledBackgroundImage ) + { + mPaintState = ReleasedDisabledTransition; } else { - backgroundImage = image; - pushButton.Add( backgroundImage ); + mPaintState = DisabledReleasedState; } - break; } - case ReleasedDisabledTransition: // FALLTHROUGH - case PressedDisabledTransition: + break; + } + case PressedState: + { + if( disabled ) { - float opacity = 1.f; - if( fadeOutBackgroundImage ) - { - opacity = fadeOutBackgroundImage.GetCurrentOpacity(); - } StopFadeOutAnimation( pushButton ); - - // Replaces the button image. - backgroundImage = image; - - pushButton.Add( backgroundImage ); - FadeOutImage( pushButton, Background, backgroundImage, opacity ); - + FadeOutImage( pushButton, Background, backgroundImage ); + FadeOutImage( pushButton, Foreground, selectedImage ); + FadeInImage( pushButton, disabledBackgroundImage ); + FadeInImage( pushButton, disabledImage ); StartFadeOutAnimation( pushButton ); - break; + StartFadeInAnimation(); + + if( selectedImage || disabledImage || backgroundImage || disabledBackgroundImage ) + { + mPaintState = PressedDisabledTransition; + } + else + { + mPaintState = DisabledPressedState; + } } - case DisabledReleasedTransition: // FALLTHROUGH - case DisabledPressedTransition: + break; + } + case DisabledReleasedState: + { + if( !disabled ) { - StopFadeInAnimation(); - pushButton.Remove( backgroundImage ); - - backgroundImage = image; - + StopFadeOutAnimation( pushButton ); + FadeOutImage( pushButton, Background, disabledBackgroundImage ); + FadeOutImage( pushButton, Foreground, disabledImage ); FadeInImage( pushButton, backgroundImage ); + FadeInImage( pushButton, buttonImage ); + StartFadeOutAnimation( pushButton ); StartFadeInAnimation(); - break; - } - default: - backgroundImage = image; - break; - } - - backgroundImage.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - backgroundImage.SetParentOrigin( ParentOrigin::TOP_LEFT ); - ApplyConstraint( backgroundImage, BACKGROUND_DEPTH ); -} -void PushButtonDefaultPainter::SetSelectedImage( Toolkit::PushButton& pushButton, Actor image ) -{ - Toolkit::Internal::PushButton& pushButtonImpl = GetImplementation( pushButton ); - Actor& selectedImage = pushButtonImpl.GetSelectedImage(); - Actor& fadeOutButtonImage = pushButtonImpl.GetFadeOutButtonImage(); - - switch( mPaintState ) + if( buttonImage || disabledImage || backgroundImage || disabledBackgroundImage ) + { + mPaintState = DisabledReleasedTransition; + } + else + { + mPaintState = ReleasedState; + } + } + break; + } + case DisabledPressedState: { - case PressedState: + if( !disabled ) { - if( selectedImage && selectedImage.GetParent() ) - { - StopFadeOutAnimation( pushButton ); - FadeOutImage( pushButton, Foreground, selectedImage ); - - selectedImage = image; - - FadeInImage( pushButton, selectedImage ); + StopFadeOutAnimation( pushButton ); + FadeOutImage( pushButton, Background, disabledBackgroundImage ); + FadeOutImage( pushButton, Foreground, disabledImage ); + FadeInImage( pushButton, backgroundImage ); + FadeInImage( pushButton, selectedImage ); + StartFadeOutAnimation( pushButton ); + StartFadeInAnimation(); - StartFadeOutAnimation( pushButton ); - StartFadeInAnimation(); + if( selectedImage || disabledImage || backgroundImage || disabledBackgroundImage ) + { + mPaintState = DisabledPressedTransition; } else { - selectedImage = image; - pushButton.Add( selectedImage ); + mPaintState = PressedState; } - break; } - case PressedReleasedTransition: // FALLTHROUGH - case PressedDisabledTransition: + break; + } + case ReleasedPressedTransition: + { + if( disabled ) { float opacity = 1.f; if( fadeOutButtonImage ) @@ -270,604 +279,608 @@ void PushButtonDefaultPainter::SetSelectedImage( Toolkit::PushButton& pushButton opacity = fadeOutButtonImage.GetCurrentOpacity(); } StopFadeOutAnimation( pushButton ); + StopFadeInAnimation(); - // Replaces the button image. - selectedImage = image; + FadeOutImage( pushButton, Foreground, selectedImage, 1.f - opacity ); + FadeOutImage( pushButton, Background, backgroundImage ); - pushButton.Add( selectedImage ); - FadeOutImage( pushButton, Foreground, selectedImage, opacity ); + FadeInImage( pushButton, disabledImage ); + FadeInImage( pushButton, disabledBackgroundImage ); StartFadeOutAnimation( pushButton ); - break; - } - case ReleasedPressedTransition: // FALLTHROUGH - case DisabledPressedTransition: - { - StopFadeInAnimation(); - pushButton.Remove( selectedImage ); - - selectedImage = image; - - FadeInImage( pushButton, selectedImage ); StartFadeInAnimation(); - break; - } - default: - selectedImage = image; - break; - } - - selectedImage.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - selectedImage.SetParentOrigin( ParentOrigin::TOP_LEFT ); - ApplyConstraint( selectedImage, FOREGROUND_DEPTH ); -} - -void PushButtonDefaultPainter::SetDisabledImage( Toolkit::PushButton& pushButton, Actor image ) -{ - Toolkit::Internal::PushButton& pushButtonImpl = GetImplementation( pushButton ); - Actor& disabledImage = pushButtonImpl.GetDisabledImage(); - Actor& fadeOutButtonImage = pushButtonImpl.GetFadeOutButtonImage(); - switch( mPaintState ) - { - case DisabledReleasedState: // FALLTHROUGH - case DisabledPressedState: - { - if( disabledImage && disabledImage.GetParent() ) + if( selectedImage || disabledImage || backgroundImage || disabledBackgroundImage ) { - StopFadeOutAnimation( pushButton ); - FadeOutImage( pushButton, Foreground, disabledImage ); - - disabledImage = image; - - FadeInImage( pushButton, disabledImage ); - - StartFadeOutAnimation( pushButton ); - StartFadeInAnimation(); + mPaintState = PressedDisabledTransition; } else { - disabledImage = image; - pushButton.Add( disabledImage ); + mPaintState = DisabledPressedState; } - break; } - case ReleasedDisabledTransition: // FALLTHROUGH - case PressedDisabledTransition: + break; + } + case PressedReleasedTransition: + { + if( disabled ) { + float opacity = 1.f; + if( fadeOutButtonImage ) + { + opacity = fadeOutButtonImage.GetCurrentOpacity(); + } + StopFadeOutAnimation( pushButton ); StopFadeInAnimation(); - pushButton.Remove( disabledImage ); - disabledImage = image; + FadeOutImage( pushButton, Foreground, buttonImage, 1.f - opacity ); + FadeOutImage( pushButton, Background, backgroundImage ); FadeInImage( pushButton, disabledImage ); + FadeInImage( pushButton, disabledBackgroundImage ); + + StartFadeOutAnimation( pushButton ); StartFadeInAnimation(); - break; + + if( buttonImage || disabledImage || backgroundImage || disabledBackgroundImage ) + { + mPaintState = ReleasedDisabledTransition; + } + else + { + mPaintState = DisabledReleasedState; + } } - case DisabledReleasedTransition: // FALLTHROUGH - case DisabledPressedTransition: + break; + } + case ReleasedDisabledTransition: + { + if( !disabled ) { float opacity = 1.f; if( fadeOutButtonImage ) { opacity = fadeOutButtonImage.GetCurrentOpacity(); } - StopFadeOutAnimation( pushButton ); - - // Replaces the button image. - disabledImage = image; + StopFadeOutAnimation( pushButton, false ); + StopFadeInAnimation(); - pushButton.Add( disabledImage ); - FadeOutImage( pushButton, Foreground, disabledImage, opacity ); + FadeOutImage( pushButton, Foreground, disabledImage, 1.f - opacity ); + FadeOutImage( pushButton, Background, disabledBackgroundImage, 1.f - opacity ); + FadeInImage( pushButton, buttonImage, opacity ); + FadeInImage( pushButton, backgroundImage, opacity ); StartFadeOutAnimation( pushButton ); - break; + StartFadeInAnimation(); + + if( buttonImage || disabledImage || backgroundImage || disabledBackgroundImage ) + { + mPaintState = DisabledReleasedTransition; + } + else + { + mPaintState = ReleasedState; + } } - default: - disabledImage = image; - break; + break; } - - disabledImage.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - disabledImage.SetParentOrigin( ParentOrigin::TOP_LEFT ); - ApplyConstraint( disabledImage, FOREGROUND_DEPTH ); -} - -void PushButtonDefaultPainter::SetDisabledBackgroundImage( Toolkit::PushButton& pushButton, Actor image ) -{ - Toolkit::Internal::PushButton& pushButtonImpl = GetImplementation( pushButton ); - Actor& disabledBackgroundImage = pushButtonImpl.GetDisabledBackgroundImage(); - Actor& fadeOutBackgroundImage = pushButtonImpl.GetFadeOutBackgroundImage(); - - switch( mPaintState ) + case DisabledReleasedTransition: { - case DisabledReleasedState: // FALLTHROUGH - case DisabledPressedState: + if( disabled ) { - if( disabledBackgroundImage && disabledBackgroundImage.GetParent() ) + float opacity = 1.f; + if( fadeOutButtonImage ) { - StopFadeOutAnimation( pushButton ); - FadeOutImage( pushButton, Background, disabledBackgroundImage ); + opacity = fadeOutButtonImage.GetCurrentOpacity(); + } + StopFadeOutAnimation( pushButton, false ); + StopFadeInAnimation(); - disabledBackgroundImage = image; + FadeOutImage( pushButton, Foreground, buttonImage, 1.f - opacity ); + FadeOutImage( pushButton, Background, backgroundImage, 1.f - opacity ); + FadeInImage( pushButton, disabledImage, opacity ); + FadeInImage( pushButton, disabledBackgroundImage, opacity ); - FadeInImage( pushButton, disabledBackgroundImage ); + StartFadeOutAnimation( pushButton ); + StartFadeInAnimation(); - StartFadeOutAnimation( pushButton ); - StartFadeInAnimation(); + if( buttonImage || disabledImage || backgroundImage || disabledBackgroundImage ) + { + mPaintState = ReleasedDisabledTransition; } else { - disabledBackgroundImage = image; - pushButton.Add( disabledBackgroundImage ); + mPaintState = DisabledReleasedState; } - break; } - case ReleasedDisabledTransition: // FALLTHROUGH - case PressedDisabledTransition: + break; + } + case PressedDisabledTransition: + { + if( !disabled ) { + float opacity = 1.f; + if( fadeOutButtonImage ) + { + opacity = fadeOutButtonImage.GetCurrentOpacity(); + } + StopFadeOutAnimation( pushButton, false ); StopFadeInAnimation(); - pushButton.Remove( disabledBackgroundImage ); - disabledBackgroundImage = image; + FadeOutImage( pushButton, Foreground, disabledImage, 1.f - opacity ); + FadeOutImage( pushButton, Background, disabledBackgroundImage, 1.f - opacity ); + FadeInImage( pushButton, selectedImage, opacity ); + FadeInImage( pushButton, backgroundImage, opacity ); - FadeInImage( pushButton, disabledBackgroundImage ); + StartFadeOutAnimation( pushButton ); StartFadeInAnimation(); - break; + + if( selectedImage || disabledImage || backgroundImage || disabledBackgroundImage ) + { + mPaintState = DisabledPressedTransition; + } + else + { + mPaintState = PressedState; + } } - case DisabledReleasedTransition: // FALLTHROUGH - case DisabledPressedTransition: + break; + } + case DisabledPressedTransition: + { + if( disabled ) { float opacity = 1.f; - if( fadeOutBackgroundImage ) + if( fadeOutButtonImage ) { - opacity = fadeOutBackgroundImage.GetCurrentOpacity(); + opacity = fadeOutButtonImage.GetCurrentOpacity(); } - StopFadeOutAnimation( pushButton ); - - // Replaces the button image. - disabledBackgroundImage = image; + StopFadeOutAnimation( pushButton, false ); + StopFadeInAnimation(); - pushButton.Add( disabledBackgroundImage ); - FadeOutImage( pushButton, Background, disabledBackgroundImage, opacity ); + FadeOutImage( pushButton, Foreground, selectedImage, 1.f - opacity ); + FadeOutImage( pushButton, Background, backgroundImage, 1.f - opacity ); + FadeInImage( pushButton, disabledImage, opacity ); + FadeInImage( pushButton, disabledBackgroundImage, opacity ); StartFadeOutAnimation( pushButton ); - break; + StartFadeInAnimation(); + + if( selectedImage || disabledImage || backgroundImage || disabledBackgroundImage ) + { + mPaintState = PressedDisabledTransition; + } + else + { + mPaintState = DisabledPressedState; + } } - default: - disabledBackgroundImage = image; - break; + break; + } + default: + break; } - - disabledBackgroundImage.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - disabledBackgroundImage.SetParentOrigin( ParentOrigin::TOP_LEFT ); - ApplyConstraint( disabledBackgroundImage, BACKGROUND_DEPTH ); } -void PushButtonDefaultPainter::SetLabel( Toolkit::PushButton& pushButton, Actor label ) +void PushButtonDefaultPainter::SetAnimationTime( float animationTime ) { - Toolkit::Internal::PushButton& pushButtonImpl = GetImplementation( pushButton ); - Actor& labelActor = pushButtonImpl.GetLabel(); - - if( labelActor && labelActor.GetParent() ) - { - labelActor.GetParent().Remove( labelActor ); - } - - labelActor = label; - labelActor.SetAnchorPoint( AnchorPoint::CENTER ); - labelActor.SetParentOrigin( ParentOrigin::CENTER ); + mAnimationTime = animationTime; +} - labelActor.SetPosition( 0.f, 0.f, LABEL_DEPTH ); - labelActor.SetSize( mSize ); +float PushButtonDefaultPainter::GetAnimationTime() const +{ + return mAnimationTime; +} - pushButton.Add( labelActor ); +void PushButtonDefaultPainter::SetAutoRepeating( bool autorepeating ) +{ + mAutoRepeating = autorepeating; } -void PushButtonDefaultPainter::Initialize( Toolkit::Button& button ) +void PushButtonDefaultPainter::SetLabel( Toolkit::Button& button, Actor label ) { Toolkit::Internal::PushButton& pushButtonImpl = GetPushButtonImpl( button ); - Actor& buttonImage = pushButtonImpl.GetButtonImage(); - Actor& selectedImage = pushButtonImpl.GetSelectedImage(); - Actor& backgroundImage = pushButtonImpl.GetBackgroundImage(); - Actor& disabledImage = pushButtonImpl.GetDisabledImage(); - Actor& disabledBackgroundImage = pushButtonImpl.GetDisabledBackgroundImage(); - Actor& label = pushButtonImpl.GetLabel(); + Actor& labelActor = pushButtonImpl.GetLabel(); Toolkit::PushButton& pushButton = static_cast( button ); - if( buttonImage ) - { - SetButtonImage( pushButton, buttonImage ); - } - - if( backgroundImage ) - { - SetBackgroundImage( pushButton, backgroundImage ); - } - - if( selectedImage ) - { - SetSelectedImage( pushButton, selectedImage ); - } - - if( disabledImage ) - { - SetDisabledImage( pushButton, disabledImage ); - } - - if( disabledBackgroundImage ) - { - SetDisabledBackgroundImage( pushButton, disabledBackgroundImage ); - } - - if( label ) + if( labelActor && labelActor.GetParent() ) { - SetLabel( pushButton, label ); + labelActor.GetParent().Remove( labelActor ); } - SetDisabled( pushButton, mDisabled ); -} - -void PushButtonDefaultPainter::SetSize( Toolkit::Button& button, const Vector3& size ) -{ - if( size != mSize ) - { - mSize = size; - - Toolkit::Internal::PushButton& pushButtonImpl = GetPushButtonImpl( button ); - Actor& buttonImage = pushButtonImpl.GetButtonImage(); - Actor& selectedImage = pushButtonImpl.GetSelectedImage(); - Actor& backgroundImage = pushButtonImpl.GetBackgroundImage(); - Actor& disabledImage = pushButtonImpl.GetDisabledImage(); - Actor& disabledBackgroundImage = pushButtonImpl.GetDisabledBackgroundImage(); - Actor& label = pushButtonImpl.GetLabel(); - - ApplyConstraint( buttonImage, FOREGROUND_DEPTH ); - ApplyConstraint( backgroundImage, BACKGROUND_DEPTH ); - ApplyConstraint( selectedImage, FOREGROUND_DEPTH ); - ApplyConstraint( disabledImage, FOREGROUND_DEPTH ); - ApplyConstraint( disabledBackgroundImage, BACKGROUND_DEPTH ); + labelActor = label; + labelActor.SetAnchorPoint( AnchorPoint::CENTER ); + labelActor.SetParentOrigin( ParentOrigin::CENTER ); - if( label ) - { - label.SetPosition( 0.f, 0.f, LABEL_DEPTH ); - label.SetSize( mSize ); - } - } + labelActor.SetPosition( 0.f, 0.f, LABEL_DEPTH ); + labelActor.SetSize( mSize ); + + pushButton.Add( labelActor ); } -void PushButtonDefaultPainter::SetDisabled( Toolkit::Button& button, bool disabled ) +void PushButtonDefaultPainter::SetButtonImage( Toolkit::Button& button, Actor image ) { Toolkit::Internal::PushButton& pushButtonImpl = GetPushButtonImpl( button ); Actor& buttonImage = pushButtonImpl.GetButtonImage(); - Actor& selectedImage = pushButtonImpl.GetSelectedImage(); - Actor& backgroundImage = pushButtonImpl.GetBackgroundImage(); - Actor& disabledImage = pushButtonImpl.GetDisabledImage(); - Actor& disabledBackgroundImage = pushButtonImpl.GetDisabledBackgroundImage(); Actor& fadeOutButtonImage = pushButtonImpl.GetFadeOutButtonImage(); Toolkit::PushButton& pushButton = static_cast( button ); - mDisabled = disabled; - switch( mPaintState ) { - case ReleasedState: - { - if( disabled ) + case ReleasedState: { - StopFadeOutAnimation( pushButton ); - FadeOutImage( pushButton, Background, backgroundImage ); - FadeOutImage( pushButton, Foreground, buttonImage ); - FadeInImage( pushButton, disabledBackgroundImage ); - FadeInImage( pushButton, disabledImage ); - StartFadeOutAnimation( pushButton ); - StartFadeInAnimation(); - - if( buttonImage || disabledImage || backgroundImage || disabledBackgroundImage ) + if( buttonImage && buttonImage.GetParent() ) { - mPaintState = ReleasedDisabledTransition; + StopFadeOutAnimation( pushButton ); + FadeOutImage( pushButton, Foreground, buttonImage ); + + buttonImage = image; + + FadeInImage( pushButton, buttonImage ); + + StartFadeOutAnimation( pushButton ); + StartFadeInAnimation(); } else { - mPaintState = DisabledReleasedState; + buttonImage = image; + pushButton.Add( buttonImage ); } + break; } - break; - } - case PressedState: - { - if( disabled ) + case ReleasedPressedTransition: // FALLTHROUGH + case ReleasedDisabledTransition: { - StopFadeOutAnimation( pushButton ); - FadeOutImage( pushButton, Background, backgroundImage ); - FadeOutImage( pushButton, Foreground, selectedImage ); - FadeInImage( pushButton, disabledBackgroundImage ); - FadeInImage( pushButton, disabledImage ); - StartFadeOutAnimation( pushButton ); - StartFadeInAnimation(); - - if( selectedImage || disabledImage || backgroundImage || disabledBackgroundImage ) - { - mPaintState = PressedDisabledTransition; - } - else + float opacity = 1.f; + if( fadeOutButtonImage ) { - mPaintState = DisabledPressedState; + opacity = fadeOutButtonImage.GetCurrentOpacity(); } + StopFadeOutAnimation( pushButton ); + + // Replaces the button image. + buttonImage = image; + + pushButton.Add( buttonImage ); + FadeOutImage( pushButton, Foreground, buttonImage, opacity ); + + StartFadeOutAnimation( pushButton ); + break; } - break; - } - case DisabledReleasedState: - { - if( !disabled ) + case PressedReleasedTransition: // FALLTHROUGH + case DisabledReleasedTransition: { - StopFadeOutAnimation( pushButton ); - FadeOutImage( pushButton, Background, disabledBackgroundImage ); - FadeOutImage( pushButton, Foreground, disabledImage ); - FadeInImage( pushButton, backgroundImage ); + StopFadeInAnimation(); + pushButton.Remove( buttonImage ); + + buttonImage = image; + FadeInImage( pushButton, buttonImage ); - StartFadeOutAnimation( pushButton ); StartFadeInAnimation(); + break; + } + default: + buttonImage = image; + break; + } - if( buttonImage || disabledImage || backgroundImage || disabledBackgroundImage ) + buttonImage.SetAnchorPoint( AnchorPoint::TOP_LEFT ); + buttonImage.SetParentOrigin( ParentOrigin::TOP_LEFT ); + ApplyConstraint( buttonImage, FOREGROUND_DEPTH ); +} + +void PushButtonDefaultPainter::SetSelectedImage( Toolkit::Button& button, Actor image ) +{ + Toolkit::Internal::PushButton& pushButtonImpl = GetPushButtonImpl( button ); + Actor& selectedImage = pushButtonImpl.GetSelectedImage(); + Actor& fadeOutButtonImage = pushButtonImpl.GetFadeOutButtonImage(); + + Toolkit::PushButton& pushButton = static_cast( button ); + + switch( mPaintState ) + { + case PressedState: + { + if( selectedImage && selectedImage.GetParent() ) { - mPaintState = DisabledReleasedTransition; + StopFadeOutAnimation( pushButton ); + FadeOutImage( pushButton, Foreground, selectedImage ); + + selectedImage = image; + + FadeInImage( pushButton, selectedImage ); + + StartFadeOutAnimation( pushButton ); + StartFadeInAnimation(); } else { - mPaintState = ReleasedState; + selectedImage = image; + pushButton.Add( selectedImage ); } + break; } - break; - } - case DisabledPressedState: - { - if( !disabled ) + case PressedReleasedTransition: // FALLTHROUGH + case PressedDisabledTransition: { + float opacity = 1.f; + if( fadeOutButtonImage ) + { + opacity = fadeOutButtonImage.GetCurrentOpacity(); + } StopFadeOutAnimation( pushButton ); - FadeOutImage( pushButton, Background, disabledBackgroundImage ); - FadeOutImage( pushButton, Foreground, disabledImage ); - FadeInImage( pushButton, backgroundImage ); - FadeInImage( pushButton, selectedImage ); + + // Replaces the button image. + selectedImage = image; + + pushButton.Add( selectedImage ); + FadeOutImage( pushButton, Foreground, selectedImage, opacity ); + StartFadeOutAnimation( pushButton ); + break; + } + case ReleasedPressedTransition: // FALLTHROUGH + case DisabledPressedTransition: + { + StopFadeInAnimation(); + pushButton.Remove( selectedImage ); + + selectedImage = image; + + FadeInImage( pushButton, selectedImage ); StartFadeInAnimation(); + break; + } + default: + selectedImage = image; + break; + } - if( selectedImage || disabledImage || backgroundImage || disabledBackgroundImage ) + selectedImage.SetAnchorPoint( AnchorPoint::TOP_LEFT ); + selectedImage.SetParentOrigin( ParentOrigin::TOP_LEFT ); + ApplyConstraint( selectedImage, FOREGROUND_DEPTH ); +} + +void PushButtonDefaultPainter::SetBackgroundImage( Toolkit::Button& button, Actor image ) +{ + Toolkit::Internal::PushButton& pushButtonImpl = GetPushButtonImpl( button ); + Actor& backgroundImage = pushButtonImpl.GetBackgroundImage(); + Actor& fadeOutBackgroundImage = pushButtonImpl.GetFadeOutBackgroundImage(); + + Toolkit::PushButton& pushButton = static_cast( button ); + + switch( mPaintState ) + { + case ReleasedState: // FALLTHROUGH + case PressedState: + case ReleasedPressedTransition: + case PressedReleasedTransition: + { + if( backgroundImage && backgroundImage.GetParent() ) { - mPaintState = DisabledPressedTransition; + StopFadeOutAnimation( pushButton ); + FadeOutImage( pushButton, Background, backgroundImage ); + + backgroundImage = image; + + FadeInImage( pushButton, backgroundImage ); + + StartFadeOutAnimation( pushButton ); + StartFadeInAnimation(); } else { - mPaintState = PressedState; + backgroundImage = image; + pushButton.Add( backgroundImage ); } + break; } - break; - } - case ReleasedPressedTransition: - { - if( disabled ) + case ReleasedDisabledTransition: // FALLTHROUGH + case PressedDisabledTransition: { float opacity = 1.f; - if( fadeOutButtonImage ) + if( fadeOutBackgroundImage ) { - opacity = fadeOutButtonImage.GetCurrentOpacity(); + opacity = fadeOutBackgroundImage.GetCurrentOpacity(); } StopFadeOutAnimation( pushButton ); + + // Replaces the button image. + backgroundImage = image; + + pushButton.Add( backgroundImage ); + FadeOutImage( pushButton, Background, backgroundImage, opacity ); + + StartFadeOutAnimation( pushButton ); + break; + } + case DisabledReleasedTransition: // FALLTHROUGH + case DisabledPressedTransition: + { StopFadeInAnimation(); + pushButton.Remove( backgroundImage ); - FadeOutImage( pushButton, Foreground, selectedImage, 1.f - opacity ); - FadeOutImage( pushButton, Background, backgroundImage ); + backgroundImage = image; + + FadeInImage( pushButton, backgroundImage ); + StartFadeInAnimation(); + break; + } + default: + backgroundImage = image; + break; + } + + backgroundImage.SetAnchorPoint( AnchorPoint::TOP_LEFT ); + backgroundImage.SetParentOrigin( ParentOrigin::TOP_LEFT ); + ApplyConstraint( backgroundImage, BACKGROUND_DEPTH ); +} + +void PushButtonDefaultPainter::SetDisabledImage( Toolkit::Button& button, Actor image ) +{ + Toolkit::Internal::PushButton& pushButtonImpl = GetPushButtonImpl( button ); + Actor& disabledImage = pushButtonImpl.GetDisabledImage(); + Actor& fadeOutButtonImage = pushButtonImpl.GetFadeOutButtonImage(); + + Toolkit::PushButton& pushButton = static_cast( button ); + + switch( mPaintState ) + { + case DisabledReleasedState: // FALLTHROUGH + case DisabledPressedState: + { + if( disabledImage && disabledImage.GetParent() ) + { + StopFadeOutAnimation( pushButton ); + FadeOutImage( pushButton, Foreground, disabledImage ); - FadeInImage( pushButton, disabledImage ); - FadeInImage( pushButton, disabledBackgroundImage ); + disabledImage = image; - StartFadeOutAnimation( pushButton ); - StartFadeInAnimation(); + FadeInImage( pushButton, disabledImage ); - if( selectedImage || disabledImage || backgroundImage || disabledBackgroundImage ) - { - mPaintState = PressedDisabledTransition; + StartFadeOutAnimation( pushButton ); + StartFadeInAnimation(); } else { - mPaintState = DisabledPressedState; + disabledImage = image; + pushButton.Add( disabledImage ); } + break; } - break; - } - case PressedReleasedTransition: - { - if( disabled ) + case ReleasedDisabledTransition: // FALLTHROUGH + case PressedDisabledTransition: { - float opacity = 1.f; - if( fadeOutButtonImage ) - { - opacity = fadeOutButtonImage.GetCurrentOpacity(); - } - StopFadeOutAnimation( pushButton ); StopFadeInAnimation(); + pushButton.Remove( disabledImage ); - FadeOutImage( pushButton, Foreground, buttonImage, 1.f - opacity ); - FadeOutImage( pushButton, Background, backgroundImage ); + disabledImage = image; FadeInImage( pushButton, disabledImage ); - FadeInImage( pushButton, disabledBackgroundImage ); - - StartFadeOutAnimation( pushButton ); StartFadeInAnimation(); - - if( buttonImage || disabledImage || backgroundImage || disabledBackgroundImage ) - { - mPaintState = ReleasedDisabledTransition; - } - else - { - mPaintState = DisabledReleasedState; - } + break; } - break; - } - case ReleasedDisabledTransition: - { - if( !disabled ) + case DisabledReleasedTransition: // FALLTHROUGH + case DisabledPressedTransition: { float opacity = 1.f; if( fadeOutButtonImage ) { opacity = fadeOutButtonImage.GetCurrentOpacity(); } - StopFadeOutAnimation( pushButton, false ); - StopFadeInAnimation(); + StopFadeOutAnimation( pushButton ); - FadeOutImage( pushButton, Foreground, disabledImage, 1.f - opacity ); - FadeOutImage( pushButton, Background, disabledBackgroundImage, 1.f - opacity ); - FadeInImage( pushButton, buttonImage, opacity ); - FadeInImage( pushButton, backgroundImage, opacity ); + // Replaces the button image. + disabledImage = image; - StartFadeOutAnimation( pushButton ); - StartFadeInAnimation(); + pushButton.Add( disabledImage ); + FadeOutImage( pushButton, Foreground, disabledImage, opacity ); - if( buttonImage || disabledImage || backgroundImage || disabledBackgroundImage ) - { - mPaintState = DisabledReleasedTransition; - } - else - { - mPaintState = ReleasedState; - } + StartFadeOutAnimation( pushButton ); + break; } - break; + default: + disabledImage = image; + break; } - case DisabledReleasedTransition: + + disabledImage.SetAnchorPoint( AnchorPoint::TOP_LEFT ); + disabledImage.SetParentOrigin( ParentOrigin::TOP_LEFT ); + ApplyConstraint( disabledImage, FOREGROUND_DEPTH ); +} + +void PushButtonDefaultPainter::SetDisabledBackgroundImage( Toolkit::Button& button, Actor image ) +{ + Toolkit::Internal::PushButton& pushButtonImpl = GetPushButtonImpl( button ); + Actor& disabledBackgroundImage = pushButtonImpl.GetDisabledBackgroundImage(); + Actor& fadeOutBackgroundImage = pushButtonImpl.GetFadeOutBackgroundImage(); + + Toolkit::PushButton& pushButton = static_cast( button ); + + switch( mPaintState ) { - if( disabled ) + case DisabledReleasedState: // FALLTHROUGH + case DisabledPressedState: { - float opacity = 1.f; - if( fadeOutButtonImage ) + if( disabledBackgroundImage && disabledBackgroundImage.GetParent() ) { - opacity = fadeOutButtonImage.GetCurrentOpacity(); - } - StopFadeOutAnimation( pushButton, false ); - StopFadeInAnimation(); + StopFadeOutAnimation( pushButton ); + FadeOutImage( pushButton, Background, disabledBackgroundImage ); - FadeOutImage( pushButton, Foreground, buttonImage, 1.f - opacity ); - FadeOutImage( pushButton, Background, backgroundImage, 1.f - opacity ); - FadeInImage( pushButton, disabledImage, opacity ); - FadeInImage( pushButton, disabledBackgroundImage, opacity ); + disabledBackgroundImage = image; - StartFadeOutAnimation( pushButton ); - StartFadeInAnimation(); + FadeInImage( pushButton, disabledBackgroundImage ); - if( buttonImage || disabledImage || backgroundImage || disabledBackgroundImage ) - { - mPaintState = ReleasedDisabledTransition; + StartFadeOutAnimation( pushButton ); + StartFadeInAnimation(); } else { - mPaintState = DisabledReleasedState; + disabledBackgroundImage = image; + pushButton.Add( disabledBackgroundImage ); } + break; } - break; - } - case PressedDisabledTransition: - { - if( !disabled ) + case ReleasedDisabledTransition: // FALLTHROUGH + case PressedDisabledTransition: { - float opacity = 1.f; - if( fadeOutButtonImage ) - { - opacity = fadeOutButtonImage.GetCurrentOpacity(); - } - StopFadeOutAnimation( pushButton, false ); StopFadeInAnimation(); + pushButton.Remove( disabledBackgroundImage ); - FadeOutImage( pushButton, Foreground, disabledImage, 1.f - opacity ); - FadeOutImage( pushButton, Background, disabledBackgroundImage, 1.f - opacity ); - FadeInImage( pushButton, selectedImage, opacity ); - FadeInImage( pushButton, backgroundImage, opacity ); + disabledBackgroundImage = image; - StartFadeOutAnimation( pushButton ); + FadeInImage( pushButton, disabledBackgroundImage ); StartFadeInAnimation(); - - if( selectedImage || disabledImage || backgroundImage || disabledBackgroundImage ) - { - mPaintState = DisabledPressedTransition; - } - else - { - mPaintState = PressedState; - } + break; } - break; - } - case DisabledPressedTransition: - { - if( disabled ) + case DisabledReleasedTransition: // FALLTHROUGH + case DisabledPressedTransition: { float opacity = 1.f; - if( fadeOutButtonImage ) + if( fadeOutBackgroundImage ) { - opacity = fadeOutButtonImage.GetCurrentOpacity(); + opacity = fadeOutBackgroundImage.GetCurrentOpacity(); } - StopFadeOutAnimation( pushButton, false ); - StopFadeInAnimation(); + StopFadeOutAnimation( pushButton ); - FadeOutImage( pushButton, Foreground, selectedImage, 1.f - opacity ); - FadeOutImage( pushButton, Background, backgroundImage, 1.f - opacity ); - FadeInImage( pushButton, disabledImage, opacity ); - FadeInImage( pushButton, disabledBackgroundImage, opacity ); + // Replaces the button image. + disabledBackgroundImage = image; - StartFadeOutAnimation( pushButton ); - StartFadeInAnimation(); + pushButton.Add( disabledBackgroundImage ); + FadeOutImage( pushButton, Background, disabledBackgroundImage, opacity ); - if( selectedImage || disabledImage || backgroundImage || disabledBackgroundImage ) - { - mPaintState = PressedDisabledTransition; - } - else - { - mPaintState = DisabledPressedState; - } + StartFadeOutAnimation( pushButton ); + break; } - break; - } - default: - break; + default: + disabledBackgroundImage = image; + break; } -} - -void PushButtonDefaultPainter::SetAnimationTime( float animationTime ) -{ - mAnimationTime = animationTime; -} - -float PushButtonDefaultPainter::GetAnimationTime() const -{ - return mAnimationTime; -} -void PushButtonDefaultPainter::SetAutoRepeating( bool autorepeating ) -{ - mAutoRepeating = autorepeating; + disabledBackgroundImage.SetAnchorPoint( AnchorPoint::TOP_LEFT ); + disabledBackgroundImage.SetParentOrigin( ParentOrigin::TOP_LEFT ); + ApplyConstraint( disabledBackgroundImage, BACKGROUND_DEPTH ); } -void PushButtonDefaultPainter::Pressed( Toolkit::PushButton& button ) +void PushButtonDefaultPainter::Pressed( Toolkit::Button& button ) { Toolkit::Internal::PushButton& pushButtonImpl = GetPushButtonImpl( button ); Actor& selectedImage = pushButtonImpl.GetSelectedImage(); Actor& buttonImage = pushButtonImpl.GetButtonImage(); Actor& fadeOutButtonImage = pushButtonImpl.GetFadeOutButtonImage(); + Toolkit::PushButton& pushButton = static_cast( button ); + switch( mPaintState ) { case ReleasedState: { - StopFadeOutAnimation( button ); - FadeOutImage( button, Foreground, buttonImage ); - FadeInImage( button, selectedImage ); - StartFadeOutAnimation( button ); + StopFadeOutAnimation( pushButton ); + FadeOutImage( pushButton, Foreground, buttonImage ); + FadeInImage( pushButton, selectedImage ); + StartFadeOutAnimation( pushButton ); StartFadeInAnimation(); if( buttonImage || selectedImage ) @@ -895,13 +908,13 @@ void PushButtonDefaultPainter::Pressed( Toolkit::PushButton& button ) { opacity = fadeOutButtonImage.GetCurrentOpacity(); } - StopFadeOutAnimation( button, false ); + StopFadeOutAnimation( pushButton, false ); StopFadeInAnimation(); - FadeOutImage( button, Foreground, buttonImage, 1.f - opacity ); - FadeInImage( button, selectedImage, opacity ); + FadeOutImage( pushButton, Foreground, buttonImage, 1.f - opacity ); + FadeInImage( pushButton, selectedImage, opacity ); - StartFadeOutAnimation( button ); + StartFadeOutAnimation( pushButton ); StartFadeInAnimation(); if( buttonImage || selectedImage ) @@ -919,21 +932,23 @@ void PushButtonDefaultPainter::Pressed( Toolkit::PushButton& button ) } } -void PushButtonDefaultPainter::Released( Toolkit::PushButton& button ) +void PushButtonDefaultPainter::Released( Toolkit::Button& button ) { Toolkit::Internal::PushButton& pushButtonImpl = GetPushButtonImpl( button ); Actor& selectedImage = pushButtonImpl.GetSelectedImage(); Actor& buttonImage = pushButtonImpl.GetButtonImage(); Actor& fadeOutButtonImage = pushButtonImpl.GetFadeOutButtonImage(); + Toolkit::PushButton& pushButton = static_cast( button ); + switch( mPaintState ) { case PressedState: { - StopFadeOutAnimation( button ); - FadeOutImage( button, Foreground, selectedImage ); - FadeInImage( button, buttonImage ); - StartFadeOutAnimation( button ); + StopFadeOutAnimation( pushButton ); + FadeOutImage( pushButton, Foreground, selectedImage ); + FadeInImage( pushButton, buttonImage ); + StartFadeOutAnimation( pushButton ); StartFadeInAnimation(); if( buttonImage || selectedImage ) @@ -953,13 +968,13 @@ void PushButtonDefaultPainter::Released( Toolkit::PushButton& button ) { opacity = fadeOutButtonImage.GetCurrentOpacity(); } - StopFadeOutAnimation( button, false ); + StopFadeOutAnimation( pushButton, false ); StopFadeInAnimation(); - FadeOutImage( button, Foreground, selectedImage, 1.f - opacity ); - FadeInImage( button, buttonImage, opacity ); + FadeOutImage( pushButton, Foreground, selectedImage, 1.f - opacity ); + FadeInImage( pushButton, buttonImage, opacity ); - StartFadeOutAnimation( button ); + StartFadeOutAnimation( pushButton ); StartFadeInAnimation(); if( buttonImage || selectedImage ) @@ -979,26 +994,28 @@ void PushButtonDefaultPainter::Released( Toolkit::PushButton& button ) } } -void PushButtonDefaultPainter::Clicked( Toolkit::PushButton& button ) +void PushButtonDefaultPainter::Clicked( Toolkit::Button& button ) { Released( button ); } -void PushButtonDefaultPainter::Toggled( Toolkit::PushButton& button ) +void PushButtonDefaultPainter::Selected( Toolkit::Button& button ) { Toolkit::Internal::PushButton& pushButtonImpl = GetPushButtonImpl( button ); Actor& selectedImage = pushButtonImpl.GetSelectedImage(); Actor& buttonImage = pushButtonImpl.GetButtonImage(); Actor& fadeOutButtonImage = pushButtonImpl.GetFadeOutButtonImage(); + Toolkit::PushButton& pushButton = static_cast( button ); + switch( mPaintState ) { case ReleasedState: { - StopFadeOutAnimation( button ); - FadeOutImage( button, Foreground, buttonImage ); - FadeInImage( button, selectedImage ); - StartFadeOutAnimation( button ); + StopFadeOutAnimation( pushButton ); + FadeOutImage( pushButton, Foreground, buttonImage ); + FadeInImage( pushButton, selectedImage ); + StartFadeOutAnimation( pushButton ); StartFadeInAnimation(); if( buttonImage || selectedImage ) @@ -1013,10 +1030,10 @@ void PushButtonDefaultPainter::Toggled( Toolkit::PushButton& button ) } case PressedState: { - StopFadeOutAnimation( button ); - FadeOutImage( button, Foreground, selectedImage ); - FadeInImage( button, buttonImage ); - StartFadeOutAnimation( button ); + StopFadeOutAnimation( pushButton ); + FadeOutImage( pushButton, Foreground, selectedImage ); + FadeInImage( pushButton, buttonImage ); + StartFadeOutAnimation( pushButton ); StartFadeInAnimation(); if( buttonImage || selectedImage ) @@ -1036,13 +1053,13 @@ void PushButtonDefaultPainter::Toggled( Toolkit::PushButton& button ) { opacity = fadeOutButtonImage.GetCurrentOpacity(); } - StopFadeOutAnimation( button, false ); + StopFadeOutAnimation( pushButton, false ); StopFadeInAnimation(); - FadeOutImage( button, Foreground, selectedImage, 1.f - opacity ); - FadeInImage( button, buttonImage, opacity ); + FadeOutImage( pushButton, Foreground, selectedImage, 1.f - opacity ); + FadeInImage( pushButton, buttonImage, opacity ); - StartFadeOutAnimation( button ); + StartFadeOutAnimation( pushButton ); StartFadeInAnimation(); if( buttonImage || selectedImage ) @@ -1062,13 +1079,13 @@ void PushButtonDefaultPainter::Toggled( Toolkit::PushButton& button ) { opacity = 1.f - fadeOutButtonImage.GetCurrentOpacity(); } - StopFadeOutAnimation( button, false ); + StopFadeOutAnimation( pushButton, false ); StopFadeInAnimation(); - FadeOutImage( button, Foreground, buttonImage, 1.f - opacity ); - FadeInImage( button, selectedImage, opacity ); + FadeOutImage( pushButton, Foreground, buttonImage, 1.f - opacity ); + FadeInImage( pushButton, selectedImage, opacity ); - StartFadeOutAnimation( button ); + StartFadeOutAnimation( pushButton ); StartFadeInAnimation(); if( buttonImage || selectedImage ) diff --git a/dali-toolkit/internal/controls/buttons/push-button-default-painter-impl.h b/dali-toolkit/internal/controls/buttons/push-button-default-painter-impl.h index 2ef708c..ed13641 100644 --- a/dali-toolkit/internal/controls/buttons/push-button-default-painter-impl.h +++ b/dali-toolkit/internal/controls/buttons/push-button-default-painter-impl.h @@ -68,150 +68,89 @@ public: */ ~PushButtonDefaultPainter(); + ///////////////////////////////////////////////////////////////////////////// + // ButtonPainter interface + ///////////////////////////////////////////////////////////////////////////// + /** - * Sets the button image. - * - * It adds the button image to the root actor and creates the image transition if needed. - * - * @param[inout] pushButton The button in which all actors that form its appearance are going to be added. - * @param[in] image The button image. + * @copydoc ButtonPainter::Initialize( Toolkit::Button& button ) */ - void SetButtonImage( Toolkit::PushButton& pushButton, Actor image ); + virtual void Initialize( Toolkit::Button& button ); /** - * Sets the background image. - * - * It adds the background image to the root actor and creates the image transition if needed. - * - * @param[inout] pushButton The button in which all actors that form its appearance are going to be added. - * @param[in] image The background image. + * @copydoc ButtonPainter::SetSize( Toolkit::Button& button, const Vector3& size ) */ - void SetBackgroundImage( Toolkit::PushButton& pushButton, Actor image ); + virtual void SetSize( Toolkit::Button& button, const Vector3& size ); /** - * Sets the selected image. - * - * It adds the selected image to the root actor and creates the image transition if needed. - * - * @param[inout] pushButton The button in which all actors that form its appearance are going to be added. - * @param[in] image The selected image. + * @copydoc ButtonPainter::SetDisabled( Toolkit::Button& button, bool disabled ) */ - void SetSelectedImage( Toolkit::PushButton& pushButton, Actor image ); + virtual void SetDisabled( Toolkit::Button& button, bool disabled ); /** - * Sets the disabled background image. - * - * It adds the disabled background image to the root actor and creates the image transition if needed. - * - * @param[inout] pushButton The button in which all actors that form its appearance are going to be added. - * @param[in] image The disabled background image. + * @copydoc ButtonPainter::SetAnimationTime( float animationTime ) */ - void SetDisabledBackgroundImage( Toolkit::PushButton& pushButton, Actor image ); + virtual void SetAnimationTime( float animationTime ); /** - * Sets the disabled image. - * - * It adds the disabled image to the root actor and creates the image transition if needed. - * - * @param[inout] pushButton The button in which all actors that form its appearance are going to be added. - * @param[in] image The image. + * @copydoc ButtonPainter::GetAnimationTime() */ - void SetDisabledImage( Toolkit::PushButton& pushButton, Actor image ); + virtual float GetAnimationTime() const; /** - * Sets the label. - * - * It adds the label to the root actor. - * - * @param[inout] pushButton The button in which all actors that form its appearance are going to be added. - * @param[in] label Button label. + * @copydoc ButtonPainter::SetLabel( Toolkit::Button& button, Actor label ) */ - void SetLabel( Toolkit::PushButton& pushButton, Actor label ); - - ///////////////////////////////////////////////////////////////////////////// - // ButtonPainter interface - ///////////////////////////////////////////////////////////////////////////// + virtual void SetLabel( Toolkit::Button& button, Actor label ); /** - * Initializes the painter by setting the default images. - * - * @param[inout] button The button in which all actors that form its appearance are going to be added. + * @copydoc ButtonPainter::SetAutoRepeating( bool autorepeating ) */ - void Initialize( Toolkit::Button& button ); + virtual void SetAutoRepeating( bool autorepeating ); /** - * Sets the new size. - * - * Resizes actors. It applies size constraints. - * - * @param[inout] button The button which stores button's images. - * @param[in] size The new size. + * @copydoc ButtonPainter::SetButtonImage( Toolkit::Button& button, Actor image ) */ - void SetSize( Toolkit::Button& button, const Vector3& size ); + virtual void SetButtonImage( Toolkit::Button& button, Actor image ); /** - * This method is called when the \e disabled property in the Dali::Toolkit::PushButton changes. - * - * Creates image transitions if needed. - * - * @param[inout] button The button in which all actors that form its appearance are going to be added. - * @param[in] disabled property. + * @copydoc ButtonPainter::SetSelectedImage( Toolkit::Button& button, Actor image ) */ - void SetDisabled( Toolkit::Button& button, bool disabled ); + virtual void SetSelectedImage( Toolkit::Button& button, Actor image ); /** - * Sets the animation time. - * @param[in] animationTime The animation time. + * @copydoc ButtonPainter::SetBackgroundImage( Toolkit::Button& button, Actor image ) */ - void SetAnimationTime( float animationTime ); + virtual void SetBackgroundImage( Toolkit::Button& button, Actor image ); /** - * Retrieves the animation time. - * @return The animation time. + * @copydoc ButtonPainter::SetDisabledImage( Toolkit::Button& button, Actor image ) */ - float GetAnimationTime() const; - - ///////////////////////////////////////////////////////////////////////////// - // PushButtonPainter interface - ///////////////////////////////////////////////////////////////////////////// + virtual void SetDisabledImage( Toolkit::Button& button, Actor image ); /** - * This method is called when the \e autorepeating property in the Dali::Toolkit::PushButton changes. - * @param[in] autorepeating property. + * @copydoc ButtonPainter::SetDisabledBackgroundImage( Toolkit::Button& button, Actor image ) */ - void SetAutoRepeating( bool autorepeating ); + virtual void SetDisabledBackgroundImage( Toolkit::Button& button, Actor image ); /** - * This method is called when the Dali::Toolkit::Internal::PushButton in which this object is registered - * is pressed. It changes to the selected image with a transition. - * - * @param[inout] button The Dali::Toolkit::PushButton in which this object is registered. + * @copydoc ButtonPainter::Pressed( Toolkit::Button& button ) */ - void Pressed( Toolkit::PushButton& button ); + void Pressed( Toolkit::Button& button ); /** - * This method is called when the Dali::Toolkit::Internal::PushButton in which this object is registered - * is released. It changes to the button image with a transition. - * - * @param[inout] button The Dali::Toolkit::PushButton in which this object is registered. + * @copydoc ButtonPainter::Released( Toolkit::Button& button ) */ - void Released( Toolkit::PushButton& button ); + void Released( Toolkit::Button& button ); /** - * This method is called when the Dali::Toolkit::Internal::PushButton in which this object is registered - * is clicked. - * - * @param[inout] button The Dali::Toolkit::PushButton in which this object is registered. + * @copydoc ButtonPainter::Clicked( Toolkit::Button& button ) */ - void Clicked( Toolkit::PushButton& button ); + void Clicked( Toolkit::Button& button ); /** - * This method is called when the Dali::Toolkit::Internal::PushButton in which this object is registered - * is toggled. - * - * @param[inout] button The Dali::Toolkit::PushButton in which this object is registered. + * @copydoc ButtonPainter::Selected( Toolkit::Button& button ) */ - void Toggled( Toolkit::PushButton& button ); + void Selected( Toolkit::Button& button ); private: diff --git a/dali-toolkit/internal/controls/buttons/push-button-impl.cpp b/dali-toolkit/internal/controls/buttons/push-button-impl.cpp index 450b038..0df4e3c 100644 --- a/dali-toolkit/internal/controls/buttons/push-button-impl.cpp +++ b/dali-toolkit/internal/controls/buttons/push-button-impl.cpp @@ -22,7 +22,6 @@ #include #include #include -#include // INTERNAL INCLUDES #include "push-button-default-painter-impl.h" @@ -49,27 +48,13 @@ BaseHandle Create() TypeRegistration typeRegistration( typeid(Toolkit::PushButton), typeid(Toolkit::Button), Create ); -SignalConnectorType signalConnector1( typeRegistration, Toolkit::PushButton::SIGNAL_PRESSED , &PushButton::DoConnectSignal ); -SignalConnectorType signalConnector2( typeRegistration, Toolkit::PushButton::SIGNAL_RELEASED, &PushButton::DoConnectSignal ); - -TypeAction action1( typeRegistration, Toolkit::PushButton::ACTION_PUSH_BUTTON_CLICK, &PushButton::DoAction ); - } // unnamed namespace namespace { -const unsigned int INITIAL_AUTOREPEATING_DELAY( 0.15f ); -const unsigned int NEXT_AUTOREPEATING_DELAY( 0.05f ); - const float TEXT_PADDING = 12.0f; -// Helper function used to cast a ButtonPainter to PushButtonDefaultPainter -PushButtonDefaultPainterPtr GetPushButtonPainter( Dali::Toolkit::Internal::ButtonPainterPtr painter ) -{ - return static_cast( painter.Get() ); -} - /** * Find the first image actor in the actor hierarchy */ @@ -109,376 +94,6 @@ Dali::Toolkit::PushButton PushButton::New() return pushButton; } -void PushButton::SetAutoRepeating( bool autoRepeating ) -{ - mAutoRepeating = autoRepeating; - - // An autorepeating button can't be a toggle button. - if( autoRepeating ) - { - mToggleButton = false; - if( mToggled ) - { - // Emit a signal is not wanted, only change the appearance. - Toolkit::PushButton handle( GetOwner() ); - GetPushButtonPainter( mPainter )->Toggled( handle ); - mToggled = false; - } - } - - // Notifies the painter. - GetPushButtonPainter( mPainter )->SetAutoRepeating( mAutoRepeating ); -} - -bool PushButton::IsAutoRepeating() const -{ - return mAutoRepeating; -} - -void PushButton::SetInitialAutoRepeatingDelay( float initialAutoRepeatingDelay ) -{ - DALI_ASSERT_ALWAYS( initialAutoRepeatingDelay > 0.f ); - mInitialAutoRepeatingDelay = initialAutoRepeatingDelay; -} - -float PushButton::GetInitialAutoRepeatingDelay() const -{ - return mInitialAutoRepeatingDelay; -} - -void PushButton::SetNextAutoRepeatingDelay( float nextAutoRepeatingDelay ) -{ - DALI_ASSERT_ALWAYS( nextAutoRepeatingDelay > 0.f ); - mNextAutoRepeatingDelay = nextAutoRepeatingDelay; -} - -float PushButton::GetNextAutoRepeatingDelay() const -{ - return mNextAutoRepeatingDelay; -} - -void PushButton::SetToggleButton( bool toggle ) -{ - mToggleButton = toggle; - - // A toggle button can't be an autorepeating button. - if( toggle ) - { - mAutoRepeating = false; - - // Notifies the painter. - GetPushButtonPainter( mPainter )->SetAutoRepeating( mAutoRepeating ); - } -} - -bool PushButton::IsToggleButton() const -{ - return mToggleButton; -} - -void PushButton::SetToggled( bool toggle ) -{ - if( !mDisabled && mToggleButton && ( toggle != mToggled ) ) - { - mToggled = toggle; - - Toolkit::PushButton handle( GetOwner() ); - - // Notifies the painter the button has been toggled. - GetPushButtonPainter( mPainter )->Toggled( handle ); - - // Emit signal. - mStateChangedSignal.Emit( handle, mToggled ); - } -} - -bool PushButton::IsToggled() const -{ - return mToggleButton && mToggled; -} - -void PushButton::SetButtonImage( Image image ) -{ - SetButtonImage( ImageActor::New( image ) ); -} - -void PushButton::SetButtonImage( Actor image ) -{ - Toolkit::PushButton handle( GetOwner() ); - GetPushButtonPainter( mPainter )->SetButtonImage( handle, image ); -} - -Actor& PushButton::GetButtonImage() -{ - return mButtonImage; -} - -Actor PushButton::GetButtonImage() const -{ - return mButtonImage; -} - -void PushButton::SetBackgroundImage( Image image ) -{ - SetBackgroundImage( ImageActor::New( image ) ); -} - -void PushButton::SetBackgroundImage( Actor image ) -{ - Toolkit::PushButton handle( GetOwner() ); - GetPushButtonPainter( mPainter )->SetBackgroundImage( handle, image ); -} - -Actor& PushButton::GetBackgroundImage() -{ - return mBackgroundImage; -} - -Actor PushButton::GetBackgroundImage() const -{ - return mBackgroundImage; -} - -void PushButton::SetSelectedImage( Image image ) -{ - SetSelectedImage( ImageActor::New( image ) ); -} - -void PushButton::SetSelectedImage( Actor image ) -{ - Toolkit::PushButton handle( GetOwner() ); - GetPushButtonPainter( mPainter )->SetSelectedImage( handle, image ); -} - -Actor& PushButton::GetSelectedImage() -{ - return mSelectedImage; -} - -Actor PushButton::GetSelectedImage() const -{ - return mSelectedImage; -} - -void PushButton::SetDisabledBackgroundImage( Image image ) -{ - SetDisabledBackgroundImage( ImageActor::New( image ) ); -} - -void PushButton::SetDisabledBackgroundImage( Actor image ) -{ - Toolkit::PushButton handle( GetOwner() ); - GetPushButtonPainter( mPainter )->SetDisabledBackgroundImage( handle, image ); -} - -Actor& PushButton::GetDisabledBackgroundImage() -{ - return mDisabledBackgroundImage; -} - -Actor PushButton::GetDisabledBackgroundImage() const -{ - return mDisabledBackgroundImage; -} - -void PushButton::SetDisabledImage( Image image ) -{ - SetDisabledImage( ImageActor::New( image ) ); -} - -void PushButton::SetDisabledImage( Actor image ) -{ - Toolkit::PushButton handle( GetOwner() ); - GetPushButtonPainter( mPainter )->SetDisabledImage( handle, image ); -} - -Actor& PushButton::GetDisabledImage() -{ - return mDisabledImage; -} - -Actor PushButton::GetDisabledImage() const -{ - return mDisabledImage; -} - -void PushButton::SetLabel( const std::string& label ) -{ - Toolkit::TextView textView ( Toolkit::TextView::New( label ) ); - textView.SetWidthExceedPolicy( Toolkit::TextView::ShrinkToFit ); // Make sure our text always fits inside the button - SetLabel( textView ); -} - -void PushButton::SetLabel( Actor label ) -{ - Toolkit::PushButton handle( GetOwner() ); - GetPushButtonPainter( mPainter )->SetLabel( handle, label ); -} - -Actor PushButton::GetLabel() const -{ - return mLabel; -} - -Actor& PushButton::GetLabel() -{ - return mLabel; -} - -Actor& PushButton::GetFadeOutBackgroundImage() -{ - return mFadeOutBackgroundImage; -} - -Actor& PushButton::GetFadeOutButtonImage() -{ - return mFadeOutButtonImage; -} - -Toolkit::PushButton::PressedSignalType& PushButton::PressedSignal() -{ - return mPressedSignal; -} - -Toolkit::PushButton::ReleasedSignalType& PushButton::ReleasedSignal() -{ - return mReleasedSignal; -} - -bool PushButton::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor ) -{ - Dali::BaseHandle handle( object ); - - bool connected( true ); - Toolkit::PushButton button = Toolkit::PushButton::DownCast(handle); - - if( Toolkit::PushButton::SIGNAL_STATE_CHANGED == signalName ) - { - button.StateChangedSignal().Connect( tracker, functor ); - } - else if( Toolkit::PushButton::SIGNAL_PRESSED == signalName ) - { - button.PressedSignal().Connect( tracker, functor ); - } - else if( Toolkit::PushButton::SIGNAL_RELEASED == signalName ) - { - button.ReleasedSignal().Connect( tracker, functor ); - } - else - { - // signalName does not match any signal - connected = false; - } - - return connected; -} - -void PushButton::SetProperty( BaseObject* object, Property::Index propertyIndex, const Property::Value& value ) -{ - Toolkit::PushButton pushButton = Toolkit::PushButton::DownCast( Dali::BaseHandle( object ) ); - - if ( pushButton ) - { - PushButton& pushButtonImpl( GetImplementation( pushButton ) ); - - if ( propertyIndex == Toolkit::Button::PROPERTY_AUTO_REPEATING ) - { - pushButtonImpl.SetAutoRepeating( value.Get< bool >() ); - } - else if ( propertyIndex == Toolkit::Button::PROPERTY_INITIAL_AUTO_REPEATING_DELAY ) - { - pushButtonImpl.SetInitialAutoRepeatingDelay( value.Get< float >() ); - } - else if ( propertyIndex == Toolkit::Button::PROPERTY_NEXT_AUTO_REPEATING_DELAY ) - { - pushButtonImpl.SetNextAutoRepeatingDelay( value.Get< float >() ); - } - else if ( propertyIndex == Toolkit::Button::PROPERTY_TOGGLABLE ) - { - pushButtonImpl.SetToggleButton( value.Get< bool >() ); - } - else if ( propertyIndex == Toolkit::Button::PROPERTY_TOGGLED ) - { - pushButtonImpl.SetToggled( value.Get< bool >() ); - } - else if ( propertyIndex == Toolkit::Button::PROPERTY_NORMAL_STATE_ACTOR ) - { - pushButtonImpl.SetButtonImage( Scripting::NewActor( value.Get< Property::Map >() ) ); - } - else if ( propertyIndex == Toolkit::Button::PROPERTY_SELECTED_STATE_ACTOR ) - { - pushButtonImpl.SetSelectedImage( Scripting::NewActor( value.Get< Property::Map >() ) ); - } - else if ( propertyIndex == Toolkit::Button::PROPERTY_DISABLED_STATE_ACTOR ) - { - pushButtonImpl.SetDisabledImage( Scripting::NewActor( value.Get< Property::Map >() ) ); - } - else if ( propertyIndex == Toolkit::Button::PROPERTY_LABEL_ACTOR ) - { - pushButtonImpl.SetLabel( Scripting::NewActor( value.Get< Property::Map >() ) ); - } - } -} - -Property::Value PushButton::GetProperty( BaseObject* object, Property::Index propertyIndex ) -{ - Property::Value value; - - Toolkit::PushButton pushButton = Toolkit::PushButton::DownCast( Dali::BaseHandle( object ) ); - - if ( pushButton ) - { - PushButton& pushButtonImpl( GetImplementation( pushButton ) ); - - if ( propertyIndex == Toolkit::Button::PROPERTY_AUTO_REPEATING ) - { - value = pushButtonImpl.mAutoRepeating; - } - else if ( propertyIndex == Toolkit::Button::PROPERTY_INITIAL_AUTO_REPEATING_DELAY ) - { - value = pushButtonImpl.mInitialAutoRepeatingDelay; - } - else if ( propertyIndex == Toolkit::Button::PROPERTY_NEXT_AUTO_REPEATING_DELAY ) - { - value = pushButtonImpl.mNextAutoRepeatingDelay; - } - else if ( propertyIndex == Toolkit::Button::PROPERTY_TOGGLABLE ) - { - value = pushButtonImpl.mToggleButton; - } - else if ( propertyIndex == Toolkit::Button::PROPERTY_TOGGLED ) - { - value = pushButtonImpl.mToggled; - } - else if ( propertyIndex == Toolkit::Button::PROPERTY_NORMAL_STATE_ACTOR ) - { - Property::Map map; - Scripting::CreatePropertyMap( pushButtonImpl.mButtonImage, map ); - value = map; - } - else if ( propertyIndex == Toolkit::Button::PROPERTY_SELECTED_STATE_ACTOR ) - { - Property::Map map; - Scripting::CreatePropertyMap( pushButtonImpl.mSelectedImage, map ); - value = map; - } - else if ( propertyIndex == Toolkit::Button::PROPERTY_DISABLED_STATE_ACTOR ) - { - Property::Map map; - Scripting::CreatePropertyMap( pushButtonImpl.mDisabledImage, map ); - value = map; - } - else if ( propertyIndex == Toolkit::Button::PROPERTY_LABEL_ACTOR ) - { - Property::Map map; - Scripting::CreatePropertyMap( pushButtonImpl.mLabel, map ); - value = map; - } - } - - return value; -} - void PushButton::OnButtonInitialize() { // Push button requires the Leave event. @@ -486,175 +101,17 @@ void PushButton::OnButtonInitialize() root.SetLeaveRequired( true ); } -void PushButton::OnButtonDown() -{ - if( !mToggleButton ) - { - Toolkit::PushButton handle( GetOwner() ); - - // Notifies the painter the button has been pressed. - GetPushButtonPainter( mPainter )->Pressed( handle ); - - if( mAutoRepeating ) - { - SetUpTimer( mInitialAutoRepeatingDelay ); - } - - //Emit signal. - mPressedSignal.Emit( handle ); - } -} - -void PushButton::OnButtonUp() -{ - if( ButtonDown == mState ) - { - if( mToggleButton ) - { - mToggled = !mToggled; - - Toolkit::PushButton handle( GetOwner() ); - - // Notifies the painter the button has been toggled. - GetPushButtonPainter( mPainter )->Toggled( handle ); - - // Emit signal. - mStateChangedSignal.Emit( handle, mToggled ); - } - else - { - Toolkit::PushButton handle( GetOwner() ); - - // Notifies the painter the button has been clicked. - GetPushButtonPainter( mPainter )->Released( handle ); - GetPushButtonPainter( mPainter )->Clicked( handle ); - - if( mAutoRepeating ) - { - mAutoRepeatingTimer.Reset(); - } - - //Emit signal. - mReleasedSignal.Emit( handle ); - mClickedSignal.Emit( handle ); - } - } -} - -void PushButton::OnTouchPointLeave() -{ - if( ButtonDown == mState ) - { - if( !mToggleButton ) - { - Toolkit::PushButton handle( GetOwner() ); - - // Notifies the painter the button has been released. - GetPushButtonPainter( mPainter )->Released( handle ); - - if( mAutoRepeating ) - { - mAutoRepeatingTimer.Reset(); - } - - //Emit signal. - mReleasedSignal.Emit( handle ); - } - } -} - -void PushButton::OnTouchPointInterrupted() -{ - OnTouchPointLeave(); -} - -void PushButton::OnAnimationTimeSet( float animationTime ) -{ - GetPushButtonPainter( mPainter )->SetAnimationTime( animationTime ); -} - -float PushButton::OnAnimationTimeRequested() const -{ - return GetPushButtonPainter( mPainter )->GetAnimationTime(); -} - -void PushButton::OnButtonStageDisconnection() -{ - if( ButtonDown == mState ) - { - if( !mToggleButton ) - { - Toolkit::PushButton handle( GetOwner() ); - - // Notifies the painter the button has been released. - GetPushButtonPainter( mPainter )->Released( handle ); - - if( mAutoRepeating ) - { - mAutoRepeatingTimer.Reset(); - } - } - } -} - PushButton::PushButton() -: Button(), - mAutoRepeating( false ), - mInitialAutoRepeatingDelay( INITIAL_AUTOREPEATING_DELAY ), - mNextAutoRepeatingDelay( NEXT_AUTOREPEATING_DELAY ), - mToggleButton( false ), - mAutoRepeatingTimer(), - mToggled( false ), - mClickActionPerforming(false) +: Button() { - // Creates specific painter. - mPainter = PushButtonDefaultPainterPtr( new PushButtonDefaultPainter() ); + // Creates specific painter.GetBu + ButtonPainterPtr painter = PushButtonDefaultPainterPtr( new PushButtonDefaultPainter() ); + SetPainter( painter ); } PushButton::~PushButton() { - if( mAutoRepeatingTimer ) - { - mAutoRepeatingTimer.Reset(); - } - - mPainter = NULL; -} - -void PushButton::SetUpTimer( float delay ) -{ - mAutoRepeatingTimer = Dali::Timer::New( static_cast( 1000.f * delay ) ); - mAutoRepeatingTimer.TickSignal().Connect( this, &PushButton::AutoRepeatingSlot ); - mAutoRepeatingTimer.Start(); -} - -bool PushButton::AutoRepeatingSlot() -{ - bool consumed = false; - if( !mDisabled ) - { - // Restart the autorepeat timer. - SetUpTimer( mNextAutoRepeatingDelay ); - - Toolkit::PushButton handle( GetOwner() ); - - // Notifies the painter the button has been pressed. - GetPushButtonPainter( mPainter )->Pressed( handle ); - - //Emit signal. - consumed = mReleasedSignal.Emit( handle ); - consumed |= mClickedSignal.Emit( handle ); - consumed |= mPressedSignal.Emit( handle ); - } - - return consumed; -} - -void PushButton::OnActivated() -{ - // When the button is activated, it performs the click action - PropertyValueContainer attributes; - DoClickAction(attributes); + SetPainter( NULL ); } Vector3 PushButton::GetNaturalSize() @@ -667,7 +124,7 @@ Vector3 PushButton::GetNaturalSize() if( widthIsZero || heightIsZero ) { // If background and background not scale9 try get size from that - ImageActor imageActor = FindImageActor( mButtonImage ); + ImageActor imageActor = FindImageActor( GetButtonImage() ); if( imageActor && imageActor.GetStyle() != ImageActor::STYLE_NINE_PATCH ) { Vector3 imageSize = RelayoutHelper::GetNaturalSize( imageActor ); @@ -683,7 +140,7 @@ Vector3 PushButton::GetNaturalSize() } } - ImageActor backgroundImageActor = FindImageActor( mBackgroundImage ); + ImageActor backgroundImageActor = FindImageActor( GetBackgroundImage() ); if( backgroundImageActor && backgroundImageActor.GetStyle() != ImageActor::STYLE_NINE_PATCH ) { Vector3 imageSize = RelayoutHelper::GetNaturalSize( backgroundImageActor ); @@ -700,7 +157,7 @@ Vector3 PushButton::GetNaturalSize() } // If label, test against it's size - Toolkit::TextView textView = Toolkit::TextView::DownCast( mLabel ); + Toolkit::TextView textView = Toolkit::TextView::DownCast( GetLabel() ); if( textView ) { Vector3 textViewSize = textView.GetNaturalSize(); @@ -720,39 +177,6 @@ Vector3 PushButton::GetNaturalSize() return size; } -void PushButton::DoClickAction(const PropertyValueContainer& attributes) -{ - // Prevents the button signals from doing a recursive loop by sending an action - // and re-emitting the signals. - if(!mClickActionPerforming) - { - mClickActionPerforming = true; - OnButtonDown(); - mState = ButtonDown; - OnButtonUp(); - mClickActionPerforming = false; - } -} - -bool PushButton::DoAction(BaseObject* object, const std::string& actionName, const PropertyValueContainer& attributes) -{ - bool ret = false; - - Dali::BaseHandle handle(object); - - Toolkit::PushButton button = Toolkit::PushButton::DownCast(handle); - - DALI_ASSERT_ALWAYS(button); - - if(Toolkit::PushButton::ACTION_PUSH_BUTTON_CLICK == actionName) - { - GetImplementation(button).DoClickAction(attributes); - ret = true; - } - - return ret; -} - } // namespace Internal } // namespace Toolkit diff --git a/dali-toolkit/internal/controls/buttons/push-button-impl.h b/dali-toolkit/internal/controls/buttons/push-button-impl.h index 1297fef..730b746 100644 --- a/dali-toolkit/internal/controls/buttons/push-button-impl.h +++ b/dali-toolkit/internal/controls/buttons/push-button-impl.h @@ -19,7 +19,6 @@ */ // EXTERNAL INCLUDES -#include #include // INTERNAL INCLUDES @@ -50,231 +49,6 @@ public: */ static Dali::Toolkit::PushButton New(); - /** - * @copydoc Dali::Toolkit::PushButton::SetAutoRepeating( bool autoRepeating ) - */ - void SetAutoRepeating( bool autoRepeating ); - - /** - * @copydoc Dali::Toolkit::PushButton::IsAutoRepeating() const - */ - bool IsAutoRepeating() const; - - /** - * @copydoc Dali::Toolkit::PushButton::SetInitialAutoRepeatingDelay( float initialAutoRepeatingDelay ) - */ - void SetInitialAutoRepeatingDelay( float initialAutoRepeatingDelay ); - - /** - * @copydoc Dali::Toolkit::PushButton::GetInitialAutoRepeatingDelay() const - */ - float GetInitialAutoRepeatingDelay() const; - - /** - * @copydoc Dali::Toolkit::PushButton::SetNextAutoRepeatingDelay( float nextAutoRepeatingDelay ) - */ - void SetNextAutoRepeatingDelay( float nextAutoRepeatingDelay ); - - /** - * @copydoc Dali::Toolkit::PushButton::GetNextAutoRepeatingDelay() const - */ - float GetNextAutoRepeatingDelay() const; - - /** - * @copydoc Dali::Toolkit::PushButton::SetToggleButton( bool toggle ) - */ - void SetToggleButton( bool toggle ); - - /** - * @copydoc Dali::Toolkit::PushButton::IsToggleButton() const - */ - bool IsToggleButton() const; - - /** - * @copydoc Dali::Toolkit::PushButton::SetToggled( bool toggle ) - */ - void SetToggled( bool toggle ); - - /** - * @copydoc Dali::Toolkit::PushButton::IsToggled() const - */ - bool IsToggled() const; - - /** - * @copydoc Dali::Toolkit::PushButton::SetButtonImage( const Image image ) - */ - void SetButtonImage( Image image ); - - /** - * @copydoc Dali::Toolkit::PushButton::SetButtonImage( Actor image ) - */ - void SetButtonImage( Actor image ); - - /** - * Used by the painter only. - * @return A reference to the button image. - */ - Actor& GetButtonImage(); - - /** - * @copydoc Dali::Toolkit::PushButton:: - */ - Actor GetButtonImage() const; - - /** - * @copydoc Dali::Toolkit::PushButton::SetBackgroundImage( const Image image ) - */ - void SetBackgroundImage( Image image ); - - /** - * @copydoc Dali::Toolkit::PushButton::SetBackgroundImage( Actor image ) - */ - void SetBackgroundImage( Actor image ); - - /** - * Used by the painter only. - * @return A reference to the background image. - */ - Actor& GetBackgroundImage(); - - /** - * @copydoc Dali::Toolkit::PushButton::GetBackgroundImage() - */ - Actor GetBackgroundImage() const; - - /** - * @copydoc Dali::Toolkit::PushButton::SetSelectedImage( const Image image ) - */ - void SetSelectedImage( Image image ); - - /** - * @copydoc Dali::Toolkit::PushButton::SetSelectedImage( Actor image ) - */ - void SetSelectedImage( Actor image ); - - /** - * Used by the painter only. - * @return A reference to the selected image. - */ - Actor& GetSelectedImage(); - - /** - * @copydoc Dali::Toolkit::PushButton::GetSelectedImage() - */ - Actor GetSelectedImage() const; - - /** - * @copydoc Dali::Toolkit::PushButton::SetDisabledBackgroundImage( Image image ) - */ - void SetDisabledBackgroundImage( Image image ); - - /** - * @copydoc Dali::Toolkit::PushButton::SetDisabledBackgroundImage( Actor image ) - */ - void SetDisabledBackgroundImage( Actor image ); - - /** - * Used by the painter only. - * @return A reference to the disabled background image. - */ - Actor& GetDisabledBackgroundImage(); - - /** - * @copydoc Dali::Toolkit::PushButton::GetDisabledBackgroundImage() - */ - Actor GetDisabledBackgroundImage() const; - - /** - * @copydoc Dali::Toolkit::PushButton::SetDisabledImage( Image image ) - */ - void SetDisabledImage( Image image ); - - /** - * @copydoc Dali::Toolkit::PushButton::SetDisabledImage( Actor image ) - */ - void SetDisabledImage( Actor image ); - - /** - * Used by the painter only. - * @return A reference to the disabled button image. - */ - Actor& GetDisabledImage(); - - /** - * @copydoc Dali::Toolkit::PushButton::GetDisabledImage() - */ - Actor GetDisabledImage() const; - - /** - * @copydoc Dali::Toolkit::PushButton::SetLabel( const std::string& label ) - */ - void SetLabel( const std::string& label ); - - /** - * @copydoc Dali::Toolkit::PushButton::SetLabel( Actor label ) - */ - void SetLabel( Actor label ); - - /** - * @copydoc Dali::Toolkit::PushButton::GetLabel() - */ - Actor GetLabel() const; - - /** - * Used by the painter only. - * @return A reference to the label actor. - */ - Actor& GetLabel(); - - /** - * Used by the painter only. - * @return A reference to the background image that is fading out. - */ - Actor& GetFadeOutBackgroundImage(); - - /** - * Used by the painter only. - * @return A reference to the button image that is fading out. - */ - Actor& GetFadeOutButtonImage(); - -public: - - // Signals - - /** - * @copydoc Dali::Toolkit::PushButton::PressedSignal() - */ - Toolkit::PushButton::PressedSignalType& PressedSignal(); - - /** - * @copydoc Dali::Toolkit::PushButton::ReleasedSignal() - */ - Toolkit::PushButton::ReleasedSignalType& ReleasedSignal(); - - /** - * Connects a callback function with the object's signals. - * @param[in] object The object providing the signal. - * @param[in] tracker Used to disconnect the signal. - * @param[in] signalName The signal to connect to. - * @param[in] functor A newly allocated FunctorDelegate. - * @return True if the signal was connected. - * @post If a signal was connected, ownership of functor was passed to CallbackBase. Otherwise the caller is responsible for deleting the unused functor. - */ - static bool DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor ); - - // Properties - - /** - * @copydoc Button::SetProperty - */ - static void SetProperty( BaseObject* object, Property::Index propertyIndex, const Property::Value& value ); - - /** - * @copydoc Button::GetProperty - */ - static Property::Value GetProperty( BaseObject* object, Property::Index propertyIndex ); - protected: // From Button /** @@ -282,77 +56,13 @@ protected: // From Button */ virtual void OnButtonInitialize(); - /** - * Emits signals and notifies the painter accordingly with the set button - * properties when the button is pressed. - */ - virtual void OnButtonDown(); - - /** - * Emits signals and notifies the painter accordingly with the set button - * properties when the button is released. - */ - virtual void OnButtonUp(); - - /** - * Emits signals and notifies the painter accordingly with the set button - * properties when the touch point leaves the boundary of the button. - */ - virtual void OnTouchPointLeave(); - - /** - * Currently it doesn't need different behaviour than @see OnTouchPointLeave() - */ - virtual void OnTouchPointInterrupted(); - - /** - * Sets the push button animation time. - * @param animationTime The animation time in seconds. - */ - virtual void OnAnimationTimeSet( float animationTime ); - - /** - * Retrieves the animation time. - * @return The animation time in seconds. - */ - virtual float OnAnimationTimeRequested() const; - - /** - * This method is called when the button is removed from the stage. - */ - virtual void OnButtonStageDisconnection(); - protected: // From Control /** - * Respond the activate notification. - */ - virtual void OnActivated(); - - /** * @copydoc Control::GetNaturalSize() */ virtual Vector3 GetNaturalSize(); -private: - - /** - * Perform the click action to click the button. - * @param[in] attributes The attributes to perfrom this action. - */ - void DoClickAction(const PropertyValueContainer& attributes); - -public: - - /** - * Performs actions as requested using the action name. - * @param[in] object The object on which to perform the action. - * @param[in] actionName The action to perform. - * @param[in] attributes The attributes with which to perfrom this action. - * @return true if action has been accepted by this control - */ - static bool DoAction(BaseObject* object, const std::string& actionName, const PropertyValueContainer& attributes); - /** * Construct a new PushButton. */ @@ -370,47 +80,6 @@ private: // Undefined PushButton& operator=( const PushButton& ); - - /** - * Sets up the autorepeating timer. - * @param[in] delay The delay time in seconds. - */ - void SetUpTimer( float delay ); - - /** - * Slot called when Dali::Timer::SignalTick signal. Resets the autorepeating timer. - */ - bool AutoRepeatingSlot(); - -private: - bool mAutoRepeating; ///< Stores the autorepeating property. - float mInitialAutoRepeatingDelay; ///< Stores the initial autorepeating delay in seconds. - float mNextAutoRepeatingDelay; ///< Stores the next autorepeating delay in seconds. - bool mToggleButton; ///< Stores the toggle property. - - // AutoRepeating - Timer mAutoRepeatingTimer; ///< Timer used to implement the autorepeating property. - - // Toggle - bool mToggled; ///< Stores the toggle state. - - // Signals - Toolkit::PushButton::PressedSignalType mPressedSignal; ///< Signal emitted when the button is pressed. - Toolkit::PushButton::ReleasedSignalType mReleasedSignal; ///< Signal emitted when the button is released. - - Actor mButtonImage; ///< Stores the unselected image. - Actor mBackgroundImage; ///< Stores the background image. - Actor mSelectedImage; ///< Stores the selected image. - Actor mDisabledImage; ///< Stores the disabled image. - Actor mDisabledBackgroundImage; ///< Stores the disabled background image. - - Actor mLabel; ///< Stores the text label. - - Actor mFadeOutBackgroundImage; ///< Stores a background image, which is in a fade out animation, to be removed when the animation finishes. - Actor mFadeOutButtonImage; ///< Stores a foreground image, which is in a fade out animation, to be removed when the animation finishes. - - // Actions - bool mClickActionPerforming; }; } // namespace Internal diff --git a/dali-toolkit/internal/controls/buttons/push-button-painter-impl.h b/dali-toolkit/internal/controls/buttons/push-button-painter-impl.h index cc85e62..9c43fe9 100644 --- a/dali-toolkit/internal/controls/buttons/push-button-painter-impl.h +++ b/dali-toolkit/internal/controls/buttons/push-button-painter-impl.h @@ -54,45 +54,6 @@ public: */ virtual ~PushButtonPainter() {} - /** - * This method is called from the Dali::Toolkit::Internal::PushButton when the - * \e autorepeating property changes. - * @param[in] autorepeating property. - */ - virtual void SetAutoRepeating( bool autorepeating ) = 0; - - /** - * This method is called when the Dali::Toolkit::Internal::PushButton, in which this - * object is registered, is pressed. - * @param[inout] button The Dali::Toolkit::PushButton, linked to the internal - * implementation, in which this object is registered. - */ - virtual void Pressed( Toolkit::PushButton& button ) = 0; - - /** - * This method is called when the Dali::Toolkit::Internal::PushButton, in which this - * object is registered, is released. - * @param[inout] button The Dali::Toolkit::PushButton, linked to the internal - * implementation, in which this object is registered. - */ - virtual void Released( Toolkit::PushButton& button ) = 0; - - /** - * This method is called when the Dali::Toolkit::Internal::PushButton, in which this - * object is registered, is clicked. - * @param[inout] button The Dali::Toolkit::PushButton, linked to the internal - * implementation, in which this object is registered. - */ - virtual void Clicked( Toolkit::PushButton& button ) = 0; - - /** - * This method is called when the Dali::Toolkit::Internal::PushButton, in which this - * object is registered, is toggled. - * @param[inout] button The Dali::Toolkit::PushButton, linked to the internal - * implementation, in which this object is registered. - */ - virtual void Toggled( Toolkit::PushButton& button ) = 0; - ///////////////////////////////////////////////////////////////////////////// // ButtonPainter interface ///////////////////////////////////////////////////////////////////////////// diff --git a/dali-toolkit/internal/controls/buttons/radio-button-impl.cpp b/dali-toolkit/internal/controls/buttons/radio-button-impl.cpp index 2bcb901..08d10bf 100644 --- a/dali-toolkit/internal/controls/buttons/radio-button-impl.cpp +++ b/dali-toolkit/internal/controls/buttons/radio-button-impl.cpp @@ -20,9 +20,7 @@ #include "radio-button-impl.h" // EXTERNAL INCLUDES -#include #include -#include using namespace Dali; using namespace Dali::Toolkit::Internal; @@ -59,35 +57,21 @@ Dali::Toolkit::RadioButton RadioButton::New() } RadioButton::RadioButton() - : mSelected(false) { mUnselectedImage = Dali::Image::New( UNSELECTED_BUTTON_IMAGE_DIR ); mSelectedImage = Dali::Image::New( SELECTED_BUTTON_IMAGE_DIR ); mRadioIcon = Dali::ImageActor::New( mUnselectedImage ); + +// SetTogglableButton(true); + mTogglableButton = true; // TODO: Use SetTogglableButton() after refactoring painter } RadioButton::~RadioButton() { } -void RadioButton::SetLabel(const std::string& label) -{ - TextActor textActor = TextActor::DownCast( mLabel ); - if( textActor ) - { - textActor.SetText( label ); - } - else - { - Toolkit::TextView newTextView = Toolkit::TextView::New( label ); - SetLabel( newTextView ); - } - - RelayoutRequest(); -} - -void RadioButton::SetLabel(Actor label) +void RadioButton::SetLabel( Actor label ) { if( mLabel != label ) { @@ -110,14 +94,9 @@ void RadioButton::SetLabel(Actor label) } } -Actor RadioButton::GetLabel() const +void RadioButton::SetSelected( bool selected ) { - return mLabel; -} - -void RadioButton::SetSelected(bool selected) -{ - if( mSelected != selected ) + if( IsSelected() != selected ) { if( selected ) { @@ -146,36 +125,28 @@ void RadioButton::SetSelected(bool selected) // Raise state changed signal Toolkit::RadioButton handle( GetOwner() ); - mStateChangedSignal.Emit( handle, mSelected ); + StateChangedSignal().Emit( handle ); RelayoutRequest(); } } -bool RadioButton::IsSelected()const -{ - return mSelected; -} - -void RadioButton::ToggleState() -{ - SetSelected(!mSelected); -} - void RadioButton::OnRelayout( const Vector2& /*size*/, ActorSizeContainer& container ) { Vector3 newSize( mRadioIcon.GetNaturalSize() ); - if( mLabel ) + Actor& label = GetLabel(); + + if( label ) { // Offset the label from the radio button image newSize.width += DISTANCE_BETWEEN_IMAGE_AND_LABEL.width; // Find the size of the control using size negotiation - Vector3 actorNaturalSize( mLabel.GetNaturalSize() ); - Control::Relayout( mLabel, Vector2( actorNaturalSize.width, actorNaturalSize.height ), container ); + Vector3 actorNaturalSize( label.GetNaturalSize() ); + Control::Relayout( label, Vector2( actorNaturalSize.width, actorNaturalSize.height ), container ); - Vector3 actorSize( mLabel.GetSize() ); + Vector3 actorSize( label.GetSize() ); newSize.width += actorSize.width; newSize.height = std::max( newSize.height, actorSize.height ); } @@ -194,53 +165,12 @@ void RadioButton::OnInitialize() void RadioButton::OnButtonUp() { - // Don't allow selection on an already selected radio button - if( !mSelected ) - { - ToggleState(); - } -} - -void RadioButton::SetProperty(BaseObject* object, Property::Index propertyIndex, const Property::Value& value) -{ - Toolkit::RadioButton radioButton = Toolkit::RadioButton::DownCast( Dali::BaseHandle( object ) ); - - if( radioButton ) + if( ButtonDown == GetState() ) { - RadioButton& radioButtonImpl( GetImplementation( radioButton ) ); - - if ( propertyIndex == Toolkit::Button::PROPERTY_TOGGLED ) + // Don't allow selection on an already selected radio button + if( !IsSelected() ) { - radioButtonImpl.SetSelected( value.Get< bool >( ) ); - } - else if ( propertyIndex == Toolkit::Button::PROPERTY_LABEL_ACTOR ) - { - radioButtonImpl.SetLabel( Scripting::NewActor( value.Get< Property::Map >( ) ) ); + SetSelected(!IsSelected()); } } } - -Property::Value RadioButton::GetProperty(BaseObject* object, Property::Index propertyIndex) -{ - Property::Value value; - - Toolkit::RadioButton radioButton = Toolkit::RadioButton::DownCast( Dali::BaseHandle(object) ); - - if( radioButton ) - { - RadioButton& radioButtonImpl( GetImplementation( radioButton ) ); - - if ( propertyIndex == Toolkit::Button::PROPERTY_TOGGLED ) - { - value = radioButtonImpl.mSelected; - } - else if ( propertyIndex == Toolkit::Button::PROPERTY_LABEL_ACTOR ) - { - Property::Map map; - Scripting::CreatePropertyMap( radioButtonImpl.mLabel, map ); - value = map; - } - } - - return value; -} diff --git a/dali-toolkit/internal/controls/buttons/radio-button-impl.h b/dali-toolkit/internal/controls/buttons/radio-button-impl.h index 07c622b..dc31882 100644 --- a/dali-toolkit/internal/controls/buttons/radio-button-impl.h +++ b/dali-toolkit/internal/controls/buttons/radio-button-impl.h @@ -58,12 +58,12 @@ class RadioButton: public Button /** * Construct a new PushButton with label. */ - RadioButton(const std::string& label); + RadioButton( const std::string& label ); /** * Construct a new PushButton with label. */ - RadioButton(Actor label); + RadioButton( Actor label ); /** * A reference counted object may only be deleted by calling Unreference() @@ -71,53 +71,20 @@ class RadioButton: public Button virtual ~RadioButton(); /** - * @copydoc Dali::Toolkit::RadioButton::SetLabel(const std::string& label) + * @copydoc Dali::Toolkit::Button::SetLabel( Actor label ) */ - void SetLabel(const std::string& label); + virtual void SetLabel( Actor label ); // TODO: After refactoring painter, this will be removed /** - * @copydoc Dali::Toolkit::RadioButton::SetLabel(Actor label) + * @copydoc Dali::Toolkit::Button::SetSelected( bool selected ) */ - void SetLabel(Actor label); - - /** - * @copydoc Dali::Toolkit::RadioButton::GetLabel() - */ - Actor GetLabel() const; - - /** - * @copydoc Dali::Toolkit::RadioButton::SetSelected(bool selected) - */ - void SetSelected(bool selected); - - /** - * @copydoc Dali::Toolkit::RadioButton::IsSelected() - */ - bool IsSelected()const; - - /** - * @copydoc Dali::Toolkit::RadioButton::ToggleState() - */ - void ToggleState(); + virtual void SetSelected( bool selected ); /** * @copydoc Dali::Toolkit::Control::OnRelayout() */ virtual void OnRelayout( const Vector2& size, ActorSizeContainer& container ); - public: - // Properties - - /** - * @copydoc Button::SetProperty - */ - static void SetProperty(BaseObject* object, Property::Index propertyIndex, const Property::Value& value); - - /** - * @copydoc Button::GetProperty - */ - static Property::Value GetProperty(BaseObject* object, Property::Index propertyIndex); - protected: // From Control /** @@ -134,17 +101,15 @@ class RadioButton: public Button private: // Undefined - RadioButton(const RadioButton& origin); + RadioButton( const RadioButton& origin ); // Undefined - RadioButton& operator=(const RadioButton& origin); + RadioButton& operator=( const RadioButton& origin ); Image mUnselectedImage; ///< Stores the unselected image Image mSelectedImage; ///< Stores the selected image ImageActor mRadioIcon; ///< Stores the current image - Actor mLabel; ///< Stores the button label - bool mSelected; ///< Stores the selected state -} ; +}; } // namespace Internal diff --git a/dali-toolkit/public-api/controls/buttons/button.cpp b/dali-toolkit/public-api/controls/buttons/button.cpp index 89aefc5..3b251da 100644 --- a/dali-toolkit/public-api/controls/buttons/button.cpp +++ b/dali-toolkit/public-api/controls/buttons/button.cpp @@ -29,9 +29,13 @@ namespace Dali namespace Toolkit { +const char* const Button::SIGNAL_PRESSED = "pressed"; +const char* const Button::SIGNAL_RELEASED = "released"; const char* const Button::SIGNAL_CLICKED = "clicked"; const char* const Button::SIGNAL_STATE_CHANGED = "state-changed"; +const char* const Button::ACTION_BUTTON_CLICK = "button-click"; + Button::Button() {} @@ -68,6 +72,56 @@ bool Button::IsDisabled() const return Dali::Toolkit::GetImplementation( *this ).IsDisabled(); } +void Button::SetAutoRepeating( bool autoRepeating ) +{ + Dali::Toolkit::GetImplementation( *this ).SetAutoRepeating( autoRepeating ); +} + +bool Button::IsAutoRepeating() const +{ + return Dali::Toolkit::GetImplementation( *this ).IsAutoRepeating(); +} + +void Button::SetInitialAutoRepeatingDelay( float initialAutoRepeatingDelay ) +{ + Dali::Toolkit::GetImplementation( *this ).SetInitialAutoRepeatingDelay( initialAutoRepeatingDelay ); +} + +float Button::GetInitialAutoRepeatingDelay() const +{ + return Dali::Toolkit::GetImplementation( *this ).GetInitialAutoRepeatingDelay(); +} + +void Button::SetNextAutoRepeatingDelay( float nextAutoRepeatingDelay ) +{ + Dali::Toolkit::GetImplementation( *this ).SetNextAutoRepeatingDelay( nextAutoRepeatingDelay ); +} + +float Button::GetNextAutoRepeatingDelay() const +{ + return Dali::Toolkit::GetImplementation( *this ).GetNextAutoRepeatingDelay(); +} + +void Button::SetTogglableButton( bool togglable ) +{ + Dali::Toolkit::GetImplementation( *this ).SetTogglableButton( togglable ); +} + +bool Button::IsTogglableButton() const +{ + return Dali::Toolkit::GetImplementation( *this ).IsTogglableButton(); +} + +void Button::SetSelected( bool selected ) +{ + Dali::Toolkit::GetImplementation( *this ).SetSelected( selected ); +} + +bool Button::IsSelected() const +{ + return Dali::Toolkit::GetImplementation( *this ).IsSelected(); +} + void Button::SetAnimationTime( float animationTime ) { Dali::Toolkit::GetImplementation( *this ).SetAnimationTime( animationTime ); @@ -78,12 +132,37 @@ float Button::GetAnimationTime() const return Dali::Toolkit::GetImplementation( *this ).GetAnimationTime(); } -Button::ClickedSignalType& Button::ClickedSignal() +void Button::SetLabel( const std::string& label ) +{ + Dali::Toolkit::GetImplementation( *this ).SetLabel( label ); +} + +void Button::SetLabel( Actor label ) +{ + Dali::Toolkit::GetImplementation( *this ).SetLabel( label ); +} + +Actor Button::GetLabel() const +{ + return Dali::Toolkit::GetImplementation( *this ).GetLabel(); +} + +Button::ButtonSignalType& Button::PressedSignal() +{ + return Dali::Toolkit::GetImplementation( *this ).PressedSignal(); +} + +Button::ButtonSignalType& Button::ReleasedSignal() +{ + return Dali::Toolkit::GetImplementation( *this ).ReleasedSignal(); +} + +Button::ButtonSignalType& Button::ClickedSignal() { return Dali::Toolkit::GetImplementation( *this ).ClickedSignal(); } -Button::StateChangedSignalType& Button::StateChangedSignal() +Button::ButtonSignalType& Button::StateChangedSignal() { return Dali::Toolkit::GetImplementation( *this ).StateChangedSignal(); } diff --git a/dali-toolkit/public-api/controls/buttons/button.h b/dali-toolkit/public-api/controls/buttons/button.h index e693a11..2078413 100644 --- a/dali-toolkit/public-api/controls/buttons/button.h +++ b/dali-toolkit/public-api/controls/buttons/button.h @@ -47,17 +47,22 @@ class DALI_IMPORT_API Button : public Control public: // Signal Names + static const char* const SIGNAL_PRESSED; ///< name "pressed" + static const char* const SIGNAL_RELEASED; ///< name "released" static const char* const SIGNAL_CLICKED; ///< name "clicked" static const char* const SIGNAL_STATE_CHANGED; ///< name "state-changed" + //Action Names + static const char* const ACTION_BUTTON_CLICK; ///< name "button-click" + // Properties static const Property::Index PROPERTY_DISABLED; ///< name "disabled", @see SetDisabled(), type BOOLEAN static const Property::Index PROPERTY_AUTO_REPEATING; ///< name "auto-repeating", @see SetAutoRepeating(), type BOOLEAN static const Property::Index PROPERTY_INITIAL_AUTO_REPEATING_DELAY; ///< name "initial-auto-repeating-delay", @see SetInitialAutoRepeatingDelay(), type FLOAT static const Property::Index PROPERTY_NEXT_AUTO_REPEATING_DELAY; ///< name "next-auto-repeating-delay", @see SetNextAutoRepeatingDelay(), type FLOAT - static const Property::Index PROPERTY_TOGGLABLE; ///< name "togglable", @see SetToggleButton(), type BOOLEAN - static const Property::Index PROPERTY_TOGGLED; ///< name "toggled", @see SetToggled(), type BOOLEAN - static const Property::Index PROPERTY_NORMAL_STATE_ACTOR; ///< name "button-state-actor", @see SetButtonImage(), type MAP + static const Property::Index PROPERTY_TOGGLABLE; ///< name "togglable", @see SetTogglableButton(), type BOOLEAN + static const Property::Index PROPERTY_SELECTED; ///< name "selected", @see SetSelected(), type BOOLEAN + static const Property::Index PROPERTY_NORMAL_STATE_ACTOR; ///< name "normal-state-actor", @see SetButtonImage(), type MAP static const Property::Index PROPERTY_SELECTED_STATE_ACTOR; ///< name "selected-state-actor", @see SetSelectedImage(), type MAP static const Property::Index PROPERTY_DISABLED_STATE_ACTOR; ///< name "disabled-state-actor", @see SetDisabledImage(), type MAP static const Property::Index PROPERTY_LABEL_ACTOR; ///< name "label-actor", @see SetLabel(), type MAP @@ -115,6 +120,81 @@ public: bool IsDisabled() const; /** + * @brief Sets the \e autorepeating property. + * + * If the \e autorepeating property is set to \e true, then the \e togglable property is set to false + * but no signal is emitted. + * + * @param[in] autoRepeating \e autorepeating property. + */ + void SetAutoRepeating( bool autoRepeating ); + + /** + * @return \e true if the \e autorepeating property is set. + */ + bool IsAutoRepeating() const; + + /** + * @brief Sets the initial autorepeating delay. + * + * By default this value is set to 0.15 seconds. + * + * @pre initialAutoRepeatingDelay must be greater than zero. + * @param[in] initialAutoRepeatingDelay in seconds. + */ + void SetInitialAutoRepeatingDelay( float initialAutoRepeatingDelay ); + + /** + * @return the initial autorepeating delay in seconds. + */ + float GetInitialAutoRepeatingDelay() const; + + /** + * @brief Sets the next autorepeating delay. + * + * By default this value is set to 0.05 seconds. + * + * @pre nextAutoRepeatingDelay must be greater than zero. + * @param[in] nextAutoRepeatingDelay in seconds. + */ + void SetNextAutoRepeatingDelay( float nextAutoRepeatingDelay ); + + /** + * @return the next autorepeating delay in seconds. + */ + float GetNextAutoRepeatingDelay() const; + + /** + * @brief Sets the \e togglable property. + * + * If the \e togglable property is set to \e true, then the \e autorepeating property is set to false. + * + * @param[in] togglable property. + */ + void SetTogglableButton( bool togglable ); + + /** + * @return \e true if the \e togglable property is set. + */ + bool IsTogglableButton() const; + + /** + * Sets the button as selected or unselected. + * + * \e togglable property must be set to \e true. + * + * Emits a Button::StateChangedSignal() signal. + * + * @param[in] selected property. + */ + void SetSelected( bool selected ); + + /** + * @return \e true if the \e selected property is set and the button is togglable. + */ + bool IsSelected() const; + + /** * @brief Sets the animation time. * * @param [in] animationTime The animation time in seconds. @@ -128,27 +208,76 @@ public: */ float GetAnimationTime() const; + /** + * @brief Sets the button label. + * + * @param[in] label The button label. + */ + void SetLabel( const std::string& label ); + + /** + * @copydoc SetLabel( const std::string& label ) + */ + void SetLabel( Actor label ); + + /** + * @brief Gets the label. + * + * @return An actor with the label. + */ + Actor GetLabel() const; + public: //Signals /** - * @brief Button Clicked signal type + * @brief Button signal type */ - typedef Signal< bool ( Button ) > ClickedSignalType; + typedef Signal< bool ( Button ) > ButtonSignalType; /** - * @brief Button state changed signal type + * @brief This signal is emitted when the button is touched. + * + * A callback of the following type may be connected: + * @code + * bool YourCallbackName( Button button ); + * @endcode + * @return The signal to connect to. */ - typedef Signal< bool ( Button, bool ) > StateChangedSignalType; + ButtonSignalType& PressedSignal(); /** - * @brief Signal emitted when the button is touched and the touch point doesn't leave the boundary of the button. + * @brief This signal is emitted when the button is touched and the touch point leaves the boundary of the button. + * + * A callback of the following type may be connected: + * @code + * bool YourCallbackName( Button button ); + * @endcode + * @return The signal to connect to. */ - ClickedSignalType& ClickedSignal(); + ButtonSignalType& ReleasedSignal(); /** - * @brief Signal emitted when the button's state is changed. + * @brief This signal is emitted when the button is touched and the touch point doesn't leave the boundary of the button. + * + * A callback of the following type may be connected: + * @code + * bool YourCallbackName( Button button ); + * @endcode + * @return The signal to connect to. + */ + ButtonSignalType& ClickedSignal(); + + /** + * @brief This signal is emitted when the button's state is changed. + * The application can get the state by calling IsSelected(). + * + * A callback of the following type may be connected: + * @code + * bool YourCallbackName( Button button ); + * @endcode + * @return The signal to connect to. */ - StateChangedSignalType& StateChangedSignal(); + ButtonSignalType& StateChangedSignal(); public: // Not intended for application developers diff --git a/dali-toolkit/public-api/controls/buttons/check-box-button.cpp b/dali-toolkit/public-api/controls/buttons/check-box-button.cpp index e6b2a5e..b288451 100644 --- a/dali-toolkit/public-api/controls/buttons/check-box-button.cpp +++ b/dali-toolkit/public-api/controls/buttons/check-box-button.cpp @@ -29,8 +29,6 @@ namespace Dali namespace Toolkit { -const char* const CheckBoxButton::ACTION_CHECK_BOX_BUTTON_CLICK = "check-box-button-click"; - CheckBoxButton::CheckBoxButton() : Button() { @@ -64,16 +62,6 @@ CheckBoxButton CheckBoxButton::DownCast( BaseHandle handle ) return Control::DownCast(handle); } -void CheckBoxButton::SetChecked( bool checked ) -{ - Dali::Toolkit::GetImplementation( *this ).SetChecked( checked ); -} - -bool CheckBoxButton::IsChecked() const -{ - return Dali::Toolkit::GetImplementation( *this ).IsChecked(); -} - void CheckBoxButton::SetBackgroundImage( Image image ) { Dali::Toolkit::GetImplementation( *this ).SetBackgroundImage( image ); @@ -89,20 +77,20 @@ Actor CheckBoxButton::GetBackgroundImage() const return Dali::Toolkit::GetImplementation( *this ).GetBackgroundImage(); } -void CheckBoxButton::SetCheckedImage( Image image ) +void CheckBoxButton::SetSelectedImage( Image image ) { - Dali::Toolkit::GetImplementation( *this ).SetCheckedImage( image ); + Dali::Toolkit::GetImplementation( *this ).SetSelectedImage( image ); } -void CheckBoxButton::SetCheckedImage( Actor image ) +void CheckBoxButton::SetSelectedImage( Actor image ) { - Dali::Toolkit::GetImplementation( *this ).SetCheckedImage( image ); + Dali::Toolkit::GetImplementation( *this ).SetSelectedImage( image ); } -Actor CheckBoxButton::GetCheckedImage() const +Actor CheckBoxButton::GetSelectedImage() const { - return Dali::Toolkit::GetImplementation( *this ).GetCheckedImage(); + return Dali::Toolkit::GetImplementation( *this ).GetSelectedImage(); } void CheckBoxButton::SetDisabledBackgroundImage( Image image ) @@ -120,19 +108,19 @@ Actor CheckBoxButton::GetDisabledBackgroundImage() const return Dali::Toolkit::GetImplementation( *this ).GetDisabledBackgroundImage(); } -void CheckBoxButton::SetDisabledCheckedImage( Image image ) +void CheckBoxButton::SetDisabledSelectedImage( Image image ) { - Dali::Toolkit::GetImplementation( *this ).SetDisabledCheckedImage( image ); + Dali::Toolkit::GetImplementation( *this ).SetDisabledSelectedImage( image ); } -void CheckBoxButton::SetDisabledCheckedImage( Actor image ) +void CheckBoxButton::SetDisabledSelectedImage( Actor image ) { - Dali::Toolkit::GetImplementation( *this ).SetDisabledCheckedImage( image ); + Dali::Toolkit::GetImplementation( *this ).SetDisabledSelectedImage( image ); } -Actor CheckBoxButton::GetDisabledCheckedImage() const +Actor CheckBoxButton::GetDisabledSelectedImage() const { - return Dali::Toolkit::GetImplementation( *this ).GetDisabledCheckedImage(); + return Dali::Toolkit::GetImplementation( *this ).GetDisabledSelectedImage(); } CheckBoxButton::CheckBoxButton( Internal::CheckBoxButton& implementation ) diff --git a/dali-toolkit/public-api/controls/buttons/check-box-button.h b/dali-toolkit/public-api/controls/buttons/check-box-button.h index e321ce4..2e905d6 100644 --- a/dali-toolkit/public-api/controls/buttons/check-box-button.h +++ b/dali-toolkit/public-api/controls/buttons/check-box-button.h @@ -37,15 +37,15 @@ class CheckBoxButton; /** * CheckBoxButton provides a check box button which user can check or uncheck. * - * By default a CheckBoxButton emits a Button::ClickedSignal() signal when the button changes its state to checked or unchecked. + * By default a CheckBoxButton emits a Button::ClickedSignal() signal when the button changes its state to selected or unselected. * * The button's appearance could be modified by setting images or actors with CheckBoxButton::SetBackgroundImage, - * CheckBoxButton::SetCheckedImage, CheckBoxButton::SetDisabledBackgroundImage and CheckBoxButton::SetDisabledCheckedImage. + * CheckBoxButton::SetSelectedImage, CheckBoxButton::SetDisabledBackgroundImage and CheckBoxButton::SetDisabledSelectedImage. * - * When the button is not disabled, if it's not checked it only shows the \e background image. The \e checked image is shown over the - * \e background image when the box is checked (\e background image is not replaced by \e checked image). + * When the button is not disabled, if it's not selected it only shows the \e background image. The \e selected image is shown over the + * \e background image when the box is selected (\e background image is not replaced by \e selected image). * - * When the button is disabled, \e background image and \e checked image are replaced by \e disabled images. + * When the button is disabled, \e background image and \e selected image are replaced by \e disabled images. * * CheckBoxButton doesn't have a text. However, a Dali::Toolkit::TableView with a Dali::TextActor or a Dali::Toolkit::TextView * and a CheckBoxButton could be used instead. @@ -53,10 +53,6 @@ class CheckBoxButton; class DALI_IMPORT_API CheckBoxButton : public Button { public: - //Action Names - static const char* const ACTION_CHECK_BOX_BUTTON_CLICK; - -public: /** * Create an uninitialized CheckBoxButton; this can be initialized with CheckBoxButton::New() @@ -96,21 +92,6 @@ public: static CheckBoxButton DownCast( BaseHandle handle ); /** - * Sets the button as checked or unchecked. - * - * Emits a Button::ClickedSignal() signal if the checkbox is not disabled and the new state, - * given in the \e checked param, is different than the previous one. - * - * @param[in] checked state. - */ - void SetChecked( bool checked ); - - /** - * @return \e true if the button is checked. - */ - bool IsChecked() const; - - /** * Sets the background image. * * @param[in] image The background image. @@ -129,22 +110,22 @@ public: Actor GetBackgroundImage() const; /** - * Sets the checked image. + * Sets the selected image. * - * @param[in] image The checked image. + * @param[in] image The selected image. */ - void SetCheckedImage( Image image ); + void SetSelectedImage( Image image ); /** - * @copydoc SetCheckedImage( Image image ) + * @copydoc SetSelectedImage( Image image ) */ - void SetCheckedImage( Actor image ); + void SetSelectedImage( Actor image ); /** - * Gets the checked image. - * @return An actor with the checked image. + * Gets the selected image. + * @return An actor with the selected image. */ - Actor GetCheckedImage() const; + Actor GetSelectedImage() const; /** * Sets the disabled background image. @@ -165,22 +146,22 @@ public: Actor GetDisabledBackgroundImage() const; /** - * Sets the disabled checked image. + * Sets the disabled selected image. * - * @param[in] image The disabled checked image. + * @param[in] image The disabled selected image. */ - void SetDisabledCheckedImage( Image image ); + void SetDisabledSelectedImage( Image image ); /** - * @copydoc SetDisabledCheckedImage( Image image ) + * @copydoc SetDisabledSelectedImage( Image image ) */ - void SetDisabledCheckedImage( Actor image ); + void SetDisabledSelectedImage( Actor image ); /** - * Gets the disabled checked image. - * @return An actor with the disabled checked image. + * Gets the disabled selected image. + * @return An actor with the disabled selected image. */ - Actor GetDisabledCheckedImage() const; + Actor GetDisabledSelectedImage() const; public: // Not intended for application developers diff --git a/dali-toolkit/public-api/controls/buttons/push-button.cpp b/dali-toolkit/public-api/controls/buttons/push-button.cpp index 7133c03..b3d4dd2 100644 --- a/dali-toolkit/public-api/controls/buttons/push-button.cpp +++ b/dali-toolkit/public-api/controls/buttons/push-button.cpp @@ -29,11 +29,6 @@ namespace Dali namespace Toolkit { -const char* const PushButton::SIGNAL_PRESSED = "pressed"; -const char* const PushButton::SIGNAL_RELEASED = "released"; - -const char* const PushButton::ACTION_PUSH_BUTTON_CLICK = "push-button-click"; - PushButton::PushButton() : Button() { @@ -78,56 +73,6 @@ PushButton PushButton::DownCast( BaseHandle handle ) return Control::DownCast(handle); } -void PushButton::SetAutoRepeating( bool autoRepeating ) -{ - Dali::Toolkit::GetImplementation( *this ).SetAutoRepeating( autoRepeating ); -} - -bool PushButton::IsAutoRepeating() const -{ - return Dali::Toolkit::GetImplementation( *this ).IsAutoRepeating(); -} - -void PushButton::SetInitialAutoRepeatingDelay( float initialAutoRepeatingDelay ) -{ - Dali::Toolkit::GetImplementation( *this ).SetInitialAutoRepeatingDelay( initialAutoRepeatingDelay ); -} - -float PushButton::GetInitialAutoRepeatingDelay() const -{ - return Dali::Toolkit::GetImplementation( *this ).GetInitialAutoRepeatingDelay(); -} - -void PushButton::SetNextAutoRepeatingDelay( float nextAutoRepeatingDelay ) -{ - Dali::Toolkit::GetImplementation( *this ).SetNextAutoRepeatingDelay( nextAutoRepeatingDelay ); -} - -float PushButton::GetNextAutoRepeatingDelay() const -{ - return Dali::Toolkit::GetImplementation( *this ).GetNextAutoRepeatingDelay(); -} - -void PushButton::SetToggleButton( bool toggle ) -{ - Dali::Toolkit::GetImplementation( *this ).SetToggleButton( toggle ); -} - -bool PushButton::IsToggleButton() const -{ - return Dali::Toolkit::GetImplementation( *this ).IsToggleButton(); -} - -void PushButton::SetToggled( bool toggle ) -{ - Dali::Toolkit::GetImplementation( *this ).SetToggled( toggle ); -} - -bool PushButton::IsToggled() const -{ - return Dali::Toolkit::GetImplementation( *this ).IsToggled(); -} - void PushButton::SetButtonImage( Image image ) { Dali::Toolkit::GetImplementation( *this ).SetButtonImage( image ); @@ -203,31 +148,6 @@ Actor PushButton::GetDisabledImage() const return Dali::Toolkit::GetImplementation( *this ).GetDisabledImage(); } -void PushButton::SetLabel( const std::string& label ) -{ - Dali::Toolkit::GetImplementation( *this ).SetLabel( label ); -} - -void PushButton::SetLabel( Actor label ) -{ - Dali::Toolkit::GetImplementation( *this ).SetLabel( label ); -} - -Actor PushButton::GetLabel() const -{ - return Dali::Toolkit::GetImplementation( *this ).GetLabel(); -} - -PushButton::PressedSignalType& PushButton::PressedSignal() -{ - return Dali::Toolkit::GetImplementation( *this ).PressedSignal(); -} - -PushButton::ReleasedSignalType& PushButton::ReleasedSignal() -{ - return Dali::Toolkit::GetImplementation( *this ).ReleasedSignal(); -} - } // namespace Toolkit } // namespace Dali diff --git a/dali-toolkit/public-api/controls/buttons/push-button.h b/dali-toolkit/public-api/controls/buttons/push-button.h index 09c480c..dfc3409 100644 --- a/dali-toolkit/public-api/controls/buttons/push-button.h +++ b/dali-toolkit/public-api/controls/buttons/push-button.h @@ -39,27 +39,27 @@ class PushButton; /** * @brief A PushButton changes its appearance when is pressed and returns to its original when is released. * - * By default a PushButton emits a PushButton::PressedSignal() signal when the button is pressed, a Button::ClickedSignal() signal when it's clicked - * and a PushButton::ReleasedSignal() signal when it's released or having pressed it, the touch point leaves the boundary of the button. + * By default a PushButton emits a Button::PressedSignal() signal when the button is pressed, a Button::ClickedSignal() signal when it's clicked + * and a Button::ReleasedSignal() signal when it's released or having pressed it, the touch point leaves the boundary of the button. * * PushButton provides the following properties which modify signals emitted: *
    *
  • \e autorepeating * - * When \e autorepeating is set to \e true, a PushButton::PressedSignal(), PushButton::ReleasedSignal() and Button::ClickedSignal() signals are emitted at regular + * When \e autorepeating is set to \e true, a Button::PressedSignal(), Button::ReleasedSignal() and Button::ClickedSignal() signals are emitted at regular * intervals while the button is touched. * * The intervals could be modified with the PushButton::SetInitialAutoRepeatingDelay and PushButton::SetNextAutoRepeatingDelay methods. * - * A \e toggle button can't be \e autorepeating. If the \e autorepeating property is set to \e true, then the \e toggled property is set to + * A \e togglable button can't be \e autorepeating. If the \e autorepeating property is set to \e true, then the \e togglable property is set to * false but no signal is emitted. * - *
  • \e toggle + *
  • \e togglable * - * When \e toggle is set to \e true, a Button::StateChangedSignal() signal is emitted, with the toggle state, every time the button is touched instead - * of emit PushButton::PressedSignal(), Button::ClickedSignal() and PushButton::ReleasedSignal() signals. + * When \e togglable is set to \e true, a Button::StateChangedSignal() signal is emitted, with the selected state, every time the button is touched instead + * of emit Button::PressedSignal(), Button::ClickedSignal() and Button::ReleasedSignal() signals. * - * An \e autorepeating button can't be \e toggle. If the \e toggled property is set to \e true, then the \e autorepeating property is set to false. + * An \e autorepeating button can't be \e togglable. If the \e togglable property is set to \e true, then the \e autorepeating property is set to false. *
* * The button's appearance could be modified by setting images or actors with PushButton::SetButtonImage, PushButton::SetBackgroundImage, @@ -79,15 +79,6 @@ class DALI_IMPORT_API PushButton : public Button { public: - //Signal Names - static const char* const SIGNAL_PRESSED; ///< name "pressed" - static const char* const SIGNAL_RELEASED; ///< name "released" - - //Action Names - static const char* const ACTION_PUSH_BUTTON_CLICK; ///< name "push-button-click" - -public: - /** * @brief Create an uninitialized PushButton; this can be initialized with PushButton::New(). * @@ -131,81 +122,6 @@ public: static PushButton DownCast( BaseHandle handle ); /** - * @brief Sets the \e autorepeating property. - * - * If the \e autorepeating property is set to \e true, then the \e toggled property is set to false - * but no signal is emitted. - * - * @param[in] autoRepeating \e autorepeating property. - */ - void SetAutoRepeating( bool autoRepeating ); - - /** - * @return \e true if the \e autorepeating property is set. - */ - bool IsAutoRepeating() const; - - /** - * @brief Sets the initial autorepeating delay. - * - * By default this value is set to 0.15 seconds. - * - * @pre initialAutoRepeatingDelay must be greater than zero. - * @param[in] initialAutoRepeatingDelay in seconds. - */ - void SetInitialAutoRepeatingDelay( float initialAutoRepeatingDelay ); - - /** - * @return the initial autorepeating delay in seconds. - */ - float GetInitialAutoRepeatingDelay() const; - - /** - * @brief Sets the next autorepeating delay. - * - * By default this value is set to 0.05 seconds. - * - * @pre nextAutoRepeatingDelay must be greater than zero. - * @param[in] nextAutoRepeatingDelay in seconds. - */ - void SetNextAutoRepeatingDelay( float nextAutoRepeatingDelay ); - - /** - * @return the next autorepeating delay in seconds. - */ - float GetNextAutoRepeatingDelay() const; - - /** - * @brief Sets the \e toggled property. - * - * If the \e toggled property is set to \e true, then the \e autorepeating property is set to false. - * - * @param[in] toggle property. - */ - void SetToggleButton( bool toggle ); - - /** - * @return \e true if the \e toggled property is set. - */ - bool IsToggleButton() const; - - /** - * @brief Sets the button as toggled or not toggled. - * - * \e toggled property must be set to \e true. - * - * Emits a Button::StateChangedSignal() signal. - * - * @param[in] toggle state. - */ - void SetToggled( bool toggle ); - - /** - * @return \e true if the \e toggled property is set and the button is toggled. - */ - bool IsToggled() const; - - /** * @brief Sets the button image. * * @param[in] image The button image. @@ -300,43 +216,6 @@ public: */ Actor GetDisabledImage() const; - /** - * @brief Sets the button label. - * - * @param[in] label The button label. - */ - void SetLabel( const std::string& label ); - - /** - * @copydoc SetLabel( const std::string& label ) - */ - void SetLabel( Actor label ); - - /** - * @brief Gets the label. - * - * @return An actor with the label. - */ - Actor GetLabel() const; - -public: //Signals - - /// @brief PushButton Pressed signal type. - typedef Signal< bool ( Button ) > PressedSignalType; - - /// @brief PushButton Released signal type. - typedef Signal< bool ( Button ) > ReleasedSignalType; - - /** - * @brief Signal emitted when the button is touched. - */ - PressedSignalType& PressedSignal(); - - /** - * @brief Signal emitted when the button is touched and the touch point leaves the boundary of the button. - */ - ReleasedSignalType& ReleasedSignal(); - public: // Not intended for application developers /** diff --git a/dali-toolkit/public-api/controls/buttons/radio-button.cpp b/dali-toolkit/public-api/controls/buttons/radio-button.cpp index e58f1c5..c698225 100644 --- a/dali-toolkit/public-api/controls/buttons/radio-button.cpp +++ b/dali-toolkit/public-api/controls/buttons/radio-button.cpp @@ -34,17 +34,17 @@ RadioButton::RadioButton() { } -RadioButton::RadioButton(Internal::RadioButton& implementation) - : Button(implementation) +RadioButton::RadioButton( Internal::RadioButton& implementation ) + : Button( implementation ) { } -RadioButton::RadioButton(const RadioButton& radioButton) - : Button(radioButton) +RadioButton::RadioButton( const RadioButton& radioButton ) + : Button( radioButton ) { } -RadioButton& RadioButton::operator=(const RadioButton& radioButton ) +RadioButton& RadioButton::operator=( const RadioButton& radioButton ) { if( &radioButton != this ) { @@ -53,8 +53,8 @@ RadioButton& RadioButton::operator=(const RadioButton& radioButton ) return *this; } -RadioButton::RadioButton(Dali::Internal::CustomActor* internal) - : Button(internal) +RadioButton::RadioButton( Dali::Internal::CustomActor* internal ) + : Button( internal ) { VerifyCustomActorPointer( internal ); } @@ -68,55 +68,25 @@ RadioButton RadioButton::New() return Internal::RadioButton::New(); } -RadioButton RadioButton::New(const std::string& label) +RadioButton RadioButton::New( const std::string& label ) { RadioButton radioButton = Internal::RadioButton::New(); - radioButton.SetLabel(label); + radioButton.SetLabel( label ); return radioButton; } -RadioButton RadioButton::New(Actor label) +RadioButton RadioButton::New( Actor label ) { RadioButton radioButton = Internal::RadioButton::New(); - radioButton.SetLabel(label); + radioButton.SetLabel( label ); return radioButton; } -RadioButton RadioButton::DownCast(BaseHandle handle) +RadioButton RadioButton::DownCast( BaseHandle handle ) { return Control::DownCast( handle ); } -void RadioButton::SetLabel(const std::string& label) -{ - Dali::Toolkit::GetImplementation(*this).SetLabel(label); -} - -void RadioButton::SetLabel(Actor label) -{ - Dali::Toolkit::GetImplementation(*this).SetLabel(label); -} - -Actor RadioButton::GetLabel() const -{ - return Dali::Toolkit::GetImplementation(*this).GetLabel(); -} - -void RadioButton::SetSelected(bool selected) -{ - Dali::Toolkit::GetImplementation(*this).SetSelected(selected); -} - -bool RadioButton::IsSelected()const -{ - return Dali::Toolkit::GetImplementation(*this).IsSelected(); -} - -void RadioButton::ToggleState() -{ - Dali::Toolkit::GetImplementation(*this).ToggleState(); -} - } // namespace Toolkit } // namespace Dali diff --git a/dali-toolkit/public-api/controls/buttons/radio-button.h b/dali-toolkit/public-api/controls/buttons/radio-button.h index 5f461b6..f8dbf59 100644 --- a/dali-toolkit/public-api/controls/buttons/radio-button.h +++ b/dali-toolkit/public-api/controls/buttons/radio-button.h @@ -41,9 +41,9 @@ class RadioButton; * * Radio buttons are designed to select one of many option at the same time. * - * Every button have its own \e label and \e state, which can be modified by RadioButton::SetLabel and RadioButton::SetSelected. + * Every button have its own \e label and \e state, which can be modified by RadioButton::SetLabel and Button::SetSelected. * - * RadioButton can change its current state using RadioButton::ToggleState. + * RadioButton can change its current state using Button::SetSelected. * * RadioButtons can be grouped. * Two or more RadioButtons are in one group when they have this same parent. @@ -51,7 +51,7 @@ class RadioButton; * So when RadioButton is set to \e selected, other RadioButtons in its group are set to \e unselected. * When \e selected RadioButton is set to \e unselected no other RadioButtons in his group is set to \e selected. * - * A Button::ClickedSignal() is emitted when the RadioButton change its state to \e selected or \e unselected. + * A Button::StateChangedSignal() is emitted when the RadioButton change its state to \e selected or \e unselected. */ class DALI_IMPORT_API RadioButton: public Button { @@ -66,12 +66,12 @@ class DALI_IMPORT_API RadioButton: public Button /** * @brief Copy constructor. */ - RadioButton(const RadioButton& radioButton); + RadioButton( const RadioButton& radioButton ); /** * @brief Assignment operator. */ - RadioButton& operator=(const RadioButton& radioButton); + RadioButton& operator=( const RadioButton& radioButton ); /** * @brief Destructor @@ -94,7 +94,7 @@ class DALI_IMPORT_API RadioButton: public Button * * @return A handle to a newly allocated Dali resource. */ - static RadioButton New(const std::string& label); + static RadioButton New( const std::string& label ); /** * @brief Create an initialized RadioButton with existing Actor. @@ -103,7 +103,7 @@ class DALI_IMPORT_API RadioButton: public Button * * @return A handle to a newly allocated Dali resource. */ - static RadioButton New(Actor label); + static RadioButton New( Actor label ); /** * @brief Downcast an Object handle to RadioButton. @@ -114,47 +114,7 @@ class DALI_IMPORT_API RadioButton: public Button * @param[in] handle Handle to an object * @return handle to a RadioButton or an uninitialized handle */ - static RadioButton DownCast(BaseHandle handle); - - /** - * @brief Sets the button label. - * - * @param[in] label The button label. - */ - void SetLabel(const std::string& label); - - /** - * @brief Sets the button label using existing Actor. - * - * @param[in] label An Actor with the label. - */ - void SetLabel(Actor label); - - /** - * @brief Gets the label. - * - * @return An Actor with the label. - */ - Actor GetLabel() const; - - /** - * @brief Sets the button as selected or unselected. - * - * @param[in] selected property - */ - void SetSelected(bool selected); - - /** - * @return true if button is selected, false if button is unselected. - */ - bool IsSelected()const; - - /** - * @brief Change button state. - * - * If button is selected unselect it. If button is unselected select it. - */ - void ToggleState(); + static RadioButton DownCast( BaseHandle handle ); public: // Not intended for application developers @@ -163,15 +123,14 @@ class DALI_IMPORT_API RadioButton: public Button * * @param[in] implementation The Control implementation. */ - DALI_INTERNAL RadioButton(Internal::RadioButton& implementation); + DALI_INTERNAL RadioButton( Internal::RadioButton& implementation ); /** * @brief Allows the creation of this Control from an Internal::CustomActor pointer. * * @param[in] internal A pointer to the internal CustomActor. */ - DALI_INTERNAL RadioButton(Dali::Internal::CustomActor* internal); - + DALI_INTERNAL RadioButton( Dali::Internal::CustomActor* internal ); }; } // namespace Toolkit diff --git a/dali-toolkit/public-api/controls/default-controls/check-button-factory.cpp b/dali-toolkit/public-api/controls/default-controls/check-button-factory.cpp index cff908b..5715e49 100644 --- a/dali-toolkit/public-api/controls/default-controls/check-button-factory.cpp +++ b/dali-toolkit/public-api/controls/default-controls/check-button-factory.cpp @@ -52,7 +52,7 @@ Alignment CreateAlignedImage( const std::string& imagePath ) } // namespace -CheckBoxButton CreateCheckBoxButton( const std::string& backgroundImagePath, const std::string& checkedImagePath, const std::string& disabledBackgroundImagePath, const std::string& disabledCheckedImagePath ) +CheckBoxButton CreateCheckBoxButton( const std::string& backgroundImagePath, const std::string& selectedImagePath, const std::string& disabledBackgroundImagePath, const std::string& disabledSelectedImagePath ) { CheckBoxButton button = Toolkit::CheckBoxButton::New(); @@ -61,9 +61,9 @@ CheckBoxButton CreateCheckBoxButton( const std::string& backgroundImagePath, con button.SetBackgroundImage( CreateAlignedImage( backgroundImagePath ) ); } - if( !checkedImagePath.empty() ) + if( !selectedImagePath.empty() ) { - button.SetCheckedImage( CreateAlignedImage( checkedImagePath ) ); + button.SetSelectedImage( CreateAlignedImage( selectedImagePath ) ); } if( !disabledBackgroundImagePath.empty() ) @@ -71,15 +71,15 @@ CheckBoxButton CreateCheckBoxButton( const std::string& backgroundImagePath, con button.SetDisabledBackgroundImage( CreateAlignedImage( disabledBackgroundImagePath ) ); } - if( !disabledCheckedImagePath.empty() ) + if( !disabledSelectedImagePath.empty() ) { - button.SetDisabledCheckedImage( CreateAlignedImage( disabledCheckedImagePath ) ); + button.SetDisabledSelectedImage( CreateAlignedImage( disabledSelectedImagePath ) ); } return button; } -CheckBoxButton CreateCheckBoxButton( Actor backgroundImageActor, Actor checkedImageActor, Actor disabledBackgroundImageActor, Actor disabledCheckedImagActor ) +CheckBoxButton CreateCheckBoxButton( Actor backgroundImageActor, Actor selectedImageActor, Actor disabledBackgroundImageActor, Actor disabledSelectedImagActor ) { CheckBoxButton button = Toolkit::CheckBoxButton::New(); @@ -88,9 +88,9 @@ CheckBoxButton CreateCheckBoxButton( Actor backgroundImageActor, Actor checkedIm button.SetBackgroundImage( CreateAlignedImage( backgroundImageActor ) ); } - if( checkedImageActor ) + if( selectedImageActor ) { - button.SetCheckedImage( CreateAlignedImage( checkedImageActor ) ); + button.SetSelectedImage( CreateAlignedImage( selectedImageActor ) ); } if( disabledBackgroundImageActor ) @@ -98,15 +98,15 @@ CheckBoxButton CreateCheckBoxButton( Actor backgroundImageActor, Actor checkedIm button.SetDisabledBackgroundImage( CreateAlignedImage( disabledBackgroundImageActor ) ); } - if( disabledCheckedImagActor ) + if( disabledSelectedImagActor ) { - button.SetDisabledCheckedImage( CreateAlignedImage( disabledCheckedImagActor ) ); + button.SetDisabledSelectedImage( CreateAlignedImage( disabledSelectedImagActor ) ); } return button; } -CheckBoxButton CreateCheckBoxButton( const std::string& backgroundImagePath, const std::string& checkedImagePath ) +CheckBoxButton CreateCheckBoxButton( const std::string& backgroundImagePath, const std::string& selectedImagePath ) { CheckBoxButton button = Toolkit::CheckBoxButton::New(); @@ -115,15 +115,15 @@ CheckBoxButton CreateCheckBoxButton( const std::string& backgroundImagePath, con button.SetBackgroundImage( CreateAlignedImage( backgroundImagePath ) ); } - if( !checkedImagePath.empty() ) + if( !selectedImagePath.empty() ) { - button.SetCheckedImage( CreateAlignedImage( checkedImagePath ) ); + button.SetSelectedImage( CreateAlignedImage( selectedImagePath ) ); } return button; } -CheckBoxButton CreateCheckBoxButton( Actor backgroundImageActor, Actor checkedImageActor ) +CheckBoxButton CreateCheckBoxButton( Actor backgroundImageActor, Actor selectedImageActor ) { CheckBoxButton button = Toolkit::CheckBoxButton::New(); @@ -132,9 +132,9 @@ CheckBoxButton CreateCheckBoxButton( Actor backgroundImageActor, Actor checkedIm button.SetBackgroundImage( CreateAlignedImage( backgroundImageActor ) ); } - if( checkedImageActor ) + if( selectedImageActor ) { - button.SetCheckedImage( CreateAlignedImage( checkedImageActor ) ); + button.SetSelectedImage( CreateAlignedImage( selectedImageActor ) ); } return button; diff --git a/dali-toolkit/public-api/controls/default-controls/check-button-factory.h b/dali-toolkit/public-api/controls/default-controls/check-button-factory.h index 8fe5cdb..3ca9a94 100644 --- a/dali-toolkit/public-api/controls/default-controls/check-button-factory.h +++ b/dali-toolkit/public-api/controls/default-controls/check-button-factory.h @@ -34,11 +34,11 @@ namespace Toolkit * @note If an image path is empty, this image is not set to the button. * * @param[in] backgroundImagePath Image path to be shown as button background. - * @param[in] checkedImagePath Image path to be shown as checked button. + * @param[in] selectedImagePath Image path to be shown as selected button. * @param[in] disabledBackgroundImagePath Image path to be shown as button isabled background. - * @param[in] disabledCheckedImagePath Image path to be shown as disabled checked button. + * @param[in] disabledSelectedImagePath Image path to be shown as disabled selected button. */ -DALI_IMPORT_API CheckBoxButton CreateCheckBoxButton( const std::string& backgroundImagePath, const std::string& checkedImagePath, const std::string& disabledBackgroundImagePath, const std::string& disabledCheckedImagePath ); +DALI_IMPORT_API CheckBoxButton CreateCheckBoxButton( const std::string& backgroundImagePath, const std::string& selectedImagePath, const std::string& disabledBackgroundImagePath, const std::string& disabledSelectedImagePath ); /** * Creates a check box button with the given images. @@ -47,31 +47,31 @@ DALI_IMPORT_API CheckBoxButton CreateCheckBoxButton( const std::string& backgrou * @note If an image is an empty handle, this image is not set to the button. * * @param[in] backgroundImageActor Image to be shown as button background. - * @param[in] checkedImageActor Image to be shown as checked button. + * @param[in] selectedImageActor Image to be shown as selected button. * @param[in] disabledBackgroundImageActor Image to be shown as button disabled background. - * @param[in] disabledCheckedImagActor Image to be shown as disabled checked button. + * @param[in] disabledSelectedImagActor Image to be shown as disabled selected button. */ -DALI_IMPORT_API CheckBoxButton CreateCheckBoxButton( Actor backgroundImageActor, Actor checkedImageActor, Actor disabledBackgroundImageActor, Actor disabledCheckedImagActor ); +DALI_IMPORT_API CheckBoxButton CreateCheckBoxButton( Actor backgroundImageActor, Actor selectedImageActor, Actor disabledBackgroundImageActor, Actor disabledSelectedImagActor ); /** - * Creates a check box button with the given background and checked images. - * Background and checked images will be shrunk to fit the button size keeping their aspect ratio. - * @note Background and checked images won't be scaled to fill the whole button size. + * Creates a check box button with the given background and selected images. + * Background and selected images will be shrunk to fit the button size keeping their aspect ratio. + * @note Background and selected images won't be scaled to fill the whole button size. * * @param[in] backgroundImagePath Image path to be shown as button background. - * @param[in] checkedImagePath Image path to be shown as checked button. + * @param[in] selectedImagePath Image path to be shown as selected button. */ -DALI_IMPORT_API CheckBoxButton CreateCheckBoxButton( const std::string& backgroundImagePath, const std::string& checkedImagePath ); +DALI_IMPORT_API CheckBoxButton CreateCheckBoxButton( const std::string& backgroundImagePath, const std::string& selectedImagePath ); /** - * Creates a check box button with the given background and checked images. - * Background and checked images will be shrunk to fit the button size keeping their aspect ratio. - * @note Background and checked images won't be scaled to fill the whole button size. + * Creates a check box button with the given background and selected images. + * Background and selected images will be shrunk to fit the button size keeping their aspect ratio. + * @note Background and selected images won't be scaled to fill the whole button size. * * @param[in] backgroundImageActor Image to be shown as button background. - * @param[in] checkedImageActor Image to be shown as checked button. + * @param[in] selectedImageActor Image to be shown as selected button. */ -DALI_IMPORT_API CheckBoxButton CreateCheckBoxButton( Actor backgroundImageActor, Actor checkedImageActor ); +DALI_IMPORT_API CheckBoxButton CreateCheckBoxButton( Actor backgroundImageActor, Actor selectedImageActor ); } // namespace Toolkit -- 2.7.4