Allow background property to be set as a URL string, get will still return a map 72/100872/2
authorKimmo Hoikka <kimmo.hoikka@samsung.com>
Tue, 29 Nov 2016 11:55:12 +0000 (11:55 +0000)
committerAdeel Kazmi <adeel.kazmi@samsung.com>
Wed, 30 Nov 2016 11:11:42 +0000 (03:11 -0800)
Change-Id: I3467bb7d728f54fd25bc0b8cfde2c94e7a03dd9f

automated-tests/src/dali-toolkit/utc-Dali-Control.cpp
dali-toolkit/public-api/controls/control-impl.cpp
dali-toolkit/public-api/controls/control.h

index afb82a9..81a5781 100644 (file)
@@ -457,9 +457,9 @@ int UtcDaliControlBackgroundProperties(void)
   Property::Value propValue = control.GetProperty( Control::Property::BACKGROUND );
   Property::Map* resultMap = propValue.GetMap();
   DALI_TEST_CHECK( resultMap->Find( Visual::Property::TYPE ) );
-  DALI_TEST_CHECK( resultMap->Find( Visual::Property::TYPE )->Get<int>() == Visual::IMAGE );
+  DALI_TEST_EQUALS( resultMap->Find( Visual::Property::TYPE )->Get<int>(),(int)Visual::IMAGE, TEST_LOCATION );
   DALI_TEST_CHECK( resultMap->Find( ImageVisual::Property::URL ) );
-  DALI_TEST_CHECK( resultMap->Find( ImageVisual::Property::URL )->Get<std::string>() == "TestImage" );
+  DALI_TEST_EQUALS( resultMap->Find( ImageVisual::Property::URL )->Get<std::string>(), "TestImage", TEST_LOCATION );
 
   Property::Map rendererMap;
   rendererMap[Visual::Property::TYPE] = Visual::COLOR;
@@ -468,17 +468,24 @@ int UtcDaliControlBackgroundProperties(void)
   propValue = control.GetProperty( Control::Property::BACKGROUND );
   resultMap = propValue.GetMap();
   DALI_TEST_CHECK( resultMap->Find( Visual::Property::TYPE ) );
-  DALI_TEST_CHECK( resultMap->Find( Visual::Property::TYPE )->Get<int>() == Visual::COLOR );
+  DALI_TEST_EQUALS( resultMap->Find( Visual::Property::TYPE )->Get<int>(), (int)Visual::COLOR, TEST_LOCATION );
   DALI_TEST_CHECK( resultMap->Find( ColorVisual::Property::MIX_COLOR ) );
-  DALI_TEST_CHECK( resultMap->Find( ColorVisual::Property::MIX_COLOR )->Get<Vector4>() == Color::CYAN );
+  DALI_TEST_EQUALS( resultMap->Find( ColorVisual::Property::MIX_COLOR )->Get<Vector4>(), Color::CYAN, TEST_LOCATION );
 
   Property::Map emptyMap;
   control.SetProperty( Control::Property::BACKGROUND, emptyMap );
   DALI_TEST_CHECK( control.GetProperty( Control::Property::BACKGROUND ).Get< Property::Map >().Empty() );
 
+  // set as URL
+  control.SetProperty( Control::Property::BACKGROUND, "Foobar.png" );
+  propValue = control.GetProperty( Control::Property::BACKGROUND );
+  resultMap = propValue.GetMap();
+  DALI_TEST_EQUALS( resultMap->Find( Visual::Property::TYPE )->Get<int>(), (int)Visual::IMAGE, TEST_LOCATION );
+  DALI_TEST_EQUALS( resultMap->Find( ImageVisual::Property::URL )->Get<std::string>(), "Foobar.png", TEST_LOCATION );
+
   // Deprecated Properties
   control.SetProperty( Control::Property::BACKGROUND_COLOR, Color::YELLOW );
-  DALI_TEST_EQUALS( control.GetProperty( Control::Property::BACKGROUND_COLOR ).Get< Vector4 >(), Color::YELLOW , TEST_LOCATION );
+  DALI_TEST_EQUALS( control.GetProperty( Control::Property::BACKGROUND_COLOR ).Get< Vector4 >(), Color::YELLOW, TEST_LOCATION );
   DALI_TEST_EQUALS( control.GetProperty( Control::Property::BACKGROUND_COLOR ).Get< Vector4 >(), control.GetBackgroundColor(), TEST_LOCATION );
 
   control.ClearBackground();
@@ -488,7 +495,7 @@ int UtcDaliControlBackgroundProperties(void)
   control.SetProperty( Control::Property::BACKGROUND_IMAGE, deprecatedImageMap );
   propValue = control.GetProperty( Control::Property::BACKGROUND_IMAGE );
   resultMap = propValue.GetMap();
-  DALI_TEST_EQUALS( resultMap->Find( ImageVisual::Property::URL )->Get< std::string >(),  "TestImage" , TEST_LOCATION );
+  DALI_TEST_EQUALS( resultMap->Find( ImageVisual::Property::URL )->Get< std::string >(), "TestImage" , TEST_LOCATION );
 
   control.SetProperty( Control::Property::BACKGROUND_IMAGE, emptyMap );
   DALI_TEST_CHECK( control.GetProperty( Control::Property::BACKGROUND_IMAGE ).Get< Property::Map >().Empty() );
index c731c0d..b71a080 100644 (file)
@@ -407,11 +407,22 @@ public:
 
         case Toolkit::Control::Property::BACKGROUND:
         {
+          std::string url;
           const Property::Map* map = value.GetMap();
           if( map && !map->Empty() )
           {
             controlImpl.SetBackground( *map );
           }
+          else if( value.Get( url ) )
+          {
+            // don't know the size to load
+            Toolkit::Visual::Base visual = Toolkit::VisualFactory::Get().CreateVisual( url, ImageDimensions() );
+            if( visual )
+            {
+              controlImpl.RegisterVisual( Toolkit::Control::Property::BACKGROUND, visual );
+              visual.SetDepthIndex( DepthIndex::BACKGROUND );
+            }
+          }
           else
           {
             // The background is an empty property map, so we should clear the background
index 157e56b..86ea607 100644 (file)
@@ -117,7 +117,7 @@ public:
        */
       KEY_INPUT_FOCUS,
       /**
-       * @brief name "background",       mutually exclusive with BACKGROUND_COLOR & BACKGROUND_IMAGE,                   type Map
+       * @brief name "background", mutually exclusive with BACKGROUND_COLOR & BACKGROUND_IMAGE, type Map or std::string for URL
        * @SINCE_1_1.3
        */
       BACKGROUND,