Refactoring Gestures Class
[platform/core/uifw/dali-demo.git] / examples / primitive-shapes / primitive-shapes-example.cpp
old mode 100644 (file)
new mode 100755 (executable)
index 89ff58c..675e076
@@ -1,6 +1,22 @@
+/*
+ * 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.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
 #include <dali-toolkit/dali-toolkit.h>
-#include <dali/public-api/object/property-map.h>
-#include <dali-toolkit/public-api/controls/slider/slider.h>
+#include <dali-toolkit/devel-api/controls/table-view/table-view.h>
 
 using namespace Dali;
 using namespace Dali::Toolkit;
@@ -12,13 +28,16 @@ namespace
   {
     DEMO_IMAGE_DIR "sphere-button.png",
     DEMO_IMAGE_DIR "cone-button.png",
-    DEMO_IMAGE_DIR "conical-frustrum-button.png",
+    DEMO_IMAGE_DIR "conical-frustum-button.png",
     DEMO_IMAGE_DIR "cylinder-button.png",
     DEMO_IMAGE_DIR "cube-button.png",
     DEMO_IMAGE_DIR "bevelled-cube-button.png",
     DEMO_IMAGE_DIR "octahedron-button.png"
   };
 
+  //Prefix of all shape titles.
+  const std::string SHAPE_TITLE_PREFIX = "Current Shape: ";
+
   //Shape property defaults
   const int DEFAULT_SLICES = 32;
   const int DEFAULT_STACKS = 32;
@@ -64,21 +83,18 @@ public:
   // The Init signal is received once (only) during the Application lifetime
   void Create( Application& application )
   {
-    // Get a handle to the stage
-    Stage stage = Stage::GetCurrent();
-    stage.SetBackgroundColor( Color::WHITE );
-
-    // Hide the indicator bar
-    application.GetWindow().ShowIndicator( Dali::Window::INVISIBLE );
+    // Get a handle to the window
+    Window window = application.GetWindow();
+    window.SetBackgroundColor( Color::WHITE );
 
     //Set up layer to place UI on.
     Layer layer = Layer::New();
-    layer.SetParentOrigin( ParentOrigin::CENTER );
-    layer.SetAnchorPoint( AnchorPoint::CENTER );
+    layer.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
+    layer.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER );
     layer.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
-    layer.SetBehavior( Layer::LAYER_2D ); //We use a 2D layer as this is closer to UI work than full 3D scene creation.
-    layer.SetDepthTestDisabled( false ); //Enable depth testing, as otherwise the 2D layer would not do so.
-    stage.Add( layer );
+    layer.SetProperty( Layer::Property::BEHAVIOR, Layer::LAYER_UI ); //We use a 2D layer as this is closer to UI work than full 3D scene creation.
+    layer.SetProperty( Layer::Property::DEPTH_TEST, true ); //Enable depth testing, as otherwise the 2D layer would not do so.
+    window.Add( layer );
 
     //Set up model selection buttons.
     SetupButtons( layer );
@@ -90,13 +106,15 @@ public:
     SetupModel( layer );
 
     //Allow for exiting of the application via key presses.
-    stage.KeyEventSignal().Connect( this, &PrimitiveShapesController::OnKeyEvent );
+    window.KeyEventSignal().Connect( this, &PrimitiveShapesController::OnKeyEvent );
   }
 
   //Place buttons on the top of the screen, which allow for selection of the shape to be displayed.
+  //A title above indicates the currently selected shape.
   //The buttons are laid out like so:
   //
   //      ^    +--------------------------------+
+  //      |    | Current Shape: ~~~~~           |
   //      |    |                                |
   //      |    | +----+ +----+ +----+ +----+    |
   //      |    | |    | |    | |    | |    |    |
@@ -123,37 +141,50 @@ public:
   //           |                                |
   //           |                                |
   //           |                                |
-  //           |                                |
   //           +--------------------------------+
   //
   void SetupButtons( Layer layer )
   {
     float containerPadding = 10.0f;
-    float buttonPadding = 5.0f;
+    float elementPadding = 5.0f;
+
+    //Used to layout the title and the buttons below it.
+    Control topAlignment = Control::New();
+    topAlignment.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_CENTER );
+    topAlignment.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER );
+    topAlignment.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
+    topAlignment.SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::HEIGHT );
+    layer.Add( topAlignment );
+
+    //Add a title to indicate the currently selected shape.
+    mShapeTitle = TextLabel::New( "DEFAULT" );
+    mShapeTitle.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
+    mShapeTitle.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER );
+    mShapeTitle.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS );
+    mShapeTitle.SetProperty( Actor::Property::PADDING, Padding( elementPadding, elementPadding, elementPadding, elementPadding ) );
+    topAlignment.Add( mShapeTitle );
 
     //Create a variable-length container that can wrap buttons around as more are added.
     FlexContainer buttonContainer = FlexContainer::New();
-    buttonContainer.SetParentOrigin( ParentOrigin::TOP_CENTER );
-    buttonContainer.SetAnchorPoint( AnchorPoint::TOP_CENTER );
+    buttonContainer.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::BOTTOM_CENTER );
+    buttonContainer.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_CENTER );
     buttonContainer.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
-    buttonContainer.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::HEIGHT );
-    buttonContainer.SetSizeModeFactor( Vector3( 0.0, 0.3, 0.0 ) );  //30% of height.
-    buttonContainer.SetPadding( Padding( containerPadding, containerPadding, containerPadding, containerPadding ) );
+    buttonContainer.SetResizePolicy( ResizePolicy::FIXED, Dimension::HEIGHT );
+    buttonContainer.SetProperty( Actor::Property::PADDING, Padding( containerPadding, containerPadding, containerPadding, containerPadding ) );
     buttonContainer.SetProperty( FlexContainer::Property::FLEX_DIRECTION, FlexContainer::ROW );
     buttonContainer.SetProperty( FlexContainer::Property::FLEX_WRAP, FlexContainer::WRAP );
-
-    layer.Add( buttonContainer );
+    topAlignment.Add( buttonContainer );
 
     //Create buttons and place them in the container.
     for( int modelNumber = 0; modelNumber < NUM_MODELS; modelNumber++ )
     {
       PushButton button = Toolkit::PushButton::New();
-      button.SetParentOrigin( ParentOrigin::CENTER );
-      button.SetAnchorPoint( AnchorPoint::CENTER );
+      button.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
+      button.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER );
       button.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS );
-      button.SetPadding( Padding( buttonPadding, buttonPadding, buttonPadding, buttonPadding ) );
-      button.SetProperty( Button::Property::UNSELECTED_STATE_IMAGE, Property::Value( BUTTON_IMAGE_URL[modelNumber] ) );
-      button.SetProperty( Button::Property::SELECTED_STATE_IMAGE, Property::Value( BUTTON_IMAGE_URL[modelNumber] ) );
+      button.SetProperty( Actor::Property::PADDING, Padding( elementPadding, elementPadding, elementPadding, elementPadding ) );
+      button.SetProperty( Button::Property::UNSELECTED_BACKGROUND_VISUAL, BUTTON_IMAGE_URL[modelNumber] );
+      button.SetProperty( Button::Property::SELECTED_BACKGROUND_VISUAL,  BUTTON_IMAGE_URL[modelNumber] );
       button.RegisterProperty( "modelNumber", Property::Value( modelNumber ) );
       button.ClickedSignal().Connect( this, &PrimitiveShapesController::OnChangeShapeClicked );
 
@@ -199,10 +230,10 @@ public:
   {
     //Create table to hold sliders and their corresponding labels.
     mSliderTable = Toolkit::TableView::New( MAX_PROPERTIES, 2 );
-    mSliderTable.SetParentOrigin( ParentOrigin::BOTTOM_CENTER );
-    mSliderTable.SetAnchorPoint( AnchorPoint::BOTTOM_CENTER );
+    mSliderTable.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::BOTTOM_CENTER );
+    mSliderTable.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::BOTTOM_CENTER );
     mSliderTable.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
-    mSliderTable.SetSizeModeFactor( Vector3( 0.9, 0.3, 0.0 ) );  //90% of width, 30% of height.
+    mSliderTable.SetProperty( Actor::Property::SIZE_MODE_FACTOR, Vector3( 0.9, 0.3, 0.0 ) );  //90% of width, 30% of height.
     mSliderTable.SetFitWidth( 0 );  //Label column should fit to natural size of label.
     mSliderTable.SetRelativeWidth( 1, 1.0f );  //Slider column should fill remaining space.
     mSliderTable.SetCellPadding( Vector2( 10.0f, 0.0f ) ); //Leave a gap between the slider and its label.
@@ -213,8 +244,8 @@ public:
     {
       //Create slider
       Slider slider = Slider::New();
-      slider.SetParentOrigin( ParentOrigin::CENTER );
-      slider.SetAnchorPoint( AnchorPoint::CENTER );
+      slider.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
+      slider.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER );
       slider.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
       slider.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT );
       slider.ValueChangedSignal().Connect( this, &PrimitiveShapesController::OnSliderValueChanged );
@@ -226,8 +257,8 @@ public:
 
       //Create slider label
       TextLabel sliderLabel = TextLabel::New();
-      sliderLabel.SetParentOrigin( ParentOrigin::CENTER );
-      sliderLabel.SetAnchorPoint( AnchorPoint::CENTER );
+      sliderLabel.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
+      sliderLabel.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER );
       sliderLabel.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS );
       mSliderLabels.push_back( sliderLabel );
 
@@ -237,7 +268,7 @@ public:
     }
   }
 
-  //Adds a control to the centre of the stage to display the 3D shapes.
+  //Adds a control to the centre of the window to display the 3D shapes.
   //The model is placed in the center of the screen, like so:
   //
   //           +--------------------------------+
@@ -275,15 +306,15 @@ public:
     //Create a container to house the visual-holding actor, to provide a constant hitbox.
     Actor container = Actor::New();
     container.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
-    container.SetSizeModeFactor( Vector3( 0.9, 0.3, 0.0 ) );  //90% of width, 30% of height.
-    container.SetParentOrigin( ParentOrigin::CENTER );
-    container.SetAnchorPoint( AnchorPoint::CENTER );
+    container.SetProperty( Actor::Property::SIZE_MODE_FACTOR, Vector3( 0.9, 0.3, 0.0 ) );  //90% of width, 30% of height.
+    container.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
+    container.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER );
     layer.Add( container );
 
     //Create control to display the 3D primitive.
     mModel = Control::New();
-    mModel.SetParentOrigin( ParentOrigin::CENTER );
-    mModel.SetAnchorPoint( AnchorPoint::CENTER);
+    mModel.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
+    mModel.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
     mModel.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
     container.Add( mModel );
 
@@ -310,15 +341,18 @@ public:
     for( unsigned i = 0; i < mSliders.size(); i++ )
     {
       mSliders.at( i ).SetProperty( Slider::Property::MARKS, Property::Value( 0 ) ); //Remove marks
-      mSliders.at( i ).SetVisible( false );
+      mSliders.at( i ).SetProperty( Actor::Property::VISIBLE, false );
       mSliderLabels.at( i ).SetProperty( TextLabel::Property::TEXT, Property::Value( "Default" ) );
-      mSliderLabels.at( i ).SetVisible( false );
+      mSliderLabels.at( i ).SetProperty( Actor::Property::VISIBLE, false );
     }
 
     //Visual map for model
     mVisualMap.Clear();
-    mVisualMap[ Visual::Property::TYPE           ] = Visual::PRIMITIVE;
+    mVisualMap[ Toolkit::Visual::Property::TYPE           ] = Visual::PRIMITIVE;
     mVisualMap[ PrimitiveVisual::Property::MIX_COLOR ] = mColor;
+    mVisualMap[ Visual::Property::TRANSFORM ] =
+        Property::Map().Add( Visual::Transform::Property::ORIGIN, Align::CENTER )
+                       .Add( Visual::Transform::Property::ANCHOR_POINT, Align::CENTER );
   }
 
   //Sets the 3D model to a sphere and modifies the sliders appropriately.
@@ -333,12 +367,18 @@ public:
 
     //Set up sliders.
     SetupSlider( 0, SLICES_LOWER_BOUND, SLICES_UPPER_BOUND, DEFAULT_STACKS, PrimitiveVisual::Property::SLICES, "slices" );
-    SetupMarks( mSliders.at( 0 ), SLICES_LOWER_BOUND, SLICES_UPPER_BOUND );
+    SetupMarks( 0, SLICES_LOWER_BOUND, SLICES_UPPER_BOUND );
+    mSliders.at( 0 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 0 ) );
+
     SetupSlider( 1, STACKS_LOWER_BOUND, STACKS_UPPER_BOUND, DEFAULT_STACKS, PrimitiveVisual::Property::STACKS, "stacks" );
-    SetupMarks( mSliders.at( 1 ), STACKS_LOWER_BOUND, STACKS_UPPER_BOUND );
+    SetupMarks( 1, STACKS_LOWER_BOUND, STACKS_UPPER_BOUND );
+    mSliders.at( 1 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 0 ) );
 
     //Set model in control.
     mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mVisualMap ) );
+
+    //Update title.
+    mShapeTitle.SetProperty( TextLabel::Property::TEXT, SHAPE_TITLE_PREFIX + "Sphere" );
   }
 
   //Sets the 3D model to a cone and modifies the sliders appropriately.
@@ -354,21 +394,29 @@ public:
 
     //Set up sliders.
     SetupSlider( 0, 1.0f, 32.0f, DEFAULT_SCALE_HEIGHT, PrimitiveVisual::Property::SCALE_HEIGHT, "scaleHeight" );
+    mSliders.at( 0 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 1 ) );
+
     SetupSlider( 1, 1.0f, 32.0f, DEFAULT_SCALE_BOTTOM_RADIUS, PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, "scaleBottomRadius" );
+    mSliders.at( 1 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 1 ) );
+
     SetupSlider( 2, SLICES_LOWER_BOUND, SLICES_UPPER_BOUND, DEFAULT_STACKS, PrimitiveVisual::Property::SLICES, "slices" );
-    SetupMarks( mSliders.at( 2 ), SLICES_LOWER_BOUND, SLICES_UPPER_BOUND );
+    SetupMarks( 2, SLICES_LOWER_BOUND, SLICES_UPPER_BOUND );
+    mSliders.at( 2 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 0 ) );
 
     //Set model in control.
     mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mVisualMap ) );
+
+    //Update title.
+    mShapeTitle.SetProperty( TextLabel::Property::TEXT, SHAPE_TITLE_PREFIX + "Cone" );
   }
 
-  //Sets the 3D model to a conical frustrum and modifies the sliders appropriately.
-  void LoadConicalFrustrum()
+  //Sets the 3D model to a conical frustum and modifies the sliders appropriately.
+  void LoadConicalFrustum()
   {
     InitialiseSlidersAndModel();
 
     //Set up specific visual properties.
-    mVisualMap[ PrimitiveVisual::Property::SHAPE               ] = PrimitiveVisual::Shape::CONICAL_FRUSTRUM;
+    mVisualMap[ PrimitiveVisual::Property::SHAPE               ] = PrimitiveVisual::Shape::CONICAL_FRUSTUM;
     mVisualMap[ PrimitiveVisual::Property::SCALE_TOP_RADIUS    ] = DEFAULT_SCALE_TOP_RADIUS;
     mVisualMap[ PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS ] = DEFAULT_SCALE_BOTTOM_RADIUS;
     mVisualMap[ PrimitiveVisual::Property::SCALE_HEIGHT        ] = DEFAULT_SCALE_HEIGHT;
@@ -376,11 +424,19 @@ public:
 
     //Set up used sliders.
     SetupSlider( 0, 1.0f, 32.0f, DEFAULT_SCALE_HEIGHT, PrimitiveVisual::Property::SCALE_HEIGHT, "scaleHeight" );
+    mSliders.at( 0 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 1 ) );
+
     SetupSlider( 1, 0.0f, 32.0f, DEFAULT_SCALE_BOTTOM_RADIUS, PrimitiveVisual::Property::SCALE_BOTTOM_RADIUS, "scaleBottomRadius" );
+    mSliders.at( 1 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 1 ) );
+
     SetupSlider( 2, 0.0f, 32.0f, DEFAULT_SCALE_TOP_RADIUS, PrimitiveVisual::Property::SCALE_TOP_RADIUS, "scaleTopRadius" );
+    mSliders.at( 2 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 1 ) );
 
     //Set model in control.
     mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mVisualMap ) );
+
+    //Update title.
+    mShapeTitle.SetProperty( TextLabel::Property::TEXT, SHAPE_TITLE_PREFIX + "Conical Frustum" );
   }
 
   //Sets the 3D model to a cylinder and modifies the sliders appropriately.
@@ -396,12 +452,20 @@ public:
 
     //Set up used sliders.
     SetupSlider( 0, 1.0f, 32.0f, DEFAULT_SCALE_HEIGHT, PrimitiveVisual::Property::SCALE_HEIGHT, "scaleHeight" );
+    mSliders.at( 0 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 1 ) );
+
     SetupSlider( 1, 1.0f, 32.0f, DEFAULT_SCALE_RADIUS, PrimitiveVisual::Property::SCALE_RADIUS, "scaleRadius" );
+    mSliders.at( 1 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 1 ) );
+
     SetupSlider( 2, SLICES_LOWER_BOUND, SLICES_UPPER_BOUND, DEFAULT_STACKS, PrimitiveVisual::Property::SLICES, "slices" );
-    SetupMarks( mSliders.at( 2 ), SLICES_LOWER_BOUND, SLICES_UPPER_BOUND );
+    SetupMarks( 2 , SLICES_LOWER_BOUND, SLICES_UPPER_BOUND );
+    mSliders.at( 2 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 0 ) );
 
     //Set model in control.
     mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mVisualMap ) );
+
+    //Update title.
+    mShapeTitle.SetProperty( TextLabel::Property::TEXT, SHAPE_TITLE_PREFIX + "Cylinder" );
   }
 
   //Sets the 3D model to a cube and modifies the sliders appropriately.
@@ -414,6 +478,9 @@ public:
 
     //Set model in control.
     mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mVisualMap ) );
+
+    //Update title.
+    mShapeTitle.SetProperty( TextLabel::Property::TEXT, SHAPE_TITLE_PREFIX + "Cube" );
   }
 
   //Sets the 3D model to a bevelled cube and modifies the sliders appropriately.
@@ -428,10 +495,16 @@ public:
 
     //Set up used sliders.
     SetupSlider( 0, 0.0f, 1.0f, DEFAULT_BEVEL_PERCENTAGE, PrimitiveVisual::Property::BEVEL_PERCENTAGE, "bevelPercentage" );
+    mSliders.at( 0 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 2 ) );
+
     SetupSlider( 1, 0.0f, 1.0f, DEFAULT_BEVEL_SMOOTHNESS, PrimitiveVisual::Property::BEVEL_SMOOTHNESS, "bevelSmoothness" );
+    mSliders.at( 1 ).SetProperty( Slider::Property::VALUE_PRECISION, Property::Value( 2 ) );
 
     //Set model in control.
     mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mVisualMap ) );
+
+    //Update title.
+    mShapeTitle.SetProperty( TextLabel::Property::TEXT, SHAPE_TITLE_PREFIX + "Bevelled Cube" );
   }
 
   //Sets the 3D model to an octahedron and modifies the sliders appropriately.
@@ -444,6 +517,9 @@ public:
 
     //Set model in control.
     mModel.SetProperty( Control::Property::BACKGROUND, Property::Value( mVisualMap ) );
+
+    //Update title.
+    mShapeTitle.SetProperty( TextLabel::Property::TEXT, SHAPE_TITLE_PREFIX + "Octahedron" );
   }
 
   //Sets up the slider at the given index for the supplied property, and labels it appropriately.
@@ -456,26 +532,26 @@ public:
     mSliders.at( sliderIndex ).SetProperty( Slider::Property::LOWER_BOUND, Property::Value( lowerBound ) );
     mSliders.at( sliderIndex ).SetProperty( Slider::Property::UPPER_BOUND, Property::Value( upperBound ) );
     mSliders.at( sliderIndex ).SetProperty( Slider::Property::VALUE, Property::Value( startPoint ) );
-    mSliders.at( sliderIndex ).SetVisible( true );
+    mSliders.at( sliderIndex ).SetProperty( Actor::Property::VISIBLE, true );
 
     //Label the slider with the property.
     //We reset the TextLabel to force a relayout of the table.
     mSliderTable.RemoveChildAt( TableView::CellPosition(sliderIndex, 0) );
 
     TextLabel sliderLabel = TextLabel::New( visualPropertyLabel );
-    sliderLabel.SetParentOrigin( ParentOrigin::CENTER );
-    sliderLabel.SetAnchorPoint( AnchorPoint::CENTER );
+    sliderLabel.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
+    sliderLabel.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER );
     sliderLabel.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::ALL_DIMENSIONS );
 
     mSliderTable.AddChild( sliderLabel, TableView::CellPosition( sliderIndex, 0 ) );
     mSliderTable.SetCellAlignment( TableView::CellPosition( sliderIndex, 0 ), HorizontalAlignment::LEFT, VerticalAlignment::CENTER );
 
-    mSliderLabels.at( sliderIndex ).SetVisible( true );
+    mSliderLabels.at( sliderIndex ).SetProperty( Actor::Property::VISIBLE, true );
     mSliderLabels.at( sliderIndex) = sliderLabel;
   }
 
   //Setup snapping to integer values between the two given values.
-  void SetupMarks( Slider& slider, int lower, int upper )
+  void SetupMarks( int sliderIndex, int lower, int upper )
   {
     Property::Array marks;
 
@@ -484,8 +560,8 @@ public:
       marks.PushBack( Property::Value( mark ) );
     }
 
-    slider.SetProperty( Slider::Property::MARKS, Property::Value( marks ) );
-    slider.SetProperty( Slider::Property::SNAP_TO_MARKS, Property::Value( true ) );
+    mSliders.at( sliderIndex ).SetProperty( Slider::Property::MARKS, Property::Value( marks ) );
+    mSliders.at( sliderIndex ).SetProperty( Slider::Property::SNAP_TO_MARKS, Property::Value( true ) );
   }
 
   //When a shape button is tapped, switch to the corresponding shape.
@@ -510,7 +586,7 @@ public:
       }
       case 2:
       {
-        LoadConicalFrustrum();
+        LoadConicalFrustum();
         break;
       }
       case 3:
@@ -555,7 +631,7 @@ public:
   //Panning around the shape rotates it.
   void OnPan( Actor actor, const PanGesture& gesture )
   {
-    switch( gesture.state )
+    switch( gesture.GetState() )
     {
       case Gesture::Started:
       {
@@ -567,12 +643,13 @@ public:
       case Gesture::Continuing:
       {
         //Rotate based off the gesture.
-        mRotation.x -= gesture.displacement.y / X_ROTATION_DISPLACEMENT_FACTOR; // Y displacement rotates around X axis
-        mRotation.y += gesture.displacement.x / Y_ROTATION_DISPLACEMENT_FACTOR; // X displacement rotates around Y axis
+        const Vector2& displacement = gesture.GetDisplacement();
+        mRotation.x -= displacement.y / X_ROTATION_DISPLACEMENT_FACTOR; // Y displacement rotates around X axis
+        mRotation.y += displacement.x / Y_ROTATION_DISPLACEMENT_FACTOR; // X displacement rotates around Y axis
         Quaternion rotation = Quaternion( Radian( mRotation.x ), Vector3::XAXIS) *
                               Quaternion( Radian( mRotation.y ), Vector3::YAXIS);
 
-        mModel.SetOrientation( rotation );
+        mModel.SetProperty( Actor::Property::ORIENTATION, rotation );
 
         break;
       }
@@ -600,7 +677,7 @@ public:
   //If escape or the back button is pressed, quit the application (and return to the launcher)
   void OnKeyEvent( const KeyEvent& event )
   {
-    if( event.state == KeyEvent::Down )
+    if( event.GetState() == KeyEvent::DOWN )
     {
       if( IsKey( event, DALI_KEY_ESCAPE) || IsKey( event, DALI_KEY_BACK ) )
       {
@@ -612,34 +689,25 @@ public:
 private:
   Application& mApplication;
 
-  std::vector<Slider> mSliders; ///< Holds the sliders on screen that each shape accesses.
-  std::vector<TextLabel> mSliderLabels; ///< Holds the labels to each slider.
-  TableView mSliderTable; ///< A table to layout the sliders next to their labels.
+  std::vector<Slider>       mSliders;               ///< Holds the sliders on screen that each shape accesses.
+  std::vector<TextLabel>    mSliderLabels;          ///< Holds the labels to each slider.
+  TableView                 mSliderTable;           ///< A table to layout the sliders next to their labels.
 
-  Property::Map mVisualMap; ///< Property map to create a primitive visual.
-  Control mModel; ///< Control to house the primitive visual.
+  Property::Map             mVisualMap;             ///< Property map to create a primitive visual.
+  Control                   mModel;                 ///< Control to house the primitive visual.
+  TextLabel                 mShapeTitle;            ///< Indicates what the currently selected shape is.
 
-  PanGestureDetector mPanGestureDetector; ///< Detects pan gestures for rotation of the model.
-  Animation mRotationAnimation; ///< Automatically rotates the model, unless it is being panned.
+  PanGestureDetector        mPanGestureDetector;    ///< Detects pan gestures for rotation of the model.
+  Animation                 mRotationAnimation;     ///< Automatically rotates the model, unless it is being panned.
 
-  Vector4 mColor; ///< Color to set all shapes.
-  Vector2 mRotation; ///< Keeps track of model rotation.
+  Vector4                   mColor;                 ///< Color to set all shapes.
+  Vector2                   mRotation;              ///< Keeps track of model rotation.
 };
 
-void RunTest( Application& application )
+int DALI_EXPORT_API main( int argc, char **argv )
 {
+  Application application = Application::New( &argc, &argv );
   PrimitiveShapesController test( application );
-
   application.MainLoop();
-}
-
-// Entry point for Linux & Tizen applications
-//
-int main( int argc, char **argv )
-{
-  Application application = Application::New( &argc, &argv );
-
-  RunTest( application );
-
   return 0;
 }