ProjectIntroPage::ProjectIntroPage(QWidget *parent) : WizardPage(parent), d(new ProjectIntroPagePrivate) { d->m_ui.setupUi(this); hideStatusLabel(); d->m_ui.nameLineEdit->setInitialText(tr("<Enter_Name>")); d->m_ui.nameLineEdit->setFocus(); d->m_ui.nameLineEdit->setValidationFunction([this](FancyLineEdit *edit, QString *errorString) { return validateProjectName(edit->text(), errorString); }); d->m_ui.projectLabel->setVisible(d->m_forceSubProject); d->m_ui.projectComboBox->setVisible(d->m_forceSubProject); d->m_ui.pathChooser->setDisabled(d->m_forceSubProject); d->m_ui.projectsDirectoryCheckBox->setDisabled(d->m_forceSubProject); connect(d->m_ui.pathChooser, &PathChooser::pathChanged, this, &ProjectIntroPage::slotChanged); connect(d->m_ui.nameLineEdit, &QLineEdit::textChanged, this, &ProjectIntroPage::slotChanged); connect(d->m_ui.pathChooser, &PathChooser::validChanged, this, &ProjectIntroPage::slotChanged); connect(d->m_ui.pathChooser, &PathChooser::returnPressed, this, &ProjectIntroPage::slotActivated); connect(d->m_ui.nameLineEdit, &FancyLineEdit::validReturnPressed, this, &ProjectIntroPage::slotActivated); connect(d->m_ui.projectComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &ProjectIntroPage::slotChanged); setProperty(SHORT_TITLE_PROPERTY, tr("Location")); registerFieldWithName(QLatin1String("Path"), d->m_ui.pathChooser, "path", SIGNAL(pathChanged(QString))); registerFieldWithName(QLatin1String("ProjectName"), d->m_ui.nameLineEdit); }
ProjectIntroPage::ProjectIntroPage(QWidget *parent) : QWizardPage(parent), m_d(new ProjectIntroPagePrivate) { m_d->m_ui.setupUi(this); hideStatusLabel(); m_d->m_ui.nameLineEdit->setInitialText(tr("<Enter_Name>")); m_d->m_ui.nameLineEdit->setFocus(Qt::TabFocusReason); connect(m_d->m_ui.pathChooser, SIGNAL(changed(QString)), this, SLOT(slotChanged())); connect(m_d->m_ui.nameLineEdit, SIGNAL(textChanged(QString)), this, SLOT(slotChanged())); connect(m_d->m_ui.pathChooser, SIGNAL(returnPressed()), this, SLOT(slotActivated())); connect(m_d->m_ui.nameLineEdit, SIGNAL(validReturnPressed()), this, SLOT(slotActivated())); }
bool ProjectIntroPage::validate() { if (d->m_forceSubProject) { int index = d->m_ui.projectComboBox->currentIndex(); if (index == 0) return false; d->m_ui.pathChooser->setPath(d->m_projectDirectories.at(index)); } // Validate and display status if (!d->m_ui.pathChooser->isValid()) { displayStatusMessage(Error, d->m_ui.pathChooser->errorMessage()); return false; } // Name valid? Ignore 'DisplayingInitialText' state. bool nameValid = false; switch (d->m_ui.nameLineEdit->state()) { case FancyLineEdit::Invalid: displayStatusMessage(Error, d->m_ui.nameLineEdit->errorMessage()); return false; case FancyLineEdit::DisplayingInitialText: break; case FancyLineEdit::Valid: nameValid = true; break; } // Check existence of the directory const QFileInfo projectDirFile(path() + QLatin1Char('/') + QDir::fromNativeSeparators(d->m_ui.nameLineEdit->text())); if (!projectDirFile.exists()) { // All happy hideStatusLabel(); return nameValid; } if (projectDirFile.isDir()) { displayStatusMessage(Warning, tr("The project already exists.")); return nameValid; } // Not a directory, but something else, likely causing directory creation to fail displayStatusMessage(Error, tr("A file with that name already exists.")); return false; }
bool ProjectIntroPage::validate() { // Validate and display status if (!m_d->m_ui.pathChooser->isValid()) { displayStatusMessage(Error, m_d->m_ui.pathChooser->errorMessage()); return false; } // Name valid? Ignore 'DisplayingInitialText' state. bool nameValid = false; switch (m_d->m_ui.nameLineEdit->state()) { case BaseValidatingLineEdit::Invalid: displayStatusMessage(Error, m_d->m_ui.nameLineEdit->errorMessage()); return false; case BaseValidatingLineEdit::DisplayingInitialText: break; case BaseValidatingLineEdit::Valid: nameValid = true; break; } // Check existence of the directory QString projectDir = path(); projectDir += QDir::separator(); projectDir += m_d->m_ui.nameLineEdit->text(); const QFileInfo projectDirFile(projectDir); if (!projectDirFile.exists()) { // All happy hideStatusLabel(); return nameValid; } if (projectDirFile.isDir()) { displayStatusMessage(Warning, tr("The project already exists.")); return nameValid;; } // Not a directory, but something else, likely causing directory creation to fail displayStatusMessage(Error, tr("A file with that name already exists.")); return false; }