summaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.h
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.h')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.h
new file mode 100644
index 0000000..d8e7ed4
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.h
@@ -0,0 +1,62 @@
+#ifndef TRIGGERDIALOG_H
+#define TRIGGERDIALOG_H
+
+#include "db/db.h"
+#include "parser/ast/sqlitecreatetrigger.h"
+#include "guiSQLiteStudio_global.h"
+#include <QDialog>
+
+namespace Ui {
+ class TriggerDialog;
+}
+
+class GUI_API_EXPORT TriggerDialog : public QDialog
+{
+ Q_OBJECT
+
+ public:
+ explicit TriggerDialog(Db* db, QWidget *parent = 0);
+ ~TriggerDialog();
+
+ void setParentTable(const QString& name);
+ void setParentView(const QString& name);
+ void setTrigger(const QString& name);
+
+ protected:
+ void changeEvent(QEvent *e);
+
+ private:
+ void init();
+ void initTrigger();
+ void parseDdl();
+ void readTrigger();
+ void setupVirtualSqls();
+ void readColumns();
+ QString getTargetObjectName() const;
+ void rebuildTrigger();
+
+ QString originalTriggerName;
+ QString trigger;
+ QString table;
+ QString view;
+ Db* db = nullptr;
+ bool forTable = true;
+ bool existingTrigger = false;
+ QStringList targetColumns;
+ QStringList selectedColumns;
+ QString ddl;
+ SqliteCreateTriggerPtr createTrigger;
+ Ui::TriggerDialog *ui = nullptr;
+
+ private slots:
+ void updateState();
+ void updateValidation();
+ void showColumnsDialog();
+ void updateDdlTab(int tabIdx);
+ void tableChanged(const QString& newValue);
+
+ public slots:
+ void accept();
+};
+
+#endif // TRIGGERDIALOG_H