summaryrefslogtreecommitdiff
path: root/src/items/database
diff options
context:
space:
mode:
authorLukáš Lalinský <lalinsky@gmail.com>2008-12-08 09:10:10 +0100
committerLukáš Lalinský <lalinsky@gmail.com>2008-12-08 09:10:10 +0100
commit05ef6e8c7847f06d27c2001d1845367c674cdedb (patch)
tree8edad440efbbb15687e09d179e577ac9812ceb80 /src/items/database
parentdb090e65b3041b5856d9318a29ce44fb985376e7 (diff)
downloaddbmodel-05ef6e8c7847f06d27c2001d1845367c674cdedb.tar.xz
Move database-specific commands into items/database/databasecommands.cpp
Diffstat (limited to 'src/items/database')
-rw-r--r--src/items/database/columnlistview.cpp2
-rw-r--r--src/items/database/database.pri2
-rw-r--r--src/items/database/databasecommands.cpp96
-rw-r--r--src/items/database/databasecommands.h67
4 files changed, 166 insertions, 1 deletions
diff --git a/src/items/database/columnlistview.cpp b/src/items/database/columnlistview.cpp
index dd73fb6..c491467 100644
--- a/src/items/database/columnlistview.cpp
+++ b/src/items/database/columnlistview.cpp
@@ -17,7 +17,7 @@
#include "columnlist.h"
#include "columnlistmodel.h"
#include "columnlistview.h"
-#include "commands.h"
+#include "databasecommands.h"
#include "diagramdocument.h"
ColumnListView::ColumnListView(QWidget *parent)
diff --git a/src/items/database/database.pri b/src/items/database/database.pri
index f673ff6..53d4f6f 100644
--- a/src/items/database/database.pri
+++ b/src/items/database/database.pri
@@ -1,6 +1,7 @@
DEPENDPATH += $$PWD
SOURCES += \
+ databasecommands.cpp \
column.cpp \
columnlist.cpp \
columnlistmodel.cpp \
@@ -10,6 +11,7 @@ SOURCES += \
tableproperties.cpp
HEADERS += \
+ databasecommands.h \
column.h \
columnlist.h \
columnlistmodel.h \
diff --git a/src/items/database/databasecommands.cpp b/src/items/database/databasecommands.cpp
new file mode 100644
index 0000000..2f33666
--- /dev/null
+++ b/src/items/database/databasecommands.cpp
@@ -0,0 +1,96 @@
+// Copyright (C) 2008 Lukas Lalinsky
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+#include <QDebug>
+#include "databasecommands.h"
+#include "diagramdocument.h"
+#include "diagramconnection.h"
+#include "diagramitem.h"
+#include "databasetable.h"
+#include "column.h"
+
+
+AddColumnCommand::AddColumnCommand(ColumnList *columnList, QUndoCommand *parent)
+ : QUndoCommand(parent), m_columnList(columnList)
+{
+ m_column = new Column();
+ m_index = columnList->columnCount();
+}
+
+AddColumnCommand::~AddColumnCommand()
+{
+ if (m_column)
+ delete m_column;
+}
+
+void
+AddColumnCommand::redo()
+{
+ m_columnList->insertColumn(m_index, m_column);
+ m_column = 0;
+}
+
+void
+AddColumnCommand::undo()
+{
+ m_column = m_columnList->removeColumn(m_index);
+}
+
+
+RemoveColumnCommand::RemoveColumnCommand(ColumnList *columnList, int index, QUndoCommand *parent)
+ : QUndoCommand(parent), m_columnList(columnList), m_index(index), m_column(0)
+{
+}
+
+RemoveColumnCommand::~RemoveColumnCommand()
+{
+ if (m_column)
+ delete m_column;
+}
+
+void
+RemoveColumnCommand::redo()
+{
+ m_column = m_columnList->removeColumn(m_index);
+}
+
+void
+RemoveColumnCommand::undo()
+{
+ Q_ASSERT(m_column != 0);
+ m_columnList->insertColumn(m_index, m_column);
+ m_column = 0;
+}
+
+
+SwapColumnsCommand::SwapColumnsCommand(ColumnList *columnList, int oldIndex, int newIndex, QUndoCommand *parent)
+ : QUndoCommand(parent), m_columnList(columnList), m_oldIndex(oldIndex), m_newIndex(newIndex)
+{
+}
+
+void
+SwapColumnsCommand::redo()
+{
+ m_columnList->swapColumns(m_oldIndex, m_newIndex);
+}
+
+void
+SwapColumnsCommand::undo()
+{
+ m_columnList->swapColumns(m_newIndex, m_oldIndex);
+}
+
+
diff --git a/src/items/database/databasecommands.h b/src/items/database/databasecommands.h
new file mode 100644
index 0000000..82a5aba
--- /dev/null
+++ b/src/items/database/databasecommands.h
@@ -0,0 +1,67 @@
+// Copyright (C) 2008 Lukas Lalinsky
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+#ifndef DATABASECOMMANDS_H
+#define DATABASECOMMANDS_H
+
+#include "../../commands.h"
+
+class Column;
+class ColumnList;
+class DatabaseTable;
+
+class AddColumnCommand : public QUndoCommand
+{
+public:
+ AddColumnCommand(ColumnList *columnList, QUndoCommand *parent = 0);
+ ~AddColumnCommand();
+ void undo();
+ void redo();
+ int index() { return m_index; }
+
+private:
+ ColumnList *m_columnList;
+ int m_index;
+ Column *m_column;
+};
+
+class RemoveColumnCommand : public QUndoCommand
+{
+public:
+ RemoveColumnCommand(ColumnList *columnList, int index, QUndoCommand *parent = 0);
+ ~RemoveColumnCommand();
+ void undo();
+ void redo();
+
+private:
+ ColumnList *m_columnList;
+ int m_index;
+ Column *m_column;
+};
+
+class SwapColumnsCommand : public QUndoCommand
+{
+public:
+ SwapColumnsCommand(ColumnList *columnList, int oldIndex, int newIndex, QUndoCommand *parent = 0);
+ void undo();
+ void redo();
+
+private:
+ ColumnList *m_columnList;
+ int m_oldIndex, m_newIndex;
+};
+
+#endif