Commit efa341d5ca5e10b93499358cb38c19aa2b1fef80

Authored by Nick Holland
2 parents 4a0542cd 0c5eaf99

[dali_1.1.35] Merge branch 'devel/master'

Change-Id: I53776d49f53aaddd7a30eb9fe0fdf7ba017d618f
com.samsung.dali-demo.xml
... ... @@ -97,8 +97,8 @@
97 97 <ui-application appid="text-fonts.example" exec="/usr/apps/com.samsung.dali-demo/bin/text-fonts.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
98 98 <label>Text Fonts</label>
99 99 </ui-application>
100   - <ui-application appid="text-message-field.example" exec="/usr/apps/com.samsung.dali-demo/bin/text-message-field.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
101   - <label>Text Label</label>
  100 + <ui-application appid="text-scrolling.example" exec="/usr/apps/com.samsung.dali-demo/bin/text-scrolling.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
  101 + <label>Text Scrolling</label>
102 102 </ui-application>
103 103 <ui-application appid="logging.example" exec="/usr/apps/com.samsung.dali-demo/bin/logging.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
104 104 <label>Logging</label>
... ...
demo/dali-demo.cpp
... ... @@ -57,6 +57,7 @@ int DALI_EXPORT_API main(int argc, char **argv)
57 57 demo.AddExample(Example("text-label.example", DALI_DEMO_STR_TITLE_TEXT_LABEL));
58 58 demo.AddExample(Example("text-label-multi-language.example", DALI_DEMO_STR_TITLE_TEXT_LABEL_MULTI_LANGUAGE));
59 59 demo.AddExample(Example("text-label-emojis.example", DALI_DEMO_STR_TITLE_EMOJI_TEXT));
  60 + demo.AddExample(Example("text-scrolling.example", DALI_DEMO_STR_TITLE_TEXT_SCROLLING));
60 61 demo.AddExample(Example("size-negotiation.example", DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE));
61 62 demo.AddExample(Example("popup.example", DALI_DEMO_STR_TITLE_POPUP));
62 63 demo.AddExample(Example("buttons.example", DALI_DEMO_STR_TITLE_BUTTONS));
... ...
examples/flex-container/flex-container-example.cpp
... ... @@ -20,7 +20,6 @@
20 20  
21 21 #include <dali/dali.h>
22 22 #include <dali-toolkit/dali-toolkit.h>
23   -#include <dali-toolkit/devel-api/controls/flex-container/flex-container.h>
24 23  
25 24 using namespace Dali;
26 25 using namespace Dali::Toolkit;
... ... @@ -200,8 +199,8 @@ public:
200 199  
201 200 // Add a text label to the container for showing the recently updated flexbox property value
202 201 mFlexPropertyLabel = TextLabel::New( FLEX_DIRECTION[mCurrentFlexDirection] );
203   - mFlexPropertyLabel.RegisterProperty("flexMargin", Vector4(10.0f, 10.0f, 10.0f, 10.0f), Property::READ_WRITE);
204   - mFlexPropertyLabel.RegisterProperty("flex", 0.05f, Property::READ_WRITE); // 5 pecent of the container size in the main axis
  202 + mFlexPropertyLabel.SetProperty(FlexContainer::ChildProperty::FLEX_MARGIN, Vector4(10.0f, 10.0f, 10.0f, 10.0f));
  203 + mFlexPropertyLabel.SetProperty(FlexContainer::ChildProperty::FLEX, 0.05f); // 5 pecent of the container size in the main axis
205 204 mFlexPropertyLabel.SetProperty(TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER");
206 205 mFlexPropertyLabel.SetProperty(TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER");
207 206 mFlexContainer.Add( mFlexPropertyLabel );
... ... @@ -211,9 +210,9 @@ public:
211 210 mFlexItemContainer.SetParentOrigin(ParentOrigin::TOP_LEFT);
212 211 mFlexItemContainer.SetAnchorPoint(AnchorPoint::TOP_LEFT);
213 212 mFlexItemContainer.SetBackgroundColor( Color::YELLOW );
214   - mFlexItemContainer.RegisterProperty("flex", 0.95f, Property::READ_WRITE); // 95 pecent of the container size in the main axis
215 213 mFlexItemContainer.SetProperty(FlexContainer::Property::FLEX_DIRECTION, mCurrentFlexDirection);
216 214 mFlexItemContainer.SetProperty(FlexContainer::Property::FLEX_WRAP, mCurrentFlexWrap);
  215 + mFlexItemContainer.SetProperty(FlexContainer::ChildProperty::FLEX, 0.95f); // 95 pecent of the container size in the main axis
217 216 mFlexContainer.Add(mFlexItemContainer);
218 217  
219 218 // Create flex items and add them to the container
... ...
examples/text-message-field/text-message-field-example.cpp deleted
1   -/*
2   - * Copyright (c) 2015 Samsung Electronics Co., Ltd.
3   - *
4   - * Licensed under the Apache License, Version 2.0 (the "License");
5   - * you may not use this file except in compliance with the License.
6   - * You may obtain a copy of the License at
7   - *
8   - * http://www.apache.org/licenses/LICENSE-2.0
9   - *
10   - * Unless required by applicable law or agreed to in writing, software
11   - * distributed under the License is distributed on an "AS IS" BASIS,
12   - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   - * See the License for the specific language governing permissions and
14   - * limitations under the License.
15   - *
16   - */
17   -
18   -/**
19   - * @file message-field-example.cpp
20   - * @brief Basic usage of TextField control
21   - */
22   -
23   -// EXTERNAL INCLUDES
24   -#include <dali-toolkit/dali-toolkit.h>
25   -
26   -using namespace Dali;
27   -using namespace Dali::Toolkit;
28   -
29   -namespace
30   -{
31   - const char* DESKTOP_IMAGE( DEMO_IMAGE_DIR "woodEffect.jpg" );
32   - const Vector2 DESKTOP_SIZE( Vector2( 1440, 1600 ) );
33   - const Vector2 PHOTOBOX_SIZE( Vector2(330.0f, 80.0f ) );
34   - const float MAX_OFFSCREEN_RENDERING_SIZE = 2048.f;
35   - const float SCREEN_BORDER = 5.0f; // Border around screen that Popups and handles will not exceed
36   -}
37   -/**
38   - * @brief The main class of the demo.
39   - */
40   -class TextMessageFieldExample : public ConnectionTracker
41   -{
42   -public:
43   -
44   - TextMessageFieldExample( Application& application )
45   - : mApplication( application ),
46   - mTargetActorPosition(),
47   - mTargetActorSize()
48   - {
49   - // Connect to the Application's Init signal
50   - mApplication.InitSignal().Connect( this, &TextMessageFieldExample::Create );
51   - }
52   -
53   - ~TextMessageFieldExample()
54   - {
55   - // Nothing to do here.
56   - }
57   -
58   - /**
59   - * One-time setup in response to Application InitSignal.
60   - */
61   - void Create( Application& application )
62   - {
63   - Stage stage = Stage::GetCurrent();
64   - mStageSize = stage.GetSize();
65   -
66   - stage.KeyEventSignal().Connect(this, &TextMessageFieldExample::OnKeyEvent);
67   -
68   - // Create Root actor
69   - Actor rootActor = Actor::New();
70   - rootActor.SetName("rootActor");
71   - rootActor.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS );
72   - rootActor.SetSize( mStageSize );
73   - rootActor.SetAnchorPoint( AnchorPoint::TOP_LEFT );
74   -
75   - stage.Add( rootActor );
76   -
77   - const Size mTargetActorSize( mStageSize.width, DESKTOP_SIZE.height );
78   -
79   - // Create Desktop
80   - ImageView desktop = ImageView::New( DESKTOP_IMAGE );
81   - desktop.SetName("desktopActor");
82   - desktop.SetAnchorPoint( AnchorPoint::TOP_LEFT );
83   - desktop.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS );
84   - desktop.SetSize( mTargetActorSize );
85   -
86   - rootActor.Add( desktop ); // Add desktop (content) to offscreen actor
87   -
88   - // Create Photo Box A
89   - Control photoBoxA = Control::New();
90   -
91   - Dali::Property::Map border;
92   - border.Insert( "rendererType", "border" );
93   - border.Insert( "borderColor", Color::WHITE );
94   - border.Insert( "borderSize", 1.f );
95   - photoBoxA.SetProperty( Control::Property::BACKGROUND, border );
96   -
97   - photoBoxA.SetName("photoBoxA");
98   - photoBoxA.SetAnchorPoint( AnchorPoint::CENTER );
99   - photoBoxA.SetParentOrigin( ParentOrigin::CENTER );
100   - photoBoxA.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS );
101   - photoBoxA.SetSize( PHOTOBOX_SIZE );
102   - photoBoxA.SetPosition( 0.0f, -500.0f, 1.0f );
103   - desktop.Add( photoBoxA );
104   -
105   - // Create TextField
106   - TextField field = TextField::New();
107   - field.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS );
108   - field.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
109   - field.SetPadding( Padding( 1.0f, 1.0f, 1.0f, 1.0f ) );
110   - field.SetAnchorPoint( AnchorPoint::TOP_LEFT );
111   - field.SetProperty( TextField::Property::TEXT, "Enter Title name" );
112   - field.SetProperty( TextField::Property::DECORATION_BOUNDING_BOX, Rect<int>( SCREEN_BORDER, SCREEN_BORDER, mStageSize.width - SCREEN_BORDER*2, mStageSize.height - SCREEN_BORDER*2 ) );
113   - photoBoxA.Add( field );
114   -
115   - mPanGestureDetector = PanGestureDetector::New();
116   - mPanGestureDetector.DetectedSignal().Connect(this, &TextMessageFieldExample::OnPanGesture );
117   - mPanGestureDetector.Attach( desktop );
118   - }
119   -
120   - /**
121   - * Main key event handler
122   - */
123   - void OnKeyEvent(const KeyEvent& event)
124   - {
125   - if(event.state == KeyEvent::Down)
126   - {
127   - if( IsKey( event, DALI_KEY_ESCAPE) || IsKey( event, DALI_KEY_BACK ) )
128   - {
129   - mApplication.Quit();
130   - }
131   - }
132   - }
133   -
134   - void OnPanGesture( Actor actor, const PanGesture& gesture )
135   - {
136   - if( gesture.state == Gesture::Continuing )
137   - {
138   - Vector2 position = Vector2( gesture.displacement );
139   - mTargetActorPosition.y = mTargetActorPosition.y + position.y;
140   - mTargetActorPosition.y = std::min( mTargetActorPosition.y, -mTargetActorSize.height );
141   - mTargetActorPosition.y = std::max( mTargetActorPosition.y, ( mTargetActorSize.height - mStageSize.height*0.25f ) );
142   - actor.SetPosition( 0.0f, mTargetActorPosition.y );
143   - }
144   - }
145   -
146   -private:
147   -
148   - Application& mApplication;
149   - PanGestureDetector mPanGestureDetector;
150   -
151   - Vector2 mTargetActorPosition;
152   - Vector2 mTargetActorSize;
153   - Vector2 mStageSize;
154   -};
155   -
156   -void RunTest( Application& application )
157   -{
158   - TextMessageFieldExample test( application );
159   -
160   - application.MainLoop();
161   -}
162   -
163   -/** Entry point for Linux & Tizen applications */
164   -int DALI_EXPORT_API main( int argc, char **argv )
165   -{
166   - Application application = Application::New( &argc, &argv, DEMO_THEME_PATH );
167   -
168   - RunTest( application );
169   -
170   - return 0;
171   -}
examples/text-scrolling/text-scrolling-example.cpp 0 โ†’ 100644
  1 +/*
  2 + * Copyright (c) 2016 Samsung Electronics Co., Ltd.
  3 + *
  4 + * Licensed under the Apache License, Version 2.0 (the "License");
  5 + * you may not use this file except in compliance with the License.
  6 + * You may obtain a copy of the License at
  7 + *
  8 + * http://www.apache.org/licenses/LICENSE-2.0
  9 + *
  10 + * Unless required by applicable law or agreed to in writing, software
  11 + * distributed under the License is distributed on an "AS IS" BASIS,
  12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13 + * See the License for the specific language governing permissions and
  14 + * limitations under the License.
  15 + *
  16 + */
  17 +
  18 +/**
  19 + * @file text-scrolling-example.cpp
  20 + * @brief Shows text labels with scrolling text and allows a text label and text field control to be scrolled vertically
  21 + */
  22 +
  23 +// EXTERNAL INCLUDES
  24 +#include <dali-toolkit/dali-toolkit.h>
  25 +
  26 +using namespace Dali;
  27 +using namespace Dali::Toolkit;
  28 +
  29 +namespace
  30 +{
  31 +const char* DESKTOP_IMAGE( DEMO_IMAGE_DIR "woodEffect.jpg" );
  32 +const Vector2 DESKTOP_SIZE( Vector2( 1440.f, 1600.f ) );
  33 +const Vector2 BOX_SIZE( Vector2(330.0f, 80.0f ) );
  34 +const Vector2 SCROLLING_BOX_SIZE( Vector2(330.0f, 40.0f ) );
  35 +const float MAX_OFFSCREEN_RENDERING_SIZE = 2048.f;
  36 +const float SCREEN_BORDER = 5.0f; // Border around screen that Popups and handles will not exceed
  37 +
  38 +enum Labels
  39 +{
  40 + SMALL = 1u,
  41 + RTL = 1u << 1,
  42 + LARGE = 1u << 2,
  43 + RTL_LONG = 1u << 4,
  44 + NONE = 1u << 6,
  45 +};
  46 +}
  47 +/**
  48 + * @brief The main class of the demo.
  49 + */
  50 +class TextScrollingExample : public ConnectionTracker
  51 +{
  52 +public:
  53 +
  54 + TextScrollingExample( Application& application )
  55 + : mApplication( application ),
  56 + mTargetActorPosition(),
  57 + mTargetActorSize()
  58 + {
  59 + // Connect to the Application's Init signal
  60 + mApplication.InitSignal().Connect( this, &TextScrollingExample::Create );
  61 + }
  62 +
  63 + ~TextScrollingExample()
  64 + {
  65 + // Nothing to do here.
  66 + }
  67 +
  68 +
  69 + void CreateBox( const std::string& name, Actor& box, Actor parent, const Vector2& size )
  70 + {
  71 + box.SetName(name);
  72 + box.SetAnchorPoint( AnchorPoint::CENTER );
  73 + box.SetParentOrigin( ParentOrigin::CENTER );
  74 + box.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::HEIGHT );
  75 + box.SetResizePolicy( ResizePolicy::FIXED, Dimension::WIDTH );
  76 + box.SetSize( size.width, 0.f );
  77 + parent.Add( box );
  78 +
  79 + Dali::Property::Map border;
  80 + border.Insert( "rendererType", "border" );
  81 + border.Insert( "borderColor", Color::WHITE );
  82 + border.Insert( "borderSize", 1.f );
  83 + box.SetProperty( Control::Property::BACKGROUND, border );
  84 + }
  85 +
  86 + void CreateLabel( Actor& label, const std::string text, Actor parent, bool scrollOnStart, PushButton button )
  87 + {
  88 + label = TextLabel::New( text );
  89 + label.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
  90 + label.SetResizePolicy( ResizePolicy::DIMENSION_DEPENDENCY, Dimension::HEIGHT );
  91 + label.SetPadding( Padding( 1.0f, 1.0f, 1.0f, 1.0f ) );
  92 + label.SetAnchorPoint( AnchorPoint::CENTER );
  93 + label.SetParentOrigin( ParentOrigin::CENTER );
  94 + parent.Add( label );
  95 +
  96 + if ( scrollOnStart )
  97 + {
  98 + label.SetProperty(TextLabel::Property::ENABLE_AUTO_SCROLL, true);
  99 + }
  100 +
  101 + button.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS );
  102 + button.SetSize(BOX_SIZE.height,BOX_SIZE.height);
  103 + button.SetParentOrigin( ParentOrigin::TOP_RIGHT );
  104 + button.SetAnchorPoint( AnchorPoint::TOP_LEFT );
  105 + parent.Add(button);
  106 + }
  107 +
  108 +
  109 + /**
  110 + * One-time setup in response to Application InitSignal.
  111 + */
  112 + void Create( Application& application )
  113 + {
  114 + Stage stage = Stage::GetCurrent();
  115 + mStageSize = stage.GetSize();
  116 +
  117 + stage.KeyEventSignal().Connect(this, &TextScrollingExample::OnKeyEvent);
  118 +
  119 + // Create Root actor
  120 + Actor rootActor = Actor::New();
  121 + rootActor.SetName("rootActor");
  122 + rootActor.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS );
  123 + rootActor.SetSize( mStageSize );
  124 + rootActor.SetAnchorPoint( AnchorPoint::TOP_LEFT );
  125 +
  126 + stage.Add( rootActor );
  127 +
  128 + const Size mTargetActorSize( mStageSize.width, DESKTOP_SIZE.height );
  129 +
  130 + // Create Desktop
  131 + ImageView desktop = ImageView::New( DESKTOP_IMAGE );
  132 + desktop.SetName("desktopActor");
  133 + desktop.SetAnchorPoint( AnchorPoint::TOP_LEFT );
  134 + desktop.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS );
  135 + desktop.SetSize( mTargetActorSize );
  136 +
  137 + rootActor.Add( desktop ); // Add desktop (content) to offscreen actor
  138 +
  139 + // Create Boxes
  140 + Control boxA = Control::New();
  141 + Control boxB = Control::New();
  142 + Control boxC = Control::New();
  143 + Control boxD = Control::New();
  144 + Control boxE = Control::New();
  145 +
  146 + CreateBox( "boxA", boxA, desktop, BOX_SIZE );
  147 + boxA.SetPosition( 0.0f, -500.0f, 1.0f );
  148 +
  149 + // Create TextField
  150 + TextField field = TextField::New();
  151 + field.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
  152 + field.SetPadding( Padding( 1.0f, 1.0f, 1.0f, 1.0f ) );
  153 + field.SetAnchorPoint( AnchorPoint::TOP_LEFT );
  154 + field.SetProperty( TextField::Property::PLACEHOLDER_TEXT, "Enter Folder Name" );
  155 + field.SetProperty( TextField::Property::DECORATION_BOUNDING_BOX, Rect<int>( SCREEN_BORDER, SCREEN_BORDER, mStageSize.width - SCREEN_BORDER*2, mStageSize.height - SCREEN_BORDER*2 ) );
  156 + boxA.Add( field );
  157 + boxA.SetSize(BOX_SIZE);
  158 +
  159 + CreateBox( "boxB", boxB, desktop, SCROLLING_BOX_SIZE );
  160 + boxB.SetPosition( 0.0f, -400.0f, 1.0f );
  161 + Toolkit::PushButton scrollLargeButton = Toolkit::PushButton::New();
  162 + scrollLargeButton.ClickedSignal().Connect( this, &TextScrollingExample::OnButtonClickedLarge );
  163 + CreateLabel( mLargeLabel, "A Quick Brown Fox Jumps Over The Lazy Dog", boxB, false ,scrollLargeButton );
  164 +
  165 +
  166 + CreateBox( "boxC", boxC, desktop, SCROLLING_BOX_SIZE );
  167 + boxC.SetPosition( 0.0f, -300.0f, 1.0f );
  168 + Toolkit::PushButton scrollSmallButton = Toolkit::PushButton::New();
  169 + scrollSmallButton.ClickedSignal().Connect( this, &TextScrollingExample::OnButtonClickedSmall );
  170 + CreateLabel( mSmallLabel, "A Quick Brown Fox", boxC , true, scrollSmallButton );
  171 + mSmallLabel.SetProperty( TextLabel::Property::TEXT_COLOR, Color::WHITE );
  172 + mSmallLabel.SetProperty( TextLabel::Property::SHADOW_OFFSET, Vector2( 1.0f, 1.0f ) );
  173 + mSmallLabel.SetProperty( TextLabel::Property::SHADOW_COLOR, Color::BLACK );
  174 +
  175 + CreateBox( "boxD", boxD, desktop, SCROLLING_BOX_SIZE );
  176 + boxD.SetPosition( 0.0f, -200.0f, 1.0f );
  177 + Toolkit::PushButton scrollRtlButton = Toolkit::PushButton::New();
  178 + scrollRtlButton.ClickedSignal().Connect( this, &TextScrollingExample::OnButtonClickedRtl );
  179 + CreateLabel( mRtlLabel, "ู…ุฑุญุจุง ุจุงู„ุนุงู„ู…", boxD , true, scrollRtlButton );
  180 +
  181 + CreateBox( "boxE", boxE, desktop, SCROLLING_BOX_SIZE );
  182 + boxE.SetPosition( 0.0f, -100.0f, 1.0f );
  183 + Toolkit::PushButton scrollRtlLongButton = Toolkit::PushButton::New();
  184 + scrollRtlLongButton.ClickedSignal().Connect( this, &TextScrollingExample::OnButtonClickedRtlLong );
  185 + CreateLabel( mRtlLongLabel, " ู…ุฑุญุจุง ุจุงู„ุนุงู„ู… ู…ุฑุญุจุง ุจุงู„ุนุงู„ู… ู…ุฑุญุจุง ุจุงู„ุนุงู„ู…", boxE , false, scrollRtlLongButton );
  186 +
  187 +
  188 + mPanGestureDetector = PanGestureDetector::New();
  189 + mPanGestureDetector.DetectedSignal().Connect(this, &TextScrollingExample::OnPanGesture );
  190 + mPanGestureDetector.Attach( desktop );
  191 + }
  192 +
  193 + void EnableScrolling( Labels labels )
  194 + {
  195 + Actor label;
  196 + switch( labels )
  197 + {
  198 + case LARGE:
  199 + {
  200 + label = mLargeLabel;
  201 + break;
  202 + }
  203 + case RTL:
  204 + {
  205 + label = mRtlLabel;
  206 + break;
  207 + }
  208 + case SMALL:
  209 + {
  210 + label = mSmallLabel;
  211 + break;
  212 + }
  213 + case RTL_LONG:
  214 + {
  215 + label = mRtlLongLabel;
  216 + break;
  217 + }
  218 + case NONE:
  219 + {
  220 + return;
  221 + }
  222 + }
  223 +
  224 + if ( labels != NONE )
  225 + {
  226 + Property::Value value = label.GetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL);
  227 + if (value.Get< bool >())
  228 + {
  229 + label.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, false );
  230 + }
  231 + else
  232 + {
  233 + label.SetProperty( TextLabel::Property::ENABLE_AUTO_SCROLL, true );
  234 + }
  235 + }
  236 + }
  237 +
  238 + bool OnButtonClickedSmall( Toolkit::Button button )
  239 + {
  240 + EnableScrolling( SMALL );
  241 + return true;
  242 + }
  243 +
  244 + bool OnButtonClickedLarge( Toolkit::Button button )
  245 + {
  246 + EnableScrolling( LARGE );
  247 + return true;
  248 + }
  249 +
  250 + bool OnButtonClickedRtl( Toolkit::Button button )
  251 + {
  252 + EnableScrolling( RTL );
  253 + return true;
  254 + }
  255 +
  256 + bool OnButtonClickedRtlLong( Toolkit::Button button )
  257 + {
  258 + EnableScrolling( RTL_LONG );
  259 + return true;
  260 + }
  261 +
  262 + /**
  263 + * Main key event handler
  264 + */
  265 + void OnKeyEvent(const KeyEvent& event)
  266 + {
  267 + if(event.state == KeyEvent::Down)
  268 + {
  269 + if( IsKey( event, DALI_KEY_ESCAPE) || IsKey( event, DALI_KEY_BACK ) )
  270 + {
  271 + mApplication.Quit();
  272 + }
  273 + }
  274 + }
  275 +
  276 + void OnPanGesture( Actor actor, const PanGesture& gesture )
  277 + {
  278 + if( gesture.state == Gesture::Continuing )
  279 + {
  280 + Vector2 position = Vector2( gesture.displacement );
  281 + mTargetActorPosition.y = mTargetActorPosition.y + position.y;
  282 + mTargetActorPosition.y = std::min( mTargetActorPosition.y, -mTargetActorSize.height );
  283 + mTargetActorPosition.y = std::max( mTargetActorPosition.y, ( mTargetActorSize.height - mStageSize.height*0.25f ) );
  284 + actor.SetPosition( 0.0f, mTargetActorPosition.y );
  285 + }
  286 + }
  287 +
  288 +private:
  289 +
  290 + Application& mApplication;
  291 + PanGestureDetector mPanGestureDetector;
  292 +
  293 + Vector2 mTargetActorPosition;
  294 + Vector2 mTargetActorSize;
  295 + Vector2 mStageSize;
  296 +
  297 + TextLabel mLargeLabel;
  298 + TextLabel mSmallLabel;
  299 + TextLabel mRtlLabel;
  300 + TextLabel mRtlLongLabel;
  301 +};
  302 +
  303 +void RunTest( Application& application )
  304 +{
  305 + TextScrollingExample test( application );
  306 +
  307 + application.MainLoop();
  308 +}
  309 +
  310 +/** Entry point for Linux & Tizen applications */
  311 +int DALI_EXPORT_API main( int argc, char **argv )
  312 +{
  313 + Application application = Application::New( &argc, &argv, DEMO_THEME_PATH );
  314 +
  315 + RunTest( application );
  316 +
  317 + return 0;
  318 +}
... ...
packaging/com.samsung.dali-demo.spec
... ... @@ -2,7 +2,7 @@
2 2  
3 3 Name: com.samsung.dali-demo
4 4 Summary: The OpenGLES Canvas Core Demo
5   -Version: 1.1.34
  5 +Version: 1.1.35
6 6 Release: 1
7 7 Group: System/Libraries
8 8 License: Apache-2.0
... ...
shared/dali-demo-strings.h
... ... @@ -87,6 +87,7 @@ extern &quot;C&quot;
87 87 #define DALI_DEMO_STR_TITLE_TEXT_LABEL "Text Label"
88 88 #define DALI_DEMO_STR_TITLE_TEXT_LABEL_MULTI_LANGUAGE "Text Scripts"
89 89 #define DALI_DEMO_STR_TITLE_EMOJI_TEXT "Emoji Text"
  90 +#define DALI_DEMO_STR_TITLE_TEXT_SCROLLING "Text Scrolling"
90 91 #define DALI_DEMO_STR_TITLE_NEGOTIATE_SIZE "Negotiate Size"
91 92 #define DALI_DEMO_STR_TITLE_POPUP "Popup"
92 93 #define DALI_DEMO_STR_TITLE_BUTTONS "Buttons"
... ...