aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.cpp
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2023-04-30 18:31:18 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2023-04-30 18:31:18 -0400
commit4de57f628bc74f00ba1885e91c84ea07c5405d8f (patch)
tree5d91900751e826d491ff1b2ebc571a787e84f864 /SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.cpp
parent74d881cefa9097e58e129e37b9c44d680d8c7dfe (diff)
parent3565aad630864ecdbe53fdaa501ea708555b3c7c (diff)
Update upstream source from tag 'upstream/3.4.4+dfsg'
Update to upstream version '3.4.4+dfsg' with Debian dir 482614bd23f0ef52dabc9803477204ad88e917ed
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();