diff options
author | Tomaz Canabrava <tcanabrava@kde.org> | 2013-11-18 22:33:01 -0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-11-18 16:53:16 -0800 |
commit | 61ac0a7c8d45c0d96e75d5e55ad48c6def5f4257 (patch) | |
tree | 252ae3f888829816e2a6be0cf042ec36ccdc7761 /qt-ui | |
parent | 4433830f550f41f0c558786dfe219fcb0fcbd45f (diff) | |
download | subsurface-61ac0a7c8d45c0d96e75d5e55ad48c6def5f4257.tar.gz |
Make it posible to renumber dives.
If the user doubleclicks on the number of the dive in the dive list,
this will present to him a dialog to change that number. Pressing enter
will renumber the dive if there's no dive with the same number already.
Fixes #288
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui')
-rw-r--r-- | qt-ui/models.cpp | 49 | ||||
-rw-r--r-- | qt-ui/models.h | 8 |
2 files changed, 54 insertions, 3 deletions
diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp index 2e4a0860e..63a5fda4f 100644 --- a/qt-ui/models.cpp +++ b/qt-ui/models.cpp @@ -810,6 +810,11 @@ TreeItem::~TreeItem() qDeleteAll(children); } +Qt::ItemFlags TreeItem::flags(const QModelIndex& index) const +{ + return Qt::ItemIsEnabled | Qt::ItemIsSelectable; +} + int TreeItem::row() const { if (parent) @@ -846,6 +851,10 @@ QVariant TreeModel::data(const QModelIndex& index, int role) const return val; } +bool TreeItem::setData(const QModelIndex& index, const QVariant& value, int role) +{ +} + QModelIndex TreeModel::index(int row, int column, const QModelIndex& parent) const { @@ -995,6 +1004,34 @@ QVariant DiveItem::data(int column, int role) const return retVal; } +Qt::ItemFlags DiveItem::flags(const QModelIndex& index) const +{ + if(index.column() == NR){ + return TreeItem::flags(index) | Qt::ItemIsEditable; + } + return TreeItem::flags(index); +} + +bool DiveItem::setData(const QModelIndex& index, const QVariant& value, int role) +{ + if (role != Qt::EditRole) + return false; + if (index.column() != NR) + return false; + + int v = value.toInt(); + int i; + struct dive *d; + for_each_dive(i, d){ + if (d->number == v) + return false; + } + + dive->number = value.toInt(); + mark_divelist_changed(TRUE); + return true; +} + QString DiveItem::displayDate() const { return get_dive_date_string(dive->when); @@ -1075,7 +1112,8 @@ Qt::ItemFlags DiveTripModel::flags(const QModelIndex& index) const if (!index.isValid()) return 0; - return Qt::ItemIsEnabled | Qt::ItemIsSelectable; + TripItem *item = static_cast<TripItem*>(index.internalPointer()); + return item->flags(index); } QVariant DiveTripModel::headerData(int section, Qt::Orientation orientation, int role) const @@ -1167,6 +1205,15 @@ void DiveTripModel::setLayout(DiveTripModel::Layout layout) setupModelData(); } +bool DiveTripModel::setData(const QModelIndex& index, const QVariant& value, int role) +{ + TreeItem* item = static_cast<TreeItem*>(index.internalPointer()); + DiveItem *diveItem = dynamic_cast<DiveItem*>(item); + if(!diveItem) + return false; + return diveItem->setData(index, value, role);} + + /*#################################################################### * * Dive Computer Model diff --git a/qt-ui/models.h b/qt-ui/models.h index de9aab5ce..d7b2eedd2 100644 --- a/qt-ui/models.h +++ b/qt-ui/models.h @@ -144,6 +144,9 @@ public: virtual ~TreeItem(); TreeItem(); virtual QVariant data (int column, int role) const; + virtual bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole); + virtual Qt::ItemFlags flags(const QModelIndex &index) const; + int row() const; QList<TreeItem*> children; TreeItem *parent; @@ -155,7 +158,8 @@ struct DiveItem : public TreeItem { virtual QVariant data(int column, int role) const; struct dive* dive; - + virtual bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole); + virtual Qt::ItemFlags flags(const QModelIndex& index) const; QString displayDate() const; QString displayDuration() const; QString displayDepth() const; @@ -174,7 +178,6 @@ class TreeModel : public QAbstractItemModel public: TreeModel(QObject *parent = 0); virtual ~TreeModel(); - virtual QVariant data(const QModelIndex &index, int role) const; /*reimp*/ int rowCount(const QModelIndex &parent = QModelIndex()) const; /*reimp*/ int columnCount(const QModelIndex &parent = QModelIndex()) const; @@ -197,6 +200,7 @@ public: Qt::ItemFlags flags(const QModelIndex &index) const; virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; + virtual bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole); DiveTripModel(QObject* parent = 0); Layout layout() const; void setLayout(Layout layout); |