diff options
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.cpp')
| -rw-r--r-- | SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.cpp | 46 |
1 files changed, 36 insertions, 10 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.cpp index ebf9253..a217da6 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.cpp @@ -1,5 +1,6 @@ #include "columndialog.h" #include "common/unused.h" +#include "services/notifymanager.h" #include "ui_columndialog.h" #include "columndialogconstraintsmodel.h" #include "iconmanager.h" @@ -36,10 +37,6 @@ void ColumnDialog::init() ui->scale->setStrict(true, true); ui->precision->setStrict(true, true); - ui->typeCombo->addItem(""); - for (DataType::Enum type : DataType::getAllTypes()) - ui->typeCombo->addItem(DataType::toString(type)); - connect(ui->typeCombo, SIGNAL(currentTextChanged(QString)), this, SLOT(updateDataType())); constraintsModel = new ColumnDialogConstraintsModel(); @@ -54,7 +51,7 @@ void ColumnDialog::init() connect(ui->constraintsView, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(editConstraint(QModelIndex))); connect(constraintsModel, SIGNAL(constraintsChanged()), this, SLOT(updateValidations())); connect(constraintsModel, SIGNAL(constraintsChanged()), this, SLOT(updateState())); - connect(ui->typeCombo, SIGNAL(currentTextChanged(const QString&)), this, SLOT(updateValidations())); + connect(ui->typeCombo, SIGNAL(currentTextChanged(QString)), this, SLOT(updateValidations())); connect(ui->scale, SIGNAL(modified()), this, SLOT(updateValidations())); connect(ui->precision, SIGNAL(modified()), this, SLOT(updateValidations())); @@ -617,7 +614,7 @@ void ColumnDialog::updateValidations() setValidState(tb, true); } - for (SqliteCreateTable::Column::Constraint* constr : column->constraints) + for (SqliteCreateTable::Column::Constraint*& constr : column->constraints) updateConstraint(constr); updateTypeValidations(); @@ -640,11 +637,40 @@ void ColumnDialog::setColumn(SqliteCreateTable::Column* value) constraintsModel->setColumn(column.data()); ui->name->setText(value->name); - if (value->type) + + SqliteCreateTable* createTable = dynamic_cast<SqliteCreateTable*>(value->parentStatement()); + if (createTable->strict) + { + ui->typeCombo->setEditable(false); + for (DataType::Enum& type : DataType::getStrictValues()) + ui->typeCombo->addItem(DataType::toString(type)); + + ui->scale->setVisible(false); + ui->precision->setVisible(false); + ui->sizeLabel->setVisible(false); + ui->sizeCommaLabel->setVisible(false); + + if (value->type) + { + int idx = ui->typeCombo->findText(value->type->name, Qt::MatchFixedString); + if (idx > -1) + ui->typeCombo->setCurrentIndex(idx); + else + notifyError(tr("Could not match valid STRICT table datatype from declared type: %1.").arg(value->type->name)); + } + } + else { - ui->typeCombo->setEditText(value->type->name); - ui->scale->setValue(value->type->scale, false); - ui->precision->setValue(value->type->precision, false); + ui->typeCombo->addItem(""); + for (DataType::Enum& type : DataType::getAllTypesForUiDropdown()) + ui->typeCombo->addItem(DataType::toString(type)); + + if (value->type) + { + ui->typeCombo->setEditText(value->type->name); + ui->scale->setValue(value->type->scale, false); + ui->precision->setValue(value->type->precision, false); + } } updateValidations(); |
