Commit 9022d3f33d497602a88a1512d53c39006479a590

Authored by Xiangyin Ma
1 parent 4e05dc53

PageTurnView demo update

Change-Id: Ib3053eb08dc834edc656868289d7124763080b0e
examples/page-turn-view/page-turn-view-example.cpp
... ... @@ -17,10 +17,6 @@
17 17  
18 18 #include <dali/dali.h>
19 19 #include <dali-toolkit/dali-toolkit.h>
20   -#include <dali-toolkit/devel-api/controls/page-turn-view/page-factory.h>
21   -#include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-landscape-view.h>
22   -#include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-portrait-view.h>
23   -#include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-view.h>
24 20  
25 21 #include <assert.h>
26 22 #include <cstdlib>
... ... @@ -35,6 +31,9 @@ using namespace Dali::Toolkit;
35 31 // LOCAL STUFF
36 32 namespace
37 33 {
  34 +const char* const CHANGE_IMAGE_ICON(DALI_IMAGE_DIR "icon-change.png");
  35 +const char* const CHANGE_IMAGE_ICON_SELECTED( DALI_IMAGE_DIR "icon-change-selected.png" );
  36 +
38 37 // The content amount of one page between portrait and landscape view are different
39 38 // set a ratio to modify the current page number when the rotation is changed
40 39 const float PAGE_NUMBER_CORRESPONDING_RATIO(1.25f);
... ... @@ -76,7 +75,7 @@ class PortraitPageFactory : public PageFactory
76 75 */
77 76 virtual unsigned int GetNumberOfPages()
78 77 {
79   - return 5*NUMBER_OF_PORTRAIT_IMAGE + 1;
  78 + return 10*NUMBER_OF_PORTRAIT_IMAGE + 1;
80 79 }
81 80 /**
82 81 * Create an image actor to represent a page.
... ... @@ -108,7 +107,7 @@ class LandscapePageFactory : public PageFactory
108 107 */
109 108 virtual unsigned int GetNumberOfPages()
110 109 {
111   - return 5*NUMBER_OF_LANDSCAPE_IMAGE / 2 + 1;
  110 + return 10*NUMBER_OF_LANDSCAPE_IMAGE / 2 + 1;
112 111 }
113 112 /**
114 113 * Create an image actor to represent a page.
... ... @@ -156,10 +155,9 @@ public:
156 155 private:
157 156  
158 157 /**
159   - * This method gets called when the screen is rotated, switch between portrait and landscape views
160   - * param [in] orientation The current screen orientation
  158 + * This method gets called when the button is clicked, switch between portrait and landscape views
161 159 */
162   - void OnOrientationAnimationStarted( Orientation orientation );
  160 + bool OnButtonClicked(Toolkit::Button button);
163 161  
164 162 /**
165 163 * Main key event handler
... ... @@ -199,7 +197,7 @@ private:
199 197 private:
200 198  
201 199 Application& mApplication;
202   - Actor mView;
  200 + Layer mButtonLayer;
203 201  
204 202 PageTurnView mPageTurnPortraitView;
205 203 PageTurnView mPageTurnLandscapeView;
... ... @@ -231,75 +229,79 @@ void PageTurnController::OnInit( Application&amp; app )
231 229 Stage stage = Stage::GetCurrent();
232 230 Vector2 stageSize = stage.GetSize();
233 231  
234   - // Create default View.
235   - mView = Actor::New();
236   - mView.SetAnchorPoint( Dali::AnchorPoint::CENTER );
237   - mView.SetParentOrigin( Dali::ParentOrigin::CENTER );
238   - mView.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
239   - stage.Add( mView );
240   -
241   - Dali::Window winHandle = app.GetWindow();
242   - winHandle.AddAvailableOrientation( Dali::Window::PORTRAIT );
243   - winHandle.AddAvailableOrientation( Dali::Window::LANDSCAPE );
244   - winHandle.AddAvailableOrientation( Dali::Window::PORTRAIT_INVERSE );
245   - winHandle.AddAvailableOrientation( Dali::Window::LANDSCAPE_INVERSE );
246   -
247   - // view will response to orientation change to display portrait or landscape views
248   - //app.GetWindow().GetOrientation().ChangedSignal().Connect( this, &PageTurnController::OnOrientationAnimationStarted );
249   -
250   - mPageTurnPortraitView = PageTurnPortraitView::New( mPortraitPageFactory, stageSize );
251   - mPageTurnPortraitView.SetSpineShadowParameter( Vector2(70.f, 30.f) );
  232 + mButtonLayer = Layer::New();
  233 + mButtonLayer.SetAnchorPoint( Dali::AnchorPoint::CENTER );
  234 + mButtonLayer.SetParentOrigin( Dali::ParentOrigin::CENTER );
  235 + mButtonLayer.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
  236 + Toolkit::PushButton button = Toolkit::PushButton::New();
  237 + button.SetAnchorPoint( AnchorPoint::TOP_RIGHT );
  238 + button.SetParentOrigin( ParentOrigin::TOP_RIGHT );
  239 + button.SetUnselectedImage( CHANGE_IMAGE_ICON );
  240 + button.SetSelectedImage( CHANGE_IMAGE_ICON_SELECTED );
  241 + button.SetLeaveRequired( true );
  242 + button.SetScale(1.5f);
  243 + button.PressedSignal().Connect( this, &PageTurnController::OnButtonClicked );
  244 + stage.Add( mButtonLayer );
  245 + mButtonLayer.Add(button);
  246 +
  247 + Vector2 bookSize( stageSize.x > stageSize.y ? stageSize.y : stageSize.x,
  248 + stageSize.x > stageSize.y ? stageSize.x : stageSize.y );
  249 +
  250 + mPageTurnPortraitView = PageTurnPortraitView::New( mPortraitPageFactory, bookSize );
  251 + mPageTurnPortraitView.SetParentOrigin( ParentOrigin::CENTER );
  252 + mPageTurnPortraitView.SetAnchorPoint( AnchorPoint::CENTER );
  253 + mPageTurnPortraitView.SetProperty( PageTurnView::Property::SPINE_SHADOW, Vector2(70.f, 30.f) );
252 254 mPageTurnPortraitView.PageTurnStartedSignal().Connect( this, &PageTurnController::OnPageStartedTurn );
253 255 mPageTurnPortraitView.PageTurnFinishedSignal().Connect( this, &PageTurnController::OnPageFinishedTurn );
254 256 mPageTurnPortraitView.PagePanStartedSignal().Connect( this, &PageTurnController::OnPageStartedPan );
255 257 mPageTurnPortraitView.PagePanFinishedSignal().Connect( this, &PageTurnController::OnPageFinishedPan );
256   - mPageTurnPortraitView.SetPositionInheritanceMode( USE_PARENT_POSITION );
257 258  
258   - mPageTurnLandscapeView = PageTurnLandscapeView::New( mLandscapePageFactory, Vector2(stageSize.y*0.5f, stageSize.x) );
  259 + mPageTurnLandscapeView = PageTurnLandscapeView::New( mLandscapePageFactory, Vector2(bookSize.y*0.5f, bookSize.x) );
  260 + mPageTurnLandscapeView.SetParentOrigin( ParentOrigin::CENTER );
  261 + mPageTurnLandscapeView.SetAnchorPoint( AnchorPoint::CENTER );
259 262 mPageTurnLandscapeView.PageTurnStartedSignal().Connect( this, &PageTurnController::OnPageStartedTurn );
260 263 mPageTurnLandscapeView.PageTurnFinishedSignal().Connect( this, &PageTurnController::OnPageFinishedTurn );
261 264 mPageTurnLandscapeView.PagePanStartedSignal().Connect( this, &PageTurnController::OnPageStartedPan );
262 265 mPageTurnLandscapeView.PagePanFinishedSignal().Connect( this, &PageTurnController::OnPageFinishedPan );
263   - mPageTurnLandscapeView.SetPositionInheritanceMode( USE_PARENT_POSITION );
264 266  
265   - mView.Add(mPageTurnPortraitView);
  267 + if( stageSize.x > stageSize.y )
  268 + {
  269 + stage.Add(mPageTurnLandscapeView);
  270 + mPageTurnPortraitView.SetOrientation(Degree(90.f), Vector3::ZAXIS);
  271 + mIsPortrait = false;
  272 + }
  273 + else
  274 + {
  275 + stage.Add(mPageTurnPortraitView);
  276 + mPageTurnLandscapeView.SetOrientation(Degree(90.f), Vector3::ZAXIS);
  277 + mIsPortrait = true;
  278 + }
  279 +
  280 + mButtonLayer.RaiseToTop();
266 281 }
267 282  
268   -void PageTurnController::OnOrientationAnimationStarted( Orientation orientation )
  283 +bool PageTurnController::OnButtonClicked(Toolkit::Button button)
269 284 {
270   - switch( orientation.GetDegrees() )
  285 + if( mIsPortrait )
271 286 {
272   - // portrait view, display page in the right side only
273   - case 0:
274   - case 180:
275   - {
276   - if( !mIsPortrait )
277   - {
278   - mView.Remove( mPageTurnLandscapeView );
279   - mView.Add( mPageTurnPortraitView );
280   - int currentPage = floor( static_cast<float>(mPageTurnLandscapeView.GetCurrentPage()) * PAGE_NUMBER_CORRESPONDING_RATIO );
281   - mPageTurnPortraitView.GoToPage( currentPage );
282   - mIsPortrait = true;
283   - }
284   - break;
285   - }
286   - // display pages in both sides
287   - case 90:
288   - case 270:
289   - {
290   - if( mIsPortrait )
291   - {
292   - mView.Remove( mPageTurnPortraitView );
293   - mView.Add( mPageTurnLandscapeView );
294   - int currentPage = ceil( static_cast<float>(mPageTurnPortraitView.GetCurrentPage()) / PAGE_NUMBER_CORRESPONDING_RATIO );
295   - mPageTurnLandscapeView.GoToPage( currentPage );
296   - mIsPortrait = false;
297   - }
298   - break;
299   - }
300   - default:
301   - break;
  287 + mPageTurnPortraitView.Unparent();
  288 + Stage::GetCurrent().Add( mPageTurnLandscapeView );
  289 + int pageId = mPageTurnPortraitView.GetProperty( PageTurnView::Property::CURRENT_PAGE_ID ).Get<int>();
  290 + int currentPage = ceil( static_cast<float>(pageId) / PAGE_NUMBER_CORRESPONDING_RATIO );
  291 + mPageTurnLandscapeView.SetProperty(PageTurnView::Property::CURRENT_PAGE_ID, currentPage );
  292 + }
  293 + else
  294 + {
  295 + mPageTurnLandscapeView.Unparent();
  296 + Stage::GetCurrent().Add( mPageTurnPortraitView );
  297 + int pageId = mPageTurnLandscapeView.GetProperty( PageTurnView::Property::CURRENT_PAGE_ID ).Get<int>();
  298 + int currentPage = floor(pageId * PAGE_NUMBER_CORRESPONDING_RATIO );
  299 + mPageTurnPortraitView.SetProperty(PageTurnView::Property::CURRENT_PAGE_ID, currentPage );
302 300 }
  301 +
  302 + mIsPortrait = !mIsPortrait;
  303 + mButtonLayer.RaiseToTop();
  304 + return true;
303 305 }
304 306  
305 307 /**
... ...