forked from qt-creator/qt-creator
Improve validation of the move component refactoring dialog
Using PathChooser and ClassNameValidatingLineEdit improves the usability. Change-Id: Ib01ee99222ea495b37b0e839fbc68981b071d0a6 Reviewed-by: Thomas Hartmann <Thomas.Hartmann@nokia.com>
This commit is contained in:
@@ -35,6 +35,7 @@
|
||||
|
||||
#include <QFileInfo>
|
||||
#include <QFileDialog>
|
||||
#include <QPushButton>
|
||||
|
||||
using namespace QmlJSEditor::Internal;
|
||||
|
||||
@@ -44,9 +45,7 @@ ComponentNameDialog::ComponentNameDialog(QWidget *parent) :
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
connect(ui->choosePathButton, SIGNAL(clicked()),
|
||||
this, SLOT(choosePath()));
|
||||
connect(ui->pathEdit, SIGNAL(textChanged(QString)),
|
||||
connect(ui->pathEdit, SIGNAL(changed(QString)),
|
||||
this, SLOT(validate()));
|
||||
connect(ui->componentNameEdit, SIGNAL(textChanged(QString)),
|
||||
this, SLOT(validate()));
|
||||
@@ -65,38 +64,44 @@ void ComponentNameDialog::go(QString *proposedName,
|
||||
Q_ASSERT(proposedPath);
|
||||
|
||||
ComponentNameDialog d(parent);
|
||||
d.ui->componentNameEdit->setNamespacesEnabled(false);
|
||||
d.ui->componentNameEdit->setLowerCaseFileName(false);
|
||||
d.ui->componentNameEdit->setClassNameMustBeCapital(true);
|
||||
d.ui->componentNameEdit->setText(*proposedName);
|
||||
d.ui->pathEdit->setText(*proposedPath);
|
||||
d.ui->pathEdit->setExpectedKind(Utils::PathChooser::ExistingDirectory);
|
||||
d.ui->pathEdit->setPath(*proposedPath);
|
||||
|
||||
if (QDialog::Accepted == d.exec()) {
|
||||
*proposedName = d.ui->componentNameEdit->text();
|
||||
*proposedPath = d.ui->pathEdit->text();
|
||||
*proposedPath = d.ui->pathEdit->path();
|
||||
}
|
||||
}
|
||||
|
||||
void ComponentNameDialog::choosePath()
|
||||
{
|
||||
QString dir = QFileDialog::getExistingDirectory(this, tr("Choose a path"),
|
||||
ui->pathEdit->text());
|
||||
ui->pathEdit->path());
|
||||
if (!dir.isEmpty())
|
||||
ui->pathEdit->setText(dir);
|
||||
ui->pathEdit->setPath(dir);
|
||||
}
|
||||
|
||||
void ComponentNameDialog::validate()
|
||||
{
|
||||
const QString msg = isValid();
|
||||
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(msg.isEmpty());
|
||||
ui->messageLabel->setText(msg);
|
||||
const QString message = isValid();
|
||||
ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(message.isEmpty());
|
||||
ui->messageLabel->setText(message);
|
||||
}
|
||||
|
||||
QString ComponentNameDialog::isValid() const
|
||||
{
|
||||
if (!ui->componentNameEdit->isValid())
|
||||
return ui->componentNameEdit->errorMessage();
|
||||
|
||||
QString compName = ui->componentNameEdit->text();
|
||||
if (compName.isEmpty() || !compName[0].isUpper())
|
||||
return tr("Invalid component name");
|
||||
|
||||
QString path = ui->pathEdit->text();
|
||||
if (path.isEmpty() || !QFileInfo(path).isDir())
|
||||
if (!ui->pathEdit->isValid())
|
||||
return tr("Invalid path");
|
||||
|
||||
return QString();
|
||||
|
||||
@@ -25,15 +25,15 @@
|
||||
<property name="verticalSpacing">
|
||||
<number>10</number>
|
||||
</property>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="componentNameLabel">
|
||||
<item row="2" column="1" colspan="2">
|
||||
<widget class="QLabel" name="messageLabel">
|
||||
<property name="text">
|
||||
<string>Component name:</string>
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLineEdit" name="componentNameEdit"/>
|
||||
<widget class="Utils::ClassNameValidatingLineEdit" name="componentNameEdit"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="choosePathLabel">
|
||||
@@ -42,22 +42,15 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="componentNameLabel">
|
||||
<property name="text">
|
||||
<string>Component name:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QLineEdit" name="pathEdit"/>
|
||||
</item>
|
||||
<item row="1" column="2">
|
||||
<widget class="QPushButton" name="choosePathButton">
|
||||
<property name="text">
|
||||
<string>Choose...</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1" colspan="2">
|
||||
<widget class="QLabel" name="messageLabel">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="Utils::PathChooser" name="pathEdit" native="true"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
@@ -86,6 +79,19 @@
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>Utils::ClassNameValidatingLineEdit</class>
|
||||
<extends>QLineEdit</extends>
|
||||
<header location="global">utils/classnamevalidatinglineedit.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>Utils::PathChooser</class>
|
||||
<extends>QWidget</extends>
|
||||
<header location="global">utils/pathchooser.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<resources/>
|
||||
<connections>
|
||||
<connection>
|
||||
|
||||
Reference in New Issue
Block a user