Updated demos to use DALi clang-format
[platform/core/uifw/dali-demo.git] / examples / scroll-view / scroll-view-example.cpp
index f067d60..1f62db9 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 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.
 #include <sstream>
 
 // INTERNAL INCLUDES
-#include "shared/view.h"
-#include <dali/dali.h>
 #include <dali-toolkit/dali-toolkit.h>
+#include <dali/dali.h>
+#include "shared/view.h"
 
 using namespace Dali;
 using namespace Dali::Toolkit;
 
 namespace
 {
-const char * const BACKGROUND_IMAGE( DALI_IMAGE_DIR "background-default.png" );
-const char * const TOOLBAR_IMAGE( DALI_IMAGE_DIR "top-bar.png" );
-const char * const APPLICATION_TITLE( "ScrollView" );
-const char * const EFFECT_DEPTH_IMAGE( DALI_IMAGE_DIR "icon-scroll-view-depth.png" );
-const char * const EFFECT_INNER_CUBE_IMAGE( DALI_IMAGE_DIR "icon-scroll-view-inner-cube.png" );
-const char * const EFFECT_CAROUSEL_IMAGE( DALI_IMAGE_DIR "icon-scroll-view-carousel.png" );
+const char* const BACKGROUND_IMAGE(DEMO_IMAGE_DIR "background-default.png");
+const char* const TOOLBAR_IMAGE(DEMO_IMAGE_DIR "top-bar.png");
+const char* const APPLICATION_TITLE("ScrollView");
+const char* const EFFECT_CAROUSEL_IMAGE(DEMO_IMAGE_DIR "icon-scroll-view-carousel.png");
+const char* const EFFECT_CAROUSEL_IMAGE_SELECTED(DEMO_IMAGE_DIR "icon-scroll-view-carousel-selected.png");
+const char* const EFFECT_CUBE_IMAGE(DEMO_IMAGE_DIR "icon-scroll-view-inner-cube.png");
+const char* const EFFECT_CUBE_IMAGE_SELECTED(DEMO_IMAGE_DIR "icon-scroll-view-inner-cube-selected.png");
+const char* const EFFECT_SPIRAL_IMAGE(DEMO_IMAGE_DIR "icon-scroll-view-spiral.png");
+const char* const EFFECT_SPIRAL_IMAGE_SELECTED(DEMO_IMAGE_DIR "icon-scroll-view-spiral-selected.png");
+const char* const EFFECT_WAVE_IMAGE(DEMO_IMAGE_DIR "icon-effect-wave.png");
+const char* const EFFECT_WAVE_IMAGE_SELECTED(DEMO_IMAGE_DIR "icon-effect-wave-selected.png");
 
 const Vector3 ICON_SIZE(100.0f, 100.0f, 0.0f);
 
 const char* EFFECT_MODE_NAME[] = {
-    "Depth",
-    "Cube",
-    "PageCarousel",
-    "PageCube",
-    "PageSpiral",
-    "PageWave"
-};
-
-const char * const IMAGE_PATHS[] = {
-    DALI_IMAGE_DIR "gallery-medium-1.jpg",
-    DALI_IMAGE_DIR "gallery-medium-2.jpg",
-    DALI_IMAGE_DIR "gallery-medium-3.jpg",
-    DALI_IMAGE_DIR "gallery-medium-4.jpg",
-    DALI_IMAGE_DIR "gallery-medium-5.jpg",
-    DALI_IMAGE_DIR "gallery-medium-6.jpg",
-    DALI_IMAGE_DIR "gallery-medium-7.jpg",
-    DALI_IMAGE_DIR "gallery-medium-8.jpg",
-    DALI_IMAGE_DIR "gallery-medium-9.jpg",
-    DALI_IMAGE_DIR "gallery-medium-10.jpg",
-    DALI_IMAGE_DIR "gallery-medium-11.jpg",
-    DALI_IMAGE_DIR "gallery-medium-12.jpg",
-    DALI_IMAGE_DIR "gallery-medium-13.jpg",
-    DALI_IMAGE_DIR "gallery-medium-14.jpg",
-    DALI_IMAGE_DIR "gallery-medium-15.jpg",
-    DALI_IMAGE_DIR "gallery-medium-16.jpg",
-    DALI_IMAGE_DIR "gallery-medium-17.jpg",
-    DALI_IMAGE_DIR "gallery-medium-18.jpg",
-    DALI_IMAGE_DIR "gallery-medium-19.jpg",
-    DALI_IMAGE_DIR "gallery-medium-20.jpg",
-    DALI_IMAGE_DIR "gallery-medium-21.jpg",
-    DALI_IMAGE_DIR "gallery-medium-22.jpg",
-    DALI_IMAGE_DIR "gallery-medium-23.jpg",
-    DALI_IMAGE_DIR "gallery-medium-24.jpg",
-    DALI_IMAGE_DIR "gallery-medium-25.jpg",
-    DALI_IMAGE_DIR "gallery-medium-26.jpg",
-    DALI_IMAGE_DIR "gallery-medium-27.jpg",
-    DALI_IMAGE_DIR "gallery-medium-28.jpg",
-    DALI_IMAGE_DIR "gallery-medium-29.jpg",
-    DALI_IMAGE_DIR "gallery-medium-30.jpg",
-    DALI_IMAGE_DIR "gallery-medium-31.jpg",
-    DALI_IMAGE_DIR "gallery-medium-32.jpg",
-    DALI_IMAGE_DIR "gallery-medium-33.jpg",
-    DALI_IMAGE_DIR "gallery-medium-34.jpg",
-    DALI_IMAGE_DIR "gallery-medium-35.jpg",
-    DALI_IMAGE_DIR "gallery-medium-36.jpg",
-    DALI_IMAGE_DIR "gallery-medium-37.jpg",
-    DALI_IMAGE_DIR "gallery-medium-38.jpg",
-    DALI_IMAGE_DIR "gallery-medium-39.jpg",
-    DALI_IMAGE_DIR "gallery-medium-40.jpg",
-    DALI_IMAGE_DIR "gallery-medium-41.jpg",
-    DALI_IMAGE_DIR "gallery-medium-42.jpg",
-    DALI_IMAGE_DIR "gallery-medium-43.jpg",
-    DALI_IMAGE_DIR "gallery-medium-44.jpg",
-    DALI_IMAGE_DIR "gallery-medium-45.jpg",
-    DALI_IMAGE_DIR "gallery-medium-46.jpg",
-    DALI_IMAGE_DIR "gallery-medium-47.jpg",
-    DALI_IMAGE_DIR "gallery-medium-48.jpg",
-    DALI_IMAGE_DIR "gallery-medium-49.jpg",
-    DALI_IMAGE_DIR "gallery-medium-50.jpg",
-    DALI_IMAGE_DIR "gallery-medium-51.jpg",
-    DALI_IMAGE_DIR "gallery-medium-52.jpg",
-    DALI_IMAGE_DIR "gallery-medium-53.jpg",
-
-    NULL
-};
-
-const char * const GetNextImagePath()
+  "PageCarousel",
+  "PageCube",
+  "PageSpiral",
+  "PageWave"};
+
+const char* const IMAGE_PATHS[] = {
+  DEMO_IMAGE_DIR "gallery-medium-1.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-2.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-3.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-4.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-5.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-6.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-7.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-8.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-9.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-10.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-11.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-12.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-13.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-14.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-15.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-16.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-17.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-18.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-19.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-20.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-21.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-22.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-23.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-24.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-25.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-26.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-27.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-28.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-29.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-30.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-31.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-32.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-33.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-34.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-35.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-36.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-37.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-38.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-39.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-40.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-41.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-42.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-43.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-44.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-45.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-46.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-47.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-48.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-49.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-50.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-51.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-52.jpg",
+  DEMO_IMAGE_DIR "gallery-medium-53.jpg",
+
+  NULL};
+
+const char* const GetNextImagePath()
 {
-  static const char * const * imagePtr = &IMAGE_PATHS[0];
+  static const char* const* imagePtr = &IMAGE_PATHS[0];
 
-  if ( *(++imagePtr) == NULL )
+  if(*(++imagePtr) == NULL)
   {
     imagePtr = &IMAGE_PATHS[0];
   }
@@ -116,36 +117,17 @@ const char * const GetNextImagePath()
   return *imagePtr;
 }
 
