Ensure Button Set and Get works with Image/Actor API 98/128998/3
authorAgnelo Vaz <agnelo.vaz@samsung.com>
Fri, 12 May 2017 09:24:22 +0000 (10:24 +0100)
committerAgnelo Vaz <agnelo.vaz@samsung.com>
Fri, 12 May 2017 15:55:37 +0000 (16:55 +0100)
Old Dali API using Set/Get Image or setting image via Actor were broken.
Adding functionality to so old API still works.

Change-Id: I65689e324d6651d488fee6f0ac7b206afeabffa3

automated-tests/src/dali-toolkit/utc-Dali-PushButton.cpp
dali-toolkit/internal/controls/buttons/button-impl.cpp
dali-toolkit/internal/controls/buttons/button-impl.h
dali-toolkit/internal/controls/buttons/push-button-impl.cpp
dali-toolkit/internal/controls/buttons/push-button-impl.h
dali-toolkit/public-api/controls/buttons/push-button.cpp

index ad65aea..57b39a5 100644 (file)
@@ -1523,3 +1523,296 @@ int UtcDaliPushButtonSetLabelText(void)
 
   END_TEST;
 }
+
+int UtcDaliPushButtonSetButtonImageDeprecatedP(void)
+{
+  ToolkitTestApplication application;
+  Image setButtonImage = ResourceImage::New( TEST_IMAGE_ONE);
+  PushButton pushButton = PushButton::New();
+  pushButton.SetButtonImage( setButtonImage );
+  Image retreivedButtonImage = ImageView::DownCast(pushButton.GetButtonImage()).GetImage();
+  DALI_TEST_EQUALS( retreivedButtonImage, setButtonImage ,  TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliPushButtonSetSelectedImageDeprecatedP(void)
+{
+  ToolkitTestApplication application;
+  Image setButtonImage = ResourceImage::New( TEST_IMAGE_ONE);
+  PushButton pushButton = PushButton::New();
+  pushButton.SetSelectedImage( setButtonImage );
+  Image retreivedButtonImage = ImageView::DownCast(pushButton.GetSelectedImage()).GetImage();
+  DALI_TEST_EQUALS( retreivedButtonImage, setButtonImage ,  TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliPushButtonGetButtonImageURLDeprecatedP(void)
+{
+  tet_infoline(" UtcDaliPushButtonGetButtonImageURLDeprecatedP Testing mix use of API");
+
+  ToolkitTestApplication application;
+
+  PushButton pushButton = PushButton::New();
+  pushButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, TEST_IMAGE_ONE );
+
+  ImageView retreivedButtonImageView = ImageView::DownCast(pushButton.GetButtonImage());
+  Image retreivedButtonImage = retreivedButtonImageView.GetImage();
+  ResourceImage resourceImage = ResourceImage::DownCast( retreivedButtonImage );
+
+  DALI_TEST_EQUALS( resourceImage.GetUrl(), TEST_IMAGE_ONE ,  TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliPushButtonGetSelectedImageURLDeprecatedP(void)
+{
+  tet_infoline(" UtcDaliPushButtonGetSelectedImageURLDeprecatedP Testing mix use of API");
+
+  ToolkitTestApplication application;
+
+  PushButton pushButton = PushButton::New();
+
+  pushButton.SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, TEST_IMAGE_ONE );
+
+  Image retreivedButtonImage = ImageView::DownCast(pushButton.GetSelectedImage()).GetImage();
+  ResourceImage resourceImage = ResourceImage::DownCast( retreivedButtonImage );
+  DALI_TEST_EQUALS( resourceImage.GetUrl(), TEST_IMAGE_ONE ,  TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliPushButtonSetSelectedImageWithActorDeprecatedP(void)
+{
+  tet_infoline(" UtcDaliPushButton SetSelectedImage With ImageView (Actor)");
+
+  ToolkitTestApplication application;
+
+  Image image = ResourceImage::New( TEST_IMAGE_ONE );
+
+  DALI_TEST_CHECK( image );
+
+  ImageView imgViewSet = ImageView::New(image);
+
+  DALI_TEST_CHECK(imgViewSet );
+
+  PushButton pushButton = PushButton::New();
+
+  DALI_TEST_CHECK( pushButton );
+
+  pushButton.SetSelectedImage( imgViewSet );
+
+  ImageView imageView = ImageView::DownCast( pushButton.GetSelectedImage());
+
+  DALI_TEST_CHECK( imageView );
+
+  Property::Value value = imageView.GetProperty( imageView.GetPropertyIndex( "image" ) );
+  Property::Map map;
+  value.Get( map );
+  DALI_TEST_CHECK( !map.Empty() );
+  DALI_TEST_EQUALS( map[ "filename" ].Get<std::string>(), TEST_IMAGE_ONE , TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliPushButtonSetButtonImageWithActorDeprecatedP(void)
+{
+  tet_infoline(" UtcDaliPushButton SetButtonImage With ImageView (Actor)");
+
+  ToolkitTestApplication application;
+
+  Image image = ResourceImage::New( TEST_IMAGE_ONE );
+
+  DALI_TEST_CHECK( image );
+
+  ImageView imgViewSet = ImageView::New(image);
+
+  DALI_TEST_CHECK(imgViewSet );
+
+  PushButton pushButton = PushButton::New();
+
+  DALI_TEST_CHECK( pushButton );
+
+  pushButton.SetButtonImage( imgViewSet );
+
+  ImageView imageView = ImageView::DownCast( pushButton.GetButtonImage());
+
+  DALI_TEST_CHECK( imageView );
+
+  Property::Value value = imageView.GetProperty( imageView.GetPropertyIndex( "image" ) );
+  Property::Map map;
+  value.Get( map );
+  DALI_TEST_CHECK( !map.Empty() );
+  DALI_TEST_EQUALS( map[ "filename" ].Get<std::string>(), TEST_IMAGE_ONE , TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliPushButtonSetBackgroundImageWithActorDeprecatedP(void)
+{
+  tet_infoline(" UtcDaliPushButton SetBackgroundImage With ImageView (Actor)");
+
+  ToolkitTestApplication application;
+
+  Image image = ResourceImage::New( TEST_IMAGE_ONE );
+
+  DALI_TEST_CHECK( image );
+
+  ImageView imgViewSet = ImageView::New(image);
+
+  DALI_TEST_CHECK(imgViewSet );
+
+  PushButton pushButton = PushButton::New();
+
+  DALI_TEST_CHECK( pushButton );
+
+  pushButton.SetBackgroundImage( imgViewSet );
+
+  ImageView imageView = ImageView::DownCast( pushButton.GetButtonImage());
+
+  DALI_TEST_CHECK( imageView );
+
+  Property::Value value = imageView.GetProperty( imageView.GetPropertyIndex( "image" ) );
+  Property::Map map;
+  value.Get( map );
+  DALI_TEST_CHECK( !map.Empty() );
+  DALI_TEST_EQUALS( map[ "filename" ].Get<std::string>(), TEST_IMAGE_ONE , TEST_LOCATION );
+
+  END_TEST;
+}
+
+
+int UtcDaliPushButtonSetSelectedBackgroundImageWithActorDeprecatedP(void)
+{
+  tet_infoline(" UtcDaliPushButton SetSelectedBackgroundImage With ImageView (Actor)");
+
+  ToolkitTestApplication application;
+
+  Image image = ResourceImage::New( TEST_IMAGE_ONE );
+
+  DALI_TEST_CHECK( image );
+
+  ImageView imgViewSet = ImageView::New(image);
+
+  DALI_TEST_CHECK(imgViewSet );
+
+  PushButton pushButton = PushButton::New();
+
+  DALI_TEST_CHECK( pushButton );
+
+  pushButton.SetSelectedBackgroundImage( imgViewSet );
+
+  ImageView imageView = ImageView::DownCast( pushButton.GetSelectedImage());
+
+  DALI_TEST_CHECK( imageView );
+
+  Property::Value value = imageView.GetProperty( imageView.GetPropertyIndex( "image" ) );
+  Property::Map map;
+  value.Get( map );
+  DALI_TEST_CHECK( !map.Empty() );
+  DALI_TEST_EQUALS( map[ "filename" ].Get<std::string>(), TEST_IMAGE_ONE , TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliPushButtonSetDisabledBackgroundImageWithActorDeprecatedP(void)
+{
+  tet_infoline(" UtcDaliPushButton SetDisabledBackgroundImage With ImageView (Actor)");
+
+  ToolkitTestApplication application;
+
+  Image image = ResourceImage::New( TEST_IMAGE_ONE );
+
+  DALI_TEST_CHECK( image );
+
+  ImageView imgViewSet = ImageView::New(image);
+
+  DALI_TEST_CHECK(imgViewSet );
+
+  PushButton pushButton = PushButton::New();
+
+  DALI_TEST_CHECK( pushButton );
+
+  pushButton.SetDisabledBackgroundImage( imgViewSet );
+
+  Property::Value value = pushButton.GetProperty( Toolkit::DevelButton::Property::DISABLED_UNSELECTED_BACKGROUND_VISUAL );
+  Property::Map map;
+  value.Get( map );
+
+  Property::Value* urlValue = map.Find( ImageVisual::Property::URL );
+
+  std::string urlString;
+  urlValue->Get( urlString );
+  DALI_TEST_EQUALS( urlString , TEST_IMAGE_ONE , TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliPushButtonSetDisabledImageWithActorDeprecatedP(void)
+{
+  tet_infoline(" UtcDaliPushButton SetDisabledImage With ImageView (Actor)");
+
+  ToolkitTestApplication application;
+
+  Image image = ResourceImage::New( TEST_IMAGE_ONE );
+
+  DALI_TEST_CHECK( image );
+
+  ImageView imgViewSet = ImageView::New(image);
+
+  DALI_TEST_CHECK(imgViewSet );
+
+  PushButton pushButton = PushButton::New();
+
+  DALI_TEST_CHECK( pushButton );
+
+  pushButton.SetDisabledImage( imgViewSet );
+
+  Property::Value value = pushButton.GetProperty( Toolkit::DevelButton::Property::DISABLED_UNSELECTED_BACKGROUND_VISUAL );
+
+  Property::Map map;
+  value.Get( map );
+
+  Property::Value* urlValue = map.Find( ImageVisual::Property::URL );
+
+  std::string urlString;
+  urlValue->Get( urlString );
+  DALI_TEST_EQUALS( urlString , TEST_IMAGE_ONE , TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliPushButtonSetDisabledSelectedImageWithActorDeprecatedP(void)
+{
+  tet_infoline(" UtcDaliPushButton SetDisabledSelectedImage With ImageView (Actor)");
+
+  ToolkitTestApplication application;
+
+  Image image = ResourceImage::New( TEST_IMAGE_ONE );
+
+  DALI_TEST_CHECK( image );
+
+  ImageView imgViewSet = ImageView::New(image);
+
+  DALI_TEST_CHECK(imgViewSet );
+
+  PushButton pushButton = PushButton::New();
+
+  DALI_TEST_CHECK( pushButton );
+
+  pushButton.SetDisabledSelectedImage( imgViewSet );
+
+  Property::Value value = pushButton.GetProperty( Toolkit::DevelButton::Property::DISABLED_SELECTED_BACKGROUND_VISUAL );
+
+  Property::Map map;
+  value.Get( map );
+
+  Property::Value* urlValue = map.Find( ImageVisual::Property::URL );
+
+  std::string urlString;
+  urlValue->Get( urlString );
+  DALI_TEST_EQUALS( urlString , TEST_IMAGE_ONE , TEST_LOCATION );
+
+  END_TEST;
+}
index 79ac7db..ac12863 100644 (file)
@@ -1597,27 +1597,52 @@ void Button::SetButtonImage( Image image )
 {
   DALI_LOG_WARNING("Button::SetButtonImage @DEPRECATED_1_0.50\n");
   SetUnselectedImage( GetUrlFromImage( image ) );
+  mSetButtonImage = image;
 }
 
 void Button::SetSelectedImage( Image image )
 {
   DALI_LOG_WARNING("Button::SetSelectedImage @DEPRECATED_1_0.50\n");
   SetSelectedImage( GetUrlFromImage( image ) );
+  mSetSelectedImage = image;
 }
 
 Actor Button::GetButtonImage() const
 {
+  // When deprecated ImageView API removed then this button API can be removed too.
   DALI_LOG_WARNING("Button::GetButtonImage @DEPRECATED_1_0.50\n");
-  Actor imageView = Toolkit::ImageView::New( GetUrlForImageVisual( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL ) );
+
+  Actor imageView;
+
+  if ( mSetButtonImage )
+  {
+    imageView = Toolkit::ImageView::New( mSetButtonImage );
+  }
+  else
+  {
+    ResourceImage image = ResourceImage::New( GetUrlForImageVisual( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL ) );
+    imageView = Toolkit::ImageView::New( image );
+  }
 
   return imageView;
 }
 
 Actor Button::GetSelectedImage() const
 {
+  // When deprecated ImageView API removed then this button API can be removed too.
   DALI_LOG_WARNING("Button::GetSelectedImage @DEPRECATED_1_0.50\n");
-  Actor imageView = Toolkit::ImageView::New( GetUrlForImageVisual( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL ) );
 
+  Actor imageView;
+
+  if ( mSetSelectedImage )
+  {
+    imageView = Toolkit::ImageView::New( mSetSelectedImage );
+  }
+  else
+  {
+    ResourceImage image = ResourceImage::New( GetUrlForImageVisual( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL ) );
+    imageView = Toolkit::ImageView::New( image );
+  }
   return imageView;
 }
 
index e0b7d50..210246e 100644 (file)
@@ -680,6 +680,11 @@ private:
 
   // Actions
   bool             mClickActionPerforming;      ///< Used to manage signal emissions during action
+
+  // Deprecated API support
+  Image            mSetButtonImage;             ///< Store set image if deprecated SetButtonImage used.
+  Image            mSetSelectedImage;           ///< Store set image if deprecated SetSelectedImage used.
+
 };
 
 } // namespace Internal
index 3391bae..1b7f495 100644 (file)
@@ -243,6 +243,104 @@ Property::Value PushButton::GetProperty( BaseObject* object, Property::Index pro
   return value;
 }
 
+// Deprecated API using Actor to set images
+
+void PushButton::SetButtonImage( Actor image )
+{
+  DALI_LOG_WARNING_NOFN("DEPRECATION WARNING: SetButtonImage() is deprecated and will be removed from next release. Use Button.SetProperty UNSELECTED_STATE_IMAGE or Styling file instead.\n" );
+
+  Image retreivedButtonImage = Toolkit::ImageView::DownCast( image ).GetImage();
+  if ( retreivedButtonImage )
+  {
+    ResourceImage resourceImage = ResourceImage::DownCast( retreivedButtonImage );
+
+    if ( resourceImage )
+    {
+      Self().SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, resourceImage.GetUrl() );
+
+    }
+  }
+}
+
+void PushButton::SetBackgroundImage( Actor image )
+{
+  DALI_LOG_WARNING_NOFN("DEPRECATION WARNING: SetBackgroundImage() is deprecated and will be removed from next release.\n" );
+
+  SetButtonImage( image );
+
+}
+
+void PushButton::SetSelectedImage( Actor image )
+{
+  DALI_LOG_WARNING_NOFN("DEPRECATION WARNING: SetSelectedImage() is deprecated and will be removed from next release. Use Button.SetProperty SELECTED_STATE_IMAGE or Styling file instead.\n" );
+
+  Image retreivedButtonImage = Toolkit::ImageView::DownCast( image ).GetImage();
+  if ( retreivedButtonImage )
+  {
+    ResourceImage resourceImage = ResourceImage::DownCast( retreivedButtonImage );
+
+    if ( resourceImage )
+    {
+      Self().SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, resourceImage.GetUrl() );
+    }
+  }
+}
+
+void PushButton::SetSelectedBackgroundImage( Actor image )
+{
+  DALI_LOG_WARNING_NOFN("DEPRECATION WARNING: SetSelectedBackgroundImage() is deprecated and will be removed from next release.\n" );
+
+  SetSelectedImage( image );
+}
+
+void PushButton::SetDisabledBackgroundImage( Actor image )
+{
+  DALI_LOG_WARNING_NOFN("DEPRECATION WARNING: SetDisabledBackgroundImage() is deprecated and will be removed from next release.\n" );
+
+  Image retreivedButtonImage = Toolkit::ImageView::DownCast( image ).GetImage();
+  if ( retreivedButtonImage )
+  {
+    ResourceImage resourceImage = ResourceImage::DownCast( retreivedButtonImage );
+
+    if ( resourceImage )
+    {
+      Self().SetProperty( Toolkit::DevelButton::Property::DISABLED_UNSELECTED_BACKGROUND_VISUAL, resourceImage.GetUrl() );
+    }
+  }
+}
+
+void PushButton::SetDisabledImage( Actor image )
+{
+  DALI_LOG_WARNING_NOFN("DEPRECATION WARNING: SetDisabledImage() is deprecated and will be removed from next release. Use Button.SetProperty DISABLED_STATE_IMAGE or Styling file instead.\n" );
+
+  Image retreivedButtonImage = Toolkit::ImageView::DownCast( image ).GetImage();
+  if ( retreivedButtonImage )
+  {
+    ResourceImage resourceImage = ResourceImage::DownCast( retreivedButtonImage );
+
+    if ( resourceImage )
+    {
+      Self().SetProperty( Toolkit::DevelButton::Property::DISABLED_UNSELECTED_BACKGROUND_VISUAL, resourceImage.GetUrl() );
+    }
+  }
+}
+
+void PushButton::SetDisabledSelectedImage( Actor image )
+{
+  DALI_LOG_WARNING_NOFN("DEPRECATION WARNING: SetDisabledSelectedImage() is deprecated and will be removed from next release.\n" );
+
+  Image retreivedButtonImage = Toolkit::ImageView::DownCast( image ).GetImage();
+  if ( retreivedButtonImage )
+  {
+    ResourceImage resourceImage = ResourceImage::DownCast( retreivedButtonImage );
+
+    if ( resourceImage )
+    {
+      Self().SetProperty( Toolkit::DevelButton::Property::DISABLED_SELECTED_BACKGROUND_VISUAL, resourceImage.GetUrl() );
+    }
+  }
+}
+
 } // namespace Internal
 
 } // namespace Toolkit
index ecc7ac7..6417b4b 100644 (file)
@@ -93,6 +93,48 @@ public:
    */
   static Property::Value GetProperty( BaseObject* object, Property::Index propertyIndex );
 
+  /**
+   * Deprecated API for Setting Pushbutton image using an Actor
+   * @param[in] image, Image Actor that has a url which can be used to create an image visual
+   */
+  void SetButtonImage( Actor image );
+
+  /**
+   * Deprecated API for Setting Pushbutton image using an Actor
+   * @param[in] image, Image Actor that has a url which can be used to create an image visual
+   */
+  void SetBackgroundImage( Actor image );
+
+  /**
+   * Deprecated API for Setting Pushbutton image using an Actor
+   * @param[in] image, Image Actor that has a url which can be used to create an image visual
+   */
+  void SetSelectedImage( Actor image );
+
+  /**
+   * Deprecated API for Setting Pushbutton image using an Actor
+   * @param[in] image, Image Actor that has a url which can be used to create an image visual
+   */
+  void SetSelectedBackgroundImage( Actor image );
+
+  /**
+   * Deprecated API for Setting Pushbutton image using an Actor
+   * @param[in] image, Image Actor that has a url which can be used to create an image visual
+   */
+  void SetDisabledBackgroundImage( Actor image );
+
+  /**
+   * Deprecated API for Setting Pushbutton image using an Actor
+   * @param[in] image, Image Actor that has a url which can be used to create an image visual
+   */
+  void SetDisabledImage( Actor image );
+
+  /**
+   * Deprecated API for Setting Pushbutton image using an Actor
+   * @param[in] image, Image Actor that has a url which can be used to create an image visual
+   */
+  void SetDisabledSelectedImage( Actor image );
+
 private: // From Button
 
   /**
index 80f8b16..22dba2d 100644 (file)
@@ -82,46 +82,49 @@ void PushButton::SetButtonImage( Actor image )
 {
   DALI_LOG_WARNING_NOFN("DEPRECATION WARNING: SetButtonImage() is deprecated and will be removed from next release. Use Button.SetProperty UNSELECTED_STATE_IMAGE or Styling file instead.\n" );
 
-  // Passing Image as Actor not supported
+  Dali::Toolkit::GetImplementation( *this ).SetButtonImage( image );
 }
 
 void PushButton::SetBackgroundImage( Actor image )
 {
   DALI_LOG_WARNING_NOFN("DEPRECATION WARNING: SetBackgroundImage() is deprecated and will be removed from next release.\n" );
 
-  // Passing Image as Actor not supported}
+  Dali::Toolkit::GetImplementation( *this ).SetBackgroundImage( image );
 }
 
 void PushButton::SetSelectedImage( Actor image )
 {
   DALI_LOG_WARNING_NOFN("DEPRECATION WARNING: SetSelectedImage() is deprecated and will be removed from next release. Use Button.SetProperty SELECTED_STATE_IMAGE or Styling file instead.\n" );
 
-  // Passing Image as Actor not supported}
+  Dali::Toolkit::GetImplementation( *this ).SetSelectedImage( image );
 }
 
 void PushButton::SetSelectedBackgroundImage( Actor image )
 {
   DALI_LOG_WARNING_NOFN("DEPRECATION WARNING: SetSelectedBackgroundImage() is deprecated and will be removed from next release.\n" );
 
-  // Passing Image as Actor not supported}
+  Dali::Toolkit::GetImplementation( *this ).SetSelectedBackgroundImage( image );
 }
 
 void PushButton::SetDisabledBackgroundImage( Actor image )
 {
   DALI_LOG_WARNING_NOFN("DEPRECATION WARNING: SetDisabledBackgroundImage() is deprecated and will be removed from next release.\n" );
-  // Passing Image as Actor not supported}
+
+  Dali::Toolkit::GetImplementation( *this ).SetDisabledBackgroundImage( image );
 }
 
 void PushButton::SetDisabledImage( Actor image )
 {
   DALI_LOG_WARNING_NOFN("DEPRECATION WARNING: SetDisabledImage() is deprecated and will be removed from next release. Use Button.SetProperty DISABLED_STATE_IMAGE or Styling file instead.\n" );
-  // Passing Image as Actor not supported
+
+  Dali::Toolkit::GetImplementation( *this ).SetDisabledImage( image );
 }
 
 void PushButton::SetDisabledSelectedImage( Actor image )
 {
   DALI_LOG_WARNING_NOFN("DEPRECATION WARNING: SetDisabledSelectedImage() is deprecated and will be removed from next release.\n" );
-  // Passing Image as Actor not supported
+
+  Dali::Toolkit::GetImplementation( *this ).SetDisabledSelectedImage( image );
 }
 
 } // namespace Toolkit