From 91b8f5bbaa7d68f5ca8fc94287b8c181a10ba894 Mon Sep 17 00:00:00 2001 From: Tom Robinson Date: Mon, 27 Jul 2015 17:15:45 +0100 Subject: [PATCH] New Popup implementation Change-Id: Id57b2824d26aa863454e428f5cc67a6128e1cfc1 --- automated-tests/src/dali-toolkit/CMakeLists.txt | 1 + .../dali-toolkit-test-utils/toolkit-timer.cpp | 27 +- .../dali-toolkit-test-utils/toolkit-timer.h | 5 +- .../src/dali-toolkit/utc-Dali-Button.cpp | 1 - .../dali-toolkit/utc-Dali-ConfirmationPopup.cpp | 256 +++ .../src/dali-toolkit/utc-Dali-Popup.cpp | 516 ++++-- .../controls/popup/confirmation-popup.cpp | 83 + .../devel-api/controls/popup/confirmation-popup.h | 148 ++ dali-toolkit/devel-api/controls/popup/popup.cpp | 57 +- dali-toolkit/devel-api/controls/popup/popup.h | 257 +-- dali-toolkit/devel-api/file.list | 2 + .../controls/popup/confirmation-popup-impl.cpp | 258 +++ .../controls/popup/confirmation-popup-impl.h | 180 ++ .../internal/controls/popup/popup-impl.cpp | 1862 ++++++++++++++------ dali-toolkit/internal/controls/popup/popup-impl.h | 436 +++-- .../internal/controls/popup/popup-style-impl.cpp | 115 -- .../internal/controls/popup/popup-style-impl.h | 120 -- .../controls/table-view/table-view-impl.cpp | 8 + .../internal/controls/table-view/table-view-impl.h | 5 + dali-toolkit/internal/file.list | 2 +- docs/content/images/popup/popup-example.png | Bin 0 -> 19356 bytes docs/content/images/popup/popup-fields.png | Bin 0 -> 58224 bytes docs/content/images/popup/popup-image-content.png | Bin 0 -> 303154 bytes docs/content/images/popup/popup-toast.png | Bin 0 -> 30832 bytes docs/content/main.md | 9 +- .../popup.md | 392 +++++ 26 files changed, 3640 insertions(+), 1100 deletions(-) create mode 100644 automated-tests/src/dali-toolkit/utc-Dali-ConfirmationPopup.cpp create mode 100644 dali-toolkit/devel-api/controls/popup/confirmation-popup.cpp create mode 100644 dali-toolkit/devel-api/controls/popup/confirmation-popup.h create mode 100644 dali-toolkit/internal/controls/popup/confirmation-popup-impl.cpp create mode 100644 dali-toolkit/internal/controls/popup/confirmation-popup-impl.h delete mode 100644 dali-toolkit/internal/controls/popup/popup-style-impl.cpp delete mode 100644 dali-toolkit/internal/controls/popup/popup-style-impl.h create mode 100644 docs/content/images/popup/popup-example.png create mode 100644 docs/content/images/popup/popup-fields.png create mode 100644 docs/content/images/popup/popup-image-content.png create mode 100644 docs/content/images/popup/popup-toast.png create mode 100644 docs/content/shared-javascript-and-cpp-documentation/popup.md diff --git a/automated-tests/src/dali-toolkit/CMakeLists.txt b/automated-tests/src/dali-toolkit/CMakeLists.txt index 2b1858e..8f40f82 100644 --- a/automated-tests/src/dali-toolkit/CMakeLists.txt +++ b/automated-tests/src/dali-toolkit/CMakeLists.txt @@ -12,6 +12,7 @@ SET(TC_SOURCES utc-Dali-BubbleEmitter.cpp utc-Dali-Builder.cpp utc-Dali-CheckBoxButton.cpp + utc-Dali-ConfirmationPopup.cpp utc-Dali-CubeTransitionEffect.cpp utc-Dali-EffectsView.cpp utc-Dali-GaussianBlurView.cpp diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-timer.cpp b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-timer.cpp index 864e41e..2f1ce14 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-timer.cpp +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-timer.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2015 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -34,12 +34,17 @@ class Timer; typedef IntrusivePtr TimerPtr; +Dali::Timer::TimerSignalType gTickSignal; + /** * Implementation of the timer */ class Timer : public BaseObject { public: + void MockEmitSignal(); + +public: static TimerPtr New( unsigned int milliSec ); Timer( unsigned int milliSec ); virtual ~Timer(); @@ -63,7 +68,6 @@ private: // Implementation private: // Data - Dali::Timer::TimerSignalType mTickSignal; unsigned int mInterval; }; @@ -87,7 +91,7 @@ inline const Timer& GetImplementation(const Dali::Timer& timer) TimerPtr Timer::New( unsigned int milliSec ) { - TimerPtr timerImpl = new Timer(10); + TimerPtr timerImpl = new Timer( milliSec ); return timerImpl; } @@ -130,9 +134,17 @@ bool Timer::Tick() Dali::Timer::TimerSignalType& Timer::TickSignal() { - return mTickSignal; + return gTickSignal; +} + +// Mock setup functions: + +void Timer::MockEmitSignal() +{ + gTickSignal.Emit(); } + } // namespace Adaptor } // namespace Internal @@ -206,5 +218,12 @@ Timer::Timer(Internal::Adaptor::Timer* timer) { } +// Mock setup functions: + +void Timer::MockEmitSignal() +{ + Internal::Adaptor::GetImplementation( *this ).MockEmitSignal(); +} + } // namespace Dali diff --git a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-timer.h b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-timer.h index a7397e6..e0c886c 100644 --- a/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-timer.h +++ b/automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-timer.h @@ -2,7 +2,7 @@ #define __DALI_TOOLKIT_TOOLKIT_TIMER_H__ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2015 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -40,6 +40,9 @@ class Timer; class Timer : public BaseHandle { public: + void MockEmitSignal(); + +public: typedef Signal< bool () > TimerSignalType; Timer(); static Timer New( unsigned int milliSec ); diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Button.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Button.cpp index 990be9c..f290cb2 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-Button.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Button.cpp @@ -346,7 +346,6 @@ int UtcDaliButtonSetUnselectedImageP(void) application.Render(); Vector3 size = pushButton.GetCurrentSize(); - tet_printf( "todor: size: %f,%f", size.width, size.height ); DALI_TEST_EQUALS( size.width, 20.f, TEST_LOCATION ); DALI_TEST_EQUALS( size.height, 20.f, TEST_LOCATION ); diff --git a/automated-tests/src/dali-toolkit/utc-Dali-ConfirmationPopup.cpp b/automated-tests/src/dali-toolkit/utc-Dali-ConfirmationPopup.cpp new file mode 100644 index 0000000..0d3dec9 --- /dev/null +++ b/automated-tests/src/dali-toolkit/utc-Dali-ConfirmationPopup.cpp @@ -0,0 +1,256 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +#include + +// Need to override adaptor classes for toolkit test harness, so include +// test harness headers before dali headers. +#include +#include +#include + +using namespace Dali; +using namespace Toolkit; + +void utc_dali_toolkit_confirmation_popup_startup(void) +{ + test_return_value = TET_UNDEF; +} + +void utc_dali_toolkit_confirmation_popup_cleanup(void) +{ + test_return_value = TET_PASS; +} + +namespace +{ + +static bool gObjectCreatedCallBackCalled; + +static void TestCallback(BaseHandle handle) +{ + gObjectCreatedCallBackCalled = true; +} + +static bool gSignalReceivedOK; +static bool gSignalReceivedCancel; + +/** + * A connection tracker is required when connecting to a signal with a functor. + */ +class TestConnectionTrackerObject : public ConnectionTracker +{ +}; + +/** + * This functor is used to test the confirmation popup's OK signal connection. + */ +struct ConfirmationPopupOKTestFunctor +{ + ConfirmationPopupOKTestFunctor() + { + } + + void operator()() + { + gSignalReceivedOK = true; + } +}; + +/** + * This functor is used to test the confirmation popup's Cancel signal connection. + */ +struct ConfirmationPopupCancelTestFunctor +{ + ConfirmationPopupCancelTestFunctor() + { + } + + void operator()() + { + gSignalReceivedCancel = true; + } +}; + +} // unnamed namespace. + + +int UtcDaliConfirmationPopupNewP( void ) +{ + ToolkitTestApplication application; + tet_infoline( " UtcDaliConfirmationPopupNewP" ); + + // Create the ConfirmationPopup. + ConfirmationPopup popup; + + DALI_TEST_CHECK( !popup ); + + popup = ConfirmationPopup::New(); + + DALI_TEST_CHECK( popup ); + + ConfirmationPopup popup2( popup ); + + DALI_TEST_CHECK( popup2 == popup ); + + // Additional check to ensure object is created by checking if it's registered. + ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry(); + DALI_TEST_CHECK( registry ); + + gObjectCreatedCallBackCalled = false; + registry.ObjectCreatedSignal().Connect( &TestCallback ); + { + ConfirmationPopup popup = ConfirmationPopup::New(); + } + DALI_TEST_CHECK( gObjectCreatedCallBackCalled ); + END_TEST; +} + +int UtcDaliConfirmationPopupDestructorP( void ) +{ + ToolkitTestApplication application; + tet_infoline( " UtcDaliConfirmationPopupDestructorP" ); + + ConfirmationPopup* popup = new ConfirmationPopup(); + delete popup; + + DALI_TEST_CHECK( true ); + END_TEST; +} + +int UtcDaliConfirmationPopupDownCastP(void) +{ + ToolkitTestApplication application; + tet_infoline( " UtcDaliConfirmationPopupDownCastP" ); + + Handle handle = ConfirmationPopup::New(); + + ConfirmationPopup popup = ConfirmationPopup::DownCast( handle ); + + DALI_TEST_CHECK( popup == handle ); + END_TEST; +} + +int UtcDaliConfirmationPopupDynamicSignalGenerationP(void) +{ + ToolkitTestApplication application; + tet_infoline( " UtcDaliConfirmationPopupDynamicSignalGenerationP" ); + + ConfirmationPopup popup = ConfirmationPopup::New(); + + TextLabel titleActor = TextLabel::New( "Title" ); + popup.SetTitle( titleActor ); + + TextLabel contentActor = TextLabel::New( "Content" ); + popup.SetContent( contentActor ); + + Actor footerActor = Actor::New(); + + // The confirmation popup can use any control type for the ok or cancel buttons. + // It requires that the name is "control-ok" to provide the "control-signal-ok" signal. + PushButton buttonOK = PushButton::New(); + buttonOK.SetName( "control-ok" ); + footerActor.Add( buttonOK ); + + PushButton buttonCancel = PushButton::New(); + buttonCancel.SetName( "control-cancel" ); + footerActor.Add( buttonCancel ); + + popup.SetFooter( footerActor ); + + // Tell the confirmation popup to connect to the signal in our button called "on-stage". + popup.SetProperty( Toolkit::ConfirmationPopup::Property::CONNECT_SIGNAL_OK_SELECTED, "on-stage" ); + + // Connect to the confirmation popup's OK signal. This signal is dynamically created upon connection. + gSignalReceivedOK = false; + gSignalReceivedCancel = false; + TestConnectionTrackerObject* testTracker = new TestConnectionTrackerObject(); + popup.ConnectSignal( testTracker, "control-signal-ok", ConfirmationPopupOKTestFunctor() ); + + // Check no signal has occurred yet. + DALI_TEST_CHECK( !gSignalReceivedOK ); + DALI_TEST_CHECK( !gSignalReceivedCancel ); + + // Provoke the signal. + Stage::GetCurrent().Add( popup ); + + // Check the signal has occurred. + DALI_TEST_CHECK( gSignalReceivedOK ); + DALI_TEST_CHECK( !gSignalReceivedCancel ); + + // Remove the popup from the stage, and connect the cancel signal. + popup.Unparent(); + popup.SetProperty( Toolkit::ConfirmationPopup::Property::CONNECT_SIGNAL_CANCEL_SELECTED, "on-stage" ); + popup.ConnectSignal( testTracker, "control-signal-cancel", ConfirmationPopupCancelTestFunctor() ); + + // Check the cancel signal has not occurred yet. + DALI_TEST_CHECK( gSignalReceivedOK ); + DALI_TEST_CHECK( !gSignalReceivedCancel ); + + // Provoke the signal. + Stage::GetCurrent().Add( popup ); + + // Check the cancel signal has occurred. + DALI_TEST_CHECK( gSignalReceivedOK ); + DALI_TEST_CHECK( gSignalReceivedCancel ); + + END_TEST; +} + +int UtcDaliConfirmationPopupDynamicSignalGenerationN(void) +{ + ToolkitTestApplication application; + tet_infoline( " UtcDaliConfirmationPopupDynamicSignalGenerationN" ); + + ConfirmationPopup popup = ConfirmationPopup::New(); + + TextLabel titleActor = TextLabel::New( "Title" ); + popup.SetTitle( titleActor ); + + TextLabel contentActor = TextLabel::New( "Content" ); + popup.SetContent( contentActor ); + + Actor footerActor = Actor::New(); + + PushButton buttonOK = PushButton::New(); + buttonOK.SetName( "control-ok-misnamed" ); + popup.SetFooter( buttonOK ); + + // Tell the confirmation popup to connect to the signal in our button called "on-stage". + popup.SetProperty( Toolkit::ConfirmationPopup::Property::CONNECT_SIGNAL_OK_SELECTED, "on-stage" ); + + // Connect to the confirmation popup's OK signal. + gSignalReceivedOK = false; + + // The connection will fail at this point as no actor with the name "control-ok" will be located. + TestConnectionTrackerObject* testTracker = new TestConnectionTrackerObject(); + popup.ConnectSignal( testTracker, "control-signal-ok", ConfirmationPopupOKTestFunctor() ); + + // Check no signal has occurred yet. + DALI_TEST_CHECK( !gSignalReceivedOK ); + + // Provoke the signal. + Stage::GetCurrent().Add( popup ); + + // Check the signal has still not occurred, as our button was incorrectly named. + DALI_TEST_CHECK( !gSignalReceivedOK ); + + END_TEST; +} + + + diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Popup.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Popup.cpp index 294bec2..990c20a 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-Popup.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Popup.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2015 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,15 +15,16 @@ * */ -#include #include // Need to override adaptor classes for toolkit test harness, so include // test harness headers before dali headers. #include +#include "dali-toolkit-test-utils/toolkit-timer.h" #include #include +#include #include #include @@ -50,18 +51,18 @@ static void TestCallback(BaseHandle handle) } const int RENDER_FRAME_INTERVAL = 10; ///< Duration of each frame in ms. -const int RENDER_ANIMATION_TEST_DURATION_MS = 1000; ///< 1000ms to test animation +const int RENDER_ANIMATION_TEST_DURATION_MS = 2000; ///< 2000ms to test animation. const int RENDER_ANIMATION_TEST_DURATION_FRAMES = RENDER_ANIMATION_TEST_DURATION_MS / RENDER_FRAME_INTERVAL; ///< equivalent frames. const Vector3 DEFAULT_BUTTON_SIZE(100.0f, 50.0f, 0.0f); const Dali::TouchPoint pointDownOutside( 0, TouchPoint::Down, 10.0f, 10.0f ); const Dali::TouchPoint pointUpOutside( 0, TouchPoint::Up, 10.0f, 10.0f ); /** - * Counts how many descendents root Actor has, including + * Counts how many descendants root Actor has, including * itself. * * @param[in] root The root actor to count from. - * @return The number of descendents including root actor itself. + * @return The number of descendants including root actor itself. */ int DescendentCount(const Actor& root) { @@ -87,30 +88,65 @@ bool HasAncestor(Actor child, Actor ancestor) return (child == ancestor); } +static Toolkit::Popup::DisplayState gPopupState = Toolkit::Popup::HIDDEN; +static bool gTouchedOutside; -static bool gHidden = false; +// Signal callbacks -static void OnPopupHidden() +static void OnPopupTouchedOutside() { - gHidden = true; + gTouchedOutside = true; } -static bool gTouchedOutside; +static void OnPopupShowing() +{ + gPopupState = Toolkit::Popup::SHOWING; +} -static void OnPopupTouchedOutside() +static void OnPopupShown() { - gTouchedOutside = true; + gPopupState = Toolkit::Popup::SHOWN; +} + +static void OnPopupHiding() +{ + gPopupState = Toolkit::Popup::HIDING; +} + +static void OnPopupHidden() +{ + gPopupState = Toolkit::Popup::HIDDEN; } +void ConnectStateSignals( Toolkit::Popup popup ) +{ + popup.ShowingSignal().Connect( &OnPopupShowing ); + popup.ShownSignal().Connect( &OnPopupShown ); + popup.HidingSignal().Connect( &OnPopupHiding ); + popup.HiddenSignal().Connect( &OnPopupHidden ); +} + +void WaitAnimation( ToolkitTestApplication& application ) +{ + // Wait for a while (allow animation to complete), and then check state. + for( int i = 0; i < RENDER_ANIMATION_TEST_DURATION_FRAMES; i++ ) + { + application.SendNotification(); + application.Render( RENDER_FRAME_INTERVAL ); + } +} -} // anon namespace +} // Anonymous namespace -int UtcDaliPopupNew(void) +/* + * This test checks popup creation. + */ +int UtcDaliPopupNewP( void ) { ToolkitTestApplication application; - tet_infoline(" UtcDaliPopupNew"); + tet_infoline( " UtcDaliPopupNewP" ); - // Create the Popup actor + // Create the Popup actor. Popup popup; DALI_TEST_CHECK( !popup ); @@ -119,11 +155,11 @@ int UtcDaliPopupNew(void) DALI_TEST_CHECK( popup ); - Popup popup2(popup); + Popup popup2( popup ); DALI_TEST_CHECK( popup2 == popup ); - //Additional check to ensure object is created by checking if it's registered + // Additional check to ensure object is created by checking if it's registered. ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry(); DALI_TEST_CHECK( registry ); @@ -136,9 +172,13 @@ int UtcDaliPopupNew(void) END_TEST; } -int UtcDaliPopupDestructor(void) +/* + * This test checks popup destruction. + */ +int UtcDaliPopupDestructorP( void ) { ToolkitTestApplication application; + tet_infoline( " UtcDaliPopupDestructorP" ); Popup* popup = new Popup(); delete popup; @@ -147,9 +187,10 @@ int UtcDaliPopupDestructor(void) END_TEST; } -int UtcDaliPopupDownCast(void) +int UtcDaliPopupDownCastP(void) { ToolkitTestApplication application; + tet_infoline( " UtcDaliPopupDownCastP" ); Handle handle = Popup::New(); @@ -159,132 +200,292 @@ int UtcDaliPopupDownCast(void) END_TEST; } -int UtcDaliPopoupSetProperty(void) +int UtcDaliPopupSetPropertyP(void) { - tet_infoline("UtcDaliPopoupSetProperty: "); ToolkitTestApplication application; + tet_infoline( " UtcDaliPopupSetProperty" ); Popup popup = Popup::New(); //Test properties std::string testString = "Hello World"; - popup.SetProperty(popup.GetPropertyIndex("title"), testString); - DALI_TEST_EQUALS( testString, popup.GetTitle(), TEST_LOCATION ); + + TextLabel textActorIn = TextLabel::New( testString ); + Property::Map map; + Scripting::CreatePropertyMap( textActorIn, map ); + popup.SetProperty( popup.GetPropertyIndex( "title" ), map ); + TextLabel textActorOut = TextLabel::DownCast( popup.GetTitle() ); + std::string resultText; + DALI_TEST_CHECK( textActorOut.GetProperty( Toolkit::TextLabel::Property::TEXT ).Get( resultText ) ); + DALI_TEST_EQUALS( testString, resultText, TEST_LOCATION ); + END_TEST; } +int UtcDaliPopupSetTitleP(void) +{ + ToolkitTestApplication application; // Exceptions require ToolkitTestApplication + tet_infoline( " UtcDaliPopupSetTitleP" ); + + // Create the Popup actor + Popup popup = Popup::New(); + + // Put in show state so it's layer is connected to popup (for ancestor check). + popup.SetDisplayState( Popup::SHOWN ); + + TextLabel titleActor = TextLabel::New(); + titleActor.SetProperty( Toolkit::TextLabel::Property::TEXT, "title" ); + + DALI_TEST_CHECK( !popup.GetTitle() ); + popup.SetTitle( titleActor ); + TextLabel textActor = TextLabel::DownCast( popup.GetTitle() ); + DALI_TEST_CHECK( textActor == titleActor ); + + std::string resultText; + DALI_TEST_CHECK( textActor.GetProperty( Toolkit::TextLabel::Property::TEXT ).Get( resultText ) ); + + DALI_TEST_CHECK( ( popup.GetTitle() ) && ( resultText == "title" ) ); + // verify titleActor is actually inside popup, and not elsewhere on stage, or off even. + DALI_TEST_CHECK( HasAncestor( titleActor, popup ) ); -int UtcDaliPopupSetBackgroundImage(void) + TextLabel titleActor2 = TextLabel::New(); + titleActor2.SetProperty( Toolkit::TextLabel::Property::TEXT, "anothertitle" ); + popup.SetTitle( titleActor2 ); + DALI_TEST_CHECK( popup.GetTitle() != titleActor ); + DALI_TEST_CHECK( popup.GetTitle() == titleActor2 ); + DALI_TEST_CHECK( TextLabel::DownCast( popup.GetTitle() ).GetProperty( Toolkit::TextLabel::Property::TEXT ).Get( resultText ) ); + + DALI_TEST_CHECK( ( popup.GetTitle() ) && ( resultText == "anothertitle" ) ); + + // verify titleActor is actually inside popup, and not elsewhere on stage, or off even. + DALI_TEST_CHECK( HasAncestor( titleActor2, popup ) ); + END_TEST; +} + +int UtcDaliPopupSetTitleN(void) { ToolkitTestApplication application; // Exceptions require ToolkitTestApplication - tet_infoline(" UtcDaliPopupSetBackgroundImage"); + tet_infoline( " UtcDaliPopupSetTitleN" ); // Create the Popup actor Popup popup = Popup::New(); - Stage::GetCurrent().Add( popup ); - ImageActor image = CreateSolidColorActor( Color::RED ); - DALI_TEST_CHECK( !image.GetParent() ); - popup.SetBackgroundImage(image); - DALI_TEST_CHECK( image.GetParent() ); + TextLabel titleActor = TextLabel::New( "text" ); + popup.SetTitle( titleActor ); + + DALI_TEST_CHECK( popup.GetTitle() ); + + // Set a bad title value. + // Confirm this has disabled the title. + Actor badActor; + popup.SetTitle( badActor ); + + DALI_TEST_CHECK( !popup.GetTitle() ); + END_TEST; } -int UtcDaliPopupSetTitle(void) +int UtcDaliPopupSetContentP(void) { ToolkitTestApplication application; // Exceptions require ToolkitTestApplication - tet_infoline(" UtcDaliPopupSetTitle"); + tet_infoline( " UtcDaliPopupSetContentP" ); // Create the Popup actor Popup popup = Popup::New(); Stage::GetCurrent().Add( popup ); + popup.SetProperty( Toolkit::Popup::Property::ANIMATION_DURATION, 0.0f ); + // Put in show state so it's layer is connected to popup (for ancestor check). - popup.SetState(Popup::POPUP_SHOW, 0.0f); + popup.SetDisplayState( Popup::SHOWN ); + + PushButton button = PushButton::New(); + DALI_TEST_CHECK( !HasAncestor( button, popup ) ); + popup.SetFooter( button ); + // Hide and then re-show popup to cause button to be rearranged and added to popup. + popup.SetDisplayState( Popup::HIDDEN ); + popup.SetDisplayState( Popup::SHOWN ); + DALI_TEST_CHECK( HasAncestor( button, popup ) ); + END_TEST; +} + +int UtcDaliPopupSetContentN(void) +{ + ToolkitTestApplication application; // Exceptions require ToolkitTestApplication + tet_infoline( " UtcDaliPopupSetContentN" ); + + // Create the Popup actor + Popup popup = Popup::New(); - popup.SetTitle("title"); + TextLabel content = TextLabel::New( "text" ); + popup.SetContent( content ); - DALI_TEST_CHECK( popup.GetTitle() == "title" ); + DALI_TEST_CHECK( popup.GetContent() ); + + // Set a bad title value. + Actor badActor; + popup.SetContent( badActor ); + + DALI_TEST_CHECK( !popup.GetContent() ); END_TEST; } -int UtcDaliPopupAddButton(void) +int UtcDaliPopupSetFooterP(void) { ToolkitTestApplication application; // Exceptions require ToolkitTestApplication - tet_infoline(" UtcDaliPopupAddButton"); + tet_infoline(" UtcDaliPopupSetFooterP"); // Create the Popup actor Popup popup = Popup::New(); Stage::GetCurrent().Add( popup ); + popup.SetProperty( Toolkit::Popup::Property::ANIMATION_DURATION, 0.0f ); // Put in show state so it's layer is connected to popup (for ancestor check). - popup.SetState(Popup::POPUP_SHOW, 0.0f); + popup.SetDisplayState( Popup::SHOWN ); PushButton button = PushButton::New(); DALI_TEST_CHECK( !HasAncestor(button, popup) ); - popup.AddButton(button); + popup.SetFooter( button ); + // Hide and then re-show popup to cause button to be rearranged and added to popup. + popup.SetDisplayState( Popup::HIDDEN ); + popup.SetDisplayState( Popup::SHOWN ); + DALI_TEST_CHECK( HasAncestor( button, popup ) ); + END_TEST; +} + +int UtcDaliPopupSetFooterN(void) +{ + ToolkitTestApplication application; // Exceptions require ToolkitTestApplication + tet_infoline(" UtcDaliPopupSetFooterN"); + + // Create the Popup actor + Popup popup = Popup::New(); + + PushButton button = PushButton::New(); + popup.SetFooter( button ); + + DALI_TEST_CHECK( popup.GetFooter() ); + + // Set a bad title value. + Actor badActor; + popup.SetFooter( badActor ); + + DALI_TEST_CHECK( !popup.GetFooter() ); + + END_TEST; +} + +int UtcDaliPopupSetControlFooterMultiple(void) +{ + ToolkitTestApplication application; // Exceptions require ToolkitTestApplication + tet_infoline(" UtcDaliPopupSetControlFooterMultiple"); + + // Create the Popup actor + Popup popup = Popup::New(); + Stage::GetCurrent().Add( popup ); + popup.SetProperty( Toolkit::Popup::Property::ANIMATION_DURATION, 0.0f ); + // Put in show state so it's layer is connected to popup (for ancestor check). + popup.SetDisplayState( Popup::SHOWN ); + + Actor container = Actor::New(); + PushButton button1 = PushButton::New(); + PushButton button2 = PushButton::New(); + DALI_TEST_CHECK( !HasAncestor( button1, popup ) ); + DALI_TEST_CHECK( !HasAncestor( button2, popup ) ); + container.Add( button1 ); + container.Add( button2 ); + popup.SetFooter( container ); + // Hide and then re-show popup to cause button to be rearranged and added to popup. - popup.SetState( Popup::POPUP_HIDE, 0.0f ); - popup.SetState( Popup::POPUP_SHOW, 0.0f ); - DALI_TEST_CHECK( HasAncestor(button, popup) ); + popup.SetDisplayState( Popup::HIDDEN ); + popup.SetDisplayState( Popup::SHOWN ); + DALI_TEST_CHECK( HasAncestor( button1, popup ) ); + DALI_TEST_CHECK( HasAncestor( button2, popup ) ); + END_TEST; +} + +int UtcDaliPopupSetStateP(void) +{ + ToolkitTestApplication application; // Exceptions require ToolkitTestApplication + tet_infoline(" UtcDaliPopupSetStateP"); + + // Create the Popup actor + Popup popup = Popup::New(); + + popup.SetProperty( Toolkit::Popup::Property::ANIMATION_DURATION, 0.0f ); + + DALI_TEST_EQUALS( popup.GetDisplayState(), Popup::HIDDEN, TEST_LOCATION ); + + popup.SetDisplayState( Popup::SHOWN ); + DALI_TEST_EQUALS( Popup::SHOWN, popup.GetDisplayState(), TEST_LOCATION ); + + popup.SetDisplayState( Popup::HIDDEN ); + DALI_TEST_EQUALS( Popup::HIDDEN, popup.GetDisplayState(), TEST_LOCATION ); END_TEST; } -int UtcDaliPopupSetState(void) +int UtcDaliPopupSetStateN(void) { ToolkitTestApplication application; // Exceptions require ToolkitTestApplication - tet_infoline(" UtcDaliPopupSetState"); + tet_infoline(" UtcDaliPopupSetStateN"); // Create the Popup actor Popup popup = Popup::New(); - ImageActor backgroundImage = CreateSolidColorActor( Color::RED ); - popup.SetBackgroundImage(backgroundImage); - - // Showing/Hiding popup, results in all child Actors being - // connected/disconnected from the stage. - DALI_TEST_CHECK( !backgroundImage.OnStage() ); - popup.SetState(Popup::POPUP_SHOW, 0.0f); - DALI_TEST_CHECK( backgroundImage.OnStage() ); - DALI_TEST_EQUALS( Popup::POPUP_SHOW, popup.GetState(), TEST_LOCATION ); - popup.SetState(Popup::POPUP_HIDE, 0.0f); - DALI_TEST_CHECK( !backgroundImage.OnStage() ); - DALI_TEST_EQUALS( Popup::POPUP_HIDE, popup.GetState(), TEST_LOCATION ); + popup.SetProperty( Toolkit::Popup::Property::ANIMATION_DURATION, 1.0f ); + + DALI_TEST_EQUALS( popup.GetDisplayState(), Popup::HIDDEN, TEST_LOCATION ); + + popup.SetDisplayState( Popup::SHOWN ); + DALI_TEST_EQUALS( Popup::SHOWING, popup.GetDisplayState(), TEST_LOCATION ); + + // Test cancelling a show before it has finished. + popup.SetDisplayState( Popup::HIDDEN ); + DALI_TEST_EQUALS( Popup::HIDING, popup.GetDisplayState(), TEST_LOCATION ); END_TEST; } -int UtcDaliPopupSetStateSlow(void) +int UtcDaliPopupDisplayStateSignal(void) { ToolkitTestApplication application; // Exceptions require ToolkitTestApplication - tet_infoline(" UtcDaliPopupSetStateSlow"); + tet_infoline( " UtcDaliPopupDisplayStateSignal" ); // Create the Popup actor Popup popup = Popup::New(); + ConnectStateSignals( popup ); - ImageActor backgroundImage = CreateSolidColorActor( Color::RED ); - popup.SetBackgroundImage(backgroundImage); + popup.SetProperty( Toolkit::Popup::Property::ANIMATION_DURATION, 1.0f ); + popup.SetDisplayState( Popup::SHOWN ); + DALI_TEST_EQUALS( Popup::SHOWING, popup.GetDisplayState(), TEST_LOCATION ); + DALI_TEST_EQUALS( gPopupState, Popup::SHOWING, TEST_LOCATION ); - // Showing/Hiding popup, results in all child Actors being - // connected/disconnected from the stage. - DALI_TEST_CHECK( !backgroundImage.OnStage() ); - popup.SetState(Popup::POPUP_SHOW, 0.0f); - DALI_TEST_CHECK( backgroundImage.OnStage() ); + // Wait for a while (allow animation to complete), and then check state. + for( int i = 0; i < RENDER_ANIMATION_TEST_DURATION_FRAMES; i++) + { + application.SendNotification(); + application.Render( RENDER_FRAME_INTERVAL ); + } + + DALI_TEST_EQUALS( Popup::SHOWN, popup.GetDisplayState(), TEST_LOCATION ); + DALI_TEST_EQUALS( gPopupState, Popup::SHOWN, TEST_LOCATION ); // Hide slowly - popup.SetState(Popup::POPUP_HIDE); + popup.SetDisplayState( Popup::HIDDEN ); + DALI_TEST_EQUALS( Popup::HIDING, popup.GetDisplayState(), TEST_LOCATION ); + DALI_TEST_EQUALS( gPopupState, Popup::HIDING, TEST_LOCATION ); // Wait for a while (allow animation to complete), and then check state. - for(int i = 0; i < RENDER_ANIMATION_TEST_DURATION_FRAMES; i++) + for( int i = 0; i < RENDER_ANIMATION_TEST_DURATION_FRAMES; i++) { application.SendNotification(); - application.Render(RENDER_FRAME_INTERVAL); + application.Render( RENDER_FRAME_INTERVAL ); } - DALI_TEST_CHECK( !backgroundImage.OnStage() ); + DALI_TEST_EQUALS( Popup::HIDDEN, popup.GetDisplayState(), TEST_LOCATION ); + DALI_TEST_EQUALS( gPopupState, Popup::HIDDEN, TEST_LOCATION ); + END_TEST; } - - int UtcDaliPopupShowHide(void) { ToolkitTestApplication application; // Exceptions require ToolkitTestApplication @@ -292,40 +493,32 @@ int UtcDaliPopupShowHide(void) // Create the Popup actor Popup popup = Popup::New(); - popup.HiddenSignal().Connect( &OnPopupHidden ); - - ImageActor backgroundImage = CreateSolidColorActor( Color::RED ); - popup.SetBackgroundImage(backgroundImage); + ConnectStateSignals( popup ); + Actor container = Actor::New(); PushButton button1 = PushButton::New(); PushButton button2 = PushButton::New(); - button1.SetSize(DEFAULT_BUTTON_SIZE.GetVectorXY()); - popup.AddButton(button1); - button2.SetSize(DEFAULT_BUTTON_SIZE.GetVectorXY()); - popup.AddButton(button2); - - // Showing/Hiding popup, results in all child Actors being - // connected/disconnected from the stage. - DALI_TEST_CHECK( !backgroundImage.OnStage() ); + button1.SetSize( DEFAULT_BUTTON_SIZE.GetVectorXY() ); + button2.SetSize( DEFAULT_BUTTON_SIZE.GetVectorXY() ); + container.Add( button1 ); + container.Add( button2 ); + popup.SetFooter( container ); // Show // Note: in most popup animation implementations show would result in // popup being onstage immediately following Show(). However we can't // assume for all. e.g. If one creates a animation with a delay. - popup.Show(); + popup.SetDisplayState( Popup::SHOWN ); // Wait for a while (allow animation to complete), and then check state. for(int i = 0; i < RENDER_ANIMATION_TEST_DURATION_FRAMES; i++) { application.SendNotification(); - application.Render(RENDER_FRAME_INTERVAL); + application.Render( RENDER_FRAME_INTERVAL ); } - DALI_TEST_CHECK( backgroundImage.OnStage() ); - // Hide - gHidden = false; - popup.Hide(); + popup.SetDisplayState( Popup::HIDDEN ); // Wait for a while (allow animation to complete), and then check state. for(int i = 0; i < RENDER_ANIMATION_TEST_DURATION_FRAMES; i++) @@ -334,12 +527,11 @@ int UtcDaliPopupShowHide(void) application.Render(RENDER_FRAME_INTERVAL); } - DALI_TEST_CHECK( !backgroundImage.OnStage() ); - DALI_TEST_CHECK( gHidden ); + DALI_TEST_EQUALS( gPopupState, Popup::HIDDEN, TEST_LOCATION ); END_TEST; } -int UtcDaliPopupShowHideTail(void) +int UtcDaliPopupPropertyTailVisibility(void) { ToolkitTestApplication application; // Exceptions require ToolkitTestApplication tet_infoline(" UtcDaliPopupShowHideTail"); @@ -347,37 +539,48 @@ int UtcDaliPopupShowHideTail(void) // Create the Popup actor Popup popup = Popup::New(); Stage::GetCurrent().Add( popup ); - popup.SetState(Popup::POPUP_SHOW, 0.0f); - popup.HideTail(); - int withoutTailCount = DescendentCount(popup); + popup.SetProperty( Popup::Property::TAIL_VISIBILITY, false ); + popup.SetDisplayState( Popup::SHOWN ); + + int withoutTailCount = DescendentCount( popup ); + + popup.SetDisplayState( Popup::HIDDEN ); - popup.ShowTail(ParentOrigin::BOTTOM_CENTER); - int withTailCount = DescendentCount(popup); + popup.SetProperty( Popup::Property::TAIL_POSITION, "BOTTOM_CENTER" ); + popup.SetProperty( Popup::Property::TAIL_VISIBILITY, true ); + popup.SetDisplayState( Popup::SHOWN ); + + int withTailCount = DescendentCount( popup ); // There should be more actors if the Tail has been added. DALI_TEST_CHECK( withTailCount > withoutTailCount ); // Hide again - popup.HideTail(); + popup.SetDisplayState( Popup::HIDDEN ); + popup.SetProperty( Popup::Property::TAIL_VISIBILITY, false ); + popup.SetDisplayState( Popup::SHOWN ); int withoutTailCount2 = DescendentCount(popup); DALI_TEST_CHECK( withTailCount > withoutTailCount2 ); END_TEST; } -int UtcDaliPopupOnTouchedOutside(void) +int UtcDaliPopupOnTouchedOutsideSignal(void) { ToolkitTestApplication application; // Exceptions require ToolkitTestApplication tet_infoline(" UtcDaliPopupOnTouchedOutside"); // Create the Popup actor Popup popup = Popup::New(); + popup.SetParentOrigin( ParentOrigin::CENTER ); + popup.SetAnchorPoint( ParentOrigin::CENTER ); + popup.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS); + popup.SetSize( 50.0f, 50.0f ); + popup.SetProperty( Popup::Property::ANIMATION_DURATION, 0.0f ); Stage::GetCurrent().Add( popup ); - popup.SetParentOrigin(ParentOrigin::CENTER); - popup.SetAnchorPoint(ParentOrigin::CENTER); - popup.SetState(Popup::POPUP_SHOW, 0.0f); popup.OutsideTouchedSignal().Connect( &OnPopupTouchedOutside ); + popup.SetDisplayState( Popup::SHOWN ); application.SendNotification(); application.Render(); @@ -399,6 +602,113 @@ int UtcDaliPopupOnTouchedOutside(void) application.SendNotification(); application.Render(); - DALI_TEST_CHECK(gTouchedOutside); + DALI_TEST_CHECK( gTouchedOutside ); END_TEST; } + +int UtcDaliPopupPropertyAutoHide(void) +{ + ToolkitTestApplication application; // Exceptions require ToolkitTestApplication + tet_infoline( " UtcDaliPopupPropertyAutoHide" ); + + // Create the Popup actor + Popup popup = Popup::New(); + ConnectStateSignals( popup ); + + Actor container = Actor::New(); + PushButton button1 = PushButton::New(); + button1.SetSize( DEFAULT_BUTTON_SIZE.GetVectorXY() ); + container.Add( button1 ); + popup.SetFooter( container ); + + popup.SetProperty( Popup::Property::ANIMATION_DURATION, 0.0f ); + popup.SetProperty( Popup::Property::AUTO_HIDE_DELAY, 200 ); + + Stage::GetCurrent().Add( popup ); + + DALI_TEST_EQUALS( gPopupState, Popup::HIDDEN, TEST_LOCATION ); + + // Show + // Note: in most popup animation implementations show would result in + // popup being onstage immediately following Show(). However we can't + // assume for all. e.g. If one creates a animation with a delay. + popup.SetDisplayState( Popup::SHOWN ); + + DALI_TEST_EQUALS( gPopupState, Popup::SHOWN, TEST_LOCATION ); + + for( int i = 0; i < RENDER_ANIMATION_TEST_DURATION_FRAMES; i++ ) + { + application.SendNotification(); + application.Render( RENDER_FRAME_INTERVAL ); + } + + // Force the timer used by the popup to expire, + // this will cause the popup to hide automatically. + Dali::Timer timer = Timer::New( 0 ); + timer.MockEmitSignal(); + + DALI_TEST_EQUALS( gPopupState, Popup::HIDDEN, TEST_LOCATION ); + + END_TEST; +} + +/* + * This test checks all animation modes to confirm they all trigger all display states at the expected times. + */ +int UtcDaliPopupPropertyAnimationMode(void) +{ + ToolkitTestApplication application; // Exceptions require ToolkitTestApplication + tet_infoline( " UtcDaliPopupPropertyAnimationMode" ); + + // Create the Popup actor + Popup popup = Popup::New(); + ConnectStateSignals( popup ); + popup.SetTitle( TextLabel::New( "Title" ) ); + Stage::GetCurrent().Add( popup ); + + std::string animationModes[] = { "NONE", "ZOOM", "FADE", "CUSTOM" }; + + // Try both default and zero animation duration, as zero has a special case for some animation types. + for( int j = 0; j <= 1; j++ ) + { + // On the second loop, set duration to zero. + if( j == 1 ) + { + popup.SetProperty( Popup::Property::ANIMATION_DURATION, 0.0f ); + } + + // Loop through 4 animation modes. + for( int i = 0; i < 4; i++ ) + { + popup.SetProperty( Popup::Property::ANIMATION_MODE, animationModes[i] ); + + std::string checkMode; + DALI_TEST_CHECK( popup.GetProperty( Popup::Property::ANIMATION_MODE ).Get( checkMode ) ) + + DALI_TEST_EQUALS( checkMode, animationModes[i], TEST_LOCATION ); + + popup.SetDisplayState( Popup::SHOWN ); + + // Only wait for animation if it isn't instant. + if( j == 0 ) + { + DALI_TEST_EQUALS( gPopupState, Popup::SHOWING, TEST_LOCATION ); + WaitAnimation( application ); + } + + DALI_TEST_EQUALS( gPopupState, Popup::SHOWN, TEST_LOCATION ); + popup.SetDisplayState( Popup::HIDDEN ); + + if( j == 0 ) + { + DALI_TEST_EQUALS( gPopupState, Popup::HIDING, TEST_LOCATION ); + WaitAnimation( application ); + } + + DALI_TEST_EQUALS( gPopupState, Popup::HIDDEN, TEST_LOCATION ); + } + } + + END_TEST; +} + diff --git a/dali-toolkit/devel-api/controls/popup/confirmation-popup.cpp b/dali-toolkit/devel-api/controls/popup/confirmation-popup.cpp new file mode 100644 index 0000000..de7e116 --- /dev/null +++ b/dali-toolkit/devel-api/controls/popup/confirmation-popup.cpp @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// CLASS HEADER + +#include + +// INTERNAL INCLUDES + +#include +#include + +using namespace Dali; + +namespace Dali +{ + +namespace Toolkit +{ + + +ConfirmationPopup::ConfirmationPopup() +: Popup() +{ +} + +ConfirmationPopup::ConfirmationPopup( Internal::ConfirmationPopup& implementation ) +: Popup( implementation ) +{ +} + +ConfirmationPopup::ConfirmationPopup( const ConfirmationPopup& confirmationPopup ) +: Popup( confirmationPopup ) +{ +} + +ConfirmationPopup& ConfirmationPopup::operator=( const ConfirmationPopup& confirmationPopup ) +{ + if( &confirmationPopup != this ) + { + Popup::operator=( confirmationPopup ); + } + return *this; +} + +ConfirmationPopup::ConfirmationPopup( Dali::Internal::CustomActor* internal ) +: Popup( internal ) +{ + VerifyCustomActorPointer( internal ); +} + +ConfirmationPopup::~ConfirmationPopup() +{ +} + +ConfirmationPopup ConfirmationPopup::New() +{ + return Internal::ConfirmationPopup::New(); +} + +ConfirmationPopup ConfirmationPopup::DownCast( BaseHandle handle ) +{ + return Control::DownCast( handle ); +} + + +} // namespace Toolkit + +} // namespace Dali diff --git a/dali-toolkit/devel-api/controls/popup/confirmation-popup.h b/dali-toolkit/devel-api/controls/popup/confirmation-popup.h new file mode 100644 index 0000000..621eaec --- /dev/null +++ b/dali-toolkit/devel-api/controls/popup/confirmation-popup.h @@ -0,0 +1,148 @@ +#ifndef __DALI_TOOLKIT_CONFIRMATION_POPUP_H__ +#define __DALI_TOOLKIT_CONFIRMATION_POPUP_H__ + +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// INTERNAL INCLUDES +#include "popup.h" + +namespace Dali +{ + +namespace Toolkit +{ + +// Forward declarations +namespace Internal DALI_INTERNAL +{ +class ConfirmationPopup; +} + +/** + * @brief The ConfirmationPopup widget provides a simple interface to the Popup widget in which to + * create common use-case popups. + * + * ConfirmationPopup will automatically provide signals for 1 or 2 buttons. + * These signals are dynamically created. The controls (typically PushButtons) must be named as per the example below. + * + * Please see the programming guide for a detailed description of the ConfirmationPopup including examples. + * + * Signals (these are dynamically created upon connect). + * | %Signal Name | Actor name to connect to | Property to set signal type (eg clicked) | + * |-----------------------|--------------------------|------------------------------------------| + * | control-signal-ok | control-ok | connect-signal-ok-selected | + * | control-signal-cancel | control-cancel | connect-signal-cancel-selected | + */ +class DALI_IMPORT_API ConfirmationPopup : public Popup +{ +public: + + /** + * @brief The start and end property ranges for this control. + */ + enum PropertyRange + { + PROPERTY_START_INDEX = Control::CONTROL_PROPERTY_END_INDEX + 1 + DEFAULT_PROPERTY_MAX_COUNT_PER_DERIVATION + 1, + PROPERTY_END_INDEX = PROPERTY_START_INDEX + 1000 ///< Reserve property indices + }; + + /** + * @brief An enumeration of properties belonging to the ConfirmationPopup class. + */ + struct Property + { + enum + { + CONNECT_SIGNAL_OK_SELECTED = PROPERTY_START_INDEX, ///< name "connect-signal-ok-selected", type std::string + CONNECT_SIGNAL_CANCEL_SELECTED ///< name "connect-signal-cancel-selected", type std::string + }; + }; + + /** + * @brief An enumeration to use as indices to reference buttons. + */ + enum ControlIndex + { + CONTROL_OK = 0, ///< Index of control 1 + CONTROL_CANCEL, ///< Index of control 2 + }; + + /** + * @brief Create an uninitialized ConfirmationPopup; this can be initialized with ConfirmationPopup::New(). + * + * Calling member functions with an uninitialized Dali::Object is not allowed. + */ + ConfirmationPopup(); + + /** + * @brief Copy constructor. + */ + ConfirmationPopup( const ConfirmationPopup& confirmationPopup ); + + /** + * @brief Assignment operator. + */ + ConfirmationPopup& operator=( const ConfirmationPopup& confirmationPopup ); + + /** + * @brief Destructor. + * + * This is non-virtual since derived types must not contain data or virtual methods. + */ + ~ConfirmationPopup(); + + /** + * @brief Create an initialized ConfirmationPopup. + * + * @return A handle to a newly allocated Dali resource. + */ + static ConfirmationPopup New(); + + /** + * @brief Downcast an Object handle to ConfirmationPopup. + * + * If handle points to a ConfirmationPopup the downcast produces valid + * handle. If not the returned handle is left uninitialized. + * + * @param[in] handle Handle to an object + * @return handle to a ConfirmationPopup or an uninitialized handle + */ + static ConfirmationPopup DownCast( BaseHandle handle ); + +public: // Not intended for application developers + + /** + * @brief Creates a handle using the Toolkit::Internal implementation. + * + * @param[in] implementation The Control implementation. + */ + DALI_INTERNAL ConfirmationPopup( Internal::ConfirmationPopup& implementation ); + + /** + * @brief Allows the creation of this Control from an Internal::CustomActor pointer. + * + * @param[in] internal A pointer to the internal CustomActor. + */ + DALI_INTERNAL ConfirmationPopup( Dali::Internal::CustomActor* internal ); +}; + +} // namespace Toolkit + +} // namespace Dali + +#endif // __DALI_TOOLKIT_CONFIRMATION_POPUP_H__ diff --git a/dali-toolkit/devel-api/controls/popup/popup.cpp b/dali-toolkit/devel-api/controls/popup/popup.cpp index 9b74a3d..f3669fa 100644 --- a/dali-toolkit/devel-api/controls/popup/popup.cpp +++ b/dali-toolkit/devel-api/controls/popup/popup.cpp @@ -20,7 +20,6 @@ // INTERNAL INCLUDES #include -#include using namespace Dali; @@ -77,69 +76,73 @@ Popup Popup::DownCast( BaseHandle handle ) return Control::DownCast(handle); } -void Popup::SetBackgroundImage( Actor image ) +// Properties: + +void Popup::SetTitle( Actor titleActor ) { - GetImpl(*this).SetBackgroundImage( image ); + GetImpl( *this ).SetTitle( titleActor ); } -void Popup::SetTitle( const std::string& text ) +Actor Popup::GetTitle() const { - GetImpl(*this).SetTitle( text ); + return GetImpl( *this ).GetTitle(); } -std::string Popup::GetTitle() const +void Popup::SetContent( Actor content ) { - return GetImpl(*this).GetTitle(); + GetImpl( *this ).SetContent( content ); } -void Popup::AddButton( Button button ) +Actor Popup::GetContent() const { - GetImpl(*this).AddButton( button ); + return GetImpl( *this ).GetContent(); } -void Popup::SetState( PopupState state ) +void Popup::SetFooter( Actor footer ) { - GetImpl(*this).SetState( state ); + GetImpl( *this ).SetFooter( footer ); } -void Popup::SetState( PopupState state, float duration ) +Actor Popup::GetFooter() const { - GetImpl(*this).SetState( state, duration ); + return GetImpl( *this ).GetFooter(); } -Popup::PopupState Popup::GetState() const +void Popup::SetDisplayState( Toolkit::Popup::DisplayState displayState ) { - return GetImpl(*this).GetState(); + GetImpl( *this ).SetDisplayState( displayState ); } -void Popup::Show() +Toolkit::Popup::DisplayState Popup::GetDisplayState() const { - GetImpl(*this).SetState( POPUP_SHOW ); + return GetImpl( *this ).GetDisplayState(); } -void Popup::Hide() +// Signals: + +Popup::TouchedOutsideSignalType& Popup::OutsideTouchedSignal() { - GetImpl(*this).SetState( POPUP_HIDE ); + return GetImpl( *this ).OutsideTouchedSignal(); } -void Popup::ShowTail(const Vector3& position) +Popup::DisplayStateChangeSignalType& Popup::ShowingSignal() { - GetImpl(*this).ShowTail( position ); + return GetImpl( *this ).ShowingSignal(); } -void Popup::HideTail() +Popup::DisplayStateChangeSignalType& Popup::ShownSignal() { - GetImpl(*this).HideTail(); + return GetImpl( *this ).ShownSignal(); } -Popup::TouchedOutsideSignalType& Popup::OutsideTouchedSignal() +Popup::DisplayStateChangeSignalType& Popup::HidingSignal() { - return GetImpl(*this).OutsideTouchedSignal(); + return GetImpl( *this ).HidingSignal(); } -Popup::HiddenSignalType& Popup::HiddenSignal() +Popup::DisplayStateChangeSignalType& Popup::HiddenSignal() { - return GetImpl(*this).HiddenSignal(); + return GetImpl( *this ).HiddenSignal(); } } // namespace Toolkit diff --git a/dali-toolkit/devel-api/controls/popup/popup.h b/dali-toolkit/devel-api/controls/popup/popup.h index 32322e2..40b4df3 100644 --- a/dali-toolkit/devel-api/controls/popup/popup.h +++ b/dali-toolkit/devel-api/controls/popup/popup.h @@ -32,40 +32,24 @@ namespace Internal DALI_INTERNAL class Popup; } -class Button; - /** - * @brief Popup contains content that can come into focus when activated, and out of focus when deactivated. - * - * Content: - * - * The content within a popup consists of: - * - * 1. Title - * 2. Buttons - * 3. Background/Frame (i.e. Scale-9 image) - * 4. Custom Content (Actors) - * - * All of which are optional. + * @brief The Popup widget provides a configurable pop-up dialog with built-in layout of three main fields. * - * States: + * Fields: + * - Background Image + * - Title + * - Content + * - Footer * - * A popup can be in a number of states: - * - * 1. HIDE (invisible) - * 2. SHOW (visible at normal size) - * 3. SHOW_MAXIMIZED (visible occupying full parent size) - * 4. Or custom defined. - * - * Transition Effects: - * - * A popup can use various custom transition effects, e.g. - * Alpha fade, Scaling transition, position/rotation, shader effects. + * Please see the programming guide for a detailed description of the Popup including examples. * * Signals * | %Signal Name | Method | * |-------------------|------------------------------| * | touched-outside | @ref OutsideTouchedSignal() | + * | showing | @ref ShowingSignal() | + * | shown | @ref ShownSignal() | + * | hiding | @ref HidingSignal() | * | hidden | @ref HiddenSignal() | */ class DALI_IMPORT_API Popup : public Control @@ -74,27 +58,80 @@ class DALI_IMPORT_API Popup : public Control public: /** - * @brief Current popup state. + * @brief The start and end property ranges for this control. */ - enum PopupState + enum PropertyRange { - POPUP_NONE, ///< Init status - POPUP_HIDE, ///< Hidden (not visible) - POPUP_SHOW, ///< Shown (visible in default size) + PROPERTY_START_INDEX = Control::CONTROL_PROPERTY_END_INDEX + 1, + PROPERTY_END_INDEX = PROPERTY_START_INDEX + 1000 ///< Reserve property indices }; - typedef Signal< void () > TouchedOutsideSignalType; ///< Touched outside signal type. - typedef Signal< void () > HiddenSignalType; ///< Hidden signal type. + /** + * @brief An enumeration of properties belonging to the Popup class. + */ + struct Property + { + enum + { + TITLE = PROPERTY_START_INDEX, ///< name "title", type Property::Map + CONTENT, ///< name "content", type Property::Map + FOOTER, ///< name "footer", type Property::Map + DISPLAY_STATE, ///< name "display-state", type std::string + TOUCH_TRANSPARENT, ///< name "touch-transparent", type bool + TAIL_VISIBILITY, ///< name "tail-visibility", type bool + TAIL_POSITION, ///< name "tail-position", type Vector3 + CONTEXTUAL_MODE, ///< name "contextual-mode", type std::string + ANIMATION_DURATION, ///< name "animation-duration", type float + ANIMATION_MODE, ///< name "animation-mode", type std::string + ENTRY_ANIMATION, ///< name "entry-animation", type Property::Map + EXIT_ANIMATION, ///< name "exit-animation", type Property::Map + AUTO_HIDE_DELAY, ///< name "auto-hide-delay", type int + BACKING_ENABLED, ///< name "backing-enabled", type bool + BACKING_COLOR, ///< name "backing-color", type Vector4 + POPUP_BACKGROUND_IMAGE, ///< name "popup-background-image", type std::string + TAIL_UP_IMAGE, ///< name "tail-up-image", type std::string + TAIL_DOWN_IMAGE, ///< name "tail-down-image", type std::string + TAIL_LEFT_IMAGE, ///< name "tail-left-image", type std::string + TAIL_RIGHT_IMAGE, ///< name "tail-right-image", type std::string + }; + }; /** - * @brief Signal emitted when user has touched outside of the Dialog. + * The display states of the Popup. */ - TouchedOutsideSignalType& OutsideTouchedSignal(); + enum DisplayState + { + SHOWING, ///< The popup is transitioning in + SHOWN, ///< The popup is fully shown + HIDING, ///< The popup is transitioning out + HIDDEN ///< The popup is fully hidden + }; /** - * @brief Signal emitted when popup has been hidden. + * The animation mode within popup. + * Choose from a predefined mode or "CUSTOM" to use the ANIMATION_IN and ANIMATION_OUT properties. */ - HiddenSignalType& HiddenSignal(); + enum AnimationMode + { + NONE, ///< No animation. + ZOOM, ///< Popup zooms in and out animating the scale property. + FADE, ///< Popup fades in and out. + CUSTOM ///< Use the EntryAnimation and ExitAnimation animation properties. + }; + + /** + * Types of contextual layout. + * The Popup is positioned adjacent to it's parent in the direction specified by this mode. + * NON_CONTEXTUAL disables any contextual positioning. + */ + enum ContextualMode + { + NON_CONTEXTUAL, + ABOVE, + RIGHT, + BELOW, + LEFT + }; public: @@ -104,6 +141,20 @@ public: Popup(); /** + * @brief Create the Popup control. + * + * @return A handle to the Popup control. + */ + static Popup New(); + + /** + * @brief Destructor + * + * This is non-virtual since derived Handle types must not contain data or virtual methods. + */ + ~Popup(); + + /** * @brief Copy constructor. * * Creates another handle that points to the same real object @@ -121,20 +172,6 @@ public: Popup& operator=( const Popup& handle ); /** - * @brief Destructor - * - * This is non-virtual since derived Handle types must not contain data or virtual methods. - */ - ~Popup(); - - /** - * @brief Create the Poup control. - * - * @return A handle to the Popup control. - */ - static Popup New(); - - /** * @brief Downcast an Object handle to Popup. * * If handle points to a Popup the @@ -147,102 +184,108 @@ public: public: /** - * @brief Sets the background image for this Popup. - * - * The background is resized (stretched according to scale settings), - * to the size of the Popup. + * @brief Sets a title for this Popup. * - * @param[in] image The Background ImageActor to cover background + * @param[in] titleActor Any actor can be specified when using this method. */ - void SetBackgroundImage( Actor image ); + void SetTitle( Actor titleActor ); /** - * @brief Sets a title for this Popup. + * @brief Gets the title actor for this Popup. * - * By default a TextView is created with following settings: black color, split-by-word multi-line policy and split exceed policy. - * - * @param[in] text The text to appear as the heading for this Popup + * @return The actor representing the title is returned. */ - void SetTitle( const std::string& text ); + Actor GetTitle() const; /** - * @brief Gets the text (TextView) for this Popup. + * @brief Sets the content actor. + * This can any actor type or heirarchy of actors. * - * @return The text to appear as the heading for this Popup + * @param[in] content The actor to use. */ - std::string GetTitle() const; + void SetContent( Actor content ); /** - * @brief Adds a button to this Popup. + * @brief Gets the actor currently used for the content. * - * Buttons are added to the bottom of the Popup and Centered. + * @return The content actor. + */ + Actor GetContent() const; + + /** + * @brief Sets the actor to use for a footer in this Popup. * - * By default the first button added will have the focus, and the focus will - * shift to other buttons based on the sequence in which they are added to the popup. + * @param[in] control The footer actor to be added to this Popup + */ + void SetFooter( Actor footer ); + + /** + * @brief Gets the footer actor. * - * @param[in] button The button to be added to this Popup + * @return The footer actor. */ - void AddButton( Button button ); + Actor GetFooter() const; /** - * @brief Sets state of Popup, such as HIDE, and SHOW. + * @brief Sets the display state of Popup. + * + * There are 4 total display states. + * Only 2 can be set, but all four can be read for better inspection of the current popup state. + * + * The other two states are getable, but not setable and are there for consistency. * - * The Popup will instantaneously jump to this state. + * | Value | Setting the state | Getting the state | + * |----------|--------------------------------|--------------------------------| + * | SHOWN | Show the popup | The popup is fully shown | + * | HIDDEN | Hide the popup | The popup is fully hidden | + * | SHOWING | | The popup is transitioning in | + * | HIDING | | The popup is transitioning out | * - * @param[in] state The state of the popup + * All 4 state changes cause notifications via 4 respective signals that can be connected to. + * @see GetDisplayState() + * + * @param[in] displayState The desired display state to change to. */ - void SetState( PopupState state ); + void SetDisplayState( Toolkit::Popup::DisplayState displayState ); /** - * @brief Sets state of Popup, such as HIDE, and SHOW. + * @brief Gets the current state of the popup. * - * The Popup will smoothly animate to this state. + * This will also show if the popup is in the process of showing or hiding. * - * @param[in] state The state of the popup - * @param[in] duration The time to animate to this new state. + * @return The current state of the popup. */ - void SetState( PopupState state, float duration ); + Toolkit::Popup::DisplayState GetDisplayState() const; + +public: + + typedef Signal< void () > TouchedOutsideSignalType; ///< Touched outside signal type. + typedef Signal< void () > DisplayStateChangeSignalType; ///< Used for signals emitted when the displayed state changes. /** - * @brief Gets the state of the popup. - * - * @return The state of the popup. + * @brief Signal emitted when user has touched outside of the Dialog. */ - PopupState GetState() const; + TouchedOutsideSignalType& OutsideTouchedSignal(); /** - * @brief Shows the popup. - * - * The Popup will animate to the SHOW state + * @brief Signal emitted when the Popup is starting to be shown. */ - void Show(); + DisplayStateChangeSignalType& ShowingSignal(); /** - * @brief Hides the popup. - * - * The Popup will animate to the HIDE state + * @brief Signal emitted when the Popup has been fully displayed. */ - void Hide(); + DisplayStateChangeSignalType& ShownSignal(); /** - * @brief Shows the tail. - * - * The tail position is specified relative to it's Parent. - * To display at top center for instace, pass: - * - * ParentOrigin::TOP_CENTER - * - * @note The tail images are defined inside PopupStyle as - * tailUpImage, tailDownImage, tailLeftImage, and tailRightImage - * - * @param[in] position A position around the perimeter of the Parent. + * @brief Signal emitted when the Popup is starting to be hidden. */ - void ShowTail(const Vector3& position); + DisplayStateChangeSignalType& HidingSignal(); /** - * @brief Hides the tail. + * @brief Signal emitted when the Popup has been completely hidden. */ - void HideTail(); + DisplayStateChangeSignalType& HiddenSignal(); public: // Not intended for application developers @@ -251,7 +294,7 @@ public: // Not intended for application developers * * @param[in] implementation The Control implementation. */ - DALI_INTERNAL Popup(Internal::Popup& implementation); + DALI_INTERNAL Popup( Internal::Popup& implementation ); /** * @brief Allows the creation of this Control from an Internal::CustomActor pointer. diff --git a/dali-toolkit/devel-api/file.list b/dali-toolkit/devel-api/file.list index 71202e2..c5187c3 100755 --- a/dali-toolkit/devel-api/file.list +++ b/dali-toolkit/devel-api/file.list @@ -12,6 +12,7 @@ devel_api_src_files = \ $(devel_api_src_dir)/controls/page-turn-view/page-turn-landscape-view.cpp \ $(devel_api_src_dir)/controls/page-turn-view/page-turn-portrait-view.cpp \ $(devel_api_src_dir)/controls/page-turn-view/page-turn-view.cpp \ + $(devel_api_src_dir)/controls/popup/confirmation-popup.cpp \ $(devel_api_src_dir)/controls/popup/popup.cpp \ $(devel_api_src_dir)/controls/shadow-view/shadow-view.cpp \ $(devel_api_src_dir)/controls/slider/slider.cpp \ @@ -53,6 +54,7 @@ devel_api_page_turn_view_header_files = \ $(devel_api_src_dir)/controls/page-turn-view/page-turn-view.h devel_api_popup_header_files = \ + $(devel_api_src_dir)/controls/popup/confirmation-popup.h \ $(devel_api_src_dir)/controls/popup/popup.h devel_api_shadow_view_header_files = \ diff --git a/dali-toolkit/internal/controls/popup/confirmation-popup-impl.cpp b/dali-toolkit/internal/controls/popup/confirmation-popup-impl.cpp new file mode 100644 index 0000000..cb0c9e9 --- /dev/null +++ b/dali-toolkit/internal/controls/popup/confirmation-popup-impl.cpp @@ -0,0 +1,258 @@ +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// CLASS HEADER +#include "confirmation-popup-impl.h" + +// EXTERNAL INCLUDES +#include +#include +#include +#include +#include + +namespace Dali +{ + +namespace Toolkit +{ + +namespace Internal +{ + +namespace +{ + +/* + * This struct is used to define all details required about a dynamically created signal. + */ +struct ControlDetailType +{ + const char* signalName; + const char* controlName; + const char* connectSignalPropertyName; +}; + +/* A table of all control details. These details are kept in one place for maintainability. + * Name of the signal | Name of the control | Name of the property which lets the + * the app-developer | which will provide | app developer choose which signal + * can connect to. | the signal. | within the control to connect to. */ +const ControlDetailType ControlDetails[] = { + { "control-signal-ok", "control-ok", "connect-signal-ok-selected" }, + { "control-signal-cancel", "control-cancel", "connect-signal-cancel-selected" }, +}; +const unsigned int ControlDetailsCount = sizeof( ControlDetails ) / sizeof( ControlDetails[0] ); + +// To give sensible default behaviour to save the connect signal properties being set. +const char* const DEFAULT_CONNECT_SIGNAL_NAME = "clicked"; + +BaseHandle Create() +{ + return Toolkit::ConfirmationPopup::New(); +} + +DALI_TYPE_REGISTRATION_BEGIN( Toolkit::ConfirmationPopup, Toolkit::Popup, Create ) + +DALI_PROPERTY_REGISTRATION( Toolkit, ConfirmationPopup, ControlDetails[0].connectSignalPropertyName, STRING, CONNECT_SIGNAL_OK_SELECTED ) +DALI_PROPERTY_REGISTRATION( Toolkit, ConfirmationPopup, ControlDetails[1].connectSignalPropertyName, STRING, CONNECT_SIGNAL_CANCEL_SELECTED ) + +// Note: We do not use the macros for signal registration as we do not want to redefine the signal name strings. +// We have predefined them for optimal signal name to control name lookup. +SignalConnectorType signalConnector1( typeRegistration, ControlDetails[0].signalName, &Toolkit::Internal::ConfirmationPopup::DoConnectSignal ); +SignalConnectorType signalConnector2( typeRegistration, ControlDetails[1].signalName, &Toolkit::Internal::ConfirmationPopup::DoConnectSignal ); + +DALI_TYPE_REGISTRATION_END() + +} // Unnamed namespace + +Dali::Toolkit::ConfirmationPopup ConfirmationPopup::New() +{ + // Create the implementation, temporarily owned on stack. + IntrusivePtr< ConfirmationPopup > internalConfirmationPopup = new ConfirmationPopup(); + + // Pass ownership to CustomActor + Dali::Toolkit::ConfirmationPopup confirmationPopup( *internalConfirmationPopup ); + + // Second-phase initialisation of the implementation. + // This can only be done after the CustomActor connection has been made... + internalConfirmationPopup->Initialize(); + + return confirmationPopup; +} + +ConfirmationPopup::ConfirmationPopup() +: Toolkit::Internal::Popup() +{ + mControlSignals.reserve( MAXIMUM_NUMBER_OF_CONTROLS ); + mControlSignalNames[ Toolkit::ConfirmationPopup::CONTROL_OK ] = DEFAULT_CONNECT_SIGNAL_NAME; + mControlSignalNames[ Toolkit::ConfirmationPopup::CONTROL_CANCEL ] = DEFAULT_CONNECT_SIGNAL_NAME; +} + +ConfirmationPopup::~ConfirmationPopup() +{ + for( SignalContainerType::iterator i = mControlSignals.begin(); i != mControlSignals.end(); ++i ) + { + delete ( i->second ); + } + mControlSignals.clear(); +} + +void ConfirmationPopup::SetProperty( BaseObject* object, Property::Index propertyIndex, const Property::Value& value ) +{ + Toolkit::ConfirmationPopup popup = Toolkit::ConfirmationPopup::DownCast( Dali::BaseHandle( object ) ); + + if ( popup ) + { + ConfirmationPopup& popupImpl( GetDerivedImplementation( popup ) ); + + switch ( propertyIndex ) + { + case Toolkit::ConfirmationPopup::Property::CONNECT_SIGNAL_OK_SELECTED: + { + popupImpl.SetControlSignalName( Toolkit::ConfirmationPopup::CONTROL_OK, value.Get< std::string >() ); + break; + } + case Toolkit::ConfirmationPopup::Property::CONNECT_SIGNAL_CANCEL_SELECTED: + { + popupImpl.SetControlSignalName( Toolkit::ConfirmationPopup::CONTROL_CANCEL, value.Get< std::string >() ); + break; + } + } + } +} + +Property::Value ConfirmationPopup::GetProperty( BaseObject* object, Property::Index propertyIndex ) +{ + Property::Value value; + + Toolkit::ConfirmationPopup popup = Toolkit::ConfirmationPopup::DownCast( Dali::BaseHandle( object ) ); + + if ( popup ) + { + ConfirmationPopup& popupImpl( GetDerivedImplementation( popup ) ); + + switch ( propertyIndex ) + { + case Toolkit::ConfirmationPopup::Property::CONNECT_SIGNAL_OK_SELECTED: + { + value = popupImpl.GetControlSignalName( Toolkit::ConfirmationPopup::CONTROL_OK ); + break; + } + case Toolkit::ConfirmationPopup::Property::CONNECT_SIGNAL_CANCEL_SELECTED: + { + value = popupImpl.GetControlSignalName( Toolkit::ConfirmationPopup::CONTROL_CANCEL ); + break; + } + } + } + + return value; +} + +void ConfirmationPopup::SetControlSignalName( const unsigned int controlNumber, const std::string& signalName ) +{ + if( controlNumber < ControlDetailsCount ) + { + mControlSignalNames[ controlNumber ] = signalName; + } +} + +std::string ConfirmationPopup::GetControlSignalName( unsigned int controlNumber ) const +{ + if( controlNumber < ControlDetailsCount ) + { + return mControlSignalNames[ controlNumber ]; + } + + return ""; +} + +bool ConfirmationPopup::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor ) +{ + Dali::BaseHandle handle( object ); + Toolkit::ConfirmationPopup popup = Toolkit::ConfirmationPopup::DownCast( handle ); + + // Look up the requested signal, attempting to create it dynamically if it doesn't exist. + SignalDelegate* signalDelegate = Dali::Toolkit::GetDerivedImplementation( popup ).GetControlSignal( signalName ); + if( signalDelegate ) + { + // The signal delegate was created successfully, attempt to connect it to a callback if specified. + // If none is specified, the creation is still successful as the signal delegate can connect at a later time. + if( functor ) + { + signalDelegate->Connect( tracker, functor ); + } + return true; + } + + // The signal could not be created. + return false; +} + +SignalDelegate* ConfirmationPopup::GetControlSignal( const std::string& signalName ) +{ + // Check if the specified signal name already exists. + SignalContainerType::iterator end = mControlSignals.end(); + for( SignalContainerType::iterator iter = mControlSignals.begin(); iter != end; ++iter ) + { + // Find the first non-connected signal by matching signal name. + if( ( signalName == iter->first ) && ( !iter->second->IsConnected() ) ) + { + // The requested signal (delegate) already exists, just return it. + return iter->second; + } + } + + // The signal doesn't exist, or it does but it's already connected to something else. + // To make a new connection to an existing signal, we need a new delegate, + // as delegates house a signal connection functor each. + // Check the signal name is valid and if so create the signal dynamically. + for( unsigned int i = 0; i < ControlDetailsCount; ++i ) + { + if( 0 == strcmp( signalName.c_str(), ControlDetails[ i ].signalName ) ) + { + // The signal name is valid, check the respective actor to connect to exists. + Actor connectActor = Self().FindChildByName( ControlDetails[ i ].controlName ); + if( connectActor ) + { + // The actor exists, set up a signal delegate that will allow the application developer + // to connect the actor signal directly to their callback. + // Note: We don't use the GetControlSignalName() here for speedup, as we know the array bound is capped. + SignalDelegate* signalDelegate = new SignalDelegate( connectActor, mControlSignalNames[ i ] ); + + // Store the delegate with the signal name so we know what signals have been dynamically created so far. + mControlSignals.push_back( std::make_pair( signalName, signalDelegate ) ); + + // Return the delegate to allow connection to the newly created signal. + return signalDelegate; + } + + // Signal name valid but could not connect to the control, + return NULL; + } + } + + // Signal name was not found (invalid). + return NULL; +} + + +} // namespace Internal + +} // namespace Toolkit + +} // namespace Dali diff --git a/dali-toolkit/internal/controls/popup/confirmation-popup-impl.h b/dali-toolkit/internal/controls/popup/confirmation-popup-impl.h new file mode 100644 index 0000000..45f23a9 --- /dev/null +++ b/dali-toolkit/internal/controls/popup/confirmation-popup-impl.h @@ -0,0 +1,180 @@ +#ifndef __DALI_TOOLKIT_INTERNAL_CONFIRMATION_POPUP_H__ +#define __DALI_TOOLKIT_INTERNAL_CONFIRMATION_POPUP_H__ + +/* + * Copyright (c) 2015 Samsung Electronics Co., Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +// EXTERNAL INCLUDES +#include +#include +#include + +// INTERNAL INCLUDES +#include "popup-impl.h" +#include + +namespace Dali +{ + +namespace Toolkit +{ + +namespace Internal +{ + +namespace +{ + +#define MAXIMUM_NUMBER_OF_CONTROLS 2 + +} + +/** + * ConfirmationPopup implementation class. + * + * \sa Dali::Toolkit::ConfirmationPopup + */ +class ConfirmationPopup : public Dali::Toolkit::Internal::Popup +{ +public: + + /** + * Create a new ConfirmationPopup. + * @return A smart-pointer to the newly allocated ConfirmationPopup. + */ + static Dali::Toolkit::ConfirmationPopup New(); + +protected: + + /** + * Construct a new ConfirmationPopup. + */ + ConfirmationPopup(); + + /** + * A reference counted object may only be deleted by calling Unreference() + */ + virtual ~ConfirmationPopup(); + +public: + + /** + * Called when a property of an object of this type is set. + * @param[in] object The object whose property is set. + * @param[in] propertyIndex The property index. + * @param[in] value The new property value. + */ + static void SetProperty( BaseObject* object, Property::Index propertyIndex, const Property::Value& value ); + + /** + * Called to retrieve a property of an object of this type. + * @param[in] object The object whose property is to be retrieved. + * @param[in] propertyIndex The property index. + * @return The current value of the property. + */ + static Property::Value GetProperty( BaseObject* object, Property::Index propertyIndex ); + + /** + * 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 ); + +private: + + /** + * This type houses a list of dynamically created signals. + */ + typedef std::vector< std::pair< std::string, SignalDelegate* > > SignalContainerType; + +private: + + /** + * Sets the name of the signal to connect to within the specified actor. + * + * @param[in] controlNumber The index of the control. + * @param[in] signalName The name of the signal to connect to. + */ + void SetControlSignalName( const unsigned int controlNumber, const std::string& signalName ); + + /** + * Gets the name of the signal to connect to within the specified actor. + * + * @param[in] controlNumber The index of the control. + * @return The name of the signal to connect to. + */ + std::string GetControlSignalName( unsigned int controlNumber ) const; + + /** + * @copydoc Control::GetControlSignal() + */ + SignalDelegate* GetControlSignal( const std::string& signalName ); + +private: + + // Undefined + ConfirmationPopup( const ConfirmationPopup& ); + + // Undefined + ConfirmationPopup& operator=( const ConfirmationPopup& ); + +private: + + // Properties: + + std::string mControlSignalNames[ MAXIMUM_NUMBER_OF_CONTROLS ]; ///< Stores the names of the signals to connect to per control. + + // Internal variables: + + SignalContainerType mControlSignals; ///< Stores the dynamically created signals. + +}; + +} // namespace Internal + + +// Helpers for public-api forwarding methods + +inline Toolkit::Internal::ConfirmationPopup& GetDerivedImplementation( Toolkit::ConfirmationPopup& popup ) +{ + DALI_ASSERT_ALWAYS( popup ); + + Dali::RefObject& handle = popup.GetImplementation(); + + return static_cast( handle ); +} + +inline const Toolkit::Internal::ConfirmationPopup& GetDerivedImplementation( const Toolkit::ConfirmationPopup& popup ) +{ + DALI_ASSERT_ALWAYS( popup ); + + const Dali::RefObject& handle = popup.GetImplementation(); + + return static_cast( handle ); +} + + +} // namespace Toolkit + +} // namespace Dali + +#endif // __DALI_TOOLKIT_INTERNAL_CONFIRMATION_POPUP_H__ diff --git a/dali-toolkit/internal/controls/popup/popup-impl.cpp b/dali-toolkit/internal/controls/popup/popup-impl.cpp index d4fcc43..cc7ae5d 100755 --- a/dali-toolkit/internal/controls/popup/popup-impl.cpp +++ b/dali-toolkit/internal/controls/popup/popup-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2015 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,26 +20,25 @@ // EXTERNAL INCLUDES #include // for strcmp -#include #include +#include +#include +#include #include #include #include #include #include #include -#include +#include #include -#include // INTERNAL INCLUDES -#include +#include #include -#include #include #include #include -#include using namespace Dali; @@ -55,524 +54,1332 @@ namespace Internal namespace { +/** + * Creation function for main Popup type. + * @return Handle to the new popup object. + */ BaseHandle Create() { return Toolkit::Popup::New(); } -// Setup properties, signals and actions using the type-registry. -DALI_TYPE_REGISTRATION_BEGIN( Toolkit::Popup, Toolkit::Control, Create ) +// Toast style defaults. +const int DEFAULT_TOAST_AUTO_HIDE_DELAY = 3000; ///< Toast will auto-hide after 3000ms (3 seconds) +const float DEFAULT_TOAST_TRANSITION_TIME = 0.65f; ///< Default time the toast Popup will take to show and hide. +const Vector3 DEFAULT_TOAST_BOTTOM_PARENT_ORIGIN( 0.5f, 0.94f, 0.5f ); ///< This is similar to BOTTOM_CENTER, but vertically higher up, as a ratio of parent height. +const Vector3 DEFAULT_TOAST_WIDTH_OF_STAGE_RATIO( 0.75f, 0.75f, 0.75f ); ///< Amount of the stage's width that the toast popup will take up. -DALI_SIGNAL_REGISTRATION( Toolkit, Popup, "touched-outside", SIGNAL_TOUCHED_OUTSIDE ) -DALI_SIGNAL_REGISTRATION( Toolkit, Popup, "hidden", SIGNAL_HIDDEN ) +/** + * Creation function for named type "popup-toast". + * @return Handle to the new toast popup object. + */ +BaseHandle CreateToast() +{ + Toolkit::Popup popup = Toolkit::Popup::New(); -DALI_TYPE_REGISTRATION_END() + // Setup for Toast Popup type. + popup.SetSizeModeFactor( DEFAULT_TOAST_WIDTH_OF_STAGE_RATIO ); + popup.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::WIDTH ); + popup.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT ); + popup.SetProperty( Toolkit::Popup::Property::CONTEXTUAL_MODE, Toolkit::Popup::NON_CONTEXTUAL ); + popup.SetProperty( Toolkit::Popup::Property::ANIMATION_DURATION, DEFAULT_TOAST_TRANSITION_TIME ); + popup.SetProperty( Toolkit::Popup::Property::TAIL_VISIBILITY, false ); -// Properties -const char* const PROPERTY_TITLE = "title"; -const char* const PROPERTY_STATE = "state"; + // Disable the dimmed backing. + popup.SetProperty( Toolkit::Popup::Property::BACKING_ENABLED, false ); -const float POPUP_ANIMATION_DURATION = 0.45f; ///< Duration of hide/show animations + // The toast popup should fade in (not zoom). + popup.SetProperty( Toolkit::Popup::Property::ANIMATION_MODE, Toolkit::Popup::FADE ); -const float POPUP_WIDTH = 720.0f; ///< Width of Popup -const float POPUP_OUT_MARGIN_WIDTH = 16.f; ///< Space between the screen edge and the popup edge in the horizontal dimension. -const float POPUP_OUT_MARGIN_HEIGHT = 36.f; ///< Space between the screen edge and the popup edge in the vertical dimension. -const float POPUP_TITLE_WIDTH = 648.0f; /// DEFAULT_TITLE_PADDING( 20.0f, 20.0f, 20.0f, 20.0f ); ///< Title padding used on popups with content and/or controls (from Tizen GUI UX). +const Rect DEFAULT_TITLE_ONLY_PADDING( 8.0f, 8.0f, 8.0f, 8.0f ); ///< Title padding used on popups with a title only (like toast popups). +const Vector3 FOOTER_SIZE( 620.0f, 96.0f,0.0f ); ///< Default size of the bottom control area. +const float DEFAULT_RELATIVE_PARENT_WIDTH = 0.75f; ///< If width is not fixed, relative size to parent is used by default. + +} // Unnamed namespace + +/* + * Implementation. + */ Dali::Toolkit::Popup Popup::New() { - PopupStylePtr style = PopupStyleDefault::New(); - // Create the implementation - PopupPtr popup(new Popup(*style)); + PopupPtr popup( new Popup() ); - // Pass ownership to CustomActor via derived handle - Dali::Toolkit::Popup handle(*popup); + // Pass ownership to CustomActor via derived handle. + Dali::Toolkit::Popup handle( *popup ); - // Second-phase init of the implementation - // This can only be done after the CustomActor connection has been made... + // Second-phase initialisation of the implementation. + // This can only be done after the CustomActor connection has been made. popup->Initialize(); return handle; } -Popup::Popup(PopupStyle& style) +Popup::Popup() : Control( ControlBehaviour( REQUIRES_TOUCH_EVENTS | REQUIRES_STYLE_CHANGE_SIGNALS ) ), - mShowing(false), - mState(Toolkit::Popup::POPUP_NONE), // Initially, the popup state should not be set, it's set in OnInitialize - mAlterAddedChild(false), - mPopupStyle(PopupStylePtr(&style)), - mPropertyTitle(Property::INVALID_INDEX), - mPropertyState(Property::INVALID_INDEX) + // Main variables: + mAlterAddedChild( false ), + mLayoutDirty( true ), + mTouchTransparent( false ), + + // Property variables: + mDisplayState( Toolkit::Popup::HIDDEN ), // Hidden until shown with SetDisplayState() + mTailVisible( false ), + mTailPosition( DEFAULT_TAIL_POSITION ), + mContextualMode( Toolkit::Popup::NON_CONTEXTUAL ), + mAnimationDuration( DEFAULT_POPUP_ANIMATION_DURATION ), + mAnimationMode( Toolkit::Popup::FADE ), + mAutoHideDelay( 0 ), + mBackingEnabled( true ), + mBackingColor( DEFAULT_BACKING_COLOR ), + mTailUpImage( DEFAULT_TAIL_UP_IMAGE_PATH ), + mTailDownImage( DEFAULT_TAIL_DOWN_IMAGE_PATH ), + mTailLeftImage( DEFAULT_TAIL_LEFT_IMAGE_PATH ), + mTailRightImage( DEFAULT_TAIL_RIGHT_IMAGE_PATH ) { SetKeyboardNavigationSupport( true ); } void Popup::OnInitialize() { - Dali::Stage stage = Dali::Stage::GetCurrent(); - Actor self = Self(); - self.SetSensitive(false); - // Reisize to fit the height of children - self.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::HEIGHT ); + self.SetName( "popup" ); - // Create Layer + // Apply some default resizing rules. + self.SetParentOrigin( ParentOrigin::CENTER ); + self.SetAnchorPoint( AnchorPoint::CENTER ); + + self.SetSizeModeFactor( DEFAULT_POPUP_PARENT_RELATIVE_SIZE ); + self.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::WIDTH ); + self.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT ); + + // Create a new layer so all Popup components can appear above all other actors. mLayer = Layer::New(); - mLayer.SetName( "POPUP_LAYER" ); - mLayer.SetDepthTestDisabled( true ); - mLayer.SetParentOrigin(ParentOrigin::CENTER); - mLayer.SetAnchorPoint(AnchorPoint::CENTER); + mLayer.SetName( "popup-layer" ); + + mLayer.SetParentOrigin( ParentOrigin::CENTER ); + mLayer.SetAnchorPoint( AnchorPoint::CENTER ); mLayer.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); - // Any content after this point which is added to Self() will be reparented to - // mContent. - mAlterAddedChild = true; - // Add Backing (Dim effect) - CreateBacking(); - mAlterAddedChild = false; + // Important to set as invisible as otherwise, if the popup is parented, + // but not shown yet it will appear statically on the screen. + mLayer.SetVisible( false ); + + // Add the layer to the hierarchy. + self.Add( mLayer ); - // Add Dialog ( background image, title, content container, button container and tail ) - CreateDialog(); + // Add Backing (Dimmed effect). + mLayer.Add( CreateBacking() ); - mLayer.Add( self ); + mPopupContainer = Actor::New(); + mPopupContainer.SetName( "popup-container" ); + mPopupContainer.SetParentOrigin( ParentOrigin::CENTER ); + mPopupContainer.SetAnchorPoint( AnchorPoint::CENTER ); + mPopupContainer.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::ALL_DIMENSIONS ); + mLayer.Add( mPopupContainer ); + // Create the Popup layout to contain all main content. mPopupLayout = Toolkit::TableView::New( 3, 1 ); - mPopupLayout.SetName( "POPUP_LAYOUT_TABLE" ); - mPopupLayout.SetParentOrigin(ParentOrigin::CENTER); - mPopupLayout.SetAnchorPoint(AnchorPoint::CENTER); - mPopupLayout.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH ); + + // Adds the default background image. + SetPopupBackgroundImage( ImageActor::New( ResourceImage::New( DEFAULT_BACKGROUND_IMAGE_PATH ) ) ); + + mPopupLayout.SetName( "popup-layout-table" ); + mPopupLayout.SetParentOrigin( ParentOrigin::CENTER ); + mPopupLayout.SetAnchorPoint( AnchorPoint::CENTER ); + + mPopupLayout.SetResizePolicy( ResizePolicy::USE_ASSIGNED_SIZE, Dimension::WIDTH ); mPopupLayout.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT ); - mPopupLayout.SetFitHeight( 0 ); // Set row to fit - mPopupLayout.SetFitHeight( 1 ); // Set row to fit - self.Add( mPopupLayout ); + mPopupLayout.SetSize( Stage::GetCurrent().GetSize().x * DEFAULT_RELATIVE_PARENT_WIDTH, 0.0f ); + + mPopupLayout.SetFitHeight( 0 ); // Set row to fit. + mPopupLayout.SetFitHeight( 1 ); // Set row to fit. - // Any content after this point which is added to Self() will be reparented to - // mContent. + mPopupLayout.TouchedSignal().Connect( this, &Popup::OnDialogTouched ); + + mPopupContainer.Add( mPopupLayout ); + + // Any content after this point which is added to Self() will be re-parented to mContent. mAlterAddedChild = true; - // Default content. -// ShowTail(ParentOrigin::BOTTOM_CENTER); + // Make self keyboard focusable and a focus group. + self.SetKeyboardFocusable( true ); + SetAsKeyboardFocusGroup( true ); +} + +Popup::~Popup() +{ + mEntryAnimationData.Clear(); + mExitAnimationData.Clear(); +} - // Hide content by default. - SetState( Toolkit::Popup::POPUP_HIDE, 0.0f ); +void Popup::LayoutAnimation() +{ + // Perform setup based on the currently selected animation. + switch( mAnimationMode ) + { + case Toolkit::Popup::ZOOM: + { + // Zoom animations start fully zoomed out. + mPopupContainer.SetScale( Vector3::ZERO ); + break; + } - mPropertyTitle = self.RegisterProperty( PROPERTY_TITLE, "", Property::READ_WRITE ); - mPropertyState = self.RegisterProperty( PROPERTY_STATE, "POPUP_HIDE", Property::READ_WRITE ); + case Toolkit::Popup::FADE: + { + // Fade animations start transparent. + mPopupContainer.SetOpacity( 0.0f ); + break; + } - // Make self as keyboard focusable and focus group - self.SetKeyboardFocusable(true); - SetAsKeyboardFocusGroup(true); + case Toolkit::Popup::CUSTOM: + { + // Initialise the custom animation by playing to the end of it's exit animation instantly. + // EG. If it was zooming in, then we zoom out fully instantly so the zoom in works. + StartTransitionAnimation( false, true ); + break; + } + + case Toolkit::Popup::NONE: + { + break; + } + } } -void Popup::OnPropertySet( Property::Index index, Property::Value propertyValue ) +void Popup::StartTransitionAnimation( bool transitionIn, bool instantaneous /* false */ ) { - if( index == mPropertyTitle ) + // Stop and recreate animation. + if ( mAnimation ) { - SetTitle(propertyValue.Get()); + mAnimation.Stop(); + mAnimation.Clear(); + mAnimation.Reset(); } - else if ( index == mPropertyState ) + float duration = GetAnimationDuration(); + + // Setup variables ready to start the animations. + // If we are performing the animation instantaneously, we do not want to emit a signal. + if( !instantaneous ) { - std::string value( propertyValue.Get() ); - if(value == "POPUP_SHOW") + if( transitionIn ) { - SetState( Toolkit::Popup::POPUP_SHOW, 0.0f ); + // Setup variables and signal that we are starting the transition. + // Note: We signal even if the transition is instant so signal order is consistent. + mShowingSignal.Emit(); } - else if( value == "POPUP_HIDE") + else { - SetState( Toolkit::Popup::POPUP_HIDE, 0.0f ); + mHidingSignal.Emit(); } } -} -Popup::~Popup() -{ - mLayer.Unparent(); + // Perform chosen animation for the Popup. + switch( mAnimationMode ) + { + case Toolkit::Popup::NONE: + { + mAnimation = Animation::New( 0.0f ); + break; + } + + case Toolkit::Popup::ZOOM: + { + mAnimation = Animation::New( duration ); + if( duration > Math::MACHINE_EPSILON_0 ) + { + if( transitionIn ) + { + mAnimation.AnimateTo( Property( mPopupContainer, Actor::Property::SCALE ), Vector3::ONE, AlphaFunction::EASE_IN_OUT, TimePeriod( duration * 0.25f, duration * 0.75f ) ); + } + else + { + // Zoom out animation is twice the speed. Modify the duration variable so the backing animation speed is modified also. + duration /= 2.0f; + mAnimation.SetDuration( duration ); + mAnimation.AnimateTo( Property( mPopupContainer, Actor::Property::SCALE ), Vector3::ZERO, AlphaFunction::EASE_IN_OUT, TimePeriod( 0.0f, duration ) ); + } + } + else + { + mPopupContainer.SetScale( transitionIn ? Vector3::ONE : Vector3::ZERO ); + } + break; + } + + case Toolkit::Popup::FADE: + { + mAnimation = Animation::New( duration ); + if( duration > Math::MACHINE_EPSILON_0 ) + { + if( transitionIn ) + { + mAnimation.AnimateTo( Property( mPopupContainer, Actor::Property::COLOR_ALPHA ), 1.0f, AlphaFunction::EASE_IN_OUT, TimePeriod( 0.30f, duration * 0.70f ) ); + } + else + { + mAnimation.AnimateTo( Property( mPopupContainer, Actor::Property::COLOR_ALPHA ), 0.0f, AlphaFunction::EASE_IN_OUT, TimePeriod( 0.0f, duration * 0.70f ) ); + } + } + else + { + mPopupContainer.SetOpacity( transitionIn ? 1.0f : 0.0f ); + } + break; + } + + case Toolkit::Popup::CUSTOM: + { + // Use a user specified animation for in and out. + // Read the correct animation depending on entry or exit. + // Attempt to use animation data defined from script data. + Dali::AnimationData* animationData = transitionIn ? &mEntryAnimationData : &mExitAnimationData; + + // Create a new animation from the pre-defined data in the AnimationData class. + // If there is no data, mAnimation is invalidated. + mAnimation = animationData->CreateAnimation( mPopupContainer, duration ); + + // If we don't have a valid animation, provide a blank one so play() can still function generically. + if( !mAnimation ) + { + // No animation was configured (even though custom mode was specified). Create a dummy animation to avoid an exception. + mAnimation = Animation::New( 0.0f ); + } + + break; + } + } + + // Animate the backing, if enabled. + // This is set up last so that different animation modes can have an effect on the backing animation speed. + if( mBackingEnabled ) + { + if( duration > Math::MACHINE_EPSILON_0 ) + { + if( transitionIn ) + { + mAnimation.AnimateTo( Property( mBacking, Actor::Property::COLOR_ALPHA ), 1.0f, AlphaFunction::EASE_IN_OUT, TimePeriod( 0.0f, duration * 0.70f ) ); + } + else + { + mAnimation.AnimateTo( Property( mBacking, Actor::Property::COLOR_ALPHA ), 0.0f, AlphaFunction::EASE_IN_OUT, TimePeriod( 0.30f, duration * 0.70f ) ); + } + } + else + { + mBacking.SetOpacity( transitionIn ? 1.0f : 0.0f ); + } + } + + // If we are performing the animation instantaneously, jump to the position directly and do not signal. + if( instantaneous ) + { + mAnimation.SetCurrentProgress( 1.0f ); + mAnimation.Play(); + } + else if( duration > Math::MACHINE_EPSILON_0 ) + { + // Run the animation. + mAnimation.FinishedSignal().Connect( this, &Popup::OnDisplayChangeAnimationFinished ); + mAnimation.Play(); + } + else + { + // We did not use an animation to achive the transition. + // Trigger the state change directly. + DisplayStateChangeComplete(); + } } -size_t Popup::GetButtonCount() const +void Popup::OnDisplayChangeAnimationFinished( Animation& source ) { - return mButtons.size(); + DisplayStateChangeComplete(); } -void Popup::SetBackgroundImage( Actor image ) +void Popup::DisplayStateChangeComplete() { - // Removes any previous background. - if( mBackgroundImage && mPopupLayout ) + // Remove contents from stage if completely hidden. + if( mDisplayState == Toolkit::Popup::HIDING ) { - mPopupLayout.Remove( mBackgroundImage ); - } + mDisplayState = Toolkit::Popup::HIDDEN; - // Adds new background to the dialog. - mBackgroundImage = image; + mLayer.SetVisible( false ); + mPopupLayout.SetSensitive( false ); - mBackgroundImage.SetName( "POPUP_BACKGROUND_IMAGE" ); + // Guard against destruction during signal emission. + Toolkit::Popup handle( GetOwner() ); + mHiddenSignal.Emit(); + } + else if( mDisplayState == Toolkit::Popup::SHOWING ) + { + mDisplayState = Toolkit::Popup::SHOWN; + Toolkit::Popup handle( GetOwner() ); + mShownSignal.Emit(); + + // Start a timer to auto-hide if enabled. + if( mAutoHideDelay > 0u ) + { + mAutoHideTimer = Timer::New( mAutoHideDelay ); + mAutoHideTimer.TickSignal().Connect( this, &Popup::OnAutoHideTimeReached ); + mAutoHideTimer.Start(); + } + } +} - // OnDialogTouched only consume the event. It prevents the touch event to be caught by the backing. - mBackgroundImage.TouchedSignal().Connect( this, &Popup::OnDialogTouched ); +bool Popup::OnAutoHideTimeReached() +{ + // Display timer has expired, auto hide the popup exactly as if the user had clicked outside. + SetDisplayState( Toolkit::Popup::HIDDEN ); - mBackgroundImage.SetResizePolicy( ResizePolicy::SIZE_FIXED_OFFSET_FROM_PARENT, Dimension::ALL_DIMENSIONS ); - mBackgroundImage.SetAnchorPoint( AnchorPoint::CENTER ); - mBackgroundImage.SetParentOrigin( ParentOrigin::CENTER ); + if( mAutoHideTimer ) + { + mAutoHideTimer.Stop(); + mAutoHideTimer.TickSignal().Disconnect( this, &Popup::OnAutoHideTimeReached ); + mAutoHideTimer.Reset(); + } + return true; +} - if ( ImageActor imageActor = DownCast< ImageActor >( image ) ) +void Popup::SetPopupBackgroundImage( Actor image ) +{ + // Removes any previous background. + if( mPopupBackgroundImage ) { - imageActor.SetSortModifier( BACKGROUND_DEPTH_INDEX ); + mPopupContainer.Remove( mPopupBackgroundImage ); } - Vector3 border( mPopupStyle->backgroundOuterBorder.x, mPopupStyle->backgroundOuterBorder.z, 0.0f ); - mBackgroundImage.SetSizeModeFactor( border ); + // Adds new background to the dialog. + mPopupBackgroundImage = image; + mPopupBackgroundImage.SetName( "popup-background-image" ); + mPopupBackgroundImage.SetAnchorPoint( AnchorPoint::CENTER ); + mPopupBackgroundImage.SetParentOrigin( ParentOrigin::CENTER ); + + // OnDialogTouched only consumes the event. It prevents the touch event to be caught by the backing. + mPopupBackgroundImage.TouchedSignal().Connect( this, &Popup::OnDialogTouched ); + + // Set the popup border to be slightly larger than the layout contents. + mPopupBackgroundImage.SetResizePolicy( ResizePolicy::SIZE_FIXED_OFFSET_FROM_PARENT, Dimension::ALL_DIMENSIONS ); + mPopupBackgroundImage.SetSizeModeFactor( BACKGROUND_OUTER_BORDER ); const bool prevAlter = mAlterAddedChild; mAlterAddedChild = false; - Self().Add( mBackgroundImage ); + mPopupContainer.Add( mPopupBackgroundImage ); mAlterAddedChild = prevAlter; + + mLayoutDirty = true; +} + +Actor Popup::GetPopupBackgroundImage() const +{ + return mPopupBackgroundImage; } -void Popup::SetButtonAreaImage( Actor image ) +void Popup::SetTitle( Actor titleActor ) { - // Removes any previous area image. - if( mButtonAreaImage && mPopupLayout ) + // Replaces the current title actor. + if( !mPopupLayout ) { - mPopupLayout.Remove( mButtonAreaImage ); + return; } - // Adds new area image to the dialog. - mButtonAreaImage = image; - - if ( ImageActor imageActor = DownCast< ImageActor >( image ) ) + if( mTitle ) { - imageActor.SetSortModifier( BACKGROUND_DEPTH_INDEX + 1 ); + mPopupLayout.RemoveChildAt( Toolkit::TableView::CellPosition( 0, 0) ); } + mTitle = titleActor; - // OnDialogTouched only consume the event. It prevents the touch event to be caught by the backing. - mButtonAreaImage.TouchedSignal().Connect( this, &Popup::OnDialogTouched ); - - mButtonAreaImage.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); - mButtonAreaImage.SetAnchorPoint( AnchorPoint::CENTER ); - mButtonAreaImage.SetParentOrigin( ParentOrigin::CENTER ); - - if( GetButtonCount() > 0 ) + if( mTitle ) { - mBottomBg.Add( mButtonAreaImage ); + // Set up padding to give sensible default behaviour + // (an application developer can later override this if they wish). + mTitle.SetPadding( DEFAULT_TITLE_PADDING ); + + mPopupLayout.AddChild( mTitle, Toolkit::TableView::CellPosition( 0, 0 ) ); } + + mLayoutDirty = true; + RelayoutRequest(); } -void Popup::SetTitle( const std::string& text ) +Actor Popup::GetTitle() const { - // Replaces the current title actor. + return mTitle; +} + +void Popup::SetContent( Actor content ) +{ + // Remove previous content actor. if( mPopupLayout ) { - mPopupLayout.RemoveChildAt( Toolkit::TableView::CellPosition( 0, 0 ) ); + mPopupLayout.RemoveChildAt( Toolkit::TableView::CellPosition( 1, 0 ) ); } + // Keep a handle to the new content. + mContent = content; - mTitle = Toolkit::TextLabel::New( text ); - mTitle.SetName( "POPUP_TITLE" ); - mTitle.SetProperty( Toolkit::TextLabel::Property::MULTI_LINE, true ); - mTitle.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); - - if( mPopupLayout ) + if( mContent ) { - mTitle.SetPadding( Padding( 0.0f, 0.0f, mPopupStyle->margin, mPopupStyle->margin ) ); - mTitle.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH ); - mTitle.SetResizePolicy( ResizePolicy::DIMENSION_DEPENDENCY, Dimension::HEIGHT ); - mPopupLayout.AddChild( mTitle, Toolkit::TableView::CellPosition( 0, 0 ) ); + mContent.SetName( "popup-content" ); + + mPopupLayout.AddChild( mContent, Toolkit::TableView::CellPosition( 1, 0 ) ); } + mLayoutDirty = true; RelayoutRequest(); } -std::string Popup::GetTitle() const +Actor Popup::GetContent() const { - if( mTitle ) + return mContent; +} + +void Popup::SetFooter( Actor footer ) +{ + // Remove previous content actor. + if( mPopupLayout ) { - return mTitle.GetProperty( Toolkit::TextLabel::Property::TEXT ); + mPopupLayout.RemoveChildAt( Toolkit::TableView::CellPosition( 2, 0 ) ); } - return std::string(); -} + // Keep a handle to the new content. + mFooter = footer; -void Popup::CreateFooter() -{ - if( !mBottomBg ) + if( mFooter ) { - // Adds bottom background - mBottomBg = Actor::New(); - mBottomBg.SetName( "POPUP_BOTTOM_BG" ); - mBottomBg.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); + mFooter.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH ); - mPopupLayout.SetFixedHeight( 2, mPopupStyle->bottomSize.height ); // Buttons - mPopupLayout.AddChild( mBottomBg, Toolkit::TableView::CellPosition( 2, 0 ) ); + // The control container has a fixed height. + mPopupLayout.SetFitHeight( 2u ); + mPopupLayout.AddChild( footer, Toolkit::TableView::CellPosition( 2, 0 ) ); } + + mLayoutDirty = true; + RelayoutRequest(); } -void Popup::AddButton( Toolkit::Button button ) +Actor Popup::GetFooter() const { - mButtons.push_back( button ); - button.SetResizePolicy( ResizePolicy::USE_ASSIGNED_SIZE, Dimension::ALL_DIMENSIONS ); // Size will be assigned to it + return mFooter; +} + +void Popup::SetDisplayState( Toolkit::Popup::DisplayState displayState ) +{ + // Convert the 4-way state to a bool, true for show, false for hide. + bool display = ( displayState == Toolkit::Popup::SHOWING ) || ( displayState == Toolkit::Popup::SHOWN ); + + // Ignore if we are already at the target display state. + if( display == ( ( mDisplayState == Toolkit::Popup::SHOWING ) || ( mDisplayState == Toolkit::Popup::SHOWN ) ) ) + { + return; + } + + // Convert the bool state to the actual display state to use. + mDisplayState = display ? Toolkit::Popup::SHOWING : Toolkit::Popup::HIDING; - // If this is the first button added - if( mButtons.size() == 1 ) + if ( display ) { - CreateFooter(); + // Update the state to indicate the current intent. + mDisplayState = Toolkit::Popup::SHOWING; - if( mButtonAreaImage ) + // We are displaying so bring the popup layer to the front, and set it visible so it is rendered. + mLayer.RaiseToTop(); + mLayer.SetVisible( true ); + + // Set up the layout if this is the first display or the layout has become dirty. + if( mLayoutDirty ) { - mBottomBg.Add( mButtonAreaImage ); + // Bake-in any style and layout options to create the Popup layout. + LayoutPopup(); + } + + // Allow the popup to catch events. + mPopupLayout.SetSensitive( true ); + SetKeyInputFocus(); + + // Handle the keyboard focus when popup is shown. + Dali::Toolkit::KeyboardFocusManager keyboardFocusManager = Dali::Toolkit::KeyboardFocusManager::Get(); + if( keyboardFocusManager ) + { + mPreviousFocusedActor = keyboardFocusManager.GetCurrentFocusActor(); + + if( mContent && mContent.IsKeyboardFocusable() ) + { + // If content is focusable, move the focus to content. + keyboardFocusManager.SetCurrentFocusActor( mContent ); + } + else + { + DALI_LOG_WARNING( "There is no focusable in popup\n" ); + } } } + else // Not visible. + { + mDisplayState = Toolkit::Popup::HIDING; + ClearKeyInputFocus(); - mBottomBg.Add( button ); + // Restore the keyboard focus when popup is hidden. + if( mPreviousFocusedActor && mPreviousFocusedActor.IsKeyboardFocusable() ) + { + Dali::Toolkit::KeyboardFocusManager keyboardFocusManager = Dali::Toolkit::KeyboardFocusManager::Get(); + if( keyboardFocusManager ) + { + keyboardFocusManager.SetCurrentFocusActor( mPreviousFocusedActor ); + } + } + } - RelayoutRequest(); + // Perform animation. + StartTransitionAnimation( display ); } -void Popup::SetState( Toolkit::Popup::PopupState state ) +Toolkit::Popup::DisplayState Popup::GetDisplayState() const { - SetState( state, POPUP_ANIMATION_DURATION ); + return mDisplayState; } -void Popup::SetState( Toolkit::Popup::PopupState state, float duration ) +void Popup::LayoutPopup() { - // default animation behaviour. - HandleStateChange(state, duration); -} + mLayoutDirty = false; + + /* When animating in, we want to respect the origin applied to Self(). + * For example, if zooming, not only will the final result be anchored to the + * selected point, but the zoom will originate from this point also. + * + * EG: ParentOrigin::TOP_LEFT, AnchorPoint::TOP_LEFT : + * + * -------- -------- + * |X| |XXX| + * |`` Animates |XXX| + * | to: |XXX| + * | |```` + * | | + */ + mPopupContainer.SetParentOrigin( Self().GetCurrentParentOrigin() ); + mPopupContainer.SetAnchorPoint( Self().GetCurrentAnchorPoint() ); + + // If there is only a title, use less padding. + if( mTitle ) + { + if( !mContent && !mFooter ) + { + mTitle.SetPadding( DEFAULT_TITLE_ONLY_PADDING ); + } + else + { + mTitle.SetPadding( DEFAULT_TITLE_PADDING ); + } + } -Toolkit::Popup::PopupState Popup::GetState() const -{ - return mState; + // Allow derived classes to perform any layout they may need to do. + OnLayoutSetup(); + + // Update background visibility. + mPopupContainer.SetVisible( !( !mFooter && mPopupLayout.GetChildCount() == 0 ) ); + + // Create / destroy / position the tail as needed. + LayoutTail(); + + // Setup any layout and initialisation required for the selected animation. + LayoutAnimation(); + + RelayoutRequest(); } -void Popup::ShowTail(const Vector3& position) +void Popup::LayoutTail() { - // Replaces the tail actor. - if(mTailImage && mTailImage.GetParent()) + // Removes the tail actor. + if( mTailImage && mTailImage.GetParent() ) { mTailImage.GetParent().Remove( mTailImage ); mTailImage.Reset(); } - std::string image = ""; + if( !mTailVisible ) + { + return; + } + + const Vector3& position = GetTailPosition(); + std::string image; // depending on position of tail around ParentOrigin, a different tail image is used... - if(position.y < Math::MACHINE_EPSILON_1) + if( position.y < Math::MACHINE_EPSILON_1 ) { - image = mPopupStyle->tailUpImage; + image = mTailUpImage; } - else if(position.y > 1.0f - Math::MACHINE_EPSILON_1) + else if( position.y > 1.0f - Math::MACHINE_EPSILON_1 ) { - image = mPopupStyle->tailDownImage; + image = mTailDownImage; } - else if(position.x < Math::MACHINE_EPSILON_1) + else if( position.x < Math::MACHINE_EPSILON_1 ) { - image = mPopupStyle->tailLeftImage; + image = mTailLeftImage; } - else if(position.x > 1.0f - Math::MACHINE_EPSILON_1) + else if( position.x > 1.0f - Math::MACHINE_EPSILON_1 ) { - image = mPopupStyle->tailRightImage; + image = mTailRightImage; } - if(image != "") + if( !image.empty() ) { + // Adds the tail actor. Image tail = ResourceImage::New( image ); - mTailImage = ImageActor::New(tail); + mTailImage = ImageActor::New( tail ); + mTailImage.SetName( "tail-image" ); const Vector3 anchorPoint = AnchorPoint::BOTTOM_RIGHT - position; + mTailImage.SetParentOrigin( position ); + mTailImage.SetAnchorPoint( anchorPoint ); - mTailImage.SetParentOrigin(position); - mTailImage.SetAnchorPoint(anchorPoint); + mLayer.Add( mTailImage ); + } +} - CreateFooter(); +void Popup::SetContextualMode( Toolkit::Popup::ContextualMode mode ) +{ + mContextualMode = mode; + mLayoutDirty = true; +} - mBottomBg.Add(mTailImage); - } +Toolkit::Popup::ContextualMode Popup::GetContextualMode() const +{ + return mContextualMode; +} + +ImageActor Popup::CreateBacking() +{ + mBacking = Dali::Toolkit::CreateSolidColorActor( mBackingColor ); + mBacking.SetName( "popup-backing" ); + + // Must always be positioned top-left of stage, regardless of parent. + mBacking.SetPositionInheritanceMode( DONT_INHERIT_POSITION ); + mBacking.SetAnchorPoint( AnchorPoint::TOP_LEFT ); + + // Always the full size of the stage. + mBacking.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS ); + mBacking.SetSize( Stage::GetCurrent().GetSize() ); + + // Catch events. + mBacking.SetSensitive( true ); + + // Default to being transparent. + mBacking.SetOpacity( 0.0f ); + mBacking.TouchedSignal().Connect( this, &Popup::OnBackingTouched ); + mBacking.WheelEventSignal().Connect( this, &Popup::OnBackingWheelEvent ); + return mBacking; } -void Popup::HideTail() +Toolkit::Popup::TouchedOutsideSignalType& Popup::OutsideTouchedSignal() { - ShowTail(ParentOrigin::CENTER); + return mTouchedOutsideSignal; } -void Popup::SetStyle(PopupStyle& style) +Toolkit::Popup::DisplayStateChangeSignalType& Popup::ShowingSignal() { - mPopupStyle = PopupStylePtr(&style); - // update // + return mShowingSignal; } -PopupStylePtr Popup::GetStyle() const +Toolkit::Popup::DisplayStateChangeSignalType& Popup::ShownSignal() { - return mPopupStyle; + return mShownSignal; } -void Popup::SetDefaultBackgroundImage() +Toolkit::Popup::DisplayStateChangeSignalType& Popup::HidingSignal() { - Image buttonBg = ResourceImage::New( mPopupStyle->buttonAreaImage ); - ImageActor buttonBgImage = ImageActor::New( buttonBg ); - buttonBgImage.SetStyle( ImageActor::STYLE_NINE_PATCH ); - buttonBgImage.SetNinePatchBorder( mPopupStyle->buttonArea9PatchBorder ); + return mHidingSignal; +} - SetBackgroundImage( ImageActor::New( ResourceImage::New( mPopupStyle->backgroundImage ) ) ); - SetButtonAreaImage( buttonBgImage ); +Toolkit::Popup::DisplayStateChangeSignalType& Popup::HiddenSignal() +{ + return mHiddenSignal; } -void Popup::CreateBacking() +void Popup::SetTailVisibility( bool visible ) { - mBacking = Dali::Toolkit::CreateSolidColorActor( mPopupStyle->backingColor ); - mBacking.SetName( "POPUP_BACKING" ); - mBacking.SetSortModifier( BACKGROUND_DEPTH_INDEX - 1 ); - mBacking.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); - mBacking.SetSensitive(true); + mTailVisible = visible; + mLayoutDirty = true; +} - mLayer.Add( mBacking ); - mBacking.SetOpacity(0.0f); - mBacking.TouchedSignal().Connect( this, &Popup::OnBackingTouched ); - mBacking.WheelEventSignal().Connect(this, &Popup::OnBackingWheelEvent); +const bool Popup::IsTailVisible() const +{ + return mTailVisible; } -void Popup::CreateDialog() +void Popup::SetTailPosition( Vector3 position ) { - // Adds default background image. - SetDefaultBackgroundImage(); + mTailPosition = position; + mLayoutDirty = true; } -void Popup::HandleStateChange( Toolkit::Popup::PopupState state, float duration ) +const Vector3& Popup::GetTailPosition() const { - Vector3 targetSize; - float targetBackingAlpha; + return mTailPosition; +} - if(mState == state) - { - return; - } - mState = state; - switch(state) +void Popup::SetAnimationDuration( float duration ) +{ + mAnimationDuration = duration; + mLayoutDirty = true; +} + +float Popup::GetAnimationDuration() const +{ + return mAnimationDuration; +} + +void Popup::SetAnimationMode( Toolkit::Popup::AnimationMode animationMode ) +{ + mAnimationMode = animationMode; + mLayoutDirty = true; +} + +Toolkit::Popup::AnimationMode Popup::GetAnimationMode() const +{ + return mAnimationMode; +} + +void Popup::SetEntryAnimationData( const Property::Map& map ) +{ + mEntryAnimationData.Clear(); + Scripting::NewAnimation( map, mEntryAnimationData ); +} + +void Popup::SetExitAnimationData( const Property::Map& map ) +{ + mExitAnimationData.Clear(); + Scripting::NewAnimation( map, mExitAnimationData ); +} + +void Popup::SetAutoHideDelay( int delay ) +{ + mAutoHideDelay = delay; +} + +int Popup::GetAutoHideDelay() const +{ + return mAutoHideDelay; +} + +void Popup::SetBackingEnabled( bool enabled ) +{ + mBackingEnabled = enabled; + mLayoutDirty = true; +} + +const bool Popup::IsBackingEnabled() const +{ + return mBackingEnabled; +} + +void Popup::SetBackingColor( Vector4 color ) +{ + mBackingColor = color; + mLayoutDirty = true; +} + +const Vector4& Popup::GetBackingColor() const +{ + return mBackingColor; +} + +void Popup::SetTailUpImage( std::string image ) +{ + mTailUpImage = image; + mLayoutDirty = true; +} + +const std::string& Popup::GetTailUpImage() const +{ + return mTailUpImage; +} + +void Popup::SetTailDownImage( std::string image ) +{ + mTailDownImage = image; + mLayoutDirty = true; +} + +const std::string& Popup::GetTailDownImage() const +{ + return mTailDownImage; +} + +void Popup::SetTailLeftImage( std::string image ) +{ + mTailLeftImage = image; + mLayoutDirty = true; +} + +const std::string& Popup::GetTailLeftImage() const +{ + return mTailLeftImage; +} + +void Popup::SetTailRightImage( std::string image ) +{ + mTailRightImage = image; + mLayoutDirty = true; +} + +const std::string& Popup::GetTailRightImage() const +{ + return mTailRightImage; +} + +void Popup::SetTouchTransparent( bool enabled ) +{ + mTouchTransparent = enabled; +} + +const bool Popup::IsTouchTransparent() const +{ + return mTouchTransparent; +} + +void Popup::SetProperty( BaseObject* object, Property::Index propertyIndex, const Property::Value& value ) +{ + Toolkit::Popup popup = Toolkit::Popup::DownCast( Dali::BaseHandle( object ) ); + + if ( popup ) { - case Toolkit::Popup::POPUP_HIDE: - { - targetSize = Vector3(0.0f, 0.0f, 1.0f); - targetBackingAlpha = 0.0f; - mShowing = false; - ClearKeyInputFocus(); + Popup& popupImpl( GetImpl( popup ) ); - // Retore the keyboard focus when popup is hidden - if(mPreviousFocusedActor && mPreviousFocusedActor.IsKeyboardFocusable() ) + switch ( propertyIndex ) + { + case Toolkit::Popup::Property::TITLE: { - Dali::Toolkit::KeyboardFocusManager keyboardFocusManager = Dali::Toolkit::KeyboardFocusManager::Get(); - if( keyboardFocusManager ) + Property::Map valueMap; + if( value.Get( valueMap ) ) { - keyboardFocusManager.SetCurrentFocusActor(mPreviousFocusedActor); + popupImpl.SetTitle( Scripting::NewActor( valueMap ) ); } + break; } - - break; - } - - case Toolkit::Popup::POPUP_SHOW: - default: - { - targetSize = Vector3(1.0f, 1.0f, 1.0f); - targetBackingAlpha = 1.0f; - mShowing = true; - - // Add contents to stage for showing. - if( !mLayer.GetParent() ) + case Toolkit::Popup::Property::CONTENT: + { + Property::Map valueMap; + if( value.Get( valueMap ) ) + { + popupImpl.SetContent( Scripting::NewActor( valueMap ) ); + } + break; + } + case Toolkit::Popup::Property::FOOTER: + { + Property::Map valueMap; + if( value.Get( valueMap ) ) + { + popupImpl.SetFooter( Scripting::NewActor( valueMap ) ); + } + break; + } + case Toolkit::Popup::Property::DISPLAY_STATE: + { + std::string valueString; + if( value.Get( valueString ) ) + { + Toolkit::Popup::DisplayState displayState( Toolkit::Popup::HIDDEN ); + if( Scripting::GetEnumeration< Toolkit::Popup::DisplayState >( valueString.c_str(), DisplayStateTable, DisplayStateTableCount, displayState ) ) + { + popupImpl.SetDisplayState( displayState ); + } + } + break; + } + case Toolkit::Popup::Property::TOUCH_TRANSPARENT: + { + bool valueBool; + if( value.Get( valueBool ) ) + { + popupImpl.SetTouchTransparent( valueBool ); + } + break; + } + case Toolkit::Popup::Property::TAIL_VISIBILITY: + { + bool valueBool; + if( value.Get( valueBool ) ) + { + popupImpl.SetTailVisibility( valueBool ); + } + break; + } + case Toolkit::Popup::Property::TAIL_POSITION: + { + Vector3 valueVector3; + if( value.Get( valueVector3 ) ) + { + popupImpl.SetTailPosition( valueVector3 ); + } + break; + } + case Toolkit::Popup::Property::CONTEXTUAL_MODE: + { + std::string valueString; + if( value.Get( valueString ) ) + { + Toolkit::Popup::ContextualMode contextualMode( Toolkit::Popup::BELOW ); + if( Scripting::GetEnumeration< Toolkit::Popup::ContextualMode >( valueString.c_str(), ContextualModeTable, ContextualModeTableCount, contextualMode ) ) + { + popupImpl.SetContextualMode( contextualMode ); + } + } + break; + } + case Toolkit::Popup::Property::ANIMATION_DURATION: + { + float valueFloat; + if( value.Get( valueFloat ) ) + { + popupImpl.SetAnimationDuration( valueFloat ); + } + break; + } + case Toolkit::Popup::Property::ANIMATION_MODE: + { + std::string valueString; + if( value.Get( valueString ) ) + { + Toolkit::Popup::AnimationMode animationMode( Toolkit::Popup::FADE ); + if( Scripting::GetEnumeration< Toolkit::Popup::AnimationMode >( valueString.c_str(), AnimationModeTable, AnimationModeTableCount, animationMode ) ) + { + popupImpl.SetAnimationMode( animationMode ); + } + } + break; + } + case Toolkit::Popup::Property::ENTRY_ANIMATION: + { + Property::Map valueMap; + if( value.Get( valueMap ) ) + { + popupImpl.SetEntryAnimationData( valueMap ); + } + break; + } + case Toolkit::Popup::Property::EXIT_ANIMATION: + { + Property::Map valueMap; + if( value.Get( valueMap ) ) + { + popupImpl.SetExitAnimationData( valueMap ); + } + break; + } + case Toolkit::Popup::Property::AUTO_HIDE_DELAY: + { + int valueInt; + if( value.Get( valueInt ) ) + { + popupImpl.SetAutoHideDelay( valueInt ); + } + break; + } + case Toolkit::Popup::Property::BACKING_ENABLED: + { + bool valueBool; + if( value.Get( valueBool ) ) + { + popupImpl.SetBackingEnabled( valueBool ); + } + break; + } + case Toolkit::Popup::Property::BACKING_COLOR: + { + Vector4 valueVector4; + if( value.Get( valueVector4 ) ) + { + popupImpl.SetBackingColor( valueVector4 ); + } + break; + } + case Toolkit::Popup::Property::POPUP_BACKGROUND_IMAGE: + { + std::string valueString; + if( value.Get( valueString ) ) + { + Image image = ResourceImage::New( valueString ); + if( image ) + { + ImageActor actor = ImageActor::New( image ); + popupImpl.SetPopupBackgroundImage( actor ); + } + } + break; + } + case Toolkit::Popup::Property::TAIL_UP_IMAGE: { - Dali::Stage stage = Dali::Stage::GetCurrent(); - stage.Add( mLayer ); - mLayer.RaiseToTop(); + std::string valueString; + if( value.Get( valueString ) ) + { + popupImpl.SetTailUpImage( valueString ); + } + break; } - - Self().SetSensitive(true); - SetKeyInputFocus(); - - // Handle the keyboard focus when popup is shown - Dali::Toolkit::KeyboardFocusManager keyboardFocusManager = Dali::Toolkit::KeyboardFocusManager::Get(); - if( keyboardFocusManager ) + case Toolkit::Popup::Property::TAIL_DOWN_IMAGE: { - mPreviousFocusedActor = keyboardFocusManager.GetCurrentFocusActor(); - - if( mContent && mContent.IsKeyboardFocusable() ) + std::string valueString; + if( value.Get( valueString ) ) { - // If content is focusable, move the focus to content - keyboardFocusManager.SetCurrentFocusActor(mContent); + popupImpl.SetTailDownImage( valueString ); } - else if( !mButtons.empty() ) + break; + } + case Toolkit::Popup::Property::TAIL_LEFT_IMAGE: + { + std::string valueString; + if( value.Get( valueString ) ) { - // Otherwise, movethe focus to the first button - keyboardFocusManager.SetCurrentFocusActor(mButtons[0]); + popupImpl.SetTailLeftImage( valueString ); } - else + break; + } + case Toolkit::Popup::Property::TAIL_RIGHT_IMAGE: + { + std::string valueString; + if( value.Get( valueString ) ) { - DALI_LOG_WARNING("There is no focusable in popup\n"); + popupImpl.SetTailRightImage( valueString ); } + break; } - break; - } - } - - Actor self = Self(); - if(duration > Math::MACHINE_EPSILON_1) - { - if ( mAnimation ) - { - mAnimation.Stop(); - mAnimation.Clear(); - mAnimation.Reset(); - } - mAnimation = Animation::New(duration); - - if(mShowing) - { - mAnimation.AnimateTo( Property(mBacking, Actor::Property::COLOR_ALPHA), targetBackingAlpha, AlphaFunction::EASE_IN_OUT, TimePeriod(0.0f, duration * 0.5f) ); - mAnimation.AnimateTo( Property(self, Actor::Property::SCALE), targetSize, AlphaFunction::EASE_IN_OUT, TimePeriod(duration * 0.5f, duration * 0.5f) ); - } - else - { - mAnimation.AnimateTo( Property(mBacking, Actor::Property::COLOR_ALPHA), targetBackingAlpha, AlphaFunction::EASE_IN_OUT, TimePeriod(0.0f, duration * 0.5f) ); - mAnimation.AnimateTo( Property(self, Actor::Property::SCALE), targetSize, AlphaFunction::EASE_IN_OUT, TimePeriod(0.0f, duration * 0.5f) ); } - mAnimation.Play(); - mAnimation.FinishedSignal().Connect(this, &Popup::OnStateAnimationFinished); - } - else - { - mBacking.SetOpacity( targetBackingAlpha ); - self.SetScale( targetSize ); - - HandleStateChangeComplete(); } } -void Popup::HandleStateChangeComplete() +Property::Value Popup::GetProperty( BaseObject* object, Property::Index propertyIndex ) { - // Remove contents from stage if completely hidden. - if( ( mState == Toolkit::Popup::POPUP_HIDE ) && mLayer.GetParent() ) + Property::Value value; + + Toolkit::Popup popup = Toolkit::Popup::DownCast( Dali::BaseHandle( object ) ); + + if ( popup ) { - mLayer.Unparent(); - Self().SetSensitive( false ); + Popup& popupImpl( GetImpl( popup ) ); - // Guard against destruction during signal emission - Toolkit::Popup handle( GetOwner() ); - mHiddenSignal.Emit(); + switch ( propertyIndex ) + { + case Toolkit::Popup::Property::TITLE: + { + Property::Map map; + Scripting::CreatePropertyMap( popupImpl.GetTitle(), map ); + value = map; + break; + } + case Toolkit::Popup::Property::CONTENT: + { + Property::Map map; + Scripting::CreatePropertyMap( popupImpl.GetContent(), map ); + value = map; + break; + } + case Toolkit::Popup::Property::FOOTER: + { + Property::Map map; + Scripting::CreatePropertyMap( popupImpl.GetFooter(), map ); + value = map; + break; + } + case Toolkit::Popup::Property::DISPLAY_STATE: + { + value = Scripting::GetLinearEnumerationName< Toolkit::Popup::DisplayState >( popupImpl.GetDisplayState(), DisplayStateTable, DisplayStateTableCount ); + break; + } + case Toolkit::Popup::Property::TOUCH_TRANSPARENT: + { + value = popupImpl.IsTouchTransparent(); + break; + } + case Toolkit::Popup::Property::TAIL_VISIBILITY: + { + value = popupImpl.IsTailVisible(); + break; + } + case Toolkit::Popup::Property::TAIL_POSITION: + { + value = popupImpl.GetTailPosition(); + break; + } + case Toolkit::Popup::Property::CONTEXTUAL_MODE: + { + value = Scripting::GetLinearEnumerationName< Toolkit::Popup::ContextualMode >( popupImpl.GetContextualMode(), ContextualModeTable, ContextualModeTableCount ); + break; + } + case Toolkit::Popup::Property::ANIMATION_DURATION: + { + value = popupImpl.GetAnimationDuration(); + break; + } + case Toolkit::Popup::Property::ANIMATION_MODE: + { + value = Scripting::GetLinearEnumerationName< Toolkit::Popup::AnimationMode >( popupImpl.GetAnimationMode(), AnimationModeTable, AnimationModeTableCount ); + break; + } + case Toolkit::Popup::Property::ENTRY_ANIMATION: + { + // Note: Cannot retrieve property map from animation. + Property::Map map; + value = map; + break; + } + case Toolkit::Popup::Property::EXIT_ANIMATION: + { + // Note: Cannot retrieve property map from animation. + Property::Map map; + value = map; + break; + } + case Toolkit::Popup::Property::AUTO_HIDE_DELAY: + { + value = popupImpl.GetAutoHideDelay(); + break; + } + case Toolkit::Popup::Property::BACKING_ENABLED: + { + value = popupImpl.IsBackingEnabled(); + break; + } + case Toolkit::Popup::Property::BACKING_COLOR: + { + value = popupImpl.GetBackingColor(); + break; + } + case Toolkit::Popup::Property::POPUP_BACKGROUND_IMAGE: + { + ResourceImage image = ResourceImage::DownCast( popupImpl.GetPopupBackgroundImage() ); + if( image ) + { + value = image.GetUrl(); + } + break; + } + case Toolkit::Popup::Property::TAIL_UP_IMAGE: + { + value = popupImpl.GetTailUpImage(); + break; + } + case Toolkit::Popup::Property::TAIL_DOWN_IMAGE: + { + value = popupImpl.GetTailDownImage(); + break; + } + case Toolkit::Popup::Property::TAIL_LEFT_IMAGE: + { + value = popupImpl.GetTailLeftImage(); + break; + } + case Toolkit::Popup::Property::TAIL_RIGHT_IMAGE: + { + value = popupImpl.GetTailRightImage(); + break; + } + } } -} - -Toolkit::Popup::TouchedOutsideSignalType& Popup::OutsideTouchedSignal() -{ - return mTouchedOutsideSignal; -} -Toolkit::Popup::HiddenSignalType& Popup::HiddenSignal() -{ - return mHiddenSignal; + return value; } bool Popup::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor ) @@ -586,6 +1393,18 @@ bool Popup::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tra { popup.OutsideTouchedSignal().Connect( tracker, functor ); } + else if( 0 == strcmp( signalName.c_str(), SIGNAL_SHOWING ) ) + { + popup.ShowingSignal().Connect( tracker, functor ); + } + else if( 0 == strcmp( signalName.c_str(), SIGNAL_SHOWN ) ) + { + popup.ShownSignal().Connect( tracker, functor ); + } + else if( 0 == strcmp( signalName.c_str(), SIGNAL_HIDING ) ) + { + popup.HidingSignal().Connect( tracker, functor ); + } else if( 0 == strcmp( signalName.c_str(), SIGNAL_HIDDEN ) ) { popup.HiddenSignal().Connect( tracker, functor ); @@ -599,235 +1418,302 @@ bool Popup::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tra return connected; } -void Popup::OnStateAnimationFinished( Animation& source ) +bool Popup::OnBackingTouched( Actor actor, const TouchEvent& event ) { - HandleStateChangeComplete(); -} + // Allow events to pass through if touch transparency is enabled. + if( mTouchTransparent ) + { + return false; + } -bool Popup::OnBackingTouched(Actor actor, const TouchEvent& event) -{ - if(event.GetPointCount()>0) + if( event.GetPointCount() > 0 ) { - const TouchPoint& point = event.GetPoint(0); + const TouchPoint& point = event.GetPoint( 0 ); - if(point.state == TouchPoint::Down) + if( point.state == TouchPoint::Down ) { - // Guard against destruction during signal emission + // Guard against destruction during signal emission. Toolkit::Popup handle( GetOwner() ); mTouchedOutsideSignal.Emit(); } } + // Block anything behind backing becoming touched. + mLayer.SetTouchConsumed( true ); return true; } -bool Popup::OnBackingWheelEvent(Actor actor, const WheelEvent& event) +bool Popup::OnBackingWheelEvent( Actor actor, const WheelEvent& event ) { - // consume wheel event in dimmed backing actor + // Allow events to pass through if touch transparency is enabled. + if( mTouchTransparent ) + { + return false; + } + + // Consume wheel event in dimmed backing actor. + mLayer.SetTouchConsumed( true ); return true; } bool Popup::OnDialogTouched(Actor actor, const TouchEvent& event) { - // consume event (stops backing actor receiving touch events) + // Allow events to pass through if touch transparency is enabled. + if( mTouchTransparent ) + { + return false; + } + + // Consume event (stops backing actor receiving touch events) + mLayer.SetTouchConsumed( true ); return true; } +void Popup::OnControlStageConnection() +{ + mLayoutDirty = true; + RelayoutRequest(); +} + void Popup::OnControlChildAdd( Actor& child ) { - // reparent any children added by user to the body layer. + // Re-parent any children added by user to the body layer. if( mAlterAddedChild ) { - // Removes previously added content. - if( mContent ) - { - mPopupLayout.RemoveChildAt( Toolkit::TableView::CellPosition( 1, 0 ) ); - } - - // keep a handle to the new content. - mContent = child; - - mPopupLayout.AddChild( mContent, Toolkit::TableView::CellPosition( 1, 0 ) ); + SetContent( child ); + } + else + { + mLayoutDirty = true; + RelayoutRequest(); } } -void Popup::OnRelayout( const Vector2& size, RelayoutContainer& container ) +void Popup::LayoutContext( const Vector2& size ) { - // Hide the background image - mBackgroundImage.SetVisible( !( mButtons.empty() && mPopupLayout.GetChildCount() == 0 ) ); - - // Relayout All buttons - if( !mButtons.empty() ) + // Do nothing if not in a contextual mode (or there is no parent context). + Actor self = Self(); + Actor parent = self.GetParent(); + if( ( mContextualMode == Toolkit::Popup::NON_CONTEXTUAL ) || !parent ) { - // All buttons should be the same size and fill the button area. The button spacing needs to be accounted for as well. - Vector2 buttonSize( ( ( size.width - mPopupStyle->buttonSpacing * ( mButtons.size() + 1 ) ) / mButtons.size() ), - mPopupStyle->bottomSize.height - mPopupStyle->margin ); - - Vector3 buttonPosition( mPopupStyle->buttonSpacing, 0.0f, 0.0f ); - - for( std::vector< Actor >::iterator iter = mButtons.begin(), endIter = mButtons.end(); - iter != endIter; - ++iter, buttonPosition.x += mPopupStyle->buttonSpacing + buttonSize.width ) - { - Actor button = *iter; - - // If there is only one button, it needs to be laid out on center. - if ( mButtons.size() == 1 ) - { - buttonPosition.x = 0.0f; - button.SetAnchorPoint( AnchorPoint::CENTER ); - button.SetParentOrigin( ParentOrigin::CENTER ); - } - else - { - button.SetAnchorPoint( AnchorPoint::CENTER_LEFT ); - button.SetParentOrigin( ParentOrigin::CENTER_LEFT ); - } + return; + } - button.SetPosition( buttonPosition ); + mPopupContainer.SetParentOrigin( ParentOrigin::CENTER ); + // We always anchor to the CENTER, rather than a different anchor point for each contextual + // mode to allow code-reuse of the bound checking code (for maintainability). + mPopupContainer.SetAnchorPoint( AnchorPoint::CENTER ); - //Todo: Use the size negotiation pass instead of SetSize directly - button.SetSize( buttonSize ); - } - } -} + // Setup with some pre-calculations for speed. + Vector3 halfStageSize( Stage().GetCurrent().GetSize() / 2.0f ); + Vector3 parentPosition( parent.GetCurrentPosition() ); + Vector2 halfSize( size / 2.0f ); + Vector2 halfParentSize( parent.GetRelayoutSize( Dimension::WIDTH ) / 2.0f, parent.GetRelayoutSize( Dimension::HEIGHT ) / 2.0f ); + Vector3 newPosition( Vector3::ZERO ); -void Popup::OnSetResizePolicy( ResizePolicy::Type policy, Dimension::Type dimension ) -{ - if( mPopupLayout ) + // Perform different positioning based on the specified contextual layout mode. + switch( mContextualMode ) { - if( policy == ResizePolicy::FIT_TO_CHILDREN ) + case Toolkit::Popup::BELOW: { - mPopupLayout.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, dimension ); - if( dimension & Dimension::HEIGHT ) - { - mPopupLayout.SetFitHeight( 1 ); - } + newPosition.x += halfSize.x - halfParentSize.x; + newPosition.y += halfSize.y + halfParentSize.y + DEFAULT_CONTEXTUAL_ADJACENCY_MARGIN.y; + break; } - else + case Toolkit::Popup::ABOVE: { - mPopupLayout.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, dimension ); - // Make the content cell fill the whole of the available space - if( dimension & Dimension::HEIGHT ) - { - mPopupLayout.SetRelativeHeight( 1, 1.0f ); - } + newPosition.x += halfSize.x - halfParentSize.x; + newPosition.y -= halfSize.y + halfParentSize.y + DEFAULT_CONTEXTUAL_ADJACENCY_MARGIN.y; + break; + } + case Toolkit::Popup::RIGHT: + { + newPosition.x += halfSize.x + halfParentSize.x + DEFAULT_CONTEXTUAL_ADJACENCY_MARGIN.x; + newPosition.y += halfSize.y - halfParentSize.y; + break; + } + case Toolkit::Popup::LEFT: + { + newPosition.x -= halfSize.x + halfParentSize.x + DEFAULT_CONTEXTUAL_ADJACENCY_MARGIN.x; + newPosition.y += halfSize.y - halfParentSize.y; + break; + } + case Toolkit::Popup::NON_CONTEXTUAL: + { + // Code won't reach here (caught earlier). + break; } } -} - -bool Popup::OnKeyEvent(const KeyEvent& event) -{ - bool consumed = false; - if(event.state == KeyEvent::Down) + // On-screen position checking. + // Check new position is not too far right. If so, correct it. + // Note: Check for right rather than left first, so if popup is too wide, the left check overrides + // the right check and we at least see the left portion of the popup (as this is more useful). + if( newPosition.x >= ( halfStageSize.x - parentPosition.x - halfSize.x - DEFAULT_CONTEXTUAL_STAGE_BORDER.x ) ) { - if (event.keyCode == Dali::DALI_KEY_ESCAPE || event.keyCode == Dali::DALI_KEY_BACK) - { - SetState(Toolkit::Popup::POPUP_HIDE); - consumed = true; - } + newPosition.x = halfStageSize.x - parentPosition.x - halfSize.x - DEFAULT_CONTEXTUAL_STAGE_BORDER.x; + } + // Check new position is not too far left. If so, correct it. + if( newPosition.x < halfSize.x - ( parentPosition.x + halfStageSize.x ) + DEFAULT_CONTEXTUAL_STAGE_BORDER.x ) + { + newPosition.x = halfSize.x - ( parentPosition.x + halfStageSize.x ) + DEFAULT_CONTEXTUAL_STAGE_BORDER.x;// - parentSize.x; + } + // Check new position is not too far down. If so, correct it. + if( newPosition.y >= ( halfStageSize.y - parentPosition.y - halfSize.y - DEFAULT_CONTEXTUAL_STAGE_BORDER.y ) ) + { + newPosition.y = halfStageSize.y - parentPosition.y - halfSize.y - DEFAULT_CONTEXTUAL_STAGE_BORDER.y; + } + // Check new position is not too far up. If so, correct it. + if( newPosition.y < halfSize.y - ( parentPosition.y + halfStageSize.y ) + DEFAULT_CONTEXTUAL_STAGE_BORDER.y ) + { + newPosition.y = halfSize.y - ( parentPosition.y + halfStageSize.y ) + DEFAULT_CONTEXTUAL_STAGE_BORDER.y; } - return consumed; + // Set the final position. + mPopupContainer.SetPosition( newPosition ); } -Vector3 Popup::GetNaturalSize() +void Popup::OnRelayout( const Vector2& size, RelayoutContainer& container ) { - float margin = 2.0f * ( POPUP_OUT_MARGIN_WIDTH + mPopupStyle->margin ); - const float maxWidth = Stage::GetCurrent().GetSize().width - margin; + Vector2 useSize( size ); + + // Use the Popup layouts size, unless requested to use a fixed size. + // In which case take the size set for the Popup itself. + ResizePolicy::Type widthPolicy = Self().GetResizePolicy( Dimension::WIDTH ); + ResizePolicy::Type heightPolicy = Self().GetResizePolicy( Dimension::HEIGHT ); - Vector3 naturalSize( 0.0f, 0.0f, 0.0f ); + // Width calculations: + if( widthPolicy == ResizePolicy::USE_NATURAL_SIZE || widthPolicy == ResizePolicy::FIT_TO_CHILDREN ) + { + // If we using a child-based policy, take the size from the popup layout. + mPopupLayout.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::WIDTH ); + useSize.width = mPopupLayout.GetRelayoutSize( Dimension::WIDTH ); - if ( mTitle ) + mPopupLayout.SetFitWidth( 0u ); + } + else { - Vector3 titleNaturalSize = mTitle.GetImplementation().GetNaturalSize(); - // Buffer to avoid errors. The width of the popup could potentially be the width of the title text. - // It was observed in this case that text wrapping was then inconsistent when seen on device - const float titleBuffer = 0.5f; - titleNaturalSize.width += titleBuffer; + // If we using a parent-based policy, take the size from the popup object itself (self). + mPopupLayout.SetResizePolicy( ResizePolicy::USE_ASSIGNED_SIZE, Dimension::WIDTH ); + + mPopupLayout.SetFixedWidth( 0u, useSize.width ); + } + + // Height calculations: + // Title: Let the title be as high as it needs to be. + mPopupLayout.SetFitHeight( 0u ); - // As TextLabel GetNaturalSize does not take wrapping into account, limit the width - // to that of the stage - if( titleNaturalSize.width >= maxWidth) + // Footer: Convert the footer's resize policy to a TableView row policy. + if( mFooter ) + { + ResizePolicy::Type footerHeightPolicy = mFooter.GetResizePolicy( Dimension::HEIGHT ); + if( ( footerHeightPolicy == ResizePolicy::USE_NATURAL_SIZE ) || + ( footerHeightPolicy == ResizePolicy::FIT_TO_CHILDREN ) ) + { + mPopupLayout.SetFitHeight( 2u ); + } + else if( footerHeightPolicy == ResizePolicy::FIXED ) { - naturalSize.width = maxWidth; - naturalSize.height = mTitle.GetImplementation().GetHeightForWidth( naturalSize.width ); + mPopupLayout.SetFixedHeight( 2u, mFooter.GetRelayoutSize( Dimension::HEIGHT) ); } else { - naturalSize += titleNaturalSize; + mPopupLayout.SetRelativeHeight( 2u, 1.0f ); } + } + else + { + mPopupLayout.SetFixedHeight( 2u, 0.0f ); + } + + // Popup contents: Adjust the tableview's policies based on the popup's policies. + if( heightPolicy == ResizePolicy::USE_NATURAL_SIZE || heightPolicy == ResizePolicy::FIT_TO_CHILDREN ) + { + mPopupLayout.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT ); + + // Let both the contents expand as necessary. + mPopupLayout.SetFitHeight( 1u ); + useSize.height = mPopupLayout.GetRelayoutSize( Dimension::HEIGHT ); + } + else + { + mPopupLayout.SetResizePolicy( heightPolicy, Dimension::HEIGHT ); - naturalSize.height += mPopupStyle->margin; + // Let the content expand to fill the remaining space. + mPopupLayout.SetRelativeHeight( 1u, 1.0f ); + mPopupLayout.SetResizePolicy( ResizePolicy::USE_ASSIGNED_SIZE, Dimension::HEIGHT ); } + // Relayout the popup-layout to give it it's new size this frame. + container.Add( mPopupLayout, useSize ); + if( mContent ) { - Vector3 contentSize = mContent.GetNaturalSize(); - // Choose the biggest width - naturalSize.width = std::max( naturalSize.width, contentSize.width ); - if( naturalSize.width > maxWidth ) - { - naturalSize.width = maxWidth; - contentSize.height = mContent.GetHeightForWidth( maxWidth ); - } - naturalSize.height += contentSize.height + mPopupStyle->margin; + container.Add( mContent, Vector2( mContent.GetRelayoutSize( Dimension::WIDTH ), mContent.GetRelayoutSize( Dimension::HEIGHT ) ) ); } - if( !mButtons.empty() ) + // Perform contextual layout setup if required. + // This is done each time in case the parent moves. + // This will have no effect if no contextual mode is selected. + LayoutContext( useSize ); +} + +void Popup::OnSetResizePolicy( ResizePolicy::Type policy, Dimension::Type dimension ) +{ + // To get the popup to emulate fit-to-children, we need to actually set use-natural-size. + if( ( dimension & Dimension::HEIGHT ) && ( policy == ResizePolicy::FIT_TO_CHILDREN ) ) { - naturalSize.height += mPopupStyle->bottomSize.height; + Self().SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT ); } - // Add the margins - naturalSize.width += margin; - naturalSize.height += margin; + mLayoutDirty = true; + return; +} - return naturalSize; +Vector3 Popup::GetNaturalSize() +{ + return mPopupLayout.GetNaturalSize(); } float Popup::GetHeightForWidth( float width ) { - float height( 0.0f ); - float popupWidth( width - 2.f * ( POPUP_OUT_MARGIN_WIDTH + mPopupStyle->margin ) ); + return mPopupLayout.GetHeightForWidth( width ); +} - if ( mTitle ) - { - height += mTitle.GetImplementation().GetHeightForWidth( popupWidth ); - height += mPopupStyle->margin; - } +float Popup::GetWidthForHeight( float height ) +{ + return mPopupLayout.GetWidthForHeight( height ); +} - if( mContent ) +bool Popup::OnKeyEvent( const KeyEvent& event ) +{ + // Allow events to pass through if touch transparency is enabled. + if( mTouchTransparent ) { - height += mContent.GetHeightForWidth( popupWidth ) + mPopupStyle->margin; + return false; } - if( !mButtons.empty() ) + bool consumed = false; + + if( event.state == KeyEvent::Down ) { - height += mPopupStyle->bottomSize.height; + if (event.keyCode == Dali::DALI_KEY_ESCAPE || event.keyCode == Dali::DALI_KEY_BACK) + { + SetDisplayState( Toolkit::Popup::HIDDEN ); + consumed = true; + } } - // Add the margins - float margin( 2.0f * ( POPUP_OUT_MARGIN_WIDTH + mPopupStyle->margin ) ); - height += margin; - - return height; -} - -float Popup::GetWidthForHeight( float height ) -{ - return GetNaturalSize().width; + return consumed; } -Actor Popup::GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled) +Actor Popup::GetNextKeyboardFocusableActor( Actor currentFocusedActor, Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled ) { Actor nextFocusableActor( currentFocusedActor ); // TODO: Needs to be optimised - - if ( !currentFocusedActor || ( currentFocusedActor && KeyboardFocusManager::Get().GetFocusGroup(currentFocusedActor) != Self() ) ) + if( !currentFocusedActor || ( currentFocusedActor && KeyboardFocusManager::Get().GetFocusGroup( currentFocusedActor ) != Self() ) ) { // The current focused actor is not within popup if( mContent && mContent.IsKeyboardFocusable() ) @@ -835,38 +1721,25 @@ Actor Popup::GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::C // If content is focusable, move the focus to content nextFocusableActor = mContent; } - else if( !mButtons.empty() ) - { - // Otherwise, movethe focus to the first button - nextFocusableActor = mButtons[0]; - } } else { - // Rebuild the focus chain because button or content can be added or removed dynamically + // Rebuild the focus chain because controls or content can be added or removed dynamically std::vector< Actor > focusableActors; if( mContent && mContent.IsKeyboardFocusable() ) { - focusableActors.push_back(mContent); - } - - for(unsigned int i = 0; i < mButtons.size(); i++) - { - if( mButtons[i] && mButtons[i].IsKeyboardFocusable() ) - { - focusableActors.push_back(mButtons[i]); - } + focusableActors.push_back( mContent ); } for( std::vector< Actor >::iterator iter = focusableActors.begin(), end = focusableActors.end(); iter != end; ++iter ) { - if ( currentFocusedActor == *iter ) + if( currentFocusedActor == *iter ) { - switch ( direction ) + switch( direction ) { case Toolkit::Control::KeyboardFocus::LEFT: { - if ( iter == focusableActors.begin() ) + if( iter == focusableActors.begin() ) { nextFocusableActor = *( focusableActors.end() - 1 ); } @@ -878,7 +1751,7 @@ Actor Popup::GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::C } case Toolkit::Control::KeyboardFocus::RIGHT: { - if ( iter == focusableActors.end() - 1 ) + if( iter == focusableActors.end() - 1 ) { nextFocusableActor = *( focusableActors.begin() ); } @@ -891,13 +1764,13 @@ Actor Popup::GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::C case Toolkit::Control::KeyboardFocus::UP: { - if ( *iter == mContent ) + if( mContent && *iter == mContent ) { nextFocusableActor = *( focusableActors.end() - 1 ); } else { - if ( mContent && mContent.IsKeyboardFocusable() ) + if( mContent && mContent.IsKeyboardFocusable() ) { nextFocusableActor = mContent; } @@ -918,13 +1791,13 @@ Actor Popup::GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::C case Toolkit::Control::KeyboardFocus::DOWN: { - if ( mContent && mContent.IsKeyboardFocusable() ) + if( mContent && mContent.IsKeyboardFocusable() ) { nextFocusableActor = mContent; } else { - if ( iter == focusableActors.end() - 1 ) + if( iter == focusableActors.end() - 1 ) { nextFocusableActor = *( focusableActors.begin() ); } @@ -933,18 +1806,13 @@ Actor Popup::GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::C nextFocusableActor = *( iter + 1 ); } } - - if ( *iter == mContent && !mButtons.empty() ) - { - nextFocusableActor = mButtons[0]; - } break; } } - if(!nextFocusableActor) + if( !nextFocusableActor ) { - DALI_LOG_WARNING("Can not decide next focusable actor\n"); + DALI_LOG_WARNING( "Can not decide next focusable actor\n" ); } break; diff --git a/dali-toolkit/internal/controls/popup/popup-impl.h b/dali-toolkit/internal/controls/popup/popup-impl.h index 099e5e6..c40811c 100755 --- a/dali-toolkit/internal/controls/popup/popup-impl.h +++ b/dali-toolkit/internal/controls/popup/popup-impl.h @@ -2,7 +2,7 @@ #define __DALI_TOOLKIT_INTERNAL_POPUP_H__ /* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. + * Copyright (c) 2015 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -21,14 +21,14 @@ // EXTERNAL INCLUDES #include #include +#include #include +#include // INTERNAL INCLUDES #include #include -#include #include -#include namespace Dali { @@ -36,16 +36,12 @@ namespace Dali namespace Toolkit { -class Button; - namespace Internal { class Popup; -class PopupStyle; -typedef IntrusivePtr PopupPtr; -typedef IntrusivePtr PopupStylePtr; +typedef IntrusivePtr< Popup > PopupPtr; /** * @copydoc Toolkit::Popup @@ -63,81 +59,197 @@ public: public: /** - * Returns number of buttons added to Popup - * - * @return Number of buttons + * @copydoc Toolkit::Popup::SetPopupBackgroundImage */ - size_t GetButtonCount() const; + void SetPopupBackgroundImage( Actor image ); /** - * @copydoc Toolkit::Popup::SetBackgroundImage + * @copydoc Toolkit::Popup::GetPopupBackgroundImage */ - void SetBackgroundImage( Actor image ); + Actor GetPopupBackgroundImage() const; /** - * @copydoc Toolkit::Popup::SetButtonAreaImage + * @copydoc Toolkit::Popup::SetTitle( Actor titleActor ) */ - void SetButtonAreaImage( Actor image ); + void SetTitle( Actor titleActor ); /** - * @copydoc Toolkit::Popup::SetTitle( const std::string& text ); + * @copydoc Toolkit::Popup::GetTitle */ - void SetTitle( const std::string& text ); + Actor GetTitle() const; /** - * @copydoc Toolkit::Popup::GetTitle + * @copydoc Toolkit::Popup::SetContent + */ + void SetContent( Actor content ); + + /** + * @copydoc Toolkit::Popup::GetContent + */ + Actor GetContent() const; + + /** + * @copydoc Toolkit::Popup::SetFooter + */ + void SetFooter( Actor control ); + + /** + * @copydoc Toolkit::Popup::GetFooter + */ + Actor GetFooter() const; + + /** + * @copydoc Toolkit::Popup::SetDisplayState + */ + void SetDisplayState( Toolkit::Popup::DisplayState displayState ); + + /** + * @copydoc Toolkit::Popup::GetDisplayState + */ + Toolkit::Popup::DisplayState GetDisplayState() const; + + /** + * @copydoc Toolkit::Popup::SetTailVisibility + */ + void SetTailVisibility( bool visible ); + + /** + * @copydoc Toolkit::Popup::IsTailVisible + */ + const bool IsTailVisible() const; + + /** + * @copydoc Toolkit::Popup::SetTailPosition + */ + void SetTailPosition( Vector3 position ); + + /** + * @copydoc Toolkit::Popup::GetTailPosition + */ + const Vector3& GetTailPosition() const; + + /** + * @copydoc Toolkit::Popup::SetContextualMode + */ + void SetContextualMode( Toolkit::Popup::ContextualMode mode ); + + /** + * @copydoc Toolkit::Popup::GetContextualMode + */ + Toolkit::Popup::ContextualMode GetContextualMode() const; + + /** + * @copydoc Toolkit::Popup::SetAnimationDuration + */ + void SetAnimationDuration( float duration ); + + /** + * @copydoc Toolkit::Popup::GetAnimationDuration + */ + float GetAnimationDuration() const; + + /** + * @copydoc Toolkit::Popup::SetAnimationMode + */ + void SetAnimationMode( Toolkit::Popup::AnimationMode animationMode ); + + /** + * @copydoc Toolkit::Popup::GetAnimationMode + */ + Toolkit::Popup::AnimationMode GetAnimationMode() const; + + /** + * @copydoc Toolkit::Popup::SetAutoHideDelay + */ + void SetAutoHideDelay( int delay ); + + /** + * @copydoc Toolkit::Popup::GetAutoHideDelay + */ + int GetAutoHideDelay() const; + + /** + * @copydoc Toolkit::Popup::SetBackingEnabled + */ + void SetBackingEnabled( bool enabled ); + + /** + * @copydoc Toolkit::Popup::IsBackingEnabled + */ + const bool IsBackingEnabled() const; + + /** + * @copydoc Toolkit::Popup::SetBackingColor + */ + void SetBackingColor( Vector4 color ); + + /** + * @copydoc Toolkit::Popup::GetBackingColor */ - std::string GetTitle() const; + const Vector4& GetBackingColor() const; /** - * @copydoc Toolkit::Popup::AddButton + * @copydoc Toolkit::Popup::SetTailUpImage */ - void AddButton( Toolkit::Button button ); + void SetTailUpImage( std::string image ); /** - * @copydoc Toolkit::Popup::SetState( PopupState state ) + * @copydoc Toolkit::Popup::GetTailUpImage */ - void SetState( Toolkit::Popup::PopupState state ); + const std::string& GetTailUpImage() const; /** - * @copydoc Toolkit::Popup::SetState( PopupState state, float duration ) + * @copydoc Toolkit::Popup::SetTailDownImage */ - void SetState( Toolkit::Popup::PopupState state, float duration ); + void SetTailDownImage( std::string image ); /** - * @copydoc Toolkit::Popup::GetState( ) + * @copydoc Toolkit::Popup::GetTailDownImage */ - Toolkit::Popup::PopupState GetState() const; + const std::string& GetTailDownImage() const; /** - * @copydoc Toolkit::Popup::ShowTail + * @copydoc Toolkit::Popup::SetTailLeftImage */ - void ShowTail(const Vector3& position); + void SetTailLeftImage( std::string image ); /** - * @copydoc Toolkit::Popup::HideTail + * @copydoc Toolkit::Popup::GetTailLeftImage */ - void HideTail(); + const std::string& GetTailLeftImage() const; /** - * Sets the style of the popup - * @param[in] style The style of the popup + * @copydoc Toolkit::Popup::SetTailRightImage */ - void SetStyle(PopupStyle& style); + void SetTailRightImage( std::string image ); /** - * Gets the style of the popup - * @return style of the popup + * @copydoc Toolkit::Popup::GetTailRightImage */ - PopupStylePtr GetStyle() const; + const std::string& GetTailRightImage() const; + + /** + * Called when a property of an object of this type is set. + * @param[in] object The object whose property is set. + * @param[in] propertyIndex The property index. + * @param[in] value The new property value. + */ + static void SetProperty( BaseObject* object, Property::Index propertyIndex, const Property::Value& value ); + + /** + * Called to retrieve a property of an object of this type. + * @param[in] object The object whose property is to be retrieved. + * @param[in] propertyIndex The property index. + * @return The current value of the property. + */ + static Property::Value GetProperty( BaseObject* object, Property::Index propertyIndex ); protected: /** * Construct a new Popup. - * @param[in] style of the popup */ - Popup(PopupStyle& style); + Popup(); /** * A reference counted object may only be deleted by calling Unreference() @@ -147,33 +259,94 @@ protected: private: /** - * Creates and applies the default background image. + * @brief Creates the layout of the popup, to be done just before showing for the first time. + * Also calls OnLayoutSetup() to allow derived classes to perform layout at this stage. + */ + void LayoutPopup(); + + /** + * @brief Creates or destroys the popup tail based on the current TAIL_DISPLAYED property. + * Also uses the TAIL_POSITION property to position it. */ - void SetDefaultBackgroundImage(); + void LayoutTail(); /** - * Create Dim Backing - * (covers all content behind the dialog) + * @brief Performs any relative positioning required based on the current contextual mode, if set. + * If contextual mode is not enabled, this method has no effect. + * @param[in] size The Popups current size (can be accessed from within the OnRelayout() method). + */ + void LayoutContext( const Vector2& size ); + + /** + * @brief All transition-in animation setup and layout is done here. + * Different types of animation mode require different layouts to work, + * this function encapsulates anything animation-mode specific. + * This is called once for multiple displays/hides of the pops. + * It is only re-called when the layout becomes dirty. + */ + void LayoutAnimation(); + + /** + * @brief Initiates a transition-in or transition-out animation based + * on the current animation settings. + * @param[in] transitionIn True to perform a transition-in, false for transition out. + * @param[in] instantaneous Optional - If set to true will override the duration to provide an instant animation. + */ + void StartTransitionAnimation( bool transitionIn, bool instantaneous = false ); + + /** + * @brief Invoked once a display state change has completed. + */ + void DisplayStateChangeComplete(); + + /** + * @brief This is called when the auto-hide timer finishes. + * It performs a display-state change to HIDDEN. + * @return True as signal is consumed. + */ + bool OnAutoHideTimeReached(); + + /** + * @brief Create Dimmed Backing (covers all content behind the dialog). + * + * @return The backing actor. + */ + ImageActor CreateBacking(); + + /** + * @brief Creates the lower area within the popup. + */ + void CreateFooter(); + + /** + * @brief Sets if the popup allows touch events to pass through or not. + * + * @param[in] enabled Set to true to make the popup touch-transparent. */ - void CreateBacking(); + void SetTouchTransparent( bool enabled ); /** - * Create Dialog - * (dialog content resides inside this - buttons, title etc.) + * @brief Returns if the popup allows touch events to pass through or not. + * + * @return True if the popup is touch-transparent. */ - void CreateDialog(); + const bool IsTouchTransparent() const; /** - * Animate Popup by scaling uniformally from 0 to 100% and vice versa (default behaviour) - * @param[in] state The desired state to change into. - * @param[in] duration The time for this animation to take. + * @brief Allows the popup entry animation to be setup from a Property::Map that could + * originate, for example, from a JSON file. + * + * @param[in] map A Property::Map containing a description of an animation */ - void HandleStateChange( Toolkit::Popup::PopupState state, float duration ); + void SetEntryAnimationData( const Property::Map& map ); /** - * Invoked once StateChange has completed. + * @brief Allows the popup exit animation to be setup from a Property::Map that could + * originate, for example, from a JSON file. + * + * @param[in] map A Property::Map containing a description of an animation */ - void HandleStateChangeComplete(); + void SetExitAnimationData( const Property::Map& map ); public: // Signals @@ -183,9 +356,24 @@ public: // Signals Toolkit::Popup::TouchedOutsideSignalType& OutsideTouchedSignal(); /** + * @copydoc Dali::Toolkit::Popup::ShowingSignal() + */ + Toolkit::Popup::DisplayStateChangeSignalType& ShowingSignal(); + + /** + * @copydoc Dali::Toolkit::Popup::ShownSignal() + */ + Toolkit::Popup::DisplayStateChangeSignalType& ShownSignal(); + + /** + * @copydoc Dali::Toolkit::Popup::HidingSignal() + */ + Toolkit::Popup::DisplayStateChangeSignalType& HidingSignal(); + + /** * @copydoc Dali::Toolkit::Popup::HiddenSignal() */ - Toolkit::Popup::HiddenSignalType& HiddenSignal(); + Toolkit::Popup::DisplayStateChangeSignalType& HiddenSignal(); /** * Connects a callback function with the object's signals. @@ -201,10 +389,10 @@ public: // Signals private: /** - * Signal occurs when the State animation (transition from hide<->show) finishes + * Signal occurs when the State animation (transition from hide <-> show) finishes. * @param[in] source The animation that just finished. */ - void OnStateAnimationFinished( Animation& source ); + void OnDisplayChangeAnimationFinished( Animation& source ); /** * Signal occurs when the dimmed backing for the Popup is touched. @@ -215,8 +403,8 @@ private: bool OnBackingTouched(Actor actor, const TouchEvent& event); /** - * Signal occurs when the wheel event is occured on dimmed backing for the Popup. - * @param[in] actor The Actor got wheel + * Signal occurs when a mouse wheel event occurs on the dimmed backing. + * @param[in] actor The Actor that got the wheel event. * @param[in] event The Wheel Event. * @return Whether to consume event or not. */ @@ -236,9 +424,16 @@ private: virtual void OnInitialize(); /** - * @copydoc Dali::CustomActorImpl::OnPropertySet() + * Called whenever the popup layout is re-set up. + * Normally due to a change in contents. + * Note: This is only done when the popup is shown. + */ + virtual void OnLayoutSetup() {} + + /** + * Called when the popup is directly or indirectly parented to the stage. */ - virtual void OnPropertySet( Property::Index index, Property::Value propertyValue ); + virtual void OnControlStageConnection(); /** * From Control; called after a child has been added to the owning actor. @@ -257,11 +452,6 @@ private: virtual void OnSetResizePolicy( ResizePolicy::Type policy, Dimension::Type dimension ); /** - * @copydoc Control::OnKeyEvent() - */ - virtual bool OnKeyEvent(const KeyEvent& event); - - /** * @copydoc Control::GetNaturalSize() */ virtual Vector3 GetNaturalSize(); @@ -269,93 +459,99 @@ private: /** * @copydoc Control::GetHeightForWidth() */ - float GetHeightForWidth( float width ); + virtual float GetHeightForWidth( float width ); /** * @copydoc Control::GetWidthForHeight() */ - float GetWidthForHeight( float height ); + virtual float GetWidthForHeight( float height ); /** - * @copydoc Control::GetNextKeyboardFocusableActor() + * @copydoc Control::OnKeyEvent() */ - Actor GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled); + virtual bool OnKeyEvent( const KeyEvent& event ); /** - * Create the root actor for the footer + * @copydoc Control::GetNextKeyboardFocusableActor() */ - void CreateFooter(); + Actor GetNextKeyboardFocusableActor( Actor currentFocusedActor, Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled ); private: - // Undefined + // Undefined. Popup(const Popup&); - // Undefined + // Undefined. Popup& operator=(const Popup& rhs); private: - struct LayoutInfo - { - Vector3 mTitleSize; - Vector3 mContentSize; - Vector3 mButtonBgSize; - std::vector mButtonSize; - }; - -private: - - bool mShowing; ///< Popup is showing or not - - Layer mLayer; ///< Popup Layer (i.e. Dim backing and PopupBg reside in this) - Toolkit::TableView mPopupLayout; ///< Popup layout (i.e. dialog reside in this) - ImageActor mBacking; ///< Backing actor (dim effect) - - Actor mPreviousFocusedActor; ///< Store the previous focused actor to restore the focus when popup hide - - Actor mBackgroundImage; ///< Stores the background image. - Actor mButtonAreaImage; ///< Stores the button background image. - Toolkit::TextLabel mTitle; ///< Stores the text title. - Actor mContent; ///< Stores popup's content. - Actor mBottomBg; ///< bottom button bar background. ImageActor is replaced with Actor due to hidden image. - Actor mTailImage; ///< Stores the tail image - - std::vector< Actor > mButtons; ///< Keeps track of the buttons added to this popup. - Toolkit::Popup::PopupState mState; ///< Popup current state. - Animation mAnimation; ///< The animation instance managing state changing. - bool mAlterAddedChild; ///< Flag used to control whether children are reparented or not. - PopupStylePtr mPopupStyle; ///< The style to be used for this popup. - - LayoutInfo mLayoutInfo; ///< Stores sizes of all popup components. - - Toolkit::Popup::TouchedOutsideSignalType mTouchedOutsideSignal; - Toolkit::Popup::HiddenSignalType mHiddenSignal; - - Property::Index mPropertyTitle; ///< Property index for Title. - Property::Index mPropertyState; ///< Property index for popup state. + Toolkit::Popup::TouchedOutsideSignalType mTouchedOutsideSignal; + Toolkit::Popup::DisplayStateChangeSignalType mShowingSignal; + Toolkit::Popup::DisplayStateChangeSignalType mShownSignal; + Toolkit::Popup::DisplayStateChangeSignalType mHidingSignal; + Toolkit::Popup::DisplayStateChangeSignalType mHiddenSignal; + + Layer mLayer; ///< Popup Layer (i.e. Dim backing and PopupBg reside in this). + Toolkit::TableView mPopupLayout; ///< Popup Background (i.e. dialog reside in this). + ImageActor mBacking; ///< Backing actor (dim effect). + Actor mPreviousFocusedActor; ///< Store the previous focused actor to restore the focus when popup hide. + Actor mTailImage; ///< Stores the tail image. + Actor mPopupContainer; ///< This actor is used to house the background image and the main popup layout. + Animation mAnimation; ///< The current animation in use used to manage display state changing. + bool mAlterAddedChild; ///< Flag used to control whether children are reparented or not. + bool mLayoutDirty; ///< Set to true whenever any property that would require a layout update is modified. + Timer mAutoHideTimer; ///< Used to perform an auto-hide of the popup if desired. + bool mTouchTransparent; ///< Allows all events to pass through the popup. + + // Main Content related properties: + Actor mTitle; ///< Stores the text title. + Actor mContent; ///< Stores the unselected content. + Actor mFooter; ///< Stores the footer content (typically controls). + + // Display related properties. + Toolkit::Popup::DisplayState mDisplayState; ///< The current display state of the popup. + bool mTailVisible; ///< True if the popup tail should be visible. + Vector3 mTailPosition; ///< The position of the tail. + Toolkit::Popup::ContextualMode mContextualMode; ///< Allows the popup to be layed out adjacent to its parent in different directions. + float mAnimationDuration; ///< The duration of the transition in and out animations. + Toolkit::Popup::AnimationMode mAnimationMode; ///< The animation to use to transition in and out. + Dali::AnimationData mEntryAnimationData; ///< Stores description data that can be used for generating a custom entry animation. + Dali::AnimationData mExitAnimationData; ///< Stores description data that can be used for generating a custom exit animation. + unsigned int mAutoHideDelay; ///< If set, will auto-hide the popup after a specified amount of time. + + // Style related properties: + bool mBackingEnabled; ///< True if a dimmed backing will be used. + Vector4 mBackingColor; ///< The color of the backing. + Actor mPopupBackgroundImage; ///< Stores the background image. + Vector4 mBackgroundOuterBorder; ///< Background external border margin size + float mMargin; ///< Internal margin for popup contents. + std::string mTailUpImage; ///< Image used for the tail for the up direction. + std::string mTailDownImage; ///< Image used for the tail for the down direction. + std::string mTailLeftImage; ///< Image used for the tail for the left direction. + std::string mTailRightImage; ///< Image used for the tail for the right direction. }; } // namespace Internal // Helpers for public-api forwarding methods -inline Toolkit::Internal::Popup& GetImpl(Toolkit::Popup& pub) +inline Toolkit::Internal::Popup& GetImpl( Toolkit::Popup& publicObject ) { - DALI_ASSERT_ALWAYS(pub); + DALI_ASSERT_ALWAYS( publicObject ); - Dali::RefObject& handle = pub.GetImplementation(); + Dali::RefObject& handle = publicObject.GetImplementation(); - return static_cast(handle); + return static_cast( handle ); } -inline const Toolkit::Internal::Popup& GetImpl(const Toolkit::Popup& pub) +inline const Toolkit::Internal::Popup& GetImpl( const Toolkit::Popup& publicObject ) { - DALI_ASSERT_ALWAYS(pub); + DALI_ASSERT_ALWAYS( publicObject ); - const Dali::RefObject& handle = pub.GetImplementation(); + const Dali::RefObject& handle = publicObject.GetImplementation(); - return static_cast(handle); + return static_cast( handle ); } } // namespace Toolkit diff --git a/dali-toolkit/internal/controls/popup/popup-style-impl.cpp b/dali-toolkit/internal/controls/popup/popup-style-impl.cpp deleted file mode 100644 index 4dba00b..0000000 --- a/dali-toolkit/internal/controls/popup/popup-style-impl.cpp +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -// EXTERNAL INCLUDES -#include - -using namespace Dali; -using namespace Dali::Toolkit; - -namespace // unnamed namespace -{ -// Popup style default -const Vector4 DEFAULT_BACKING_COLOR = Vector4(0.0f, 0.0f, 0.0f, 0.5f); -const float DEFAULT_MARGIN = 20.0f; //From Tizen GUI UX -const float DEFAULT_BUTTON_SPACING = 10.0f; //From Tizen GUI UX -const Vector3 DEFAULT_BUTTON_SIZE(275.0f, 74.0f, 0.0f); -const char* DEFAULT_BACKGROUND_IMAGE_PATH = DALI_IMAGE_DIR "00_popup_bg.9.png"; -const char* DEFAULT_BUTTON_AREA_IMAGE_PATH = DALI_IMAGE_DIR "00_popup_button_bg.png"; -const char* DEFAULT_TAIL_UP_IMAGE_PATH = DALI_IMAGE_DIR "popup_tail_up.png"; -const char* DEFAULT_TAIL_DOWN_IMAGE_PATH = DALI_IMAGE_DIR "popup_tail_down.png"; -const char* DEFAULT_TAIL_LEFT_IMAGE_PATH = DALI_IMAGE_DIR "popup_tail_left.png"; -const char* DEFAULT_TAIL_RIGHT_IMAGE_PATH = DALI_IMAGE_DIR "popup_tail_right.png"; -const Vector3 DEFAULT_BOTTOM_SIZE(620.0f,96.0f,0.0f); -const Vector2 DEFAULT_BACKGROUND_SIZE(620.0f, 236.0f); -const Vector4 DEFAULT_BACKGROUND_STYLE_9_BORDER( 25.0f, 25.0f, 26.0f, 50.0f ); -const Vector4 DEFAULT_BACKGROUND_OUTER_BORDER( 40.0f, 0.0f, 30.0f, 0.0f ); -const Vector4 DEFAULT_BUTTON_AREA_9_PATCH_BORDER( 13.0f, 8.0f, 13.0f, 8.0f ); -} - -namespace Dali -{ - -namespace Toolkit -{ - -namespace Internal -{ - -/////////////////////////////////////////////////////////////////////////////// -// Popup Style (base class) -/////////////////////////////////////////////////////////////////////////////// - -PopupStyle::PopupStyle() -: backingColor(), - backgroundImage(), - buttonAreaImage(), - backgroundSize(), - backgroundScale9Border(), - backgroundOuterBorder(), - buttonArea9PatchBorder(), - margin(0.0f), - buttonSpacing(0.0f), - buttonSize(), - tailUpImage(), - tailDownImage(), - tailLeftImage(), - tailRightImage() -{ -} - -PopupStyle::~PopupStyle() -{ -} - -/////////////////////////////////////////////////////////////////////////////// -// Popup style: Default -/////////////////////////////////////////////////////////////////////////////// - -PopupStyleDefault::PopupStyleDefault() -{ - backingColor = DEFAULT_BACKING_COLOR; - backgroundImage = DEFAULT_BACKGROUND_IMAGE_PATH; - buttonAreaImage = DEFAULT_BUTTON_AREA_IMAGE_PATH; - margin = DEFAULT_MARGIN; - buttonSpacing = DEFAULT_BUTTON_SPACING; - buttonSize = DEFAULT_BUTTON_SIZE; - tailUpImage = DEFAULT_TAIL_UP_IMAGE_PATH; - tailDownImage = DEFAULT_TAIL_DOWN_IMAGE_PATH; - tailLeftImage = DEFAULT_TAIL_LEFT_IMAGE_PATH; - tailRightImage = DEFAULT_TAIL_RIGHT_IMAGE_PATH; - backgroundSize = DEFAULT_BACKGROUND_SIZE; - backgroundScale9Border = DEFAULT_BACKGROUND_STYLE_9_BORDER; - backgroundOuterBorder = DEFAULT_BACKGROUND_OUTER_BORDER; - buttonArea9PatchBorder = DEFAULT_BUTTON_AREA_9_PATCH_BORDER; - bottomSize = DEFAULT_BOTTOM_SIZE; -} - -PopupStyleDefaultPtr PopupStyleDefault::New() -{ - return PopupStyleDefaultPtr(new PopupStyleDefault()); -} - -PopupStyleDefault::~PopupStyleDefault() -{ -} - -} // namespace Internal - -} // namespace Toolkit - -} // namespace Dali diff --git a/dali-toolkit/internal/controls/popup/popup-style-impl.h b/dali-toolkit/internal/controls/popup/popup-style-impl.h deleted file mode 100644 index 34d051a..0000000 --- a/dali-toolkit/internal/controls/popup/popup-style-impl.h +++ /dev/null @@ -1,120 +0,0 @@ -#ifndef __DALI_TOOLKIT_INTERNAL_POPUP_STYLE_H__ -#define __DALI_TOOLKIT_INTERNAL_POPUP_STYLE_H__ - -/* - * Copyright (c) 2014 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -// EXTERNAL INCLUDES -#include -#include -#include -#include -#include - -#include - -namespace Dali -{ - -namespace Toolkit -{ - -namespace Internal -{ - -class PopupStyle; - -typedef IntrusivePtr PopupStylePtr; - -/** - * A PopupStyle describes the images, positions, sizes, and various other metrics - * which define how the popup should look. - */ -class PopupStyle : public RefObject -{ -public: - - /** - * Virtual destructor. - */ - virtual ~PopupStyle(); - -public: - - Vector4 backingColor; ///< Color of backing layer (covers entire screen) - std::string backgroundImage; ///< Background image path - std::string buttonAreaImage; ///< This image is for the back ground area common for all the buttons in the popup - Vector2 backgroundSize; ///< Background image size. - Vector4 backgroundScale9Border; ///< Background scale-9 border settings. - Vector4 backgroundOuterBorder; ///< Background outer border settings. - Vector4 buttonArea9PatchBorder; ///< 9 patch border constants for buttonAreaImage - float margin; ///< Margin for all contents (body, title, button) - float buttonSpacing; ///< Horizontal spacing for buttons. - Vector3 buttonSize; ///< Size of Buttons. - Vector3 bottomSize; ///< size of bottom button bar. - std::string bottomBackgroundImage; ///< bottom background image path. - std::string tailUpImage; ///< Tail Up-side image path. - std::string tailDownImage; ///< Tail Down-side image path. - std::string tailLeftImage; ///< Tail Left-side image path. - std::string tailRightImage; ///< Tail Right-side image path. - -protected: - - /** - * Create a new PopupStyle; Only derived versions are instantiable. - */ - PopupStyle(); -}; - -class PopupStyleDefault; - -typedef IntrusivePtr PopupStyleDefaultPtr; - -/** - * This is the default popup style. - */ -class PopupStyleDefault : public PopupStyle -{ -public: - - /** - * Create a new PopupStyle - */ - static PopupStyleDefaultPtr New(); - - /** - * Virtual destructor. - */ - virtual ~PopupStyleDefault(); - -private: - -protected: - - /** - * Protected constructor; see also PopupStyleDefault::New() - */ - PopupStyleDefault(); -}; - -} // namespace Internal - -} // namespace Toolkit - -} // namespace Dali - -#endif // __DALI_TOOLKIT_INTERNAL_POPUP_STYLE_H__ diff --git a/dali-toolkit/internal/controls/table-view/table-view-impl.cpp b/dali-toolkit/internal/controls/table-view/table-view-impl.cpp index ae35484..f482fdd 100644 --- a/dali-toolkit/internal/controls/table-view/table-view-impl.cpp +++ b/dali-toolkit/internal/controls/table-view/table-view-impl.cpp @@ -798,6 +798,14 @@ void TableView::OnLayoutNegotiated( float size, Dimension::Type dimension ) } } +void TableView::OnSizeSet( const Vector3& size ) +{ + // If this table view is size negotiated by another actor or control, then the + // rows and columns must be recalculated or the new size will not take effect. + mRowDirty = mColumnDirty = true; + RelayoutRequest(); +} + void TableView::OnRelayout( const Vector2& size, RelayoutContainer& container ) { // Go through the layout data diff --git a/dali-toolkit/internal/controls/table-view/table-view-impl.h b/dali-toolkit/internal/controls/table-view/table-view-impl.h index 2543b5e..d6ccf4b 100644 --- a/dali-toolkit/internal/controls/table-view/table-view-impl.h +++ b/dali-toolkit/internal/controls/table-view/table-view-impl.h @@ -261,6 +261,11 @@ private: // From Control */ virtual void OnLayoutNegotiated( float size, Dimension::Type dimension ); + /** + * @copydoc CustomActorImpl::OnSizeSet( const Vector3& size ) + */ + virtual void OnSizeSet( const Vector3& size ); + private: // Implementation /** diff --git a/dali-toolkit/internal/file.list b/dali-toolkit/internal/file.list index a93f983..3b04cf6 100644 --- a/dali-toolkit/internal/file.list +++ b/dali-toolkit/internal/file.list @@ -24,8 +24,8 @@ toolkit_src_files = \ $(toolkit_src_dir)/controls/gaussian-blur-view/gaussian-blur-view-impl.cpp \ $(toolkit_src_dir)/controls/image-view/image-view-impl.cpp \ $(toolkit_src_dir)/controls/magnifier/magnifier-impl.cpp \ + $(toolkit_src_dir)/controls/popup/confirmation-popup-impl.cpp \ $(toolkit_src_dir)/controls/popup/popup-impl.cpp \ - $(toolkit_src_dir)/controls/popup/popup-style-impl.cpp \ $(toolkit_src_dir)/controls/page-turn-view/page-turn-portrait-view-impl.cpp \ $(toolkit_src_dir)/controls/page-turn-view/page-turn-effect.cpp \ $(toolkit_src_dir)/controls/page-turn-view/page-turn-landscape-view-impl.cpp \ diff --git a/docs/content/images/popup/popup-example.png b/docs/content/images/popup/popup-example.png new file mode 100644 index 0000000000000000000000000000000000000000..352a2e09b91cbe0c287831342a5c8eb20c78a1da GIT binary patch literal 19356 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 literal 0 HcmV?d00001 diff --git a/docs/content/images/popup/popup-fields.png b/docs/content/images/popup/popup-fields.png new file mode 100644 index 0000000000000000000000000000000000000000..8555dcf2daa028fcd948a880fdd286752f2a8ff1 GIT binary patch literal 58224 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 literal 0 HcmV?d00001 diff --git a/docs/content/images/popup/popup-image-content.png b/docs/content/images/popup/popup-image-content.png new file mode 100644 index 0000000000000000000000000000000000000000..787681161b79f1b09f11c77803b4f31668ce7b67 GIT binary patch literal 303154 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 z�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 V`|d~721AzB&ytYdT*Kum10wSeN7 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 literal 0 HcmV?d00001 diff --git a/docs/content/images/popup/popup-toast.png b/docs/content/images/popup/popup-toast.png new file mode 100644 index 0000000000000000000000000000000000000000..25e07b108ef65430e840ba56de4d8588a1f70aeb GIT binary patch literal 30832 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 literal 0 HcmV?d00001 diff --git a/docs/content/main.md b/docs/content/main.md index cf99aeb..fefb8a3 100644 --- a/docs/content/main.md +++ b/docs/content/main.md @@ -51,12 +51,13 @@ + [Accessibility](@ref accessibility) ### UI Components - + [Text Label](@ref text-label) - + [Text Field](@ref text-field) + Buttons - + TableView - + [Scroll View](@ref scroll-view) + [ItemView](@ref item-view) + + [Popup](@ref popup) + + [Scroll View](@ref scroll-view) + + TableView + + [Text Field](@ref text-field) + + [Text Label](@ref text-label) ### RenderTasks diff --git a/docs/content/shared-javascript-and-cpp-documentation/popup.md b/docs/content/shared-javascript-and-cpp-documentation/popup.md new file mode 100644 index 0000000..c302f82 --- /dev/null +++ b/docs/content/shared-javascript-and-cpp-documentation/popup.md @@ -0,0 +1,392 @@ + + +[TOC] + +# Popup {#popup} + +![ ](../assets/img/popup/popup-example.png) ![ ](./popup-example.png) + +## Description {#popupdescription} + +The Popup control provides a generic way of displaying modal content. + +The content is displayed until it is dismissed by hiding the Popup. + +While the Popup is visible, it is displayed within a layer that is placed above any other actors. + +Content behind the Popup is dimmed by default, although this is configurable. + + +## Contents {#popupcontents} + + +The Popup is designed to be generic, but provide the necessary layout functionality to achieve this. + +The Popup window is broken down into the following areas: + +PopupBackgroundImage: This is the frame that appears around the edge of the Popup. + +Within the Popup there are three main fields: + +- Title +- Content +- Footer + +![ ](../assets/img/popup/popup-fields.png) ![ ](./popup-fields.png) + +Each field can contain any Actor. + +Note: All actor properties are optional, allowing any combination of content areas. +Example: Image only popup (using the content field): +![ ](../assets/img/popup/popup-image-content.png) ![ ](./popup-image-content.png) + +### Example content: {#popupfieldexample} + +- Title: TextLabel +- Content: ImageActor or TextLabel +- Footer: PushButton or Actor containing two PushButtons + +## Setting and getting the display state {#popupdisplaystate} + +The popup will not be shown immediately upon parenting it / adding it to the stage. First the display state must be set. +The display state is represented by the property DISPLAY_STATE. It can be set with SHOWN and HIDDEN to show or hide the Popup. +However, when getting the state, you will also be told if the Popup is in the process of SHOWING or HIDING. + + | Value | Setting the state | Getting the state | + |----------|--------------------------------|--------------------------------| + | SHOWN | Show the popup | The popup is fully shown | + | HIDDEN | Hide the popup | The popup is fully hidden | + | SHOWING | | The popup is transitioning in | + | HIDING | | The popup is transitioning out | + + +## Signals {#popupsignals} + +### Display State Signals {#popupdisplaystatesignals} + +All four state changes cause notifications via four respective signals that can be connected to. + +### OutsideTouched Signal {#popupoutsidetouched} + +This signal is emitted whenever a touch is received outside of the popups area. +This is typically used to hide / dismiss the popup, but can be ignored if it is desired to force the user to make a selection using the controls within the Popup. + + +## Transition effects {#popuptransitioneffects} + +The Popup object has built-in transitional animation effects. +These can be user-defined by setting ANIMATION_MODE to CUSTOM, and setting the ENTRY_ANIMATION and +EXIT_ANIMATION properties accordingly. + +The default to fading in and out. + + +## Types of Popup {#popuptypes} + +The Popup can be configured to a preset type by using named types within the type-registry. + +These types are modifications / specialisations of a Popup. They provide the library user with a shortcut way of creating a specific type of Popup. + + +The Popup control features a "Toast" popup type. This is a Popup that appears at the bottom of the screen, typically with some text. They are normally for informational purposes only. + + +### Key differences of the Toast popup {#popuptoastdifferences} + +- The Popup will auto-hide itself after a few seconds. +- It is touch-transparent. This means touch events go through the Popup to Actors below, giving it non-modal behaviour. +- The backing is not dimmed. This allows the user to continue their actions without distraction. + +Note: All the above features can be set or unset manually on the Popup control if desired. + +Popup types can be created with the TypeRegistry (as they are not separate classes). + + +### Example: {#popuptoastexample} + +![ ](../assets/img/popup/popup-toast.png) ![ ](./popup-toast.png) + +Here is the code to produce the above example: + +C++ +~~~{.cpp} +TypeInfo typeInfo = TypeRegistry::Get().GetTypeInfo( "popup-toast" ); +if( typeInfo ) +{ + BaseHandle baseHandle = typeInfo.CreateInstance(); + if( baseHandle ) + { + Toolkit::Popup popup = Toolkit::Popup::DownCast( baseHandle ); + popup.SetTitle( Toolkit::TextLabel::New( "This is a Toast Popup.\nIt will auto-hide itself" ) ); + Stage::GetCurrent().Add( popup ); + popup.SetDisplayState( Toolkit::Popup::SHOWN ); + } +} +~~~ + + +## Contextual Mode {#popupcontextualmode} + +Contextual Mode allows the popup can appear adjacent to it's parent in screen space. + +If disabled, the Popup will ignore it's parent and appear centered on the stage (user positioning can override this). + +If enabled, the contextual mode can be set to four directions. The Popup will be made adjacent on the selected axis. + +EG: +~~~{.cpp} +myPopup.SetProperty( Toolkit::Popup::Properties::CONTEXTUAL_MODE, "BELOW" ); +~~~ + +Will make the top of the Popup appear just below the bottom of the parent object (plus a margin). + +The default is: NON_CONTEXTUAL which means no layout or positioning is performed. + +| ContextualMode | Layout | +|-------------------|---------------------------------------------------------| +| NON_CONTEXTUAL | No contextual layout is performed | +| ABOVE | Popup is above vertically, centered horizontally | +| RIGHT | Popup is to the right horizontally, centered vertically | +| BELOW | Popup is below vertically, centered horizontally | +| LEFT | Popup is to the left horizontally, centered vertically | + + +## Properties {#popupproperties} + +Various properties provide more configuration on the Popup's styling. + +This is a breakdown of remaining properties not described in detail above. + + +| Property | Type | Description | +|------------------------|---------|--------------------------------------------------------------------------| +| TOUCH_TRANSPARENT | bool | If true, allow touch events to travel through the popup. | +| TAIL_VISIBILITY | bool | If true, display a tail image on one of the edges of the popup. | +| TAIL_POSITION | Vector3 | Describes the position of the tail image. Orientation is inferred. | +| ANIMATION_DURATION | float | Duration used for entry and exit transition animations. | +| AUTO_HIDE_DELAY | int | If non-zero, the number of milliseconds before the popup will auto-hide. | +| BACKING_ENABLED | bool | True if backing (dimmed background) is enabled. | +| BACKING_COLOR | Vector4 | The color of the dimmed background. | +| TAIL_UP_IMAGE | string | The image to use for the tail if above the popup. | +| TAIL_DOWN_IMAGE | string | The image to use for the tail if below the popup. | +| TAIL_LEFT_IMAGE | string | The image to use for the tail if to the left of the popup. | +| TAIL_RIGHT_IMAGE | string | The image to use for the tail if to the right of the popup. | + + +# ConfirmationPopup Control {#popupconfirmation} + +The ConfirmationPopup control provides a simple interface for providing automatic connection to control signals for common-use Popup use-cases. + +ConfirmationPopup will automatically provide signals for 1 or 2 controls. +Note: The controls do not need to be PushButtons. +These signals are dynamically created. The controls (typically PushButtons) must be specifially named so the ConfirmationPopup can locate them. + +## Step 1 {#popupconfirmationstep1} +Name your controls. + +- Name your first control, or OK control: "control-ok" +- Name your second control, or Cancel control: "control-cancel" + +## Step 2 {#popupconfirmationstep2} +Tell the ConfirmationPopup the names of the signals to connect to for each control. +For example, if we are using PushButtons as controls, the signal name would be "clicked". +This allows us to use different control types. + +- Set property "connect-signal-ok-selected" with the name of the signal to connect to within the first control. +- Set property "connect-signal-cancel-selected" with the name of the signal to connect to within the second control. + +## Step 3 {#popupconfirmationstep3} +Connect to the following respective signals within ConfirmationPopup: + +- Connect to signal "control-signal-ok" to be signalled for the first control. +- Connect to signal "control-signal-cancel" to be signalled for the second control. + +The ConfirmationPopup will dynamically make the connection between the signalling control, and your signal handler. + +This allows connection of signals within both C++, JSON and Javascript APIs. +If more manual control or customisable layout is needed, then it is recommended to use the Popup widget directly for full control. + +The JSON code example at the bottom of this document uses the ConfirmationPopup to allow signal connection from within the JSON description. + + +# C++ example of a Popup with two buttons {#popupexamplec} + +This example creates a Popup with: + +- Title: TextLabel +- Content: TextLabel +- Footer: ImageActor (an image border around the buttons) + - PushButton (OK control) + - PushButton (Cancel control) + +The example connects signals to the two buttons, and to the OutsideTouched signal. + +~~~{.cpp} +Toolkit::Popup popup = Toolkit::Popup::New(); + +Toolkit::TextLabel titleActor = Toolkit::TextLabel::New( "Title" ); +titleActor.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, Color::WHITE ); +titleActor.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); +popup.SetTitle( titleActor ); + +Toolkit::TextLabel contentActor = Toolkit::TextLabel::New( "Content text" ); +contentActor.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, Color::WHITE ); +contentActor.SetProperty( Toolkit::TextLabel::Property::MULTI_LINE, true ); +contentActor.SetProperty( Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" ); +popup.SetContent( contentActor ); + +// Create the footer: Two buttons surrounded by an image. +ImageActor footer = ImageActor::New( ResourceImage::New( DEFAULT_CONTROL_AREA_IMAGE_PATH ) ); +footer.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH ); +footer.SetResizePolicy( ResizePolicy::FIXED, Dimension::HEIGHT ); +footer.SetSize( 0.0f, 80.0f ); +footer.SetAnchorPoint( AnchorPoint::CENTER ); +footer.SetParentOrigin( ParentOrigin::CENTER ); + +Toolkit::PushButton okButton = Toolkit::PushButton::New(); +okButton.SetLabelText( "OK" ); +okButton.SetParentOrigin( ParentOrigin::CENTER ); +okButton.SetAnchorPoint( AnchorPoint::CENTER ); +okButton.SetResizePolicy( ResizePolicy::SIZE_FIXED_OFFSET_FROM_PARENT, Dimension::ALL_DIMENSIONS ); +okButton.SetSizeModeFactor( Vector3( -20.0f, -20.0f, 0.0 ) ); +okButton.ClickedSignal().Connect( this, &MyExample::OnOKButtonClicked ); + +Toolkit::PushButton cancelButton = Toolkit::PushButton::New(); +cancelButton.SetLabelText( "Cancel" ); +cancelButton.SetParentOrigin( ParentOrigin::CENTER ); +cancelButton.SetAnchorPoint( AnchorPoint::CENTER ); +cancelButton.SetResizePolicy( ResizePolicy::SIZE_FIXED_OFFSET_FROM_PARENT, Dimension::ALL_DIMENSIONS ); +cancelButton.SetSizeModeFactor( Vector3( -20.0f, -20.0f, 0.0 ) ); +cancelButton.ClickedSignal().Connect( this, &MyExample::OnCancelButtonClicked ); + +// Set up the footer's layout. +Toolkit::TableView controlLayout = Toolkit::TableView::New( 1, 2 ); +controlLayout.SetParentOrigin( ParentOrigin::CENTER ); +controlLayout.SetAnchorPoint( AnchorPoint::CENTER ); +controlLayout.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS ); +controlLayout.SetCellPadding( Size( 10.0f, 10.0f ) ); +controlLayout.SetRelativeWidth( 0, 0.5f ); +controlLayout.SetRelativeWidth( 1, 0.5f ); +controlLayout.SetCellAlignment( Toolkit::TableView::CellPosition( 0, 0 ), HorizontalAlignment::CENTER, VerticalAlignment::CENTER ); +controlLayout.SetCellAlignment( Toolkit::TableView::CellPosition( 0, 1 ), HorizontalAlignment::CENTER, VerticalAlignment::CENTER ); +controlLayout.AddChild( okButton, Toolkit::TableView::CellPosition( 0, 0 ) ); +controlLayout.AddChild( cancelButton, Toolkit::TableView::CellPosition( 0, 1 ) ); +footer.Add( controlLayout ); +popup.SetFooter( footer ); + +popup.OutsideTouchedSignal().Connect( this, &MyExample::OnPopupOutsideTouched ); + +// Add to stage (the popup is still invisible at this point). +Stage::GetCurrent().Add( popup ); + +// Display the popup. +mPopup.SetDisplayState( Toolkit::Popup::SHOWN ); +~~~ + + +# JSON example of a Popup with two buttons {#popupexamplejson} + +This example creates a Popup with: + +- Title: TextLabel +- Content: TextLabel +- Footer: Control + - PushButton (OK control) + - PushButton (Cancel control) + +The example connects signals to the two buttons, and to the OutsideTouched signal. +This time without an image around the buttons. This could be added in the same way as the C++ example however. + + +~~~{.json} +{ + "constants": { + "CONFIG_SCRIPT_LOG_LEVEL": "Verbose" + }, + "stage": [ + { + "type": "ConfirmationPopup", + "name": "confirmation-popup", + "parent-origin": [0.5, 0.55, 0.5], + "anchor-point": "CENTER", + "width-resize-policy": "SIZE_RELATIVE_TO_PARENT", + "height-resize-policy": "USE_NATURAL_SIZE", + "size-mode-factor": [0.65, 1.0, 1.0], + "tail-visibility": false, + "display-change-animation-duration": 1.0, + "contextual-mode": "NON_CONTEXTUAL", + "animation-mode": "ZOOM", + "connect-signal-ok-selected": "clicked", + "connect-signal-cancel-selected": "clicked", + "title": { + "type": "TextLabel", + "text": "Title text", + "text-color": [1, 1, 1, 1] + }, + "content": { + "type": "TextLabel", + "text": "Content text", + "padding": [20, 20, 20, 0], + "text-color": [1, 1, 1, 1] + }, + "footer": { + "type": "Control", + "size": [0, 80, 0], + "width-resize-policy": "FILL_TO_PARENT", + "height-resize-policy": "FIXED", + "parent-origin": "CENTER", + "anchor-point": "CENTER", + "actors": [ + { + "type": "PushButton", + "name": "control-ok", + "parent-origin": "CENTER_LEFT", + "anchor-point": "CENTER_LEFT", + "position": [20, 0, 0], + "size": [0, 0, 0], + "label-text": "OK" + }, + { + "type": "PushButton", + "name": "control-cancel", + "parent-origin": "CENTER_RIGHT", + "anchor-point": "CENTER_RIGHT", + "position": [-20, 0, 0], + "size": [0, 0, 0], + "label-text": "Cancel" + } + ] + }, + "signals": [ + { + "name": "control-signal-ok", + "action": "set", + "actor": "confirmation-popup", + "property": "display-state", + "value": "HIDDEN" + }, + { + "name": "control-signal-cancel", + "action": "set", + "actor": "confirmation-popup", + "property": "display-state", + "value": "HIDDEN" + }, + { + "name": "touched-outside", + "action": "set", + "actor": "confirmation-popup", + "property": "display-state", + "value": "HIDDEN" + } + ] + } + ] +} +~~~ + + +@class _Guide_Popup +*/ + -- 2.7.4