summaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.h
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.h')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.h113
1 files changed, 113 insertions, 0 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.h
new file mode 100644
index 0000000..c567e1a
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.h
@@ -0,0 +1,113 @@
+#ifndef COLUMNDIALOG_H
+#define COLUMNDIALOG_H
+
+#include "parser/ast/sqlitecreatetable.h"
+#include "common/extactioncontainer.h"
+#include "constraintdialog.h"
+#include "guiSQLiteStudio_global.h"
+#include <QDialog>
+#include <QPointer>
+
+class ColumnDialogConstraintsModel;
+class QCheckBox;
+class QToolButton;
+
+namespace Ui {
+ class ColumnDialog;
+}
+
+class GUI_API_EXPORT ColumnDialog : public QDialog, public ExtActionContainer
+{
+ Q_OBJECT
+
+ public:
+ enum Action
+ {
+ ADD_CONSTRAINT,
+ EDIT_CONSTRAINT,
+ DEL_CONSTRAINT,
+ MOVE_CONSTRAINT_UP,
+ MOVE_CONSTRAINT_DOWN,
+ ADD_PK,
+ ADD_FK,
+ ADD_UNIQUE,
+ ADD_CHECK,
+ ADD_DEFAULT,
+ ADD_NOT_NULL,
+ ADD_COLLATE
+ };
+
+ enum ToolBar
+ {
+ };
+
+ explicit ColumnDialog(Db* db, QWidget *parent = 0);
+ ~ColumnDialog();
+
+ void init();
+ void setColumn(SqliteCreateTable::Column* value);
+ SqliteCreateTable::Column* getModifiedColumn();
+ QToolBar* getToolBar(int toolbar) const;
+
+ protected:
+ void changeEvent(QEvent *e);
+ void createActions();
+ void setupDefShortcuts();
+
+ private:
+ void addConstraint(ConstraintDialog::Constraint mode);
+ void setupConstraintCheckBoxes();
+ void editConstraint(SqliteCreateTable::Column::Constraint* constraint);
+ void delConstraint(const QModelIndex& idx);
+ void configureConstraint(SqliteCreateTable::Column::Constraint::Type type);
+ void addEmptyConstraint(SqliteCreateTable::Column::Constraint::Type type);
+ void delAllConstraint(SqliteCreateTable::Column::Constraint::Type type);
+ void constraintToggled(SqliteCreateTable::Column::Constraint::Type type, bool enabled);
+ void updateConstraintState(SqliteCreateTable::Column::Constraint* constraint);
+ QCheckBox* getCheckBoxForConstraint(SqliteCreateTable::Column::Constraint* constraint);
+ QToolButton* getToolButtonForConstraint(SqliteCreateTable::Column::Constraint* constraint);
+ bool isUnofficialSqlite2Constraint(SqliteCreateTable::Column::Constraint* constraint);
+
+ Ui::ColumnDialog *ui = nullptr;
+ SqliteCreateTable::ColumnPtr column;
+ ColumnDialogConstraintsModel* constraintsModel = nullptr;
+ QCheckBox* modeCheckBox = nullptr;
+ Db* db = nullptr;
+
+ private slots:
+ void updateConstraintsToolbarState();
+ void updateState();
+ void addConstraint();
+ void editConstraint();
+ void editConstraint(const QModelIndex& idx);
+ void delConstraint();
+ void moveConstraintUp();
+ void moveConstraintDown();
+ void addPk();
+ void addFk();
+ void addUnique();
+ void addCheck();
+ void addCollate();
+ void addNotNull();
+ void addDefault();
+ void configurePk();
+ void configureFk();
+ void configureUnique();
+ void configureCheck();
+ void configureCollate();
+ void configureNotNull();
+ void configureDefault();
+ void pkToggled(bool enabled);
+ void fkToggled(bool enabled);
+ void uniqueToggled(bool enabled);
+ void checkToggled(bool enabled);
+ void collateToggled(bool enabled);
+ void notNullToggled(bool enabled);
+ void defaultToggled(bool enabled);
+ void switchMode(bool advanced);
+ void updateConstraints();
+ void updateConstraint(SqliteCreateTable::Column::Constraint* constraint);
+ void updateDataType();
+};
+
+#endif // COLUMNDIALOG_H