From: Adeel Kazmi Date: Fri, 24 Aug 2018 11:18:59 +0000 (+0000) Subject: Merge "Controls are LayoutGroups instead of LayoutItems" into devel/master X-Git-Tag: dali_1.3.39~6 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=895e2909bd541d9f987923c40dabd9417f66325b;ds=inline Merge "Controls are LayoutGroups instead of LayoutItems" into devel/master --- 895e2909bd541d9f987923c40dabd9417f66325b diff --cc automated-tests/src/dali-toolkit/utc-Dali-Layouting.cpp index 0806353,8fabd35..9206215 --- a/automated-tests/src/dali-toolkit/utc-Dali-Layouting.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Layouting.cpp @@@ -2304,3 -2047,235 +2323,235 @@@ int UtcDaliLayouting_SetLayoutOrder02(v END_TEST; } + + int UtcDaliLayouting_LayoutGroup01(void) + { + ToolkitTestApplication application; + tet_infoline("UtcDaliLayouting_LayoutGroup01 - Test adding a control to a layout then adding a TextLabel to that control"); + + Control rootControl; + SetupRootLayoutControl( rootControl ); + + // Create a parent layout + auto hbox = Control::New(); + auto hboxLayout = LinearLayout::New(); + hbox.SetName( "HBox"); + rootControl.Add( hbox ); + DevelControl::SetLayout( hbox, hboxLayout ); + hbox.SetProperty( LayoutItem::ChildProperty::WIDTH_SPECIFICATION, 600 ); + hbox.SetProperty( LayoutItem::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); + hbox.SetAnchorPoint( AnchorPoint::TOP_LEFT ); // LinearLayout will eventually do this internally. + + tet_infoline("Add a control without SetLayout being called"); + + auto control = Control::New(); + control.SetName("Control1"); + hbox.Add( control ); + control.SetProperty( LayoutItem::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::MATCH_PARENT ); + control.SetProperty( LayoutItem::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); + + tet_infoline("Add a Textlabel to the control"); + auto textLabel = TextLabel::New("Test text"); + textLabel.SetName("TextLabel"); + control.Add( textLabel ); + + // Ensure layouting happens + application.SendNotification(); + application.Render(); + + tet_infoline("Test text is it's natural size"); + DALI_TEST_EQUALS( textLabel.GetProperty( Actor::Property::SIZE ), Vector3( 230.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + tet_infoline("Test control is width of it's parent and height of it's child"); + DALI_TEST_EQUALS( control.GetProperty( Actor::Property::SIZE ), Vector3( 600.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + END_TEST; + } + + int UtcDaliLayouting_LayoutGroup02(void) + { + ToolkitTestApplication application; + tet_infoline("UtcDaliLayouting_LayoutGroup02 - Test control is the size of it's largest child"); + + Control rootControl; + SetupRootLayoutControl( rootControl ); + + // Create a parent layout + auto hbox = Control::New(); + auto hboxLayout = LinearLayout::New(); + hbox.SetName( "HBox"); + rootControl.Add( hbox ); + DevelControl::SetLayout( hbox, hboxLayout ); + hbox.SetProperty( LayoutItem::ChildProperty::WIDTH_SPECIFICATION, 600 ); + hbox.SetProperty( LayoutItem::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); + hbox.SetAnchorPoint( AnchorPoint::TOP_LEFT ); // LinearLayout will eventually do this internally. + + tet_infoline("Add a control without SetLayout being called"); + + auto control = Control::New(); + control.SetName("Control1"); + hbox.Add( control ); + control.SetProperty( LayoutItem::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); + control.SetProperty( LayoutItem::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); + + tet_infoline("Add a Textlabel to the control"); + auto textLabel = TextLabel::New("Test text"); + textLabel.SetName("TextLabel"); + control.Add( textLabel ); + + tet_infoline("Add another Textlabel to the control"); + auto largeTextLabel = TextLabel::New("Test large text"); + largeTextLabel.SetName("TextLabel-Large"); + control.Add( largeTextLabel ); + + // Ensure layouting happens + application.SendNotification(); + application.Render(); + + tet_infoline("Test text is it's natural size"); + DALI_TEST_EQUALS( textLabel.GetProperty( Actor::Property::SIZE ), Vector3( 230.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + tet_infoline("Test text is centered in the control, the control is the size of the largest child"); + DALI_TEST_EQUALS( textLabel.GetProperty( Actor::Property::POSITION ), Vector3( 0.0f, 0.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + tet_infoline("Test large text is it's natural size"); + DALI_TEST_EQUALS( largeTextLabel.GetProperty( Actor::Property::SIZE ), Vector3( 382.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + tet_infoline("Test text is aligned to start as is the size of the control"); + DALI_TEST_EQUALS( largeTextLabel.GetProperty( Actor::Property::POSITION ), Vector3( 0.0f, 0.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + tet_infoline("Test control is width of it's parent and height of it's largest child"); + DALI_TEST_EQUALS( control.GetProperty( Actor::Property::SIZE ), Vector3( 382.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + END_TEST; + } + + int UtcDaliLayouting_LayoutGroup03(void) + { + ToolkitTestApplication application; + tet_infoline("UtcDaliLayouting_LayoutGroup03 - Test control witha LayoutGroup as a leaf"); + + Control rootControl; + SetupRootLayoutControl( rootControl ); + + // Create a parent layout + auto hbox = Control::New(); + auto hboxLayout = LinearLayout::New(); + hbox.SetName( "HBox"); + rootControl.Add( hbox ); + DevelControl::SetLayout( hbox, hboxLayout ); + hbox.SetProperty( LayoutItem::ChildProperty::WIDTH_SPECIFICATION, 600 ); + hbox.SetProperty( LayoutItem::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); + hbox.SetAnchorPoint( AnchorPoint::TOP_LEFT ); // LinearLayout will eventually do this internally. + + tet_infoline("Add a control without SetLayout being called"); + + auto control = Control::New(); + control.SetName("Control1"); + hbox.Add( control ); + control.SetProperty( LayoutItem::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::MATCH_PARENT ); + control.SetProperty( LayoutItem::ChildProperty::HEIGHT_SPECIFICATION, 100 ); + + // Ensure layouting happens + application.SendNotification(); + application.Render(); + + tet_infoline("Test control is width of it's parent and exact given height"); + DALI_TEST_EQUALS( control.GetProperty( Actor::Property::SIZE ), Vector3( 600.0f, 100.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( control.GetProperty( Actor::Property::POSITION ), Vector3( 0.0f, 0.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + END_TEST; + } + + int UtcDaliLayouting_LayoutGroupWithPadding01(void) + { + ToolkitTestApplication application; + tet_infoline("UtcDaliLayouting_LayoutGroupWithPadding01 - Test adding a control to a layout that has padding"); + + Control rootControl; + SetupRootLayoutControl( rootControl ); + + // Create a parent layout + auto hbox = Control::New(); + auto hboxLayout = LinearLayout::New(); + hbox.SetName( "HBox"); + rootControl.Add( hbox ); + DevelControl::SetLayout( hbox, hboxLayout ); + hbox.SetProperty( LayoutItem::ChildProperty::WIDTH_SPECIFICATION, 600 ); + hbox.SetProperty( LayoutItem::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); + hbox.SetAnchorPoint( AnchorPoint::TOP_LEFT ); // LinearLayout will eventually do this internally. + + tet_infoline("Add a control without SetLayout being called"); + + auto control = Control::New(); + control.SetName("Control1"); + hbox.Add( control ); + control.SetProperty( LayoutItem::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); + control.SetProperty( LayoutItem::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); + + const Extents CONTROL_PADDING = Extents(5, 10, 20, 2 ); + tet_printf( "Adding Padding to control"); + control.SetProperty( Toolkit::Control::Property::PADDING, CONTROL_PADDING ); + + tet_infoline("Add a Textlabel to the control"); + auto textLabel = TextLabel::New("Test text"); + textLabel.SetName("TextLabel"); + control.Add( textLabel ); + + // Ensure layouting happens + application.SendNotification(); + application.Render(); + + tet_infoline("Test text is it's natural size"); + DALI_TEST_EQUALS( textLabel.GetProperty( Actor::Property::SIZE ), Vector3( 230.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + tet_infoline("Test control is size of it's child and control it's own padding"); + DALI_TEST_EQUALS( control.GetProperty( Actor::Property::SIZE ), Vector3( 245.0f, 86.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + END_TEST; + } + + int UtcDaliLayouting_LayoutGroupWithChildMargin01(void) + { + ToolkitTestApplication application; + tet_infoline("UtcDaliLayouting_LayoutGroupWithChildMargin01 - Test adding a control with padding to a layout that has padding"); + + Control rootControl; + SetupRootLayoutControl( rootControl ); + + // Create a parent layout + auto hbox = Control::New(); + auto hboxLayout = LinearLayout::New(); + hbox.SetName( "HBox"); + rootControl.Add( hbox ); + DevelControl::SetLayout( hbox, hboxLayout ); + hbox.SetProperty( LayoutItem::ChildProperty::WIDTH_SPECIFICATION, 600 ); + hbox.SetProperty( LayoutItem::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); + hbox.SetAnchorPoint( AnchorPoint::TOP_LEFT ); // LinearLayout will eventually do this internally. + + tet_infoline("Add a control without SetLayout being called"); + + auto control = Control::New(); + control.SetName("Control1"); + hbox.Add( control ); + control.SetProperty( LayoutItem::ChildProperty::WIDTH_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); + control.SetProperty( LayoutItem::ChildProperty::HEIGHT_SPECIFICATION, ChildLayoutData::WRAP_CONTENT ); + + const Extents CONTROL_PADDING = Extents(5, 10, 20, 2 ); + tet_printf( "Adding Padding to control"); + control.SetProperty( Toolkit::Control::Property::PADDING, CONTROL_PADDING ); + + tet_infoline("Add a Textlabel to the control"); + auto textLabel = TextLabel::New("Test text"); + const Extents CHILD_MARGIN = Extents( 10, 0, 5, 0 ); + textLabel.SetProperty( Toolkit::Control::Property::MARGIN, CHILD_MARGIN ); + textLabel.SetName("TextLabel"); + control.Add( textLabel ); + + // Ensure layouting happens + application.SendNotification(); + application.Render(); + + tet_infoline("Test text is it's natural size"); + DALI_TEST_EQUALS( textLabel.GetProperty( Actor::Property::SIZE ), Vector3( 230.0f, 64.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + tet_infoline("Test control is width of it's parent and height of it's child"); + DALI_TEST_EQUALS( control.GetProperty( Actor::Property::SIZE ), Vector3( 255.0f, 91.0f, 0.0f ), 0.0001f, TEST_LOCATION ); + + END_TEST; -} ++}