mirror of
https://github.com/sqlitebrowser/sqlitebrowser.git
synced 2026-01-20 02:50:46 -06:00
EditTableDialog: Don't suggest field name that already exists
See issue #460.
This commit is contained in:
@@ -419,7 +419,20 @@ void EditTableDialog::addField()
|
||||
{
|
||||
QTreeWidgetItem *tbitem = new QTreeWidgetItem(ui->treeWidget);
|
||||
tbitem->setFlags(tbitem->flags() | Qt::ItemIsEditable);
|
||||
tbitem->setText(kName, "Field" + QString::number(ui->treeWidget->topLevelItemCount()));
|
||||
|
||||
// Find an unused name for the field by starting with 'Fieldx' where x is the number of fields + 1.
|
||||
// If this name happens to exist already, increase x by one until we find an unused name.
|
||||
{
|
||||
unsigned int field_number = ui->treeWidget->topLevelItemCount();
|
||||
QString field_name;
|
||||
do
|
||||
{
|
||||
field_name = "Field" + QString::number(field_number);
|
||||
field_number++;
|
||||
} while(fieldNameExists(field_name));
|
||||
tbitem->setText(kName, field_name);
|
||||
}
|
||||
|
||||
QComboBox* typeBox = new QComboBox(ui->treeWidget);
|
||||
typeBox->setProperty("column", tbitem->text(kName));
|
||||
typeBox->setEditable(true);
|
||||
@@ -600,3 +613,14 @@ void EditTableDialog::setWithoutRowid(bool without_rowid)
|
||||
|
||||
// TODO: Update table if we're editing an existing table
|
||||
}
|
||||
|
||||
bool EditTableDialog::fieldNameExists(const QString& name)
|
||||
{
|
||||
foreach(const sqlb::FieldPtr& ptr, m_table.fields())
|
||||
{
|
||||
if(ptr->name() == name)
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -41,6 +41,9 @@ private:
|
||||
|
||||
void moveCurrentField(bool down);
|
||||
|
||||
// Returns true if there already is a field of that name
|
||||
bool fieldNameExists(const QString& name);
|
||||
|
||||
private slots:
|
||||
virtual void populateFields();
|
||||
virtual void addField();
|
||||
|
||||
Reference in New Issue
Block a user