void WMenu::selectVisual(int index, bool changePath, bool showContents) { if (contentsStack_) previousStackIndex_ = contentsStack_->currentIndex(); WMenuItem *item = index >= 0 ? itemAt(index) : 0; if (changePath && internalPathEnabled_ && index != -1 && item->internalPathEnabled()) { WApplication *app = wApp; previousInternalPath_ = app->internalPath(); std::string newPath = basePath_ + item->pathComponent(); if (newPath != app->internalPath()) emitPathChange_ = true; // The change is emitted in select() app->setInternalPath(newPath); } for (int i = 0; i < count(); ++i) renderSelected(itemAt(i), (int)i == index); if (index == -1) return; if (showContents && contentsStack_) { WWidget *contents = item->contents(); if (contents) contentsStack_->setCurrentWidget(contents); } itemSelectRendered_.emit(item); }
void WPushButton::doRedirect() { WApplication *app = WApplication::instance(); if (!app->environment().ajax()) { if (linkState_.link.type() == WLink::InternalPath) app->setInternalPath(linkState_.link.internalPath().toUTF8(), true); else app->redirect(linkState_.link.url()); } }
void WMenu::undoSelectVisual() { std::string prevPath = previousInternalPath_; int prevStackIndex = previousStackIndex_; selectVisual(current_, true, true); if (internalPathEnabled_) { WApplication *app = wApp; app->setInternalPath(prevPath); } if (contentsStack_) contentsStack_->setCurrentIndex(prevStackIndex); }
void AuthWidget::closeDialog() { if (dialog_) { delete dialog_; dialog_ = 0; } else { delete messageBox_; messageBox_ = 0; } /* Reset internal path */ if(!basePath_.empty()) { WApplication *app = WApplication::instance(); if (app->internalPathMatches(basePath_)) { std::string ap = app->internalSubPath(basePath_); if (ap == "register/") { app->setInternalPath(basePath_, false); } } } }