summaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/constraints/tableprimarykeypanel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/constraints/tableprimarykeypanel.cpp')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/constraints/tableprimarykeypanel.cpp83
1 files changed, 83 insertions, 0 deletions
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 <QDebug>
+
+TablePrimaryKeyPanel::TablePrimaryKeyPanel(QWidget *parent) :
+ TablePrimaryKeyAndUniquePanel(parent)
+{
+}
+
+void TablePrimaryKeyPanel::storeConfiguration()
+{
+ TablePrimaryKeyAndUniquePanel::storeConfiguration();
+
+ if (constraint.isNull())
+ return;
+
+ // Type
+ SqliteCreateTable::Constraint* constr = dynamic_cast<SqliteCreateTable::Constraint*>(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<SqliteCreateTable::Constraint*>(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<QCheckBox*>(item);
+ if (cb->isChecked())
+ columns << cb->text();
+ }
+
+ if (columns.size() != 1)
+ {
+ ui->autoIncrCheckBox->setChecked(false);
+ ui->autoIncrCheckBox->setEnabled(false);
+ return;
+ }
+
+ SqliteCreateTable* createTable = dynamic_cast<SqliteCreateTable*>(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);
+}