From a394f6523cfb5c36321d877ca1d4f57c354ebc7d Mon Sep 17 00:00:00 2001 From: Xiangyin Ma Date: Thu, 11 Aug 2016 16:45:08 +0100 Subject: [PATCH] (Control Base) Add GetVisual() & GetPlacementActor() methods Change-Id: I944d801d9a05fbbc61faca2f308e7670649e5266 --- .../dali-toolkit-test-utils/dummy-control.cpp | 10 ++++++++ .../dali-toolkit-test-utils/dummy-control.h | 2 ++ .../src/dali-toolkit/utc-Dali-ControlImpl.cpp | 28 +++++++++++++++++++++ dali-toolkit/public-api/controls/control-impl.cpp | 29 ++++++++++++++++++++++ dali-toolkit/public-api/controls/control-impl.h | 22 ++++++++++++++++ 5 files changed, 91 insertions(+) diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/dummy-control.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/dummy-control.cpp index fcf6825..80fb6ec 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/dummy-control.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/dummy-control.cpp @@ -85,6 +85,16 @@ void DummyControlImpl::UnregisterVisual( Property::Index index ) Control::UnregisterVisual( index ); } +Toolkit::Visual::Base DummyControlImpl::GetVisual( Property::Index index ) +{ + return Control::GetVisual( index ); +} + +Actor DummyControlImpl::GetPlacementActor( Property::Index index ) +{ + return Control::GetPlacementActor( index ); +} + DummyControl DummyControlImplOverride::New() { IntrusivePtr< DummyControlImplOverride > impl = new DummyControlImplOverride; diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/dummy-control.h b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/dummy-control.h index 897fc17..3c88685 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/dummy-control.h +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/dummy-control.h @@ -73,6 +73,8 @@ public: void RegisterVisual( Property::Index index, Actor placementActor, Toolkit::Visual::Base visual); void UnregisterVisual( Property::Index index ); + Toolkit::Visual::Base GetVisual( Property::Index index ); + Actor GetPlacementActor( Property::Index index ); // Used to test signal connections void CustomSlot1( Actor actor ); diff --git a/automated-tests/src/dali-toolkit/utc-Dali-ControlImpl.cpp b/automated-tests/src/dali-toolkit/utc-Dali-ControlImpl.cpp index 09d1dd7..2e691af 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-ControlImpl.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-ControlImpl.cpp @@ -956,6 +956,9 @@ int UtcDaliControlImplRegisterThenReRegisterVisual(void) Property::Index index =1; Actor placementActor = Actor::New(); + DALI_TEST_CHECK( !dummyImpl.GetVisual( index ) ); + DALI_TEST_CHECK( !dummyImpl.GetPlacementActor( index ) ); + Toolkit::VisualFactory visualFactory = Toolkit::VisualFactory::Get(); Toolkit::Visual::Base visual; @@ -969,6 +972,8 @@ int UtcDaliControlImplRegisterThenReRegisterVisual(void) // Register index with a color visual dummyImpl.RegisterVisual( index, placementActor, visual ); + DALI_TEST_CHECK( dummyImpl.GetVisual( index ) == visual ); + DALI_TEST_CHECK( dummyImpl.GetPlacementActor( index ) == placementActor ); Property::Map newMap; newMap[Visual::Property::TYPE] = Visual::COLOR; @@ -980,6 +985,9 @@ int UtcDaliControlImplRegisterThenReRegisterVisual(void) // ReRegister with altered color visual dummyImpl.RegisterVisual( index, placementActor, visual ); + DALI_TEST_CHECK( dummyImpl.GetVisual( index ) == visual ); + DALI_TEST_CHECK( dummyImpl.GetPlacementActor( index ) == placementActor ); + tet_result(TET_PASS); END_TEST; @@ -1008,9 +1016,15 @@ int UtcDaliControlImplRegisterVisaulThenReRegisterToSelf(void) // Register index with a color visual dummyImpl.RegisterVisual( index, placementActor, visual ); + DALI_TEST_CHECK( dummyImpl.GetVisual( index ) == visual ); + DALI_TEST_CHECK( dummyImpl.GetPlacementActor( index ) == placementActor ); + // ReRegister to self dummyImpl.RegisterVisual( index, dummy, visual ); + DALI_TEST_CHECK( dummyImpl.GetVisual( index ) == visual ); + DALI_TEST_CHECK( dummyImpl.GetPlacementActor( index ) == dummy ); + END_TEST; } @@ -1041,6 +1055,8 @@ int UtcDaliControlImplRegisterVisualToSelf(void) // Register to self dummyImpl.RegisterVisual( index, dummy, visual ); DALI_TEST_EQUALS( objectDestructionTracker.IsDestroyed(), false, TEST_LOCATION ); // Control not destroyed yet + DALI_TEST_CHECK( dummyImpl.GetVisual( index ) == visual ); + DALI_TEST_CHECK( dummyImpl.GetPlacementActor( index ) == dummy ); } DALI_TEST_EQUALS( objectDestructionTracker.IsDestroyed(), true, TEST_LOCATION ); // Should be destroyed @@ -1085,6 +1101,12 @@ int UtcDaliControlImplRegisterTwoVisuals(void) // ReRegister with altered color visual dummyImpl.RegisterVisual( index2, secondPlacementActor, secondVisual ); + DALI_TEST_CHECK( dummyImpl.GetVisual( index ) == visual ); + DALI_TEST_CHECK( dummyImpl.GetPlacementActor( index ) == placementActor ); + + DALI_TEST_CHECK( dummyImpl.GetVisual( index2 ) == secondVisual ); + DALI_TEST_CHECK( dummyImpl.GetPlacementActor( index2 ) == secondPlacementActor ); + END_TEST; } @@ -1111,8 +1133,14 @@ int UtcDaliControlImplRegisterUnregisterVisual(void) // Register index with a color visual dummyImpl.RegisterVisual( index, placementActor, visual ); + DALI_TEST_CHECK( dummyImpl.GetVisual( index ) == visual ); + DALI_TEST_CHECK( dummyImpl.GetPlacementActor( index ) == placementActor ); + // Unregister visual dummyImpl.UnregisterVisual( index ); + DALI_TEST_CHECK( !dummyImpl.GetVisual( index ) ); + DALI_TEST_CHECK( !dummyImpl.GetPlacementActor( index ) ); + END_TEST; } diff --git a/dali-toolkit/public-api/controls/control-impl.cpp b/dali-toolkit/public-api/controls/control-impl.cpp index 253f3a2..23745bb 100644 --- a/dali-toolkit/public-api/controls/control-impl.cpp +++ b/dali-toolkit/public-api/controls/control-impl.cpp @@ -691,6 +691,35 @@ void Control::UnregisterVisual( Property::Index index ) } } +Toolkit::Visual::Base Control::GetVisual( Property::Index index ) +{ + std::vector< RegisteredVisual >::iterator iter; + if ( FindVisual( index, mImpl->mVisuals, iter ) ) + { + return (*iter).visual; + } + + return Toolkit::Visual::Base(); +} + +Actor Control::GetPlacementActor( Property::Index index ) +{ + std::vector< RegisteredVisual >::iterator iter; + if ( FindVisual( index, mImpl->mVisuals, iter ) ) + { + if( (*iter).placementActor ) + { + return (*iter).placementActor; + } + else + { + return Self(); + } + } + + return Actor(); +} + bool Control::OnAccessibilityActivated() { return false; // Accessibility activation is not handled by default diff --git a/dali-toolkit/public-api/controls/control-impl.h b/dali-toolkit/public-api/controls/control-impl.h index 7cd1dcd..e8a71fe 100644 --- a/dali-toolkit/public-api/controls/control-impl.h +++ b/dali-toolkit/public-api/controls/control-impl.h @@ -316,6 +316,28 @@ protected: // For derived classes to call */ void UnregisterVisual( Property::Index index ); + /** + * @brief Retrieve the visual associated with the given property index. + * + * @SINCE_1_2.2 + * + * @param[in] index The Property index of the visual. + * @return The registered visual if exist, otherwise empty handle. + * @note For managing object life-cycle, do not store the returned visual as a member which increments its reference count. + */ + Toolkit::Visual::Base GetVisual( Property::Index index ); + + /** + * @brief Retrieve the placement actor associated with the given index. + * + * @SINCE_1_2.2 + * + * @@param[in] index The Property index of the visual. + * @return Then placement actor if exist, otherwise empty handle. + * @note For managing object life-cycle, do not store the returned placement actor as a member which increments its reference count. + */ + Actor GetPlacementActor( Property::Index index ); + /** * @brief Emits KeyInputFocusGained signal if true else emits KeyInputFocusLost signal * -- 2.7.4