void WNavigationBar::undoExpandContents() { WContainerWidget *contents = resolve<WContainerWidget *>("contents"); WInteractWidget *collapseButton = resolve<WInteractWidget *>("collapse-button"); WInteractWidget *expandButton = resolve<WInteractWidget *>("expand-button"); collapseButton->hide(); expandButton->show(); if (!animatedResponsive()) contents->hide(); else contents->show(); /* We are collapsed only in appearance */ }
void WNavigationBar::collapseContents() { WContainerWidget *contents = resolve<WContainerWidget *>("contents"); WInteractWidget *collapseButton = resolve<WInteractWidget *>("collapse-button"); WInteractWidget *expandButton = resolve<WInteractWidget *>("expand-button"); collapseButton->hide(); expandButton->show(); if (!animatedResponsive()) contents->hide(); else { if (canOptimizeUpdates()) contents->show(); /* We are collapsed only in appearance */ else contents->animateHide(WAnimation(WAnimation::SlideInFromTop, WAnimation::Ease)); } }
void WNavigationBar::setResponsive(bool responsive) { WContainerWidget *contents = resolve<WContainerWidget *>("contents"); if (responsive) { WInteractWidget *collapseButton = resolve<WInteractWidget *>("collapse-button"); WInteractWidget *expandButton = resolve<WInteractWidget *>("expand-button"); if (!collapseButton) { bindWidget("collapse-button", collapseButton = createCollapseButton()); collapseButton->clicked().connect(this, &WNavigationBar::collapseContents); collapseButton->hide(); bindWidget("expand-button", expandButton = createExpandButton()); expandButton->clicked().connect(this, &WNavigationBar::expandContents); } wApp->theme()->apply(this, contents, NavCollapseRole); contents->hide(); /* Comply with bootstrap responsive CSS assumptions */ contents->setJavaScriptMember ("wtAnimatedHidden", "function(hidden) {" """if (hidden) " "" "this.style.height=''; this.style.display='';" "}"); } else { bindEmpty("collapse-button"); } }
void WTreeNode::create() { setImplementation(layout_ = new WTemplate(tr("Wt.WTreeNode.template"))); setStyleClass("Wt-tree"); layout_->setSelectable(false); layout_->bindEmpty("cols-row"); layout_->bindEmpty("trunk-class"); implementStateless(&WTreeNode::doExpand, &WTreeNode::undoDoExpand); implementStateless(&WTreeNode::doCollapse, &WTreeNode::undoDoCollapse); WApplication *app = WApplication::instance(); /* * Children */ WContainerWidget *children = new WContainerWidget(); children->setList(true); children->hide(); layout_->bindWidget("children", children); /* * Expand icon */ if (WApplication::instance()->layoutDirection() == RightToLeft) expandIcon_ = new WIconPair(app->theme()->resourcesUrl() + imagePlusRtl_, app->theme()->resourcesUrl() + imageMinRtl_); else expandIcon_ = new WIconPair(app->theme()->resourcesUrl() + imagePlus_, app->theme()->resourcesUrl() + imageMin_); expandIcon_->setStyleClass("Wt-ctrl Wt-expand"); noExpandIcon_ = new WText(); noExpandIcon_->setStyleClass("Wt-ctrl Wt-noexpand"); layout_->bindWidget("expand", noExpandIcon_); addStyleClass("Wt-trunk"); /* * Label */ layout_->bindWidget("label-area", new WContainerWidget()); if (labelText_) labelText_->setStyleClass("Wt-label"); childCountLabel_ = 0; if (labelIcon_) { labelArea()->addWidget(labelIcon_); labelIcon_->setVerticalAlignment(AlignMiddle); } if (labelText_) labelArea()->addWidget(labelText_); childrenLoaded_ = false; setLoadPolicy(LazyLoading); }