summaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/windows/tableconstraintsmodel.h
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@ubuntu.com>2014-12-06 17:33:25 -0500
committerLibravatarUnit 193 <unit193@ubuntu.com>2014-12-06 17:33:25 -0500
commit7167ce41b61d2ba2cdb526777a4233eb84a3b66a (patch)
treea35c14143716e1f2c98f808c81f89426045a946f /SQLiteStudio3/guiSQLiteStudio/windows/tableconstraintsmodel.h
Imported Upstream version 2.99.6upstream/2.99.6
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/windows/tableconstraintsmodel.h')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/tableconstraintsmodel.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/tableconstraintsmodel.h b/SQLiteStudio3/guiSQLiteStudio/windows/tableconstraintsmodel.h
new file mode 100644
index 0000000..e3ee9e3
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/tableconstraintsmodel.h
@@ -0,0 +1,72 @@
+#ifndef TABLECONSTRAINTSMODEL_H
+#define TABLECONSTRAINTSMODEL_H
+
+#include "parser/ast/sqlitecreatetable.h"
+#include "guiSQLiteStudio_global.h"
+#include <QAbstractTableModel>
+#include <QPointer>
+
+class GUI_API_EXPORT TableConstraintsModel : public QAbstractTableModel
+{
+ Q_OBJECT
+ public:
+ explicit TableConstraintsModel(QObject *parent = 0);
+
+ int rowCount(const QModelIndex& parent = QModelIndex()) const;
+ int columnCount(const QModelIndex& parent = QModelIndex()) const;
+ QVariant data(const QModelIndex& index, int role) const;
+ QVariant headerData(int section, Qt::Orientation orientation, int role) const;
+ Qt::DropActions supportedDropActions() const;
+ Qt::DropActions supportedDragActions() const;
+ QStringList mimeTypes() const;
+ QMimeData* mimeData(const QModelIndexList& indexes) const;
+ bool canDropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent) const;
+ bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent);
+ Qt::ItemFlags flags(const QModelIndex& index) const;
+ bool isModified() const;
+ void setCreateTable(SqliteCreateTable* value);
+ SqliteCreateTable::Constraint* getConstraint(int constrIdx) const;
+ void replaceConstraint(int constrIdx, SqliteCreateTable::Constraint* constr);
+ void constraintModified(int constrIdx);
+ void insertConstraint(int constrIdx, SqliteCreateTable::Constraint* constr);
+ void appendConstraint(SqliteCreateTable::Constraint* constr);
+ void delConstraint(int constrIdx);
+ void moveConstraintUp(int constrIdx);
+ void moveConstraintDown(int constrIdx);
+ void moveConstraintColumnTo(int constrIdx, int newIdx);
+
+ private:
+ enum class Columns
+ {
+ TYPE,
+ NAME,
+ DETAILS
+ };
+
+ Columns getColumn(int idx) const;
+ QString getTypeLabel(SqliteCreateTable::Constraint::Type type) const;
+ QIcon getTypeIcon(SqliteCreateTable::Constraint::Type type) const;
+ QString getDetails(SqliteCreateTable::Constraint* constr) const;
+ QString getPkDetails(SqliteCreateTable::Constraint* constr) const;
+ QString getUniqueDetails(SqliteCreateTable::Constraint* constr) const;
+ QString getCheckDetails(SqliteCreateTable::Constraint* constr) const;
+ QString getFkDetails(SqliteCreateTable::Constraint* constr) const;
+ QString getConstrDetails(SqliteCreateTable::Constraint* constr, int tokenOffset) const;
+ void columnRenamed(SqliteCreateTable::Constraint* constr, const QString& oldColumn, const QString& newColumn);
+ bool handleColumnDeleted(SqliteCreateTable::Constraint* constr, const QString& column);
+
+ static const constexpr char* mimeType = "application/x-sqlitestudio-tablestructureconstraintmodel-row-index";
+
+ QPointer<SqliteCreateTable> createTable;
+ bool modified = false;
+
+ public slots:
+ void columnModified(const QString& oldColumn, SqliteCreateTable::Column* newColumn);
+ void columnDeleted(const QString& column);
+
+ signals:
+ void modifiyStateChanged();
+ void constraintOrderChanged();
+};
+
+#endif // TABLECONSTRAINTSMODEL_H