-const int PAGE_COLUMNS = 10;                                                ///< Number of Pages going across (columns)
-const int PAGE_ROWS = 1;                                                    ///< Number of Pages going down (rows)
-const int IMAGE_ROWS = 5;                                                   ///< Number of Images going down (rows) with a Page
-
-// 3D Effect constants
-const Vector3 ANGLE_CUBE_PAGE_ROTATE(Math::PI * 0.2f, Math::PI * 0.2f, 0.0f); ///< Cube page rotates as if it has ten sides with the camera positioned inside
-const Vector2 ANGLE_CUSTOM_CUBE_SWING(-Math::PI * 0.45f, -Math::PI * 0.45f);  ///< outer cube pages swing 90 degrees as they pan offscreen
-const Vector2 ANGLE_SPIRAL_SWING_IN(Math::PI * 0.45f, Math::PI * 0.45f);
-const Vector2 ANGLE_SPIRAL_SWING_OUT(Math::PI * 0.3f, Math::PI * 0.3f);
+const int PAGE_COLUMNS = 10; ///< Number of Pages going across (columns)
+const int PAGE_ROWS    = 1;  ///< Number of Pages going down (rows)
+const int IMAGE_ROWS   = 5;  ///< Number of Images going down (rows) with a Page
 
-// Depth Effect constants
-const Vector2 POSITION_EXTENT_DEPTH_EFFECT(0.5f, 2.5f);                     ///< Extent of X & Y position to alter function exponent.
-const Vector2 OFFSET_EXTENT_DEPTH_EFFECT(1.0f, 1.0f);                       ///< Function exponent offset constant.
-const float POSITION_SCALE_DEPTH_EFFECT(1.5f);                              ///< Position scaling.
-const float SCALE_EXTENT_DEPTH_EFFECT(0.5f);                                ///< Maximum scale factor when Actors scrolled one page away (50% size)
+const unsigned int IMAGE_THUMBNAIL_WIDTH  = 256; ///< Width of Thumbnail Image in texels
+const unsigned int IMAGE_THUMBNAIL_HEIGHT = 256; ///< Height of Thumbnail Image in texels
 
-// 3D Effect constants
-const Vector2 ANGLE_SWING_3DEFFECT(Math::PI_2 * 0.75, Math::PI_2 * 0.75f); ///< Angle Swing in radians
-const Vector2 POSITION_SWING_3DEFFECT(0.25f, 0.25f); ///< Position Swing relative to stage size.
-const Vector3 ANCHOR_3DEFFECT_STYLE0(-105.0f, 30.0f, -240.0f); ///< Rotation Anchor position for 3D Effect (Style 0)
-const Vector3 ANCHOR_3DEFFECT_STYLE1(65.0f, -70.0f, -300.0f); ///< Rotation Anchor position for 3D Effect (Style 1)
+const float SPIN_DURATION = 1.0f; ///< Times to spin an Image by upon touching, each spin taking a second.
 
-
-const unsigned int IMAGE_THUMBNAIL_WIDTH  = 256;                            ///< Width of Thumbnail Image in texels
-const unsigned int IMAGE_THUMBNAIL_HEIGHT = 256;                            ///< Height of Thumbnail Image in texels
-
-const float SPIN_DURATION = 1.0f;                                           ///< Times to spin an Image by upon touching, each spin taking a second.
-
-const float EFFECT_SNAP_DURATION(0.66f);                                    ///< Scroll Snap Duration for Effects
-const float EFFECT_FLICK_DURATION(0.5f);                                    ///< Scroll Flick Duration for Effects
+const float EFFECT_SNAP_DURATION(0.66f); ///< Scroll Snap Duration for Effects
+const float EFFECT_FLICK_DURATION(0.5f); ///< Scroll Flick Duration for Effects
 
 } // unnamed namespace
 
@@ -155,16 +137,15 @@ const float EFFECT_FLICK_DURATION(0.5f);                                    ///<
 class ExampleController : public ConnectionTracker
 {
 public:
-
   /**
    * Constructor
    * @param application class, stored as reference
    */
-  ExampleController( Application& application )
-  : mApplication( application ),
+  ExampleController(Application& application)
+  : mApplication(application),
     mView(),
     mScrolling(false),
-    mEffectMode(CubeEffect)
+    mEffectMode(PageCarouselEffect)
   {
     // Connect to the Application's Init and orientation changed signal
     mApplication.InitSignal().Connect(this, &ExampleController::OnInit);
@@ -180,74 +161,70 @@ public:
    */
   void OnInit(Application& app)
   {
-    DemoHelper::RequestThemeChange();
-
-    Stage stage = Dali::Stage::GetCurrent();
-    stage.KeyEventSignal().Connect(this, &ExampleController::OnKeyEvent);
-
-    // Hide the indicator bar
-    mApplication.GetWindow().ShowIndicator(Dali::Window::INVISIBLE);
+    Window window = app.GetWindow();
+    window.KeyEventSignal().Connect(this, &ExampleController::OnKeyEvent);
 
     // Creates a default view with a default tool bar.
-    // The view is added to the stage.
-    mContentLayer = DemoHelper::CreateView( app,
-                                            mView,
-                                            mToolBar,
-                                            BACKGROUND_IMAGE,
-                                            TOOLBAR_IMAGE,
-                                            "" );
-
-    mEffectIcon[ DepthEffect ]     = ResourceImage::New( EFFECT_DEPTH_IMAGE );
-    mEffectIcon[ CubeEffect ]      = ResourceImage::New( EFFECT_INNER_CUBE_IMAGE );
-    mEffectIcon[ PageCarouselEffect ] = ResourceImage::New( EFFECT_CAROUSEL_IMAGE );
-    mEffectIcon[ PageCubeEffect ]     = ResourceImage::New( EFFECT_CAROUSEL_IMAGE );
-    mEffectIcon[ PageSpiralEffect ]   = ResourceImage::New( EFFECT_CAROUSEL_IMAGE );
-    mEffectIcon[ PageWaveEffect ]     = ResourceImage::New( EFFECT_CAROUSEL_IMAGE );
+    // The view is added to the window.
+    mContentLayer = DemoHelper::CreateView(app,
+                                           mView,
+                                           mToolBar,
+                                           BACKGROUND_IMAGE,
+                                           TOOLBAR_IMAGE,
+                                           "");
+
+    mEffectIcon[PageCarouselEffect]         = EFFECT_CAROUSEL_IMAGE;
+    mEffectIconSelected[PageCarouselEffect] = EFFECT_CAROUSEL_IMAGE_SELECTED;
+    mEffectIcon[PageCubeEffect]             = EFFECT_CUBE_IMAGE;
+    mEffectIconSelected[PageCubeEffect]     = EFFECT_CUBE_IMAGE_SELECTED;
+    mEffectIcon[PageSpiralEffect]           = EFFECT_SPIRAL_IMAGE;
+    mEffectIconSelected[PageSpiralEffect]   = EFFECT_SPIRAL_IMAGE_SELECTED;
+    mEffectIcon[PageWaveEffect]             = EFFECT_WAVE_IMAGE;
+    mEffectIconSelected[PageWaveEffect]     = EFFECT_WAVE_IMAGE_SELECTED;
 
     // Create a effect change button. (right of toolbar)
     mEffectChangeButton = Toolkit::PushButton::New();
-    mEffectChangeButton.ClickedSignal().Connect( this, &ExampleController::OnEffectTouched );
-    mToolBar.AddControl( mEffectChangeButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HorizontalRight, DemoHelper::DEFAULT_MODE_SWITCH_PADDING  );
+    mEffectChangeButton.ClickedSignal().Connect(this, &ExampleController::OnEffectTouched);
+    mToolBar.AddControl(mEffectChangeButton, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage, Toolkit::Alignment::HORIZONTAL_RIGHT, DemoHelper::DEFAULT_MODE_SWITCH_PADDING);
 
     // Create the content layer.
     AddContentLayer();
 
     // Hack to force screen refresh.
     Animation animation = Animation::New(1.0f);
-    animation.AnimateTo(Property(mContentLayer, Actor::Property::POSITION), Vector3::ZERO );
+    animation.AnimateTo(Property(mContentLayer, Actor::Property::POSITION), Vector3::ZERO);
     animation.Play();
   }
 
 private:
-
   /**
    * Adds content to the ContentLayer. This is everything we see
    * excluding the toolbar at the top.
    */
   void AddContentLayer()
   {
-    Stage stage = Stage::GetCurrent();
-    Vector2 stageSize = stage.GetSize();
+    Window  window     = mApplication.GetWindow();
+    Vector2 windowSize = window.GetSize();
 
     mScrollView = ScrollView::New();
-    mScrollView.SetAnchorPoint(AnchorPoint::CENTER);
-    mScrollView.SetParentOrigin(ParentOrigin::CENTER);
-    mContentLayer.Add( mScrollView );
-    mScrollView.SetSize( stageSize );
-    mScrollView.SetAxisAutoLock( true );
-    mScrollView.SetAxisAutoLockGradient( 1.0f );
+    mScrollView.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
+    mScrollView.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
+    mContentLayer.Add(mScrollView);
+    mScrollView.SetProperty(Actor::Property::SIZE, windowSize);
+    mScrollView.SetAxisAutoLock(true);
+    mScrollView.SetAxisAutoLockGradient(1.0f);
 
-    mScrollView.ScrollStartedSignal().Connect( this, &ExampleController::OnScrollStarted );
-    mScrollView.ScrollCompletedSignal().Connect( this, &ExampleController::OnScrollCompleted );
+    mScrollView.ScrollStartedSignal().Connect(this, &ExampleController::OnScrollStarted);
+    mScrollView.ScrollCompletedSignal().Connect(this, &ExampleController::OnScrollCompleted);
 
-    for(int row = 0;row<PAGE_ROWS;row++)
+    for(int row = 0; row < PAGE_ROWS; row++)
     {
-      for(int column = 0;column<PAGE_COLUMNS;column++)
+      for(int column = 0; column < PAGE_COLUMNS; column++)
       {
         Actor page = CreatePage();
 
-        page.SetPosition( column * stageSize.x, row * stageSize.y );
-        mScrollView.Add( page );
+        page.SetProperty(Actor::Property::POSITION, Vector2(column * windowSize.x, row * windowSize.y));
+        mScrollView.Add(page);
 
         mPages.push_back(page);
       }
@@ -266,7 +243,8 @@ private:
     ss << APPLICATION_TITLE << ": " << EFFECT_MODE_NAME[mEffectMode];
     SetTitle(ss.str());
 
-    mEffectChangeButton.SetBackgroundImage( mEffectIcon[ mEffectMode ] );
+    mEffectChangeButton.SetProperty(Toolkit::Button::Property::UNSELECTED_BACKGROUND_VISUAL, mEffectIcon[mEffectMode]);
+    mEffectChangeButton.SetProperty(Toolkit::Button::Property::SELECTED_BACKGROUND_VISUAL, mEffectIconSelected[mEffectMode]);
 
     // remove old Effect if exists.
     if(mScrollViewEffect)
@@ -277,22 +255,10 @@ private:
     // apply new Effect to ScrollView
     ApplyEffectToScrollView();
     unsigned int pageCount(0);
-    for( std::vector< Actor >::iterator pageIter = mPages.begin(); pageIter != mPages.end(); ++pageIter)
+    for(std::vector<Actor>::iterator pageIter = mPages.begin(); pageIter != mPages.end(); ++pageIter)
     {
       Actor page = *pageIter;
-      ApplyEffectToPage( page, pageCount++ );
-
-      unsigned int numChildren = (*pageIter).GetChildCount();
-      for(unsigned int i=0; i<numChildren; ++i)
-      {
-        Actor image = (*pageIter).GetChildAt(i);
-
-        // Remove old effect's manual constraints.
-        image.RemoveConstraints();
-
-        // Apply new effect's manual constraints.
-        ApplyEffectToActor( image, page );
-      }
+      ApplyEffectToPage(page, pageCount++);
     }
   }
 
@@ -302,33 +268,33 @@ private:
   Actor CreatePage()
   {
     Actor page = Actor::New();
-    page.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
-    page.SetParentOrigin( ParentOrigin::CENTER );
-    page.SetAnchorPoint( AnchorPoint::CENTER );
+    page.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
+    page.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
+    page.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
 
-    Stage stage = Stage::GetCurrent();
-    Vector2 stageSize = stage.GetSize();
+    Window  window     = mApplication.GetWindow();
+    Vector2 windowSize = window.GetSize();
 
     const float margin = 10.0f;
 
-    // Calculate the number of images going across (columns) within a page, according to the screen resolution and dpi.
-    int imageColumns = round(IMAGE_ROWS * (stageSize.x / stage.GetDpi().x) / (stageSize.y / stage.GetDpi().y));
-    const Vector3 imageSize((stageSize.x / imageColumns) - margin, (stageSize.y / IMAGE_ROWS) - margin, 0.0f);
+    // Calculate the number of images going across (columns) within a page, according to the screen resolution
+    int           imageColumns = round(IMAGE_ROWS * (windowSize.x / windowSize.y));
+    const Vector3 imageSize((windowSize.x / imageColumns) - margin, (windowSize.y / IMAGE_ROWS) - margin, 0.0f);
 
-    for(int row = 0;row<IMAGE_ROWS;row++)
+    for(int row = 0; row < IMAGE_ROWS; row++)
     {
-      for(int column = 0;column<imageColumns;column++)
+      for(int column = 0; column < imageColumns; column++)
       {
-        ImageActor image = CreateImage( GetNextImagePath(), imageSize.x, imageSize.y );
+        ImageView image = CreateImage(GetNextImagePath(), imageSize.x, imageSize.y);
 
-        image.SetParentOrigin( ParentOrigin::CENTER );
-        image.SetAnchorPoint( AnchorPoint::CENTER );
+        image.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
+        image.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
 
-        Vector3 position( margin * 0.5f + (imageSize.x + margin) * column - stageSize.width * 0.5f,
-                         margin * 0.5f + (imageSize.y + margin) * row - stageSize.height * 0.5f,
-                          0.0f);
-        image.SetPosition( position + imageSize * 0.5f );
-        image.SetSize( imageSize );
+        Vector3 position(margin * 0.5f + (imageSize.x + margin) * column - windowSize.width * 0.5f,
+                         margin * 0.5f + (imageSize.y + margin) * row - windowSize.height * 0.5f,
+                         0.0f);
+        image.SetProperty(Actor::Property::POSITION, position + imageSize * 0.5f);
+        image.SetProperty(Actor::Property::SIZE, imageSize);
         page.Add(image);
       }
     }
@@ -342,151 +308,104 @@ private:
    */
   void ApplyEffectToScrollView()
   {
-    bool wrap(true);
     bool snap(true);
 
-    Stage stage = Stage::GetCurrent();
-    Vector2 stageSize = stage.GetSize();
+    Window  window     = mApplication.GetWindow();
+    Vector2 windowSize = window.GetSize();
 
-    RulerPtr rulerX = CreateRuler(snap ? stageSize.width : 0.0f);
+    RulerPtr rulerX = CreateRuler(snap ? windowSize.width : 0.0f);
     RulerPtr rulerY = new DefaultRuler;
-    rulerX->SetDomain(RulerDomain(0.0f, stageSize.x * PAGE_COLUMNS, !wrap));
+    rulerX->SetDomain(RulerDomain(0.0f, windowSize.x * PAGE_COLUMNS, false));
     rulerY->Disable();
 
-    switch( mEffectMode )
+    Dali::Path            path = Dali::Path::New();
+    Dali::Property::Array points;
+    points.Resize(3);
+    Dali::Property::Array controlPoints;
+    controlPoints.Resize(4);
+    Vector3 forward;
+    if(mEffectMode == PageCarouselEffect)
     {
-      case DepthEffect:
-      {
-        mScrollViewEffect = ScrollViewDepthEffect::New();
-        mScrollView.SetScrollSnapDuration(EFFECT_SNAP_DURATION);
-        mScrollView.SetScrollFlickDuration(EFFECT_FLICK_DURATION);
-        mScrollView.SetScrollSnapAlphaFunction(AlphaFunction::EASE_OUT);
-        mScrollView.SetScrollFlickAlphaFunction(AlphaFunction::EASE_OUT);
-        mScrollView.RemoveConstraintsFromChildren();
-        break;
-      }
-
-      case CubeEffect:
-      {
-        mScrollViewEffect = ScrollViewCubeEffect::New();
-        mScrollView.SetScrollSnapDuration(EFFECT_SNAP_DURATION);
-        mScrollView.SetScrollFlickDuration(EFFECT_FLICK_DURATION);
-        mScrollView.SetScrollSnapAlphaFunction(AlphaFunction::EASE_OUT_BACK);
-        mScrollView.SetScrollFlickAlphaFunction(AlphaFunction::EASE_OUT_BACK);
-        mScrollView.RemoveConstraintsFromChildren();
-        break;
-      }
+      points[0] = Vector3(windowSize.x * 0.75, 0.0f, -windowSize.x * 0.75f);
+      points[1] = Vector3(0.0f, 0.0f, 0.0f);
+      points[2] = Vector3(-windowSize.x * 0.75f, 0.0f, -windowSize.x * 0.75f);
+      path.SetProperty(Path::Property::POINTS, points);
+
+      controlPoints[0] = Vector3(windowSize.x * 0.5f, 0.0f, 0.0f);
+      controlPoints[1] = Vector3(windowSize.x * 0.5f, 0.0f, 0.0f);
+      controlPoints[2] = Vector3(-windowSize.x * 0.5f, 0.0f, 0.0f);
+      controlPoints[3] = Vector3(-windowSize.x * 0.5f, 0.0f, 0.0f);
+      path.SetProperty(Path::Property::CONTROL_POINTS, controlPoints);
+
+      forward = Vector3::ZERO;
+    }
+    else if(mEffectMode == PageCubeEffect)
+    {
+      points[0] = Vector3(windowSize.x * 0.5, 0.0f, windowSize.x * 0.5f);
+      points[1] = Vector3(0.0f, 0.0f, 0.0f);
+      points[2] = Vector3(-windowSize.x * 0.5f, 0.0f, windowSize.x * 0.5f);
+      path.SetProperty(Path::Property::POINTS, points);
+
+      controlPoints[0] = Vector3(windowSize.x * 0.5f, 0.0f, windowSize.x * 0.3f);
+      controlPoints[1] = Vector3(windowSize.x * 0.3f, 0.0f, 0.0f);
+      controlPoints[2] = Vector3(-windowSize.x * 0.3f, 0.0f, 0.0f);
+      controlPoints[3] = Vector3(-windowSize.x * 0.5f, 0.0f, windowSize.x * 0.3f);
+      path.SetProperty(Path::Property::CONTROL_POINTS, controlPoints);
+
+      forward = Vector3(-1.0f, 0.0f, 0.0f);
+    }
+    else if(mEffectMode == PageSpiralEffect)
+    {
+      points[0] = Vector3(windowSize.x * 0.5, 0.0f, -windowSize.x * 0.5f);
+      points[1] = Vector3(0.0f, 0.0f, 0.0f);
+      points[2] = Vector3(-windowSize.x * 0.5f, 0.0f, -windowSize.x * 0.5f);
+      path.SetProperty(Path::Property::POINTS, points);
+
+      controlPoints[0] = Vector3(windowSize.x * 0.5f, 0.0f, 0.0f);
+      controlPoints[1] = Vector3(windowSize.x * 0.5f, 0.0f, 0.0f);
+      controlPoints[2] = Vector3(-windowSize.x * 0.5f, 0.0f, 0.0f);
+      controlPoints[3] = Vector3(-windowSize.x * 0.5f, 0.0f, 0.0f);
+      path.SetProperty(Path::Property::CONTROL_POINTS, controlPoints);
+
+      forward = Vector3(-1.0f, 0.0f, 0.0f);
+    }
+    else if(mEffectMode == PageWaveEffect)
+    {
+      points[0] = Vector3(windowSize.x, 0.0f, -windowSize.x);
+      points[1] = Vector3(0.0f, 0.0f, 0.0f);
+      points[2] = Vector3(-windowSize.x, 0.0f, -windowSize.x);
+      path.SetProperty(Path::Property::POINTS, points);
+
+      controlPoints[0] = Vector3(0.0f, 0.0f, -windowSize.x);
+      controlPoints[1] = Vector3(windowSize.x * 0.5f, 0.0f, 0.0f);
+      controlPoints[2] = Vector3(-windowSize.x * 0.5f, 0.0f, 0.0f);
+      controlPoints[3] = Vector3(0.0f, 0.0f, -windowSize.x);
+      path.SetProperty(Path::Property::CONTROL_POINTS, controlPoints);
+
+      forward = Vector3(-1.0f, 0.0f, 0.0f);
+    }
 
-      case PageCarouselEffect:
-      case PageCubeEffect:
-      case PageSpiralEffect:
-      case PageWaveEffect:
-      {
-        Dali::Path path = Dali::Path::New();
-        Dali::Property::Array points;
-        points.resize(3);
-        Dali::Property::Array controlPoints;
-        controlPoints.resize(4);
-        Vector3 forward;
-        if( mEffectMode == PageCarouselEffect)
-        {
-
-          points[0] = Vector3( stageSize.x*0.75, 0.0f,  -stageSize.x*0.75f);
-          points[1] = Vector3( 0.0f, 0.0f, 0.0f );
-          points[2] = Vector3( -stageSize.x*0.75f, 0.0f,  -stageSize.x*0.75f);
-          path.SetProperty( Path::Property::POINTS, points );
-
-          controlPoints[0] = Vector3( stageSize.x*0.5f, 0.0f, 0.0f );
-          controlPoints[1] = Vector3( stageSize.x*0.5f, 0.0f, 0.0f );
-          controlPoints[2] = Vector3(-stageSize.x*0.5f, 0.0f, 0.0f );
-          controlPoints[3] = Vector3(-stageSize.x*0.5f, 0.0f, 0.0f );
-          path.SetProperty( Path::Property::CONTROL_POINTS, controlPoints );
-
-          forward = Vector3::ZERO;
-        }
-        else if( mEffectMode == PageCubeEffect)
-        {
-          points[0] = Vector3( stageSize.x*0.5, 0.0f,  stageSize.x*0.5f);
-          points[1] = Vector3( 0.0f, 0.0f, 0.0f );
-          points[2] = Vector3( -stageSize.x*0.5f, 0.0f, stageSize.x*0.5f);
-          path.SetProperty( Path::Property::POINTS, points );
-
-          controlPoints[0] = Vector3( stageSize.x*0.5f, 0.0f, stageSize.x*0.3f );
-          controlPoints[1] = Vector3( stageSize.x*0.3f, 0.0f, 0.0f );
-          controlPoints[2] = Vector3(-stageSize.x*0.3f, 0.0f, 0.0f );
-          controlPoints[3] = Vector3(-stageSize.x*0.5f, 0.0f,  stageSize.x*0.3f );
-          path.SetProperty( Path::Property::CONTROL_POINTS, controlPoints );
-
-          forward = Vector3(-1.0f,0.0f,0.0f);
-        }
-        else if( mEffectMode == PageSpiralEffect)
-        {
-          points[0] = Vector3( stageSize.x*0.5, 0.0f,  -stageSize.x*0.5f);
-          points[1] = Vector3( 0.0f, 0.0f, 0.0f );
-          points[2] = Vector3( -stageSize.x*0.5f, 0.0f, -stageSize.x*0.5f);
-          path.SetProperty( Path::Property::POINTS, points );
-
-          controlPoints[0] = Vector3( stageSize.x*0.5f, 0.0f, 0.0f );
-          controlPoints[1] = Vector3( stageSize.x*0.5f, 0.0f, 0.0f );
-          controlPoints[2] = Vector3(-stageSize.x*0.5f, 0.0f, 0.0f );
-          controlPoints[3] = Vector3(-stageSize.x*0.5f, 0.0f, 0.0f );
-          path.SetProperty( Path::Property::CONTROL_POINTS, controlPoints );
-
-          forward = Vector3(-1.0f,0.0f,0.0f);
-        }
-        else if( mEffectMode == PageWaveEffect)
-        {
-          points[0] = Vector3( stageSize.x, 0.0f,  -stageSize.x);
-          points[1] = Vector3( 0.0f, 0.0f, 0.0f );
-          points[2] = Vector3( -stageSize.x, 0.0f, -stageSize.x);
-          path.SetProperty( Path::Property::POINTS, points );
-
-          controlPoints[0] = Vector3( 0.0f, 0.0f, -stageSize.x );
-          controlPoints[1] = Vector3( stageSize.x*0.5f, 0.0f, 0.0f );
-          controlPoints[2] = Vector3( -stageSize.x*0.5f, 0.0f, 0.0f);
-          controlPoints[3] = Vector3(0.0f, 0.0f,-stageSize.x  );
-          path.SetProperty( Path::Property::CONTROL_POINTS, controlPoints );
-
-          forward = Vector3(-1.0f,0.0f,0.0f);
-        }
-
-        mScrollViewEffect = ScrollViewPagePathEffect::New(path, forward,Toolkit::ScrollView::Property::SCROLL_FINAL_X, Vector3(stageSize.x,stageSize.y,0.0f),PAGE_COLUMNS);
-        mScrollView.SetScrollSnapDuration(EFFECT_SNAP_DURATION);
-        mScrollView.SetScrollFlickDuration(EFFECT_FLICK_DURATION);
-        mScrollView.SetScrollSnapAlphaFunction(AlphaFunction::EASE_OUT);
-        mScrollView.SetScrollFlickAlphaFunction(AlphaFunction::EASE_OUT);
-        mScrollView.RemoveConstraintsFromChildren();
-
-        rulerX = CreateRuler(snap ? stageSize.width * 0.5f : 0.0f);
-        if( wrap )
-        {
-          rulerX->SetDomain(RulerDomain(0.0f, stageSize.x * 0.5f * PAGE_COLUMNS, !wrap));
-        }
-        else
-        {
-          rulerX->SetDomain(RulerDomain(0.0f, stageSize.x*0.5f* (PAGE_COLUMNS+1), !wrap));
-        }
-
-        break;
-      }
+    mScrollViewEffect = ScrollViewPagePathEffect::New(path, forward, Toolkit::ScrollView::Property::SCROLL_FINAL_X, Vector3(windowSize.x, windowSize.y, 0.0f), PAGE_COLUMNS);
+    mScrollView.SetScrollSnapDuration(EFFECT_SNAP_DURATION);
+    mScrollView.SetScrollFlickDuration(EFFECT_FLICK_DURATION);
+    mScrollView.SetScrollSnapAlphaFunction(AlphaFunction::EASE_OUT);
+    mScrollView.SetScrollFlickAlphaFunction(AlphaFunction::EASE_OUT);
+    mScrollView.RemoveConstraintsFromChildren();
 
-      default:
-      {
-        break;
-      }
-    }
+    rulerX = CreateRuler(snap ? windowSize.width * 0.5f : 0.0f);
+    rulerX->SetDomain(RulerDomain(0.0f, windowSize.x * 0.5f * PAGE_COLUMNS, false));
 
     unsigned int currentPage = mScrollView.GetCurrentPage();
-    if( mScrollViewEffect )
+    if(mScrollViewEffect)
     {
       mScrollView.ApplyEffect(mScrollViewEffect);
     }
 
-    mScrollView.SetWrapMode(wrap);
-    mScrollView.SetRulerX( rulerX );
-    mScrollView.SetRulerY( rulerY );
+    mScrollView.SetWrapMode(true);
+    mScrollView.SetRulerX(rulerX);
+    mScrollView.SetRulerY(rulerY);
 
-    mScrollView.ScrollTo( currentPage, 0.0f );
+    mScrollView.ScrollTo(currentPage, 0.0f);
   }
 
   /**
@@ -502,7 +421,7 @@ private:
   {
     if(gridSize <= Math::MACHINE_EPSILON_0)
     {
-        return new DefaultRuler();
+      return new DefaultRuler();
     }
     return new FixedRuler(gridSize);
   }
@@ -513,96 +432,13 @@ private:
     *
     * @param[in] page The page Actor to apply effect to.
     */
-   void ApplyEffectToPage(Actor page, unsigned int pageOrder )
-   {
-     page.RemoveConstraints();
-     page.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
-
-     switch( mEffectMode )
-     {
-       case PageCarouselEffect:
-       case PageCubeEffect:
-       case PageSpiralEffect:
-       case PageWaveEffect:
-       {
-         ScrollViewPagePathEffect effect = ScrollViewPagePathEffect::DownCast( mScrollViewEffect );
-         effect.ApplyToPage( page, pageOrder );
-         break;
-       }
-
-       default:
-       {
-         break;
-       }
-     }
-   }
-
-  /**
-   * [Actor]
-   * Applies effect to child which resides in page (which in turn resides in scrollview)
-   *
-   * @note Page is typically the Parent of child, although in
-   * some scenarios Page is simply a container which has a child as
-   * a descendent.
-   *
-   * @param[in] child The child actor to apply effect to
-   * @param[in] page The page which this child is inside
-   */
-  void ApplyEffectToActor( Actor child, Actor page )
+  void ApplyEffectToPage(Actor page, unsigned int pageOrder)
   {
-    switch( mEffectMode )
-    {
-      case DepthEffect:
-      {
-        ApplyDepthEffectToActor( child );
-        break;
-      }
+    page.RemoveConstraints();
+    page.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS);
 
-      case CubeEffect:
-      {
-        ApplyCubeEffectToActor( child );
-        break;
-      }
-
-      default:
-      {
-        break;
-      }
-    }
-  }
-
-  /**
-   * Applies depth effect to the child which resides in page (which in turn resides in scrollview)
-   *
-   * @param[in] child The child actor to apply depth effect to
-   */
-  void ApplyDepthEffectToActor( Actor child )
-  {
-    ScrollViewDepthEffect depthEffect = ScrollViewDepthEffect::DownCast(mScrollViewEffect);
-    depthEffect.ApplyToActor( child,
-                              POSITION_EXTENT_DEPTH_EFFECT,
-                              OFFSET_EXTENT_DEPTH_EFFECT,
-                              POSITION_SCALE_DEPTH_EFFECT,
-                              SCALE_EXTENT_DEPTH_EFFECT );
-  }
-
-  void ApplyCubeEffectToActor( Actor child )
-  {
-    Vector3 anchor;
-    if(rand()&1)
-    {
-      anchor = ANCHOR_3DEFFECT_STYLE0;
-    }
-    else
-    {
-      anchor = ANCHOR_3DEFFECT_STYLE1;
-    }
-
-    ScrollViewCubeEffect cubeEffect = ScrollViewCubeEffect::DownCast(mScrollViewEffect);
-    cubeEffect.ApplyToActor( child,
-                             anchor,
-                             ANGLE_SWING_3DEFFECT,
-                             POSITION_SWING_3DEFFECT * Vector2(Stage::GetCurrent().GetSize()));
+    ScrollViewPagePathEffect effect = ScrollViewPagePathEffect::DownCast(mScrollViewEffect);
+    effect.ApplyToPage(page, pageOrder);
   }
 
   /**
@@ -612,16 +448,23 @@ private:
    * @param[in] width the width of the image in texels
    * @param[in] height the height of the image in texels.
    */
-  ImageActor CreateImage( const std::string& filename, unsigned int width = IMAGE_THUMBNAIL_WIDTH, unsigned int height = IMAGE_THUMBNAIL_HEIGHT )
+  ImageView CreateImage(const std::string& filename, int width = IMAGE_THUMBNAIL_WIDTH, int height = IMAGE_THUMBNAIL_HEIGHT)
   {
-    Image img = ResourceImage::New(filename, ImageDimensions( width, height ), Dali::FittingMode::SCALE_TO_FILL, Dali::SamplingMode::BOX_THEN_LINEAR );
-
-    ImageActor actor = ImageActor::New(img);
-    actor.SetName( filename );
-    actor.SetParentOrigin(ParentOrigin::CENTER);
-    actor.SetAnchorPoint(AnchorPoint::CENTER);
-
-    actor.TouchedSignal().Connect( this, &ExampleController::OnTouchImage );
+    ImageView     actor = ImageView::New();
+    Property::Map map;
+    map[Visual::Property::TYPE]                = Visual::IMAGE;
+    map[ImageVisual::Property::URL]            = filename;
+    map[ImageVisual::Property::DESIRED_WIDTH]  = width;
+    map[ImageVisual::Property::DESIRED_HEIGHT] = height;
+    map[ImageVisual::Property::FITTING_MODE]   = FittingMode::SCALE_TO_FILL;
+    map[ImageVisual::Property::SAMPLING_MODE]  = SamplingMode::BOX_THEN_LINEAR;
+    actor.SetProperty(ImageView::Property::IMAGE, map);
+
+    actor.SetProperty(Dali::Actor::Property::NAME, filename);
+    actor.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
+    actor.SetProperty(Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
+
+    actor.TouchedSignal().Connect(this, &ExampleController::OnTouchImage);
     return actor;
   }
 
@@ -630,7 +473,7 @@ private:
    * note this state (mScrolling = true)
    * @param[in] position Current Scroll Position
    */
-  void OnScrollStarted( const Vector3& position )
+  void OnScrollStarted(const Vector2& position)
   {
     mScrolling = true;
   }
@@ -640,7 +483,7 @@ private:
    * note this state (mScrolling = false)
    * @param[in] position Current Scroll Position
    */
-  void OnScrollCompleted( const Vector3& position )
+  void OnScrollCompleted(const Vector2& position)
   {
     mScrolling = false;
   }
@@ -649,18 +492,17 @@ private:
    * Upon Touching an image (Release), make it spin
    * (provided we're not scrolling).
    * @param[in] actor The actor touched
-   * @param[in] event The TouchEvent.
+   * @param[in] event The touch information.
    */
-  bool OnTouchImage( Actor actor, const TouchEvent& event )
+  bool OnTouchImage(Actor actor, const TouchEvent& event)
   {
-    if( (event.points.size() > 0) && (!mScrolling) )
+    if((event.GetPointCount() > 0) && (!mScrolling))
     {
-      TouchPoint point = event.points[0];
-      if(point.state == TouchPoint::Up)
+      if(event.GetState(0) == PointState::UP)
       {
         // Spin the Image a few times.
         Animation animation = Animation::New(SPIN_DURATION);
-        animation.AnimateBy( Property( actor, Actor::Property::ORIENTATION ), Quaternion( Radian( Degree(360.0f * SPIN_DURATION) ), Vector3::XAXIS ), AlphaFunction::EASE_OUT );
+        animation.AnimateBy(Property(actor, Actor::Property::ORIENTATION), Quaternion(Radian(Degree(360.0f * SPIN_DURATION)), Vector3::XAXIS), AlphaFunction::EASE_OUT);
         animation.Play();
       }
     }
@@ -687,12 +529,12 @@ private:
   {
     if(!mTitleActor)
     {
-      mTitleActor = DemoHelper::CreateToolBarLabel( "" );
+      mTitleActor = DemoHelper::CreateToolBarLabel("");
       // Add title to the tool bar.
-      mToolBar.AddControl( mTitleActor, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarTitlePercentage, Alignment::HorizontalCenter );
+      mToolBar.AddControl(mTitleActor, DemoHelper::DEFAULT_VIEW_STYLE.mToolBarTitlePercentage, Alignment::HORIZONTAL_CENTER);
     }
 
-    mTitleActor.SetProperty( Toolkit::TextLabel::Property::TEXT, title );
+    mTitleActor.SetProperty(Toolkit::TextLabel::Property::TEXT, title);
   }
 
   /**
@@ -700,9 +542,9 @@ private:
    */
   void OnKeyEvent(const KeyEvent& event)
   {
-    if(event.state == KeyEvent::Down)
+    if(event.GetState() == KeyEvent::DOWN)
     {
-      if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) )
+      if(IsKey(event, Dali::DALI_KEY_ESCAPE) || IsKey(event, Dali::DALI_KEY_BACK))
       {
         mApplication.Quit();
       }
@@ -710,41 +552,39 @@ private:
   }
 
 private:
-
-  Application& mApplication;                            ///< Application instance
-  Toolkit::Control mView;                               ///< The View instance.
-  Toolkit::ToolBar mToolBar;                            ///< The View's Toolbar.
-  TextLabel mTitleActor;                                ///< The Toolbar's Title.
-  Layer mContentLayer;                                  ///< The content layer (contains game actors)
-  ScrollView mScrollView;                               ///< ScrollView UI Component
-  bool mScrolling;                                      ///< ScrollView scrolling state (true = scrolling, false = stationary)
-  ScrollViewEffect mScrollViewEffect;                   ///< ScrollView Effect instance.
-  std::vector< Actor > mPages;                          ///< Keeps track of all the pages for applying effects.
+  Application&       mApplication;      ///< Application instance
+  Toolkit::Control   mView;             ///< The View instance.
+  Toolkit::ToolBar   mToolBar;          ///< The View's Toolbar.
+  TextLabel          mTitleActor;       ///< The Toolbar's Title.
+  Layer              mContentLayer;     ///< The content layer (contains game actors)
+  ScrollView         mScrollView;       ///< ScrollView UI Component
+  bool               mScrolling;        ///< ScrollView scrolling state (true = scrolling, false = stationary)
+  ScrollViewEffect   mScrollViewEffect; ///< ScrollView Effect instance.
+  std::vector<Actor> mPages;            ///< Keeps track of all the pages for applying effects.
 
   /**
    * Enumeration of different effects this scrollview can operate under.
    */
   enum EffectMode
   {
-    DepthEffect,                                        ///< Depth Effect
-    CubeEffect,                                         ///< Cube effect
-    PageCarouselEffect,                                 ///< Page carousel effect
-    PageCubeEffect,                                     ///< Page cube effect
-    PageSpiralEffect,                                   ///< Page spiral effect
-    PageWaveEffect,                                     ///< Page wave effect
+    PageCarouselEffect, ///< Page carousel effect
+    PageCubeEffect,     ///< Page cube effect
+    PageSpiralEffect,   ///< Page spiral effect
+    PageWaveEffect,     ///< Page wave effect
 
     Total
   };
 
-  EffectMode mEffectMode;                               ///< Current Effect mode
+  EffectMode mEffectMode; ///< Current Effect mode
 
-  Image mEffectIcon[Total];                             ///< Icons for the effect button
-  Toolkit::PushButton mEffectChangeButton;              ///< Effect Change Button
+  std::string         mEffectIcon[Total];         ///< Icons for the effect button
+  std::string         mEffectIconSelected[Total]; ///< Icons for the effect button when its selected
+  Toolkit::PushButton mEffectChangeButton;        ///< Effect Change Button
 };
 
-int main(int argc, char **argv)
+int DALI_EXPORT_API main(int argc, char** argv)
 {
-  Application app = Application::New(&argc, &argv);
+  Application       app = Application::New(&argc, &argv, DEMO_THEME_PATH);
   ExampleController test(app);
   app.MainLoop();
   return 0;