From 1d1bf9cec3aa86c043ebb4ddbc61ee0916ec9e32 Mon Sep 17 00:00:00 2001 From: David Steele Date: Thu, 8 Jun 2017 16:47:47 +0100 Subject: [PATCH] Added example of actor depth order change Fixed up SVG example to ensure actor sibling order is set after adding to the stage. Change-Id: Ib532eba27be23afd636e34cc9776ae4fd2c5ca48 --- com.samsung.dali-demo.xml | 3 + examples-reel/dali-examples-reel.cpp | 1 + examples/image-view-svg/image-view-svg-example.cpp | 5 +- examples/text-overlap/text-overlap-example.cpp | 149 +++++++++++++++++++++ examples/text-overlap/text-overlap-example.h | 28 ++++ resources/po/en_GB.po | 3 + resources/po/en_US.po | 3 + shared/dali-demo-strings.h | 2 + 8 files changed, 192 insertions(+), 2 deletions(-) create mode 100644 examples/text-overlap/text-overlap-example.cpp create mode 100644 examples/text-overlap/text-overlap-example.h diff --git a/com.samsung.dali-demo.xml b/com.samsung.dali-demo.xml index a71c9a3..b0887b8 100644 --- a/com.samsung.dali-demo.xml +++ b/com.samsung.dali-demo.xml @@ -224,4 +224,7 @@ + + + diff --git a/examples-reel/dali-examples-reel.cpp b/examples-reel/dali-examples-reel.cpp index af4b9d0..0c3f7cf 100644 --- a/examples-reel/dali-examples-reel.cpp +++ b/examples-reel/dali-examples-reel.cpp @@ -79,6 +79,7 @@ int DALI_EXPORT_API main(int argc, char **argv) demo.AddExample(Example("text-label.example", DALI_DEMO_STR_TITLE_TEXT_LABEL)); demo.AddExample(Example("text-label-multi-language.example", DALI_DEMO_STR_TITLE_TEXT_LABEL_MULTI_LANGUAGE)); demo.AddExample(Example("text-label-emojis.example", DALI_DEMO_STR_TITLE_EMOJI_TEXT)); + demo.AddExample(Example("text-overlap.example", DALI_DEMO_STR_TITLE_TEXT_OVERLAP)); demo.AddExample(Example("text-scrolling.example", DALI_DEMO_STR_TITLE_TEXT_SCROLLING)); demo.AddExample(Example("textured-mesh.example", DALI_DEMO_STR_TITLE_TEXTURED_MESH)); demo.AddExample(Example("tilt.example", DALI_DEMO_STR_TITLE_TILT_SENSOR)); diff --git a/examples/image-view-svg/image-view-svg-example.cpp b/examples/image-view-svg/image-view-svg-example.cpp index 613ecb7..a264ca5 100644 --- a/examples/image-view-svg/image-view-svg-example.cpp +++ b/examples/image-view-svg/image-view-svg-example.cpp @@ -87,7 +87,6 @@ public: changeButton.SetParentOrigin( ParentOrigin::TOP_RIGHT ); stage.Add( changeButton ); changeButton.ClickedSignal().Connect( this, &ImageSvgController::OnChangeButtonClicked ); - changeButton.SetProperty( DevelActor::Property::SIBLING_ORDER, 1 ); // Push button, for resetting the actor size and position Toolkit::PushButton resetButton = Toolkit::PushButton::New(); @@ -96,7 +95,6 @@ public: resetButton.SetParentOrigin( ParentOrigin::TOP_LEFT ); stage.Add( resetButton ); resetButton.ClickedSignal().Connect( this, &ImageSvgController::OnResetButtonClicked ); - resetButton.SetProperty( DevelActor::Property::SIBLING_ORDER, 1 ); // Create and put imageViews to stage for( unsigned int i=0; i<4u; i++) @@ -124,6 +122,9 @@ public: mPinchGestureDetector = PinchGestureDetector::New(); mPinchGestureDetector.Attach( mStageBackground); mPinchGestureDetector.DetectedSignal().Connect(this, &ImageSvgController::OnPinch); + + DevelActor::RaiseToTop(changeButton); + DevelActor::RaiseToTop(resetButton); } // Callback of push button, for changing image set diff --git a/examples/text-overlap/text-overlap-example.cpp b/examples/text-overlap/text-overlap-example.cpp new file mode 100644 index 0000000..560ebe0 --- /dev/null +++ b/examples/text-overlap/text-overlap-example.cpp @@ -0,0 +1,149 @@ + +#include +#include +#include "text-overlap-example.h" + +#include + +using namespace Dali; +using namespace Dali::Toolkit; + +static const int NUMBER_OF_LABELS(2); + + + +namespace Demo +{ + +TextOverlapController::TextOverlapController( Application& app ) +: mApplication( app ), + mTopmostLabel( 1 ) +{ + app.InitSignal().Connect( this, &TextOverlapController::Create ); + app.TerminateSignal().Connect( this, &TextOverlapController::Destroy ); +} + +void TextOverlapController::Create( Application& app ) +{ + Stage stage = Stage::GetCurrent(); + stage.KeyEventSignal().Connect( this, &TextOverlapController::OnKeyEvent ); + + Vector2 stageSize = stage.GetSize(); + + mLabels[0] = TextLabel::New("Text Label 1"); + mLabels[1] = TextLabel::New("Text Label 2"); + + mLabels[0].SetName("Label1"); + mLabels[1].SetName("Label2"); + + mLabels[0].SetProperty( DevelActor::Property::SIBLING_ORDER, 1 ); + mLabels[1].SetProperty( DevelActor::Property::SIBLING_ORDER, 2 ); + + mLabels[0].SetProperty( Control::Property::BACKGROUND, Color::RED ); + mLabels[1].SetProperty( Control::Property::BACKGROUND, Color::YELLOW ); + + for(int i=0; i position.y - size.y * 0.5f && + gesture.position.y <= position.y + size.y * 0.5f ) + { + mGrabbedActor = mLabels[i]; + break; + } + } + } + else if( mGrabbedActor && gesture.state == PanGesture::Continuing ) + { + Vector2 stageSize = Stage::GetCurrent().GetSize(); + Vector3 size = mGrabbedActor.GetCurrentSize(); + float y = Clamp( gesture.position.y, size.y * 0.5f, stageSize.y - size.y*0.5f ); + mGrabbedActor.SetPosition( 0, y ); + } + else + { + mGrabbedActor.Reset(); + } +} + +void TextOverlapController::Destroy( Application& app ) +{ + mPanDetector.DetachAll(); + UnparentAndReset(mLabels[0]); + UnparentAndReset(mLabels[1]); + mGrabbedActor.Reset(); +} + +bool TextOverlapController::OnClicked( Button button ) +{ + mTopmostLabel = 1-mTopmostLabel; // toggles between 0 and 1 + DevelActor::RaiseToTop(mLabels[mTopmostLabel]); + return false; +} + + +void TextOverlapController::OnKeyEvent( const KeyEvent& keyEvent ) +{ + if( keyEvent.state == KeyEvent::Down && + ( IsKey( keyEvent, DALI_KEY_BACK ) || + IsKey( keyEvent, DALI_KEY_ESCAPE ) ) ) + { + mApplication.Quit(); + } + else + { + Dali::Layer l = Dali::Stage::GetCurrent().GetRootLayer(); + int so = l.GetProperty(Dali::DevelActor::Property::SIBLING_ORDER); + l.SetProperty(Dali::DevelActor::Property::SIBLING_ORDER, so+1); + } +} + + +} // namespace Demo + + +int main( int argc, char** argv ) +{ + { + Application app = Application::New( &argc, &argv ); + Demo::TextOverlapController controller( app ); + app.MainLoop(); + } + exit( 0 ); +} diff --git a/examples/text-overlap/text-overlap-example.h b/examples/text-overlap/text-overlap-example.h new file mode 100644 index 0000000..b15f67d --- /dev/null +++ b/examples/text-overlap/text-overlap-example.h @@ -0,0 +1,28 @@ +#pragma once + +namespace Demo +{ + +class TextOverlapController : public Dali::ConnectionTracker +{ +public: + TextOverlapController( Dali::Application& app ); + +private: + void Create( Dali::Application& app ); + void Create2(); + void Destroy( Dali::Application& app ); + void OnPan( Dali::Actor actor, const Dali::PanGesture& gesture ); + void OnKeyEvent( const Dali::KeyEvent& keyEvent ); + bool OnClicked( Dali::Toolkit::Button button ); + +private: + Dali::Application& mApplication; + Dali::Toolkit::TextLabel mLabels[2]; + Dali::PanGestureDetector mPanDetector; + Dali::Actor mGrabbedActor; + Dali::Toolkit::Button mSwapButton; + int mTopmostLabel; +}; + +} diff --git a/resources/po/en_GB.po b/resources/po/en_GB.po index 7bd4065..d3110d9 100755 --- a/resources/po/en_GB.po +++ b/resources/po/en_GB.po @@ -145,6 +145,9 @@ msgstr "Text Field" msgid "DALI_DEMO_STR_TITLE_TEXT_LABEL" msgstr "Text Label" +msgid "DALI_DEMO_STR_TITLE_TEXT_OVERLAP" +msgstr "Text Overlap" + msgid "DALI_DEMO_STR_TITLE_TEXT_LABEL_MULTI_LANGUAGE" msgstr "Text Scripts" diff --git a/resources/po/en_US.po b/resources/po/en_US.po index a1f44ea..2fe350f 100755 --- a/resources/po/en_US.po +++ b/resources/po/en_US.po @@ -145,6 +145,9 @@ msgstr "Text Field" msgid "DALI_DEMO_STR_TITLE_TEXT_LABEL" msgstr "Text Label" +msgid "DALI_DEMO_STR_TITLE_TEXT_OVERLAP" +msgstr "Text Overlap" + msgid "DALI_DEMO_STR_TITLE_TEXT_LABEL_MULTI_LANGUAGE" msgstr "Text Scripts" diff --git a/shared/dali-demo-strings.h b/shared/dali-demo-strings.h index ab83d1f..4f6bac6 100644 --- a/shared/dali-demo-strings.h +++ b/shared/dali-demo-strings.h @@ -89,6 +89,7 @@ extern "C" #define DALI_DEMO_STR_TITLE_TEXT_EDITOR dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_EDITOR") #define DALI_DEMO_STR_TITLE_TEXT_FIELD dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_FIELD") #define DALI_DEMO_STR_TITLE_TEXT_LABEL dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_LABEL") +#define DALI_DEMO_STR_TITLE_TEXT_OVERLAP dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_OVERLAP") #define DALI_DEMO_STR_TITLE_TEXT_LABEL_MULTI_LANGUAGE dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_LABEL_MULTI_LANGUAGE") #define DALI_DEMO_STR_TITLE_TEXT_SCROLLING dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_SCROLLING") #define DALI_DEMO_STR_TITLE_TILT_SENSOR dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TILT_SENSOR") @@ -154,6 +155,7 @@ extern "C" #define DALI_DEMO_STR_TITLE_TEXT_EDITOR "Text Editor" #define DALI_DEMO_STR_TITLE_TEXT_FIELD "Text Field" #define DALI_DEMO_STR_TITLE_TEXT_LABEL "Text Label" +#define DALI_DEMO_STR_TITLE_TEXT_OVERLAP "Text Overlap" #define DALI_DEMO_STR_TITLE_TEXT_LABEL_MULTI_LANGUAGE "Text Scripts" #define DALI_DEMO_STR_TITLE_TEXT_SCROLLING "Text Scrolling" #define DALI_DEMO_STR_TITLE_TILT_SENSOR "Tilt Sensor" -- 2.7.4