aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.cpp')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.cpp46
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();