summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukáš Lalinský <lalinsky@gmail.com>2008-12-11 14:24:43 +0100
committerLukáš Lalinský <lalinsky@gmail.com>2008-12-11 14:24:43 +0100
commitcc062cd6002ba1805e2cb3fb86afeca3a7a5d6fa (patch)
tree3ab46265c647bc081e058af5ff5bd09312afc04c
parent23631c63e5977b908e899ce4c69a6cd4856d7d0c (diff)
downloaddbmodel-cc062cd6002ba1805e2cb3fb86afeca3a7a5d6fa.tar.gz
dbmodel-cc062cd6002ba1805e2cb3fb86afeca3a7a5d6fa.tar.bz2
Easier column adding
-rw-r--r--src/items/database/columnlistmodel.cpp16
-rw-r--r--src/items/database/databasecommands.cpp7
-rw-r--r--src/items/database/databasecommands.h4
-rw-r--r--src/items/database/databasetableproperties.cpp5
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);
}
}