Commit 37a13b8c501f11961832d7b7eda8351382d835af

Authored by Victor Cebollada
2 parents 5e2c2e26 9c90024e

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

Change-Id: I353ae06a2b7246e2374e490271d79f7f40281739
com.samsung.dali-demo.xml
@@ -272,6 +272,9 @@ @@ -272,6 +272,9 @@
272 <ui-application appid="pre-render-callback.example" exec="/usr/apps/com.samsung.dali-demo/bin/pre-render-callback.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true"> 272 <ui-application appid="pre-render-callback.example" exec="/usr/apps/com.samsung.dali-demo/bin/pre-render-callback.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
273 <label>Frame Callback</label> 273 <label>Frame Callback</label>
274 </ui-application> 274 </ui-application>
  275 + <ui-application appid="web-view.example" exec="/usr/apps/com.samsung.dali-demo/bin/web-view.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
  276 + <label>Web View</label>
  277 + </ui-application>
275 278
276 <privileges> 279 <privileges>
277 <privilege>http://tizen.org/privilege/mediastorage</privilege> 280 <privilege>http://tizen.org/privilege/mediastorage</privilege>
examples-reel/dali-examples-reel.cpp
@@ -89,6 +89,7 @@ int DALI_EXPORT_API main(int argc, char **argv) @@ -89,6 +89,7 @@ int DALI_EXPORT_API main(int argc, char **argv)
89 demo.AddExample(Example("tilt.example", DALI_DEMO_STR_TITLE_TILT_SENSOR)); 89 demo.AddExample(Example("tilt.example", DALI_DEMO_STR_TITLE_TILT_SENSOR));
90 demo.AddExample(Example("tooltip.example", DALI_DEMO_STR_TITLE_TOOLTIP)); 90 demo.AddExample(Example("tooltip.example", DALI_DEMO_STR_TITLE_TOOLTIP));
91 demo.AddExample(Example("transitions.example", DALI_DEMO_STR_TITLE_VISUAL_TRANSITIONS)); 91 demo.AddExample(Example("transitions.example", DALI_DEMO_STR_TITLE_VISUAL_TRANSITIONS));
  92 + demo.AddExample(Example("web-view.example", DALI_DEMO_STR_TITLE_WEB_VIEW));
92 93
93 demo.SortAlphabetically( true ); 94 demo.SortAlphabetically( true );
94 95
examples/animated-gradient-call-active/animated-gradient-call-active.cpp
@@ -211,6 +211,8 @@ private: @@ -211,6 +211,8 @@ private:
211 mCallStartButton.ClickedSignal().Connect( this, &CallController::OnButtonClicked ); 211 mCallStartButton.ClickedSignal().Connect( this, &CallController::OnButtonClicked );
212 mCallStartButton.SetProperty( DevelButton::Property::SELECTED_BACKGROUND_VISUAL, ICON_CALL_IMAGE ); 212 mCallStartButton.SetProperty( DevelButton::Property::SELECTED_BACKGROUND_VISUAL, ICON_CALL_IMAGE );
213 mCallStartButton.SetProperty( DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, ICON_CALL_IMAGE ); 213 mCallStartButton.SetProperty( DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, ICON_CALL_IMAGE );
  214 + mCallStartButton.SetProperty( Control::Property::BACKGROUND, ICON_CALL_IMAGE );
  215 + mCallStartButton.SetLabelText("");
214 216
215 mStage.Add( mCallStartButton ); 217 mStage.Add( mCallStartButton );
216 mStage.Add( mButtonIconDecall ); 218 mStage.Add( mButtonIconDecall );
@@ -291,6 +293,7 @@ private: @@ -291,6 +293,7 @@ private:
291 mCallEndButton.SetProperty( DevelButton::Property::SELECTED_BACKGROUND_VISUAL, "" ); 293 mCallEndButton.SetProperty( DevelButton::Property::SELECTED_BACKGROUND_VISUAL, "" );
292 mCallEndButton.SetProperty( DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, "" ); 294 mCallEndButton.SetProperty( DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, "" );
293 mCallEndButton.SetStyleName( DECLINE_BUTTON_STYLE_STR ); 295 mCallEndButton.SetStyleName( DECLINE_BUTTON_STYLE_STR );
  296 + mCallEndButton.SetLabelText("");
294 297
295 mButtonClip.Add( mCallEndButton ); 298 mButtonClip.Add( mCallEndButton );
296 mButtonClip.Add( mButtonIcon ); 299 mButtonClip.Add( mButtonIcon );
examples/layouting/animation-example.cpp
@@ -22,6 +22,7 @@ @@ -22,6 +22,7 @@
22 #include <dali-toolkit/devel-api/controls/control-devel.h> 22 #include <dali-toolkit/devel-api/controls/control-devel.h>
23 #include <dali-toolkit/devel-api/layouting/linear-layout.h> 23 #include <dali-toolkit/devel-api/layouting/linear-layout.h>
24 #include <dali-toolkit/devel-api/layouting/grid.h> 24 #include <dali-toolkit/devel-api/layouting/grid.h>
  25 +#include <dali-toolkit/devel-api/focus-manager/keyinput-focus-manager.h>
25 26
26 #include <dali/integration-api/debug.h> 27 #include <dali/integration-api/debug.h>
27 28
@@ -59,24 +60,24 @@ Debug::Filter* gLayoutFilter = Debug::Filter::New( Debug::NoLogging, false, &quot;LOG @@ -59,24 +60,24 @@ Debug::Filter* gLayoutFilter = Debug::Filter::New( Debug::NoLogging, false, &quot;LOG
59 60
60 const unsigned int NUMBER_OF_RESOURCES = sizeof(IMAGE_PATH) / sizeof(char*); 61 const unsigned int NUMBER_OF_RESOURCES = sizeof(IMAGE_PATH) / sizeof(char*);
61 62
62 -// Helper function to create ImageViews with given filename and size.  
63 -void CreateChildImageView( ImageView& imageView, int index, Size size ) 63 +// Helper function
  64 +void CreateChild( ImageView& child, int index, Size size )
64 { 65 {
65 - imageView = ImageView::New(); 66 + child = ImageView::New();
66 Property::Map imagePropertyMap; 67 Property::Map imagePropertyMap;
67 imagePropertyMap[ Toolkit::Visual::Property::TYPE ] = Toolkit::Visual::IMAGE; 68 imagePropertyMap[ Toolkit::Visual::Property::TYPE ] = Toolkit::Visual::IMAGE;
68 imagePropertyMap[ Toolkit::ImageVisual::Property::URL ] = IMAGE_PATH[ index ]; 69 imagePropertyMap[ Toolkit::ImageVisual::Property::URL ] = IMAGE_PATH[ index ];
69 imagePropertyMap[ ImageVisual::Property::DESIRED_WIDTH ] = size.width; 70 imagePropertyMap[ ImageVisual::Property::DESIRED_WIDTH ] = size.width;
70 imagePropertyMap[ ImageVisual::Property::DESIRED_HEIGHT ] = size.height; 71 imagePropertyMap[ ImageVisual::Property::DESIRED_HEIGHT ] = size.height;
71 - imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imagePropertyMap ); 72 + child.SetProperty( Toolkit::ImageView::Property::IMAGE, imagePropertyMap );
72 std::string name = "ImageView"; 73 std::string name = "ImageView";
73 name.append( 1, '0' + index ); 74 name.append( 1, '0' + index );
74 - imageView.SetName( name );  
75 - imageView.SetAnchorPoint( AnchorPoint::TOP_LEFT );  
76 - imageView.SetResizePolicy( ResizePolicy::FIXED, Dimension::ALL_DIMENSIONS ); 75 + child.SetName( name );
  76 + child.SetAnchorPoint( AnchorPoint::TOP_LEFT );
77 } 77 }
78 78
79 -LayoutTransitionData CreateOnSetLayoutTransition( Control& parent, std::vector< Toolkit::ImageView >& children ) 79 +// Create set layout transition. A parent opacity increases 'ease in out' from semi-transparent to fully opaque and children pulse in order
  80 +LayoutTransitionData CreateOnSetLayoutTransition( Control& container )
80 { 81 {
81 auto layoutTransitionData = LayoutTransitionData::New(); 82 auto layoutTransitionData = LayoutTransitionData::New();
82 Property::Map map; 83 Property::Map map;
@@ -84,31 +85,32 @@ LayoutTransitionData CreateOnSetLayoutTransition( Control&amp; parent, std::vector&lt; @@ -84,31 +85,32 @@ LayoutTransitionData CreateOnSetLayoutTransition( Control&amp; parent, std::vector&lt;
84 map[ LayoutTransitionData::AnimatorKey::INITIAL_VALUE ] = 0.5f; 85 map[ LayoutTransitionData::AnimatorKey::INITIAL_VALUE ] = 0.5f;
85 map[ LayoutTransitionData::AnimatorKey::TARGET_VALUE ] = 1.0f; 86 map[ LayoutTransitionData::AnimatorKey::TARGET_VALUE ] = 1.0f;
86 map[ LayoutTransitionData::AnimatorKey::ANIMATOR ] = Property::Map() 87 map[ LayoutTransitionData::AnimatorKey::ANIMATOR ] = Property::Map()
87 - .Add( LayoutTransitionData::AnimatorKey::ALPHA_FUNCTION, "EASE_IN_OUT" ) 88 + .Add( LayoutTransitionData::AnimatorKey::ALPHA_FUNCTION, AlphaFunction::EASE_IN_OUT )
88 .Add( LayoutTransitionData::AnimatorKey::TIME_PERIOD, Property::Map() 89 .Add( LayoutTransitionData::AnimatorKey::TIME_PERIOD, Property::Map()
89 .Add( LayoutTransitionData::AnimatorKey::DELAY, 0.25f ) 90 .Add( LayoutTransitionData::AnimatorKey::DELAY, 0.25f )
90 .Add( LayoutTransitionData::AnimatorKey::DURATION, 0.5f ) ); 91 .Add( LayoutTransitionData::AnimatorKey::DURATION, 0.5f ) );
91 92
92 // Apply to parent only 93 // Apply to parent only
93 - layoutTransitionData.AddPropertyAnimator( parent, map ); 94 + layoutTransitionData.AddPropertyAnimator( container, map );
94 95
95 - for( size_t i = 0; i < children.size(); i++ ) 96 + for( size_t i = 0; i < container.GetChildCount(); i++ )
96 { 97 {
97 Property::Map map; 98 Property::Map map;
98 map[ LayoutTransitionData::AnimatorKey::PROPERTY ] = Actor::Property::SIZE; 99 map[ LayoutTransitionData::AnimatorKey::PROPERTY ] = Actor::Property::SIZE;
99 map[ LayoutTransitionData::AnimatorKey::TARGET_VALUE ] = Vector3( 100.0f * 1.2f, 100.0f * 1.2f, 0 ); 100 map[ LayoutTransitionData::AnimatorKey::TARGET_VALUE ] = Vector3( 100.0f * 1.2f, 100.0f * 1.2f, 0 );
100 map[ LayoutTransitionData::AnimatorKey::ANIMATOR ] = Property::Map() 101 map[ LayoutTransitionData::AnimatorKey::ANIMATOR ] = Property::Map()
101 - .Add( LayoutTransitionData::AnimatorKey::ALPHA_FUNCTION, "SIN" ) 102 + .Add( LayoutTransitionData::AnimatorKey::ALPHA_FUNCTION, AlphaFunction::SIN )
102 .Add( LayoutTransitionData::AnimatorKey::TIME_PERIOD, Property::Map() 103 .Add( LayoutTransitionData::AnimatorKey::TIME_PERIOD, Property::Map()
103 .Add( LayoutTransitionData::AnimatorKey::DELAY, 0.5f + 0.1f * i) 104 .Add( LayoutTransitionData::AnimatorKey::DELAY, 0.5f + 0.1f * i)
104 .Add( LayoutTransitionData::AnimatorKey::DURATION, 0.25f ) ); 105 .Add( LayoutTransitionData::AnimatorKey::DURATION, 0.25f ) );
105 - layoutTransitionData.AddPropertyAnimator( children[i], map ); 106 + layoutTransitionData.AddPropertyAnimator( container.GetChildAt( i ), map );
106 } 107 }
107 108
108 return layoutTransitionData; 109 return layoutTransitionData;
109 } 110 }
110 111
111 -LayoutTransitionData CreateOnChildAddTransition( Control& parent, ImageView& child ) 112 +// Create add child transition. An added child grows from (0, 0) to its full size and instantly appears in its position
  113 +LayoutTransitionData CreateOnChildAddTransition( Control& parent )
112 { 114 {
113 auto layoutTransitionData = LayoutTransitionData::New(); 115 auto layoutTransitionData = LayoutTransitionData::New();
114 116
@@ -116,7 +118,7 @@ LayoutTransitionData CreateOnChildAddTransition( Control&amp; parent, ImageView&amp; chi @@ -116,7 +118,7 @@ LayoutTransitionData CreateOnChildAddTransition( Control&amp; parent, ImageView&amp; chi
116 Property::Map map; 118 Property::Map map;
117 map[ LayoutTransitionData::AnimatorKey::PROPERTY ] = Actor::Property::SIZE; 119 map[ LayoutTransitionData::AnimatorKey::PROPERTY ] = Actor::Property::SIZE;
118 map[ LayoutTransitionData::AnimatorKey::ANIMATOR ] = Property::Map() 120 map[ LayoutTransitionData::AnimatorKey::ANIMATOR ] = Property::Map()
119 - .Add( LayoutTransitionData::AnimatorKey::ALPHA_FUNCTION, "LINEAR") 121 + .Add( LayoutTransitionData::AnimatorKey::ALPHA_FUNCTION, AlphaFunction::LINEAR )
120 .Add( LayoutTransitionData::AnimatorKey::TIME_PERIOD, Property::Map() 122 .Add( LayoutTransitionData::AnimatorKey::TIME_PERIOD, Property::Map()
121 .Add( LayoutTransitionData::AnimatorKey::DELAY, 0.0f ) 123 .Add( LayoutTransitionData::AnimatorKey::DELAY, 0.0f )
122 .Add( LayoutTransitionData::AnimatorKey::DURATION, 0.0f ) ); 124 .Add( LayoutTransitionData::AnimatorKey::DURATION, 0.0f ) );
@@ -125,62 +127,129 @@ LayoutTransitionData CreateOnChildAddTransition( Control&amp; parent, ImageView&amp; chi @@ -125,62 +127,129 @@ LayoutTransitionData CreateOnChildAddTransition( Control&amp; parent, ImageView&amp; chi
125 // New child is growing 127 // New child is growing
126 { 128 {
127 Property::Map map; 129 Property::Map map;
  130 + map[ LayoutTransitionData::AnimatorKey::CONDITION ] = LayoutTransitionData::Condition::ON_ADD;
128 map[ LayoutTransitionData::AnimatorKey::PROPERTY ] = Actor::Property::SIZE; 131 map[ LayoutTransitionData::AnimatorKey::PROPERTY ] = Actor::Property::SIZE;
129 - map["initialValue"] = Vector3( 0.0f, 0.0f, 0 ); 132 + map[ LayoutTransitionData::AnimatorKey::INITIAL_VALUE ] = Vector3( 0.0f, 0.0f, 0 );
130 map[ LayoutTransitionData::AnimatorKey::TARGET_VALUE ] = Vector3( 100.0f, 100.0f, 0 ); 133 map[ LayoutTransitionData::AnimatorKey::TARGET_VALUE ] = Vector3( 100.0f, 100.0f, 0 );
131 map[ LayoutTransitionData::AnimatorKey::ANIMATOR ] = Property::Map() 134 map[ LayoutTransitionData::AnimatorKey::ANIMATOR ] = Property::Map()
132 - .Add( LayoutTransitionData::AnimatorKey::ALPHA_FUNCTION, "LINEAR") 135 + .Add( LayoutTransitionData::AnimatorKey::ALPHA_FUNCTION, AlphaFunction::LINEAR )
133 .Add( LayoutTransitionData::AnimatorKey::TIME_PERIOD, Property::Map() 136 .Add( LayoutTransitionData::AnimatorKey::TIME_PERIOD, Property::Map()
134 .Add( LayoutTransitionData::AnimatorKey::DELAY, 0.0f ) 137 .Add( LayoutTransitionData::AnimatorKey::DELAY, 0.0f )
135 .Add( LayoutTransitionData::AnimatorKey::DURATION, 0.5f ) ); 138 .Add( LayoutTransitionData::AnimatorKey::DURATION, 0.5f ) );
136 - layoutTransitionData.AddPropertyAnimator( child, map ); 139 + layoutTransitionData.AddPropertyAnimator( Actor(), map );
137 } 140 }
138 141
139 // Want new children instantly appear in their positions 142 // Want new children instantly appear in their positions
140 { 143 {
141 Property::Map map; 144 Property::Map map;
142 - map[ LayoutTransitionData::AnimatorKey::PROPERTY] = Actor::Property::POSITION;  
143 - map[ LayoutTransitionData::AnimatorKey::ANIMATOR] = Property::Map()  
144 - .Add( LayoutTransitionData::AnimatorKey::ALPHA_FUNCTION, "LINEAR") 145 + map[ LayoutTransitionData::AnimatorKey::CONDITION ] = LayoutTransitionData::Condition::ON_ADD;
  146 + map[ LayoutTransitionData::AnimatorKey::PROPERTY ] = Actor::Property::POSITION;
  147 + map[ LayoutTransitionData::AnimatorKey::ANIMATOR ] = Property::Map()
  148 + .Add( LayoutTransitionData::AnimatorKey::ALPHA_FUNCTION, AlphaFunction::LINEAR )
145 .Add( LayoutTransitionData::AnimatorKey::TIME_PERIOD, Property::Map() 149 .Add( LayoutTransitionData::AnimatorKey::TIME_PERIOD, Property::Map()
146 .Add( LayoutTransitionData::AnimatorKey::DELAY, 0.0f ) 150 .Add( LayoutTransitionData::AnimatorKey::DELAY, 0.0f )
147 .Add( LayoutTransitionData::AnimatorKey::DURATION, 0.0f ) ); 151 .Add( LayoutTransitionData::AnimatorKey::DURATION, 0.0f ) );
148 - layoutTransitionData.AddPropertyAnimator( child, map ); 152 + layoutTransitionData.AddPropertyAnimator( Actor(), map );
149 } 153 }
150 154
151 return layoutTransitionData; 155 return layoutTransitionData;
152 } 156 }
153 157
154 -LayoutTransitionData CreateOnChildRemoveTransition(std::vector< Toolkit::ImageView >& images) 158 +// Create remove child transition. Remaining children shake around their positions
  159 +LayoutTransitionData CreateOnChildRemoveTransition( Control& container )
155 { 160 {
156 auto layoutTransitionData = LayoutTransitionData::New(); 161 auto layoutTransitionData = LayoutTransitionData::New();
  162 +
157 // Apply animation to remaining children 163 // Apply animation to remaining children
158 - for (unsigned int i = 0; i < images.size(); i++) 164 + Property::Map map;
  165 + map[ LayoutTransitionData::AnimatorKey::PROPERTY ] = Actor::Property::POSITION;
  166 + map[ LayoutTransitionData::AnimatorKey::ANIMATOR ] = Property::Map()
  167 + .Add( LayoutTransitionData::AnimatorKey::ALPHA_FUNCTION, AlphaFunction::SIN )
  168 + .Add( LayoutTransitionData::AnimatorKey::TIME_PERIOD, Property::Map()
  169 + .Add( LayoutTransitionData::AnimatorKey::DELAY, 0.0f)
  170 + .Add( LayoutTransitionData::AnimatorKey::DURATION, 0.5f));
  171 + layoutTransitionData.AddPropertyAnimator( Actor(), map );
  172 +
  173 + return layoutTransitionData;
  174 +}
  175 +
  176 +// Create child focus transition. A focus gained child grows 115% and focus lost child gets its original size back
  177 +LayoutTransitionData CreateOnChildFocusTransition( Control& parent )
  178 +{
  179 + auto layoutTransitionData = LayoutTransitionData::New();
  180 +
159 { 181 {
160 - {  
161 - Property::Map map;  
162 - map[ LayoutTransitionData::AnimatorKey::PROPERTY ] = "position";  
163 - map[ LayoutTransitionData::AnimatorKey::ANIMATOR ] = Property::Map()  
164 - .Add( LayoutTransitionData::AnimatorKey::ALPHA_FUNCTION, "SIN")  
165 - .Add( LayoutTransitionData::AnimatorKey::TIME_PERIOD, Property::Map()  
166 - .Add( LayoutTransitionData::AnimatorKey::DELAY, 0.0f)  
167 - .Add( LayoutTransitionData::AnimatorKey::DURATION, 0.5f));  
168 - layoutTransitionData.AddPropertyAnimator( images[i], map );  
169 - } 182 + Property::Map map;
  183 + map[ LayoutTransitionData::AnimatorKey::CONDITION ] = LayoutTransitionData::Condition::ON_FOCUS_GAINED;
  184 + map[ LayoutTransitionData::AnimatorKey::PROPERTY ] = Actor::Property::SIZE;
  185 + map[ LayoutTransitionData::AnimatorKey::TARGET_VALUE ] = Vector3( 115.0f, 115.0f, 0 );
  186 + map[ LayoutTransitionData::AnimatorKey::ANIMATOR ] = Property::Map()
  187 + .Add( LayoutTransitionData::AnimatorKey::TIME_PERIOD, Property::Map()
  188 + .Add( LayoutTransitionData::AnimatorKey::DELAY, 0.0f )
  189 + .Add( LayoutTransitionData::AnimatorKey::DURATION, 0.5f ) );
  190 + layoutTransitionData.AddPropertyAnimator( Actor(), map );
  191 + }
  192 +
  193 + {
  194 + Property::Map map;
  195 + map[ LayoutTransitionData::AnimatorKey::CONDITION ] = LayoutTransitionData::Condition::ON_FOCUS_LOST;
  196 + map[ LayoutTransitionData::AnimatorKey::PROPERTY ] = Actor::Property::SIZE;
  197 + map[ LayoutTransitionData::AnimatorKey::TARGET_VALUE ] = Vector3( 100.0f, 100.0f, 0 );
  198 + map[ LayoutTransitionData::AnimatorKey::ANIMATOR ] = Property::Map()
  199 + .Add( LayoutTransitionData::AnimatorKey::TIME_PERIOD, Property::Map()
  200 + .Add( LayoutTransitionData::AnimatorKey::DELAY, 0.0f )
  201 + .Add( LayoutTransitionData::AnimatorKey::DURATION, 0.5f ) );
  202 + layoutTransitionData.AddPropertyAnimator( Actor(), map );
170 } 203 }
171 204
172 return layoutTransitionData; 205 return layoutTransitionData;
173 } 206 }
174 207
175 -void CreateChildImageViewAndAdd( Control& container, int index, std::vector< Toolkit::ImageView >& images ) 208 +// An example of custom default transition, ease in for position animation, ease out for size animation
  209 +LayoutTransitionData CreateCustomDefaultTransition( Control& parent )
176 { 210 {
177 - Toolkit::ImageView imageView;  
178 - CreateChildImageView( imageView, index, Size( 100.0f, 100.0f ) );  
179 - auto layout = DevelControl::GetLayout( container );  
180 - layout.SetTransitionData( LayoutTransitionData::ON_CHILD_ADD, CreateOnChildAddTransition( container, imageView ) ); 211 + auto layoutTransitionData = LayoutTransitionData::New();
  212 +
  213 + {
  214 + Property::Map map;
  215 + map[ LayoutTransitionData::AnimatorKey::PROPERTY ] = Actor::Property::POSITION;
  216 + map[ LayoutTransitionData::AnimatorKey::ANIMATOR ] = Property::Map()
  217 + .Add( LayoutTransitionData::AnimatorKey::ALPHA_FUNCTION, AlphaFunction::EASE_IN )
  218 + .Add( LayoutTransitionData::AnimatorKey::TIME_PERIOD, Property::Map()
  219 + .Add( LayoutTransitionData::AnimatorKey::DELAY, 0.0f )
  220 + .Add( LayoutTransitionData::AnimatorKey::DURATION, 0.5f ) );
  221 + layoutTransitionData.AddPropertyAnimator( parent, map );
  222 + }
181 223
  224 + {
  225 + Property::Map map;
  226 + map[ LayoutTransitionData::AnimatorKey::PROPERTY ] = Actor::Property::SIZE;
  227 + map[ LayoutTransitionData::AnimatorKey::ANIMATOR ] = Property::Map()
  228 + .Add( LayoutTransitionData::AnimatorKey::ALPHA_FUNCTION, AlphaFunction::EASE_OUT )
  229 + .Add( LayoutTransitionData::AnimatorKey::TIME_PERIOD, Property::Map()
  230 + .Add( LayoutTransitionData::AnimatorKey::DELAY, 0.0f )
  231 + .Add( LayoutTransitionData::AnimatorKey::DURATION, 0.5f ) );
  232 + layoutTransitionData.AddPropertyAnimator( parent, map );
  233 + }
  234 +
  235 + return layoutTransitionData;
  236 +}
  237 +
  238 +bool OnImageTouchCallback( Actor actor, const TouchData& event )
  239 +{
  240 + KeyInputFocusManager manager = KeyInputFocusManager::Get();
  241 + manager.SetFocus( Control::DownCast( actor ) );
  242 + return true;
  243 +}
  244 +
  245 +void CreateChildAndAdd( Demo::AnimationExample& animationExample, Control& container )
  246 +{
  247 + Toolkit::ImageView imageView;
  248 + CreateChild( imageView, container.GetChildCount(), Size( 100.0f, 100.0f ) );
  249 + imageView.TouchSignal().Connect( &animationExample, &OnImageTouchCallback );
182 container.Add( imageView ); 250 container.Add( imageView );
183 - images.push_back( imageView ); 251 +
  252 + DevelControl::GetLayout( imageView ).SetTransitionData( Toolkit::LayoutTransitionData::ON_LAYOUT_CHANGE, CreateCustomDefaultTransition( imageView ) );
184 } 253 }
185 254
186 } // namespace 255 } // namespace
@@ -249,17 +318,25 @@ void AnimationExample::Create() @@ -249,17 +318,25 @@ void AnimationExample::Create()
249 mHorizontalLayout.SetOrientation( LinearLayout::Orientation::HORIZONTAL ); 318 mHorizontalLayout.SetOrientation( LinearLayout::Orientation::HORIZONTAL );
250 mHorizontalLayout.SetAlignment( LinearLayout::Alignment::CENTER_HORIZONTAL | LinearLayout::Alignment::CENTER_VERTICAL ); 319 mHorizontalLayout.SetAlignment( LinearLayout::Alignment::CENTER_HORIZONTAL | LinearLayout::Alignment::CENTER_VERTICAL );
251 mHorizontalLayout.SetAnimateLayout(true); 320 mHorizontalLayout.SetAnimateLayout(true);
  321 + mHorizontalLayout.SetTransitionData( LayoutTransitionData::ON_CHILD_FOCUS, CreateOnChildFocusTransition( mAnimationContainer ) );
  322 + mHorizontalLayout.SetTransitionData( LayoutTransitionData::ON_CHILD_REMOVE, CreateOnChildRemoveTransition( mAnimationContainer ) );
  323 + mHorizontalLayout.SetTransitionData( LayoutTransitionData::ON_CHILD_ADD, CreateOnChildAddTransition( mAnimationContainer ) );
  324 +
252 DevelControl::SetLayout( mAnimationContainer, mHorizontalLayout ); 325 DevelControl::SetLayout( mAnimationContainer, mHorizontalLayout );
253 326
254 mGridLayout = Grid::New(); 327 mGridLayout = Grid::New();
255 mGridLayout.SetAnimateLayout(true); 328 mGridLayout.SetAnimateLayout(true);
256 mGridLayout.SetNumberOfColumns(2); 329 mGridLayout.SetNumberOfColumns(2);
  330 + mGridLayout.SetTransitionData( LayoutTransitionData::ON_CHILD_FOCUS, CreateOnChildFocusTransition( mAnimationContainer ) );
  331 + mGridLayout.SetTransitionData( LayoutTransitionData::ON_CHILD_REMOVE, CreateOnChildRemoveTransition( mAnimationContainer ) );
  332 + mGridLayout.SetTransitionData( LayoutTransitionData::ON_CHILD_ADD, CreateOnChildAddTransition( mAnimationContainer ) );
257 333
258 - CreateChildImageViewAndAdd( mAnimationContainer, 0, mImages ); 334 + CreateChildAndAdd( *this, mAnimationContainer );
259 stage.Add( mAnimationContainer ); 335 stage.Add( mAnimationContainer );
260 } 336 }
261 337
262 -// Remove controls added by this example from stage 338 +// Remove controls added by this example from stage mGridLayout.SetTransitionData( LayoutTransitionData::ON_CHILD_FOCUS, CreateOnChildFocusTransition( mAnimationContainer ) );
  339 +
263 void AnimationExample::Remove() 340 void AnimationExample::Remove()
264 { 341 {
265 if ( mAnimationContainer ) 342 if ( mAnimationContainer )
@@ -269,7 +346,6 @@ void AnimationExample::Remove() @@ -269,7 +346,6 @@ void AnimationExample::Remove()
269 UnparentAndReset( mSelectGridButton ); 346 UnparentAndReset( mSelectGridButton );
270 UnparentAndReset( mShakeButton ); 347 UnparentAndReset( mShakeButton );
271 UnparentAndReset( mAnimationContainer); 348 UnparentAndReset( mAnimationContainer);
272 - mImages.clear();  
273 } 349 }
274 } 350 }
275 351
@@ -277,14 +353,9 @@ bool AnimationExample::OnRemoveClicked( Button button ) @@ -277,14 +353,9 @@ bool AnimationExample::OnRemoveClicked( Button button )
277 { 353 {
278 DALI_LOG_INFO( gLayoutFilter, Debug::Verbose, "AnimationExample::OnRemoveClicked\n"); 354 DALI_LOG_INFO( gLayoutFilter, Debug::Verbose, "AnimationExample::OnRemoveClicked\n");
279 355
280 - if (mImages.size() > 1) 356 + if ( mAnimationContainer.GetChildCount() > 1 )
281 { 357 {
282 - auto layout = DevelControl::GetLayout( mAnimationContainer );  
283 - layout.SetTransitionData(LayoutTransitionData::ON_CHILD_REMOVE, CreateOnChildRemoveTransition( mImages ) );  
284 -  
285 - ImageView imageView = mImages.back();  
286 - mAnimationContainer.Remove( imageView );  
287 - mImages.pop_back(); 358 + mAnimationContainer.Remove( mAnimationContainer.GetChildAt( mAnimationContainer.GetChildCount() - 1 ) );
288 } 359 }
289 return true; 360 return true;
290 } 361 }
@@ -296,12 +367,12 @@ bool AnimationExample::OnSelectGridClicked( Button button ) @@ -296,12 +367,12 @@ bool AnimationExample::OnSelectGridClicked( Button button )
296 367
297 if ( !mGridSet ) 368 if ( !mGridSet )
298 { 369 {
299 - mGridLayout.SetTransitionData( LayoutTransitionData::ON_OWNER_SET, CreateOnSetLayoutTransition( mAnimationContainer, mImages ) ); 370 + mGridLayout.SetTransitionData( LayoutTransitionData::ON_OWNER_SET, CreateOnSetLayoutTransition( mAnimationContainer ) );
300 DevelControl::SetLayout( mAnimationContainer, mGridLayout ); 371 DevelControl::SetLayout( mAnimationContainer, mGridLayout );
301 } 372 }
302 else 373 else
303 { 374 {
304 - mHorizontalLayout.SetTransitionData( LayoutTransitionData::ON_OWNER_SET, CreateOnSetLayoutTransition( mAnimationContainer, mImages ) ); 375 + mHorizontalLayout.SetTransitionData( LayoutTransitionData::ON_OWNER_SET, CreateOnSetLayoutTransition( mAnimationContainer ) );
305 DevelControl::SetLayout( mAnimationContainer, mHorizontalLayout ); 376 DevelControl::SetLayout( mAnimationContainer, mHorizontalLayout );
306 } 377 }
307 378
@@ -311,9 +382,9 @@ bool AnimationExample::OnSelectGridClicked( Button button ) @@ -311,9 +382,9 @@ bool AnimationExample::OnSelectGridClicked( Button button )
311 382
312 bool AnimationExample::OnAddClicked( Button button ) 383 bool AnimationExample::OnAddClicked( Button button )
313 { 384 {
314 - if (mImages.size() < 4) 385 + if( mAnimationContainer.GetChildCount() < 4 )
315 { 386 {
316 - CreateChildImageViewAndAdd( mAnimationContainer, mImages.size(), mImages ); 387 + CreateChildAndAdd( *this, mAnimationContainer );
317 } 388 }
318 return true; 389 return true;
319 } 390 }
examples/layouting/animation-example.h
@@ -61,7 +61,6 @@ private: @@ -61,7 +61,6 @@ private:
61 PushButton mAddButton; 61 PushButton mAddButton;
62 PushButton mSelectGridButton; 62 PushButton mSelectGridButton;
63 PushButton mShakeButton; 63 PushButton mShakeButton;
64 - std::vector< Toolkit::ImageView > mImages;  
65 Control mAnimationContainer; 64 Control mAnimationContainer;
66 Grid mGridLayout; 65 Grid mGridLayout;
67 LinearLayout mHorizontalLayout; 66 LinearLayout mHorizontalLayout;
examples/web-view/web-view-example.cpp 0 โ†’ 100644
  1 +/*
  2 + * Copyright (c) 2018 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 +#include <dali-toolkit/dali-toolkit.h>
  19 +#include "dali-toolkit/devel-api/controls/web-view/web-view.h"
  20 +#include <dali/integration-api/debug.h>
  21 +#include <unistd.h>
  22 +
  23 +using namespace Dali;
  24 +
  25 +namespace{
  26 +
  27 +}
  28 +
  29 +class WebViewController : public ConnectionTracker
  30 +{
  31 +public:
  32 +
  33 + WebViewController( Application& application )
  34 + : mApplication( application )
  35 + , mUrlPointer( 0 )
  36 + {
  37 + // Connect to the Application's Init signal
  38 + mApplication.InitSignal().Connect( this, &WebViewController::Create );
  39 + }
  40 +
  41 + ~WebViewController()
  42 + {
  43 + // Nothing to do here;
  44 + }
  45 +
  46 + const char* GetNextUrl()
  47 + {
  48 + static const unsigned int kUrlSize = 3;
  49 + static const char* kUrls[kUrlSize] = {
  50 + "https://webkit.org/blog-files/3d-transforms/poster-circle.html",
  51 + "https://www.amazon.com",
  52 + "https://www.google.com"
  53 + };
  54 + mUrlPointer %= kUrlSize;
  55 + return kUrls[mUrlPointer++];
  56 + }
  57 +
  58 + // The Init signal is received once (only) during the Application lifetime
  59 + void Create( Application& application )
  60 + {
  61 + // Get a handle to the stage
  62 + Stage stage = Stage::GetCurrent();
  63 + stage.SetBackgroundColor( Vector4(0.2, 0.6, 1, 1) );
  64 +
  65 + float width = stage.GetSize().width;
  66 + float height = stage.GetSize().height;
  67 + float fontSize = width * 0.02f;
  68 +
  69 + mWebView = Toolkit::WebView::New( "ko-KR", "Asia/Seoul" );
  70 + mWebView.SetParentOrigin( Dali::ParentOrigin::CENTER );
  71 + mWebView.SetAnchorPoint( Dali::AnchorPoint::CENTER );
  72 + mWebView.SetPosition( 0, 0 );
  73 + mWebView.SetSize( width, height );
  74 + mWebView.PageLoadStartedSignal().Connect( this, &WebViewController::OnPageLoadStarted );
  75 + mWebView.PageLoadFinishedSignal().Connect( this, &WebViewController::OnPageLoadFinished );
  76 +
  77 + std::string url = GetNextUrl();
  78 + mWebView.LoadUrl( url );
  79 + stage.Add(mWebView);
  80 +
  81 + mAddressLabel = Toolkit::TextLabel::New( url );
  82 + mAddressLabel.SetAnchorPoint( AnchorPoint::TOP_LEFT );
  83 + mAddressLabel.SetProperty( Toolkit::TextLabel::Property::POINT_SIZE, fontSize );
  84 + mAddressLabel.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, Color::WHITE );
  85 + mAddressLabel.SetBackgroundColor( Vector4( 0, 0, 0, 0.5f ) );
  86 + mAddressLabel.TouchedSignal().Connect( this, &WebViewController::OnTouchText );
  87 + stage.Add( mAddressLabel );
  88 +
  89 + // Respond to key events
  90 + stage.KeyEventSignal().Connect( this, &WebViewController::OnKeyEvent );
  91 + Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor( mWebView );
  92 + }
  93 +
  94 + void OnPageLoadStarted( Toolkit::WebView view, const std::string& url )
  95 + {
  96 + mAddressLabel.SetProperty( Toolkit::TextLabel::Property::TEXT, "Loading" );
  97 + }
  98 +
  99 + void OnPageLoadFinished( Toolkit::WebView view, const std::string& url )
  100 + {
  101 + mAddressLabel.SetProperty( Toolkit::TextLabel::Property::TEXT, url.c_str() );
  102 + }
  103 +
  104 + bool OnTouchText( Actor actor, const TouchEvent& event )
  105 + {
  106 + if ( event.GetPoint( 0 ).state == TouchPoint::Up )
  107 + {
  108 + std::string url = GetNextUrl();
  109 + mAddressLabel.SetProperty(Toolkit::TextLabel::Property::TEXT, "Waiting" );
  110 + mWebView.LoadUrl( url );
  111 + }
  112 +
  113 + return true;
  114 + }
  115 +
  116 + void OnKeyEvent( const KeyEvent& event )
  117 + {
  118 + if( event.state == KeyEvent::Down )
  119 + {
  120 + if ( IsKey( event, Dali::DALI_KEY_ESCAPE ) || IsKey( event, Dali::DALI_KEY_BACK ) )
  121 + {
  122 + mApplication.Quit();
  123 + }
  124 + }
  125 + }
  126 +
  127 +private:
  128 + Application& mApplication;
  129 + Toolkit::WebView mWebView;
  130 + Toolkit::TextLabel mAddressLabel;
  131 + unsigned int mUrlPointer;
  132 +};
  133 +
  134 +int DALI_EXPORT_API main( int argc, char **argv )
  135 +{
  136 + Application application = Application::New( &argc, &argv );
  137 + WebViewController test( application );
  138 + application.MainLoop();
  139 + return 0;
  140 +}
packaging/com.samsung.dali-demo.spec
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 2
3 Name: com.samsung.dali-demo 3 Name: com.samsung.dali-demo
4 Summary: The OpenGLES Canvas Core Demo 4 Summary: The OpenGLES Canvas Core Demo
5 -Version: 1.3.48 5 +Version: 1.3.49
6 Release: 1 6 Release: 1
7 Group: System/Libraries 7 Group: System/Libraries
8 License: Apache-2.0 8 License: Apache-2.0
resources/po/en_GB.po
@@ -243,3 +243,6 @@ msgstr &quot;Skybox&quot; @@ -243,3 +243,6 @@ msgstr &quot;Skybox&quot;
243 243
244 msgid "DALI_DEMO_STR_TITLE_PBR" 244 msgid "DALI_DEMO_STR_TITLE_PBR"
245 msgstr "PBR" 245 msgstr "PBR"
  246 +
  247 +msgid "DALI_DEMO_STR_TITLE_WEB_VIEW"
  248 +msgstr "Web View"
resources/po/en_US.po
@@ -246,3 +246,6 @@ msgstr &quot;Skybox&quot; @@ -246,3 +246,6 @@ msgstr &quot;Skybox&quot;
246 246
247 msgid "DALI_DEMO_STR_TITLE_PBR" 247 msgid "DALI_DEMO_STR_TITLE_PBR"
248 msgstr "PBR" 248 msgstr "PBR"
  249 +
  250 +msgid "DALI_DEMO_STR_TITLE_WEB_VIEW"
  251 +msgstr "Web View"
shared/dali-demo-strings.h
@@ -114,6 +114,7 @@ extern &quot;C&quot; @@ -114,6 +114,7 @@ extern &quot;C&quot;
114 #define DALI_DEMO_STR_TITLE_TILT_SENSOR dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TILT_SENSOR") 114 #define DALI_DEMO_STR_TITLE_TILT_SENSOR dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TILT_SENSOR")
115 #define DALI_DEMO_STR_TITLE_TOOLTIP dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TOOLTIP") 115 #define DALI_DEMO_STR_TITLE_TOOLTIP dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TOOLTIP")
116 #define DALI_DEMO_STR_TITLE_VISUAL_TRANSITIONS dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_VISUAL_TRANSITIONS") 116 #define DALI_DEMO_STR_TITLE_VISUAL_TRANSITIONS dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_VISUAL_TRANSITIONS")
  117 +#define DALI_DEMO_STR_TITLE_WEB_VIEW dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_WEB_VIEW")
117 118
118 #else // !INTERNATIONALIZATION_ENABLED 119 #else // !INTERNATIONALIZATION_ENABLED
119 120
@@ -199,6 +200,7 @@ extern &quot;C&quot; @@ -199,6 +200,7 @@ extern &quot;C&quot;
199 #define DALI_DEMO_STR_TITLE_TILT_SENSOR "Tilt Sensor" 200 #define DALI_DEMO_STR_TITLE_TILT_SENSOR "Tilt Sensor"
200 #define DALI_DEMO_STR_TITLE_TOOLTIP "Tooltip" 201 #define DALI_DEMO_STR_TITLE_TOOLTIP "Tooltip"
201 #define DALI_DEMO_STR_TITLE_VISUAL_TRANSITIONS "Visual Transitions" 202 #define DALI_DEMO_STR_TITLE_VISUAL_TRANSITIONS "Visual Transitions"
  203 +#define DALI_DEMO_STR_TITLE_WEB_VIEW "Web View"
202 #endif 204 #endif
203 205
204 #ifdef __cplusplus 206 #ifdef __cplusplus