WWidget *RegistrationWidget::createFormWidget(WFormModel::Field field) { WFormWidget *result = 0; if (field == RegistrationModel::LoginNameField) { result = new WLineEdit(); result->changed().connect (boost::bind(&RegistrationWidget::checkLoginName, this)); } else if (field == RegistrationModel::EmailField) { result = new WLineEdit(); } else if (field == RegistrationModel::ChoosePasswordField) { WLineEdit *p = new WLineEdit(); p->setEchoMode(WLineEdit::Password); p->keyWentUp().connect (boost::bind(&RegistrationWidget::checkPassword, this)); p->changed().connect (boost::bind(&RegistrationWidget::checkPassword, this)); result = p; } else if (field == RegistrationModel::RepeatPasswordField) { WLineEdit *p = new WLineEdit(); p->setEchoMode(WLineEdit::Password); p->changed().connect (boost::bind(&RegistrationWidget::checkPassword2, this)); result = p; } return result; }
void WSuggestionPopup::doActivate(std::string itemId, std::string editId) { WFormWidget *edit = 0; for (unsigned i = 0; i < edits_.size(); ++i) if (edits_[i]->id() == editId) { edit = edits_[i]; break; } if (edit == 0) { LOG_ERROR("activate from bogus editor"); currentItem_ = -1; return; } for (int i = 0; i < impl_->count(); ++i) if (impl_->widget(i)->id() == itemId) { currentItem_ = i; activated_.emit(i, edit); if(edit) edit->changed().emit(); return; } currentItem_ = -1; LOG_ERROR("activate for bogus item"); }
void UpdatePasswordWidget::updateView(const std::string& var, RegistrationModel::Field field) { WFormWidget *edit = resolve<WFormWidget *>(var); WText *info = resolve<WText *>(var + "-info"); const WValidator::Result& v = model_->validationResult(field); info->setText(v.message()); switch (v.state()) { case WValidator::InvalidEmpty: case WValidator::Invalid: edit->removeStyleClass("Wt-valid"); if (validated_) edit->addStyleClass("Wt-invalid"); info->addStyleClass("Wt-error"); break; case WValidator::Valid: edit->removeStyleClass("Wt-invalid"); if (validated_) edit->addStyleClass("Wt-valid"); info->removeStyleClass("Wt-error"); } }
void WTemplateFormView::updateViewField(WFormModel *model, WFormModel::Field field) { const std::string var = field; if (model->isVisible(field)) { setCondition("if:" + var, true); WWidget *edit = resolveWidget(var); if (!edit) { edit = createFormWidget(field); if (!edit) { LOG_ERROR("updateViewField: createFormWidget('" << field << "') returned 0"); return; } bindWidget(var, edit); } WFormWidget *fedit = dynamic_cast<WFormWidget *>(edit); if (fedit) { if (fedit->validator() != model->validator(field) && model->validator(field)) fedit->setValidator(model->validator(field)); updateViewValue(model, field, fedit); } else updateViewValue(model, field, edit); WText *info = resolve<WText *>(var + "-info"); if (!info) { info = new WText(); bindWidget(var + "-info", info); } bindString(var + "-label", model->label(field)); const WValidator::Result& v = model->validation(field); info->setText(v.message()); indicateValidation(field, model->isValidated(field), info, edit, v); edit->setDisabled(model->isReadOnly(field)); } else { setCondition("if:" + var, false); bindEmpty(var); bindEmpty(var + "-info"); } }
WFormWidget *AuthWidget::createFormWidget(WFormModel::Field field) { WFormWidget *result = 0; if (field == AuthModel::LoginNameField) { result = new WLineEdit(); result->setFocus(); } else if (field == AuthModel::PasswordField) { WLineEdit *p = new WLineEdit(); p->enterPressed().connect(this, &AuthWidget::attemptPasswordLogin); p->setEchoMode(WLineEdit::Password); result = p; } else if (field == AuthModel::RememberMeField) { result = new WCheckBox(); } return result; }
void UpdatePasswordWidget::updateModel(const std::string& var, RegistrationModel::Field field) { WFormWidget *edit = resolve<WFormWidget *>(var); model_->setValue(field, edit->valueText()); }