Updated demos to use DALi clang-format
[platform/core/uifw/dali-demo.git] / shared / view.h
index fe73652..36f42bd 100644 (file)
@@ -1,8 +1,8 @@
-#ifndef __DALI_DEMO_HELPER_VIEW_H__
-#define __DALI_DEMO_HELPER_VIEW_H__
+#ifndef DALI_DEMO_HELPER_VIEW_H
+#define DALI_DEMO_HELPER_VIEW_H
 
 /*
- * Copyright (c) 2014 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 <dali-toolkit/dali-toolkit.h>
+#include <dali-toolkit/devel-api/controls/tool-bar/tool-bar.h>
 
 namespace DemoHelper
 {
-
 /**
  * Provide a style for the view and its tool bar.
  */
 struct ViewStyle
 {
-  ViewStyle( float toolBarButtonPercentage, float toolBarTitlePercentage, float toolBarHeight, float toolBarPadding )
-  : mToolBarButtonPercentage( toolBarButtonPercentage ),
-    mToolBarTitlePercentage( toolBarTitlePercentage ),
-    mToolBarHeight( toolBarHeight ),
-    mToolBarPadding( toolBarPadding )
-  {}
+  ViewStyle(float toolBarButtonPercentage, float toolBarTitlePercentage, float toolBarHeight, float toolBarPadding)
+  : mToolBarButtonPercentage(toolBarButtonPercentage),
+    mToolBarTitlePercentage(toolBarTitlePercentage),
+    mToolBarHeight(toolBarHeight),
+    mToolBarPadding(toolBarPadding)
+  {
+  }
 
   float mToolBarButtonPercentage; ///< The tool bar button width is a percentage of the tool bar width.
   float mToolBarTitlePercentage;  ///< The tool bar title width is a percentage of the tool bar width.
@@ -41,151 +42,122 @@ struct ViewStyle
   float mToolBarPadding;          ///< The tool bar padding (in pixels)..
 };
 
-const ViewStyle DEFAULT_VIEW_STYLE( 0.1f, 0.7f, 80.f, 4.f );
+const ViewStyle DEFAULT_VIEW_STYLE(0.1f, 0.7f, 80.f, 4.f);
 
-const char*                   DEFAULT_TEXT_STYLE_FONT_FAMILY("HelveticaNue");
-const char*                   DEFAULT_TEXT_STYLE_FONT_STYLE("Regular");
-const Dali::PointSize         DEFAULT_TEXT_STYLE_POINT_SIZE( 8.0f );
-const Dali::TextStyle::Weight DEFAULT_TEXT_STYLE_WEIGHT(Dali::TextStyle::EXTRALIGHT);
-const Dali::Vector4           DEFAULT_TEXT_STYLE_COLOR(0.0f, 0.0f, 0.0f, 1.0f);
+const char* DEFAULT_TEXT_STYLE_FONT_FAMILY("HelveticaNue");
+const float DEFAULT_TEXT_STYLE_POINT_SIZE(8.0f);
 
 const Dali::Toolkit::Alignment::Padding DEFAULT_PLAY_PADDING(12.0f, 12.0f, 12.0f, 12.0f);
 const Dali::Toolkit::Alignment::Padding DEFAULT_MODE_SWITCH_PADDING(8.0f, 8.0f, 8.0f, 8.0f);
 
-static Dali::TextStyle defaultTextStyle;
-static bool textStyleSet=false;
-
-float ScalePointSize(int pointSize)
-{
-  Dali::Vector2 dpi = Dali::Stage::GetCurrent().GetDpi();
-  float meanDpi = (dpi.height + dpi.width) * 0.5f;
-  return pointSize * 220.0f / meanDpi;        // 220 is the default horizontal DPI defined in adaptor Application
-}
-
-Dali::TextStyle& GetDefaultTextStyle()
-{
-  if(!textStyleSet)
-  {
-    defaultTextStyle.SetFontName(DEFAULT_TEXT_STYLE_FONT_FAMILY);
-    defaultTextStyle.SetFontStyle(DEFAULT_TEXT_STYLE_FONT_STYLE);
-    defaultTextStyle.SetFontPointSize(Dali::PointSize(ScalePointSize(DEFAULT_TEXT_STYLE_POINT_SIZE)));
-    defaultTextStyle.SetWeight(DEFAULT_TEXT_STYLE_WEIGHT);
-    defaultTextStyle.SetTextColor(DEFAULT_TEXT_STYLE_COLOR);
-    textStyleSet = true;
-  }
-
-  return defaultTextStyle;
-}
-
-Dali::Layer CreateToolbar( Dali::Toolkit::ToolBar& toolBar,
-                           const std::string& toolbarImagePath,
-                           const std::string& title,
-                           const ViewStyle& style,
-                           const Dali::TextStyle& textStyle )
+Dali::Layer CreateToolbar(Dali::Toolkit::ToolBar& toolBar,
+                          const std::string&      toolbarImagePath,
+                          const std::string&      title,
+                          const ViewStyle&        style)
 {
   Dali::Layer toolBarLayer = Dali::Layer::New();
-  toolBarLayer.SetAnchorPoint( Dali::AnchorPoint::TOP_CENTER );
-  toolBarLayer.SetParentOrigin( Dali::ParentOrigin::TOP_CENTER );
-  toolBarLayer.ApplyConstraint( Dali::Constraint::New<Dali::Vector3>( Dali::Actor::Property::SIZE, Dali::ParentSource( Dali::Actor::Property::SIZE ), Dali::SourceWidthFixedHeight( style.mToolBarHeight  ) ) );
-  toolBarLayer.SetSize( 0.0f, style.mToolBarHeight );
+  toolBarLayer.SetProperty(Dali::Actor::Property::NAME, "TOOLBAR_LAYER");
+  toolBarLayer.SetProperty(Dali::Actor::Property::ANCHOR_POINT, Dali::AnchorPoint::TOP_CENTER);
+  toolBarLayer.SetProperty(Dali::Actor::Property::PARENT_ORIGIN, Dali::ParentOrigin::TOP_CENTER);
+  toolBarLayer.SetResizePolicy(Dali::ResizePolicy::FILL_TO_PARENT, Dali::Dimension::WIDTH);
+  toolBarLayer.SetProperty(Dali::Actor::Property::SIZE, Dali::Vector2(0.0f, style.mToolBarHeight));
 
   // Raise tool bar layer to the top.
   toolBarLayer.RaiseToTop();
 
   // Tool bar
-  Dali::Image image = Dali::ResourceImage::New( toolbarImagePath );
-  Dali::ImageActor toolBarBackground = Dali::ImageActor::New( image );
   toolBar = Dali::Toolkit::ToolBar::New();
-  toolBar.SetBackground( toolBarBackground );
-  toolBar.SetParentOrigin( Dali::ParentOrigin::TOP_CENTER );
-  toolBar.SetAnchorPoint( Dali::AnchorPoint::TOP_CENTER );
-  toolBar.SetSize( 0.0f, style.mToolBarHeight );
-  toolBar.SetSizeMode( Dali::SIZE_EQUAL_TO_PARENT );
-  toolBarBackground.SetSortModifier(1.0f);
+  toolBar.SetProperty(Dali::Actor::Property::NAME, "TOOLBAR");
+  Dali::Property::Map background;
+  background["url"] = toolbarImagePath;
+  toolBar.SetProperty(Dali::Toolkit::Control::Property::BACKGROUND, background);
+  toolBar.SetProperty(Dali::Actor::Property::PARENT_ORIGIN, Dali::ParentOrigin::TOP_CENTER);
+  toolBar.SetProperty(Dali::Actor::Property::ANCHOR_POINT, Dali::AnchorPoint::TOP_CENTER);
+  toolBar.SetResizePolicy(Dali::ResizePolicy::FILL_TO_PARENT, Dali::Dimension::ALL_DIMENSIONS);
 
-  // Add the tool bar to the too bar layer.
-  toolBarLayer.Add( toolBar );
-
-  Dali::Font font = Dali::Font::New();
+  // Add the tool bar to the tool bar layer.
+  toolBarLayer.Add(toolBar);
 
   // Tool bar text.
-  if( !title.empty() )
+  if(!title.empty())
   {
-    Dali::Toolkit::TextView titleActor = Dali::Toolkit::TextView::New();
-    titleActor.SetName( "ToolbarTitle" );
-    titleActor.SetText( title );
-    titleActor.SetSize( font.MeasureText( title ) );
-    titleActor.SetStyleToCurrentText(textStyle);
+    Dali::Toolkit::TextLabel label = Dali::Toolkit::TextLabel::New();
+    label.SetProperty(Dali::Actor::Property::ANCHOR_POINT, Dali::AnchorPoint::TOP_LEFT);
+    label.SetStyleName("ToolbarLabel");
+    label.SetProperty(Dali::Toolkit::TextLabel::Property::TEXT, title);
+    label.SetProperty(Dali::Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER");
+    label.SetProperty(Dali::Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER");
+    label.SetResizePolicy(Dali::ResizePolicy::FILL_TO_PARENT, Dali::Dimension::HEIGHT);
 
     // Add title to the tool bar.
-    const float padding( style.mToolBarPadding );
-    toolBar.AddControl( titleActor, style.mToolBarTitlePercentage, Dali::Toolkit::Alignment::HorizontalCenter, Dali::Toolkit::Alignment::Padding( padding, padding, padding, padding ) );
+    const float padding(style.mToolBarPadding);
+    toolBar.AddControl(label, style.mToolBarTitlePercentage, Dali::Toolkit::Alignment::HORIZONTAL_CENTER, Dali::Toolkit::Alignment::Padding(padding, padding, padding, padding));
   }
 
   return toolBarLayer;
 }
 
-Dali::Layer CreateView( Dali::Application& application,
-                        Dali::Toolkit::View& view,
-                        Dali::Toolkit::ToolBar& toolBar,
-                        const std::string& backgroundImagePath,
-                        const std::string& toolbarImagePath,
-                        const std::string& title,
-                        const ViewStyle& style,
-                        const Dali::TextStyle& textStyle )
+Dali::Layer CreateView(Dali::Application&      application,
+                       Dali::Toolkit::Control& view,
+                       Dali::Toolkit::ToolBar& toolBar,
+                       const std::string&      backgroundImagePath,
+                       const std::string&      toolbarImagePath,
+                       const std::string&      title,
+                       const ViewStyle&        style = DEFAULT_VIEW_STYLE)
 {
-  Dali::Stage stage = Dali::Stage::GetCurrent();
+  Dali::Window window = application.GetWindow();
 
   // Create default View.
-  view = Dali::Toolkit::View::New();
+  view = Dali::Toolkit::Control::New();
+  view.SetProperty(Dali::Actor::Property::ANCHOR_POINT, Dali::AnchorPoint::CENTER);
+  view.SetProperty(Dali::Actor::Property::PARENT_ORIGIN, Dali::ParentOrigin::CENTER);
+  view.SetResizePolicy(Dali::ResizePolicy::FILL_TO_PARENT, Dali::Dimension::ALL_DIMENSIONS);
 
-  // Add the view to the stage before setting the background.
-  stage.Add( view );
+  // Add the view to the window before setting the background.
+  window.Add(view);
 
-  // Set background image.
-  if ( ! backgroundImagePath.empty() )
+  // Set background image, loading it at screen resolution:
+  if(!backgroundImagePath.empty())
   {
-    Dali::Image backgroundImage = Dali::ResourceImage::New( backgroundImagePath );
-    Dali::ImageActor backgroundImageActor = Dali::ImageActor::New( backgroundImage );
-    view.SetBackground( backgroundImageActor );
+    Dali::Property::Map map;
+    map[Dali::Toolkit::Visual::Property::TYPE]                     = Dali::Toolkit::Visual::IMAGE;
+    map[Dali::Toolkit::ImageVisual::Property::URL]                 = backgroundImagePath;
+    map[Dali::Toolkit::ImageVisual::Property::DESIRED_WIDTH]       = window.GetSize().GetWidth();
+    map[Dali::Toolkit::ImageVisual::Property::DESIRED_HEIGHT]      = window.GetSize().GetHeight();
+    map[Dali::Toolkit::ImageVisual::Property::FITTING_MODE]        = Dali::FittingMode::SCALE_TO_FILL;
+    map[Dali::Toolkit::ImageVisual::Property::SAMPLING_MODE]       = Dali::SamplingMode::BOX_THEN_LINEAR;
+    map[Dali::Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING] = true;
+    view.SetProperty(Dali::Toolkit::Control::Property::BACKGROUND, map);
   }
 
-  // FIXME
-  // Connects the orientation signal with the View::OrientationChanged method.
-  //application.GetOrientation().ChangedSignal().Connect( &view, &Dali::Toolkit::View::OrientationChanged );
-
   // Create default ToolBar
-  Dali::Layer toolBarLayer = CreateToolbar( toolBar, toolbarImagePath, title, style, textStyle );
+  Dali::Layer toolBarLayer = CreateToolbar(toolBar, toolbarImagePath, title, style);
 
   // Add tool bar layer to the view.
-  view.AddContentLayer( toolBarLayer );
-
-
+  view.Add(toolBarLayer);
 
   // Create a content layer.
   Dali::Layer contentLayer = Dali::Layer::New();
-  contentLayer.SetAnchorPoint( Dali::AnchorPoint::CENTER );
-  contentLayer.SetParentOrigin( Dali::ParentOrigin::CENTER );
-  contentLayer.SetSizeMode( Dali::SIZE_EQUAL_TO_PARENT );
-  view.AddContentLayer( contentLayer );
-  contentLayer.LowerBelow( toolBarLayer );
+  contentLayer.SetProperty(Dali::Actor::Property::ANCHOR_POINT, Dali::AnchorPoint::CENTER);
+  contentLayer.SetProperty(Dali::Actor::Property::PARENT_ORIGIN, Dali::ParentOrigin::CENTER);
+  contentLayer.SetResizePolicy(Dali::ResizePolicy::FILL_TO_PARENT, Dali::Dimension::ALL_DIMENSIONS);
+  view.Add(contentLayer);
+  contentLayer.LowerBelow(toolBarLayer);
 
   return contentLayer;
 }
 
-Dali::Layer CreateView( Dali::Application& application,
-                        Dali::Toolkit::View& view,
-                        Dali::Toolkit::ToolBar& toolBar,
-                        const std::string& backgroundImagePath,
-                        const std::string& toolbarImagePath,
-                        const std::string& title,
-                        const ViewStyle& style  = DEFAULT_VIEW_STYLE )
+Dali::Toolkit::TextLabel CreateToolBarLabel(const std::string& text)
 {
-  return CreateView( application, view, toolBar, backgroundImagePath, toolbarImagePath, title, style,
-                     GetDefaultTextStyle() );
-}
+  Dali::Toolkit::TextLabel label = Dali::Toolkit::TextLabel::New(text);
+  label.SetStyleName("ToolbarLabel");
+  label.SetProperty(Dali::Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER");
+  label.SetProperty(Dali::Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT, "CENTER");
+  label.SetResizePolicy(Dali::ResizePolicy::FILL_TO_PARENT, Dali::Dimension::HEIGHT);
 
+  return label;
+}
 
-} // DemoHelper
+} // namespace DemoHelper
 
-#endif // __DALI_DEMO_HELPER_VIEW_H__
+#endif // DALI_DEMO_HELPER_VIEW_H