diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.cpp b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.cpp index 4e8be76776..153c02c944 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.cpp +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.cpp @@ -1227,24 +1227,22 @@ UILayoutComponentTest_Editor::~UILayoutComponentTest_Editor() void UILayoutComponentTest_Editor::configureGUIScene() { - Size screenSize = CCDirector::getInstance()->getWinSize(); + Size screenSize = Director::getInstance()->getWinSize(); + Size rootSize = _layout->getContentSize(); + _touchGroup->setPosition(Vec2((screenSize.width - rootSize.width) / 2, + (screenSize.height - rootSize.height) / 2)); - _sceneTitle = Text::create("UILayoutComponentTest_Editor", "", 20); - _sceneTitle->setPosition(Vec2(screenSize.width / 2, screenSize.height - _sceneTitle->getContentSize().height / 2)); - _layout->addChild(_sceneTitle); + _root = static_cast(_layout->getChildByName("root_Panel")); - Text* back_label = Text::create("Back", "", 20); - back_label->setTouchEnabled(true); - auto labelLayout = LayoutComponent::bindLayoutComponent(back_label); - labelLayout->setHorizontalEdge(LayoutComponent::HorizontalEdge::Right); - labelLayout->setVerticalEdge(LayoutComponent::VerticalEdge::Bottom); + ui::Text* back_label = static_cast(Helper::seekWidgetByName(_root, "back")); back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this)); - _layout->addChild(back_label); + + _sceneTitle = static_cast(Helper::seekWidgetByName(_root, "UItest")); Button* left_button = Button::create(); left_button->loadTextures("Images/b1.png", "Images/b2.png", ""); left_button->setPosition(Vec2(_layout->getContentSize().width / 2 - left_button->getContentSize().width, - left_button->getContentSize().height * 0.625)); + left_button->getContentSize().height)); left_button->setTouchEnabled(true); left_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::previousCallback, this)); left_button->setLocalZOrder(_layout->getLocalZOrder() + 1); @@ -1253,32 +1251,246 @@ void UILayoutComponentTest_Editor::configureGUIScene() Button* right_button = Button::create(); right_button->loadTextures("Images/f1.png", "Images/f2.png", ""); right_button->setPosition(Vec2(_layout->getContentSize().width / 2 + right_button->getContentSize().width, - right_button->getContentSize().height * 0.625)); + right_button->getContentSize().height)); right_button->setTouchEnabled(true); right_button->setLocalZOrder(_layout->getLocalZOrder() + 1); right_button->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::nextCallback, this)); _layout->addChild(right_button); + _hUnchecked = static_cast(Helper::seekWidgetByName(_root, "Button_h_unchecked")); + _vUnchecked = static_cast(Helper::seekWidgetByName(_root, "Button_v_unchecked")); + _hChecked = static_cast(Helper::seekWidgetByName(_root, "Button_h_checked")); + _vChecked = static_cast(Helper::seekWidgetByName(_root, "Button_v_checked")); + _lPinUnchecked = static_cast(Helper::seekWidgetByName(_root, "Button_Pin_Left")); + _rPinUnchecked = static_cast(Helper::seekWidgetByName(_root, "Button_Pin_Right")); + _tPinUnchecked = static_cast(Helper::seekWidgetByName(_root, "Button_Pin_Top")); + _bPinUnchecked = static_cast(Helper::seekWidgetByName(_root, "Button_Pin_Bottom")); + _lPinChecked = static_cast(Helper::seekWidgetByName(_root, "Button_Pin_Left_Checked")); + _rPinChecked = static_cast(Helper::seekWidgetByName(_root, "Button_Pin_Right_Checked")); + _tPinChecked = static_cast(Helper::seekWidgetByName(_root, "Button_Pin_Top_Checked")); + _bPinChecked = static_cast(Helper::seekWidgetByName(_root, "Button_Pin_Bottom_Checked")); + + _hUnchecked->addClickEventListener(CC_CALLBACK_1(UILayoutComponentTest_Editor::onChangeLayoutComponent, this)); + _vUnchecked->addClickEventListener(CC_CALLBACK_1(UILayoutComponentTest_Editor::onChangeLayoutComponent, this)); + _hChecked->addClickEventListener(CC_CALLBACK_1(UILayoutComponentTest_Editor::onChangeLayoutComponent, this)); + _vChecked->addClickEventListener(CC_CALLBACK_1(UILayoutComponentTest_Editor::onChangeLayoutComponent, this)); + _lPinUnchecked->addClickEventListener(CC_CALLBACK_1(UILayoutComponentTest_Editor::onChangeLayoutComponent, this)); + _rPinUnchecked->addClickEventListener(CC_CALLBACK_1(UILayoutComponentTest_Editor::onChangeLayoutComponent, this)); + _tPinUnchecked->addClickEventListener(CC_CALLBACK_1(UILayoutComponentTest_Editor::onChangeLayoutComponent, this)); + _bPinUnchecked->addClickEventListener(CC_CALLBACK_1(UILayoutComponentTest_Editor::onChangeLayoutComponent, this)); + _lPinChecked->addClickEventListener(CC_CALLBACK_1(UILayoutComponentTest_Editor::onChangeLayoutComponent, this)); + _rPinChecked->addClickEventListener(CC_CALLBACK_1(UILayoutComponentTest_Editor::onChangeLayoutComponent, this)); + _tPinChecked->addClickEventListener(CC_CALLBACK_1(UILayoutComponentTest_Editor::onChangeLayoutComponent, this)); + _bPinChecked->addClickEventListener(CC_CALLBACK_1(UILayoutComponentTest_Editor::onChangeLayoutComponent, this)); + + _textPin = static_cast(Helper::seekWidgetByName(_root, "Text_Pin")); + _textStretch = static_cast(Helper::seekWidgetByName(_root, "Text_Stretch")); + _widget = Helper::seekWidgetByName(_root, "Image_Widget"); + _container = Helper::seekWidgetByName(_root, "background_Panel"); + + auto btnSwitch = static_cast(Helper::seekWidgetByName(_root, "Button_Switch")); + btnSwitch->addClickEventListener(CC_CALLBACK_1(UILayoutComponentTest_Editor::onResizeContainer, this)); } bool UILayoutComponentTest_Editor::init() { if (UIScene_Editor::init()) { - Size screenSize = CCDirector::getInstance()->getWinSize(); - _layout = Layout::create(); - _layout->setContentSize(screenSize); + Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout/LayoutComponent/UILayoutComponent.csb"); + Node* child = node->getChildByTag(5); + child->removeFromParent(); + _layout = static_cast(child); _touchGroup->addChild(_layout); - - Node* node = CSLoader::createNode("cocosui/UIEditorTest/UILayout/LayoutComponent/Scene.csb"); - node->setContentSize(screenSize); - _layout->addChild(node); this->configureGUIScene(); - ui::Helper::doLayout(_layout); - return true; } return false; +} + +void UILayoutComponentTest_Editor::onChangeLayoutComponent(Ref* sender) +{ + std::string statusStretch = _textStretch->getString(); + std::string statusPin = _textPin->getString(); + std::string hPinStatus = " Left"; + std::string vPinStatus = " Bottom"; + + if (sender == _hUnchecked) + { + _hUnchecked->setVisible(false); + _hChecked->setVisible(true); + statusStretch += " Horizontal"; + _textStretch->setString(statusStretch); + } + else if (sender == _hChecked) + { + _hChecked->setVisible(false); + _hUnchecked->setVisible(true); + statusStretch.erase(statusStretch.find(" Horizontal"), std::string(" Horizontal").length()); + _textStretch->setString(statusStretch); + } + else if (sender == _vUnchecked) + { + _vUnchecked->setVisible(false); + _vChecked->setVisible(true); + statusStretch += " Vertical"; + _textStretch->setString(statusStretch); + } + else if (sender == _vChecked) + { + _vChecked->setVisible(false); + _vUnchecked->setVisible(true); + statusStretch.erase(statusStretch.find(" Vertical"), std::string(" Vertical").length()); + _textStretch->setString(statusStretch); + } + else if (sender == _lPinUnchecked) + { + _lPinUnchecked->setVisible(false); + _lPinChecked->setVisible(true); + } + else if (sender == _lPinChecked) + { + _lPinChecked->setVisible(false); + _lPinUnchecked->setVisible(true); + } + else if (sender == _rPinUnchecked) + { + _rPinUnchecked->setVisible(false); + _rPinChecked->setVisible(true); + } + else if (sender == _rPinChecked) + { + _rPinChecked->setVisible(false); + _rPinUnchecked->setVisible(true); + } + else if (sender == _tPinUnchecked) + { + _tPinUnchecked->setVisible(false); + _tPinChecked->setVisible(true); + } + else if (sender == _tPinChecked) + { + _tPinChecked->setVisible(false); + _tPinUnchecked->setVisible(true); + } + else if (sender == _bPinUnchecked) + { + _bPinUnchecked->setVisible(false); + _bPinChecked->setVisible(true); + } + else if (sender == _bPinChecked) + { + _bPinChecked->setVisible(false); + _bPinUnchecked->setVisible(true); + } + + if (_rPinChecked->isVisible()) + { + if (_lPinChecked->isVisible()) + { + hPinStatus = " Left Right"; + } + else + { + hPinStatus = " Right"; + } + } + if (_tPinChecked->isVisible()) + { + if (_bPinChecked->isVisible()) + { + vPinStatus = " Top Bottom"; + } + else + { + vPinStatus = " Top"; + } + } + + statusPin = String::createWithFormat("Pin:%s%s", hPinStatus.c_str(), vPinStatus.c_str())->getCString(); + _textPin->setString(statusPin); + + auto layoutComponent = ui::LayoutComponent::bindLayoutComponent(_widget); + layoutComponent->setStretchWidthEnabled(statusStretch.find("Horizontal") != std::string::npos); + layoutComponent->setStretchHeightEnabled(statusStretch.find("Vertical") != std::string::npos); + + ui::LayoutComponent::HorizontalEdge horizontalEdgeType = ui::LayoutComponent::HorizontalEdge::None; + if (statusPin.find("Left") != std::string::npos + && statusPin.find("Right") == std::string::npos) + { + horizontalEdgeType = ui::LayoutComponent::HorizontalEdge::Left; + } + else if (statusPin.find("Left") == std::string::npos + && statusPin.find("Right") != std::string::npos) + { + horizontalEdgeType = ui::LayoutComponent::HorizontalEdge::Right; + } + else if (statusPin.find("Left") != std::string::npos + && statusPin.find("Right") != std::string::npos) + { + horizontalEdgeType = ui::LayoutComponent::HorizontalEdge::Center; + } + layoutComponent->setHorizontalEdge(horizontalEdgeType); + + ui::LayoutComponent::VerticalEdge verticalEdgeType = ui::LayoutComponent::VerticalEdge::None; + if (statusPin.find("Top") != std::string::npos + && statusPin.find("Bottom") == std::string::npos) + { + verticalEdgeType = ui::LayoutComponent::VerticalEdge::Top; + } + else if (statusPin.find("Top") == std::string::npos + && statusPin.find("Bottom") != std::string::npos) + { + verticalEdgeType = ui::LayoutComponent::VerticalEdge::Bottom; + } + else if (statusPin.find("Top") != std::string::npos + && statusPin.find("Bottom") != std::string::npos) + { + verticalEdgeType = ui::LayoutComponent::VerticalEdge::Center; + } + layoutComponent->setVerticalEdge(verticalEdgeType); +} + +void UILayoutComponentTest_Editor::onResizeContainer(Ref* sender) +{ + auto layoutController = Helper::seekWidgetByName(_root, "Panel_Controller"); + auto layoutComponent = ui::LayoutComponent::bindLayoutComponent(_widget); + Size size = _container->getContentSize(); + auto switchButton = Helper::seekWidgetByName(_root, "Button_Switch"); + switchButton->setEnabled(false); + switchButton->setBright(false); + + if (size.width < 200) + { + layoutController->setVisible(false); + this->schedule([=](float dt){ + auto size = _container->getContentSize(); + size.width += 303.f / 40.f; + size.height += 70.f / 40.f; + _container->setContentSize(size); + ui::Helper::doLayout(_container); + if (size.width > 390) + { + switchButton->setEnabled(true); + switchButton->setBright(true); + } + }, 0.025, 39, 0, "1"); + } + else + { + layoutController->setVisible(true); + this->schedule([=](float dt){ + auto size = _container->getContentSize(); + size.width -= 303.f / 40.f; + size.height -= 70.f / 40.f; + _container->setContentSize(size); + ui::Helper::doLayout(_container); + if (size.width < 110) + { + switchButton->setEnabled(true); + switchButton->setBright(true); + } + }, 0.025, 39, 0, "2"); + } } \ No newline at end of file diff --git a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.h b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.h index 52004b5d9d..1bbc51cea7 100644 --- a/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.h +++ b/tests/cpp-tests/Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.h @@ -152,8 +152,19 @@ public: virtual bool init(); void configureGUIScene(); protected: - LayerColor* _baseLayer; UI_SCENE_EDITOR_CREATE_FUNC(UILayoutComponentTest_Editor) +private: + void onChangeLayoutComponent(Ref* sender); + void onResizeContainer(Ref* sender); + + ui::Button *_hUnchecked, *_hChecked, *_vUnchecked, *_vChecked; + ui::Button *_lPinUnchecked, *_lPinChecked, + *_rPinUnchecked, *_rPinChecked, + *_tPinUnchecked, *_tPinChecked, + *_bPinUnchecked, *_bPinChecked; + ui::Text *_textPin, *_textStretch; + ui::Widget *_widget, *_container; + ui::Layout* _root; }; #endif /* defined(__TestCpp__UILayoutTest_Editor__) */