Revert "KeyEvent class pimpling"
[platform/core/uifw/dali-demo.git] / examples / gradients / gradients-example.cpp
index 5d1ab63..2125c95 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.
@@ -16,6 +16,7 @@
  */
 
 #include <dali-toolkit/dali-toolkit.h>
+#include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
 #include "shared/view.h"
 
 using namespace Dali;
@@ -28,6 +29,11 @@ const char * const APPLICATION_TITLE( "Color Gradients" );
 const char * const TOOLBAR_IMAGE( DEMO_IMAGE_DIR "top-bar.png" );
 const char * const CHANGE_ICON( DEMO_IMAGE_DIR "icon-change.png" );
 const char * const CHANGE_ICON_SELECTED( DEMO_IMAGE_DIR "icon-change-selected.png" );
+const char * const ROUNDED_CORNER_ICON( DEMO_IMAGE_DIR "icon-replace.png" );
+const char * const ROUNDED_CORNER_ICON_SELECTED( DEMO_IMAGE_DIR "icon-replace-selected.png" );
+
+const float CORNER_RADIUS_VALUE( 20.0f );
+
 }
 
 // This example shows how to render color gradients
@@ -38,7 +44,8 @@ public:
 
   GradientController( Application& application )
   : mApplication( application ),
-    mIndex( 0 )
+    mIndex( 0 ),
+    mRoundedCorner( false )
   {
     // Connect to the Application's Init signal
     mApplication.InitSignal().Connect( this, &GradientController::Create );
@@ -52,12 +59,12 @@ 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.KeyEventSignal().Connect(this, &GradientController::OnKeyEvent);
+    // Get a handle to the window
+    auto window = application.GetWindow();
+    window.KeyEventSignal().Connect(this, &GradientController::OnKeyEvent);
 
     // Creates a default view with a default tool bar.
-    // The view is added to the stage.
+    // The view is added to the window.
     Toolkit::ToolBar toolBar;
     Layer content = DemoHelper::CreateView( application,
                                             mView,
@@ -67,17 +74,34 @@ public:
                                             APPLICATION_TITLE );
 
     PushButton changeButton = Toolkit::PushButton::New();
-    changeButton.SetUnselectedImage( CHANGE_ICON );
-    changeButton.SetSelectedImage( CHANGE_ICON_SELECTED );
+    changeButton.SetProperty( Toolkit::Button::Property::UNSELECTED_BACKGROUND_VISUAL, CHANGE_ICON );
+    changeButton.SetProperty( Toolkit::Button::Property::SELECTED_BACKGROUND_VISUAL, CHANGE_ICON_SELECTED );
     changeButton.ClickedSignal().Connect( this, &GradientController::OnChangeIconClicked );
     toolBar.AddControl( changeButton,
                         DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage,
                         Toolkit::Alignment::HorizontalRight,
                         DemoHelper::DEFAULT_MODE_SWITCH_PADDING  );
 
+    PushButton roundedCornerButton = Toolkit::PushButton::New();
+    roundedCornerButton.SetProperty( Toolkit::Button::Property::UNSELECTED_BACKGROUND_VISUAL, ROUNDED_CORNER_ICON );
+    roundedCornerButton.SetProperty( Toolkit::Button::Property::SELECTED_BACKGROUND_VISUAL, ROUNDED_CORNER_ICON_SELECTED );
+    roundedCornerButton.ClickedSignal().Connect( this, &GradientController::OnRoundedCornerClicked );
+    toolBar.AddControl( roundedCornerButton,
+                        DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage,
+                        Toolkit::Alignment::HorizontalCenter,
+                        DemoHelper::DEFAULT_MODE_SWITCH_PADDING  );
+
+    mGradientControl = Control::New();
+    mGradientControl.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER );
+    mGradientControl.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
+    mGradientControl.SetResizePolicy( ResizePolicy::SIZE_RELATIVE_TO_PARENT, Dimension::ALL_DIMENSIONS );
+    Vector3 offset( 0.9f, 0.7f, 0.0f );
+    mGradientControl.SetProperty( Actor::Property::SIZE_MODE_FACTOR, offset );
+    content.Add( mGradientControl );
+
 // ---- Gradient for background
 
-    mGradientMap.Insert( Visual::Property::TYPE,  Visual::GRADIENT );
+    mGradientMap.Insert( Toolkit::Visual::Property::TYPE,  Visual::GRADIENT );
 
     Property::Array stopOffsets;
     stopOffsets.PushBack( 0.0f );
@@ -95,11 +119,30 @@ public:
     stopColors.PushBack( Color::YELLOW );
     mGradientMap.Insert( GradientVisual::Property::STOP_COLOR, stopColors );
 
-    OnChangeIconClicked( changeButton );
+    mGradientMap.Insert( DevelVisual::Property::CORNER_RADIUS, mRoundedCorner ? CORNER_RADIUS_VALUE : 0.0f );
+
+    UpdateGradientMap();
   }
 
   bool OnChangeIconClicked( Toolkit::Button button )
   {
+    mIndex++;
+    UpdateGradientMap();
+    return true;
+  }
+
+  bool OnRoundedCornerClicked( Toolkit::Button button )
+  {
+    mRoundedCorner = !mRoundedCorner;
+    mGradientMap[DevelVisual::Property::CORNER_RADIUS] = mRoundedCorner ? CORNER_RADIUS_VALUE : 0.0f;
+
+    UpdateGradientMap();
+
+    return true;
+  }
+
+  void UpdateGradientMap()
+  {
     Property::Map gradientMap;
 
     switch( mIndex%4 )
@@ -112,9 +155,9 @@ public:
       }
       case 1: // linear gradient with units as userSpaceOnUse
       {
-        Vector2 halfStageSize = Stage::GetCurrent().GetSize()*0.5f;
-        gradientMap.Insert( GradientVisual::Property::START_POSITION,  halfStageSize );
-        gradientMap.Insert( GradientVisual::Property::END_POSITION,   -halfStageSize );
+        Vector2 halfWindowSize = Vector2(mApplication.GetWindow().GetSize())*0.5f;
+        gradientMap.Insert( GradientVisual::Property::START_POSITION,  halfWindowSize );
+        gradientMap.Insert( GradientVisual::Property::END_POSITION,   -halfWindowSize );
         gradientMap.Insert( GradientVisual::Property::UNITS, GradientVisual::Units::USER_SPACE );
         break;
       }
@@ -126,19 +169,16 @@ public:
       }
       default: // radial gradient with units as userSpaceOnUse
       {
-        Vector2 stageSize = Stage::GetCurrent().GetSize();
-        gradientMap.Insert( GradientVisual::Property::CENTER, stageSize * 0.5f );
-        gradientMap.Insert( GradientVisual::Property::RADIUS, stageSize.Length());
+        Vector2 windowSize = mApplication.GetWindow().GetSize();
+        gradientMap.Insert( GradientVisual::Property::CENTER, windowSize * 0.5f );
+        gradientMap.Insert( GradientVisual::Property::RADIUS, windowSize.Length());
         gradientMap.Insert( GradientVisual::Property::UNITS,  GradientVisual::Units::USER_SPACE );
         break;
       }
     }
 
     gradientMap.Merge( mGradientMap );
-    mView.SetProperty( Control::Property::BACKGROUND, gradientMap );
-
-    mIndex++;
-    return true;
+    mGradientControl.SetProperty( Control::Property::BACKGROUND, gradientMap );
   }
 
   void OnKeyEvent(const KeyEvent& event)
@@ -157,23 +197,15 @@ private:
 
   Property::Map mGradientMap;
   Control mView;
+  Control mGradientControl;
   unsigned mIndex;
+  bool mRoundedCorner;
 };
 
-void RunTest( Application& application )
-{
-  GradientController test( application );
-
-  application.MainLoop();
-}
-
-// Entry point for Linux & Tizen applications
-//
 int DALI_EXPORT_API main( int argc, char **argv )
 {
   Application application = Application::New( &argc, &argv );
-
-  RunTest( application );
-
+  GradientController test( application );
+  application.MainLoop();
   return 0;
 }