From 7167ce41b61d2ba2cdb526777a4233eb84a3b66a Mon Sep 17 00:00:00 2001 From: Unit 193 Date: Sat, 6 Dec 2014 17:33:25 -0500 Subject: Imported Upstream version 2.99.6 --- .../constraints/tableprimarykeypanel.cpp | 83 ++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 SQLiteStudio3/guiSQLiteStudio/constraints/tableprimarykeypanel.cpp (limited to 'SQLiteStudio3/guiSQLiteStudio/constraints/tableprimarykeypanel.cpp') diff --git a/SQLiteStudio3/guiSQLiteStudio/constraints/tableprimarykeypanel.cpp b/SQLiteStudio3/guiSQLiteStudio/constraints/tableprimarykeypanel.cpp new file mode 100644 index 0000000..c538990 --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/constraints/tableprimarykeypanel.cpp @@ -0,0 +1,83 @@ +#include "tableprimarykeypanel.h" +#include "ui_tablepkanduniquepanel.h" +#include + +TablePrimaryKeyPanel::TablePrimaryKeyPanel(QWidget *parent) : + TablePrimaryKeyAndUniquePanel(parent) +{ +} + +void TablePrimaryKeyPanel::storeConfiguration() +{ + TablePrimaryKeyAndUniquePanel::storeConfiguration(); + + if (constraint.isNull()) + return; + + // Type + SqliteCreateTable::Constraint* constr = dynamic_cast(constraint.data()); + constr->type = SqliteCreateTable::Constraint::PRIMARY_KEY; + + // Autoincr + constr->autoincrKw = ui->autoIncrCheckBox->isChecked(); +} + + +void TablePrimaryKeyPanel::readConstraint() +{ + TablePrimaryKeyAndUniquePanel::readConstraint(); + + if (constraint.isNull()) + return; + + SqliteCreateTable::Constraint* constr = dynamic_cast(constraint.data()); + + // Autoincr + if (constr->autoincrKw) + ui->autoIncrCheckBox->setChecked(true); +} + +void TablePrimaryKeyPanel::updateState() +{ + TablePrimaryKeyAndUniquePanel::updateState(); + + // Autoincr + QStringList columns; + QWidget* item = nullptr; + QCheckBox* cb = nullptr; + for (int i = 0; i < totalColumns; i++) + { + item = columnsLayout->itemAtPosition(i, 0)->widget(); + cb = qobject_cast(item); + if (cb->isChecked()) + columns << cb->text(); + } + + if (columns.size() != 1) + { + ui->autoIncrCheckBox->setChecked(false); + ui->autoIncrCheckBox->setEnabled(false); + return; + } + + SqliteCreateTable* createTable = dynamic_cast(constraint->parentStatement()); + QString colName = columns.first(); + SqliteCreateTable::Column* column = createTable->getColumn(colName); + if (!column) + { + qCritical() << "Could not find column when checking for AUTOINCREMENT checkbox state:" << colName + << "\nCreateTable statement:" << createTable->detokenize(); + ui->autoIncrCheckBox->setChecked(false); + ui->autoIncrCheckBox->setEnabled(false); + return; + } + + if (!column->type || column->type->detokenize().trimmed().compare("INTEGER", Qt::CaseInsensitive) != 0) + { + ui->autoIncrCheckBox->setChecked(false); + ui->autoIncrCheckBox->setEnabled(false); + return; + } + + ui->autoIncrCheckBox->setEnabled(true); +} -- cgit v1.2.3