layout component test

This commit is contained in:
yusheng.lu 2015-01-14 11:34:43 +08:00
parent 4b0a35d772
commit eb106d57a6
2 changed files with 245 additions and 22 deletions

View File

@ -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*>(_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<ui::Text*>(Helper::seekWidgetByName(_root, "back"));
back_label->addTouchEventListener(CC_CALLBACK_2(UIScene_Editor::toGUIEditorTestScene, this));
_layout->addChild(back_label);
_sceneTitle = static_cast<ui::Text*>(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<ui::Button*>(Helper::seekWidgetByName(_root, "Button_h_unchecked"));
_vUnchecked = static_cast<ui::Button*>(Helper::seekWidgetByName(_root, "Button_v_unchecked"));
_hChecked = static_cast<ui::Button*>(Helper::seekWidgetByName(_root, "Button_h_checked"));
_vChecked = static_cast<ui::Button*>(Helper::seekWidgetByName(_root, "Button_v_checked"));
_lPinUnchecked = static_cast<ui::Button*>(Helper::seekWidgetByName(_root, "Button_Pin_Left"));
_rPinUnchecked = static_cast<ui::Button*>(Helper::seekWidgetByName(_root, "Button_Pin_Right"));
_tPinUnchecked = static_cast<ui::Button*>(Helper::seekWidgetByName(_root, "Button_Pin_Top"));
_bPinUnchecked = static_cast<ui::Button*>(Helper::seekWidgetByName(_root, "Button_Pin_Bottom"));
_lPinChecked = static_cast<ui::Button*>(Helper::seekWidgetByName(_root, "Button_Pin_Left_Checked"));
_rPinChecked = static_cast<ui::Button*>(Helper::seekWidgetByName(_root, "Button_Pin_Right_Checked"));
_tPinChecked = static_cast<ui::Button*>(Helper::seekWidgetByName(_root, "Button_Pin_Top_Checked"));
_bPinChecked = static_cast<ui::Button*>(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<ui::Text*>(Helper::seekWidgetByName(_root, "Text_Pin"));
_textStretch = static_cast<ui::Text*>(Helper::seekWidgetByName(_root, "Text_Stretch"));
_widget = Helper::seekWidgetByName(_root, "Image_Widget");
_container = Helper::seekWidgetByName(_root, "background_Panel");
auto btnSwitch = static_cast<ui::Button*>(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<Layout*>(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");
}
}

View File

@ -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__) */