diff options
author | Lukáš Lalinský <lalinsky@gmail.com> | 2008-12-11 14:24:43 +0100 |
---|---|---|
committer | Lukáš Lalinský <lalinsky@gmail.com> | 2008-12-11 14:24:43 +0100 |
commit | cc062cd6002ba1805e2cb3fb86afeca3a7a5d6fa (patch) | |
tree | 3ab46265c647bc081e058af5ff5bd09312afc04c | |
parent | 23631c63e5977b908e899ce4c69a6cd4856d7d0c (diff) | |
download | dbmodel-cc062cd6002ba1805e2cb3fb86afeca3a7a5d6fa.tar.gz dbmodel-cc062cd6002ba1805e2cb3fb86afeca3a7a5d6fa.tar.bz2 |
Easier column adding
-rw-r--r-- | src/items/database/columnlistmodel.cpp | 16 | ||||
-rw-r--r-- | src/items/database/databasecommands.cpp | 7 | ||||
-rw-r--r-- | src/items/database/databasecommands.h | 4 | ||||
-rw-r--r-- | src/items/database/databasetableproperties.cpp | 5 |
4 files changed, 23 insertions, 9 deletions
diff --git a/src/items/database/columnlistmodel.cpp b/src/items/database/columnlistmodel.cpp index 7e9c664..940115f 100644 --- a/src/items/database/columnlistmodel.cpp +++ b/src/items/database/columnlistmodel.cpp @@ -17,6 +17,7 @@ #include <QDebug> #include "columnlistmodel.h" #include "diagramdocument.h" +#include "databasecommands.h" #include "databasetable.h" #include "commands.h" #include "column.h" @@ -51,7 +52,7 @@ ColumnListModel::rowCount(const QModelIndex &parent) const { if (parent.isValid()) return 0; - return m_columnList ? m_columnList->columnCount() : 0; + return m_columnList ? m_columnList->columnCount() + 1 : 0; } int @@ -67,6 +68,9 @@ ColumnListModel::data(const QModelIndex &index, int role) const { if (m_columnList) { Q_ASSERT(index.isValid()); + if (index.row() == m_columnList->columnCount()) { + return QVariant(); + } Column *column = m_columnList->column(index.row()); if (role == Qt::DisplayRole || role == Qt::EditRole) { if (index.column() == 0) { @@ -96,7 +100,15 @@ ColumnListModel::setData(const QModelIndex &index, const QVariant &value, int ro { if (m_columnList) { Q_ASSERT(index.isValid()); - Column *column = m_columnList->column(index.row()); + Column *column; + if (index.row() == m_columnList->columnCount()) { + column = new Column(); + m_columnList->table()->document()->undoStack()->push( + new AddColumnCommand(m_columnList, column)); + } + else { + column = m_columnList->column(index.row()); + } if (role == Qt::DisplayRole || role == Qt::EditRole) { QString text = value.toString(); if (index.column() == 0) { diff --git a/src/items/database/databasecommands.cpp b/src/items/database/databasecommands.cpp index 2f33666..7156d4a 100644 --- a/src/items/database/databasecommands.cpp +++ b/src/items/database/databasecommands.cpp @@ -23,10 +23,11 @@ #include "column.h" -AddColumnCommand::AddColumnCommand(ColumnList *columnList, QUndoCommand *parent) - : QUndoCommand(parent), m_columnList(columnList) +AddColumnCommand::AddColumnCommand(ColumnList *columnList, Column *column, QUndoCommand *parent) + : QUndoCommand(parent), m_columnList(columnList), m_column(column) { - m_column = new Column(); + if (!m_column) + m_column = new Column(); m_index = columnList->columnCount(); } diff --git a/src/items/database/databasecommands.h b/src/items/database/databasecommands.h index 82a5aba..bd5743e 100644 --- a/src/items/database/databasecommands.h +++ b/src/items/database/databasecommands.h @@ -26,11 +26,11 @@ class DatabaseTable; class AddColumnCommand : public QUndoCommand { public: - AddColumnCommand(ColumnList *columnList, QUndoCommand *parent = 0); + AddColumnCommand(ColumnList *columnList, Column *column = 0, QUndoCommand *parent = 0); ~AddColumnCommand(); void undo(); void redo(); - int index() { return m_index; } + int index() const { return m_index; } private: ColumnList *m_columnList; diff --git a/src/items/database/databasetableproperties.cpp b/src/items/database/databasetableproperties.cpp index 4c7b138..9b92f13 100644 --- a/src/items/database/databasetableproperties.cpp +++ b/src/items/database/databasetableproperties.cpp @@ -142,8 +142,9 @@ DatabaseTableProperties::updateColumnSelection() } else { int index = columns[0]; - d->removeColumnButton->setEnabled(true); + int lastIndex = currentTable()->columnList()->columnCount() - 1; + d->removeColumnButton->setEnabled(index >= 0 && index <= lastIndex); d->moveColumnUpButton->setEnabled(index > 0); - d->moveColumnDownButton->setEnabled(index + 1 < currentTable()->columnList()->columnCount()); + d->moveColumnDownButton->setEnabled(index < lastIndex); } } |