From f085393232f29237e7d6bfb1469d77a78e4a511a Mon Sep 17 00:00:00 2001 From: Aleks Kissinger Date: Mon, 1 Oct 2018 17:46:11 +0200 Subject: moving properties up and down --- src/data/graphelementdata.cpp | 36 ++++++++++++++++++++++++++++++++++++ src/data/graphelementdata.h | 5 +++++ 2 files changed, 41 insertions(+) (limited to 'src/data') diff --git a/src/data/graphelementdata.cpp b/src/data/graphelementdata.cpp index 25ba08e..b478842 100644 --- a/src/data/graphelementdata.cpp +++ b/src/data/graphelementdata.cpp @@ -110,6 +110,42 @@ int GraphElementData::indexOfKey(QString key) return -1; } +bool GraphElementData::removeRows(int row, int /*count*/, const QModelIndex &parent) +{ + if (row >= 0 && row < _properties.length()) { + beginRemoveRows(parent, row, row+1); + _properties.remove(row); + endRemoveRows(); + return true; + } else { + return false; + } +} + +bool GraphElementData::moveRows(const QModelIndex &sourceParent, + int sourceRow, + int /*count*/, + const QModelIndex &destinationParent, + int destinationRow) +{ + if (sourceRow >= 0 && sourceRow < _properties.length() && + destinationRow >= 0 && destinationRow <= _properties.length()) + { + beginMoveRows(sourceParent, sourceRow, sourceRow, destinationParent, destinationRow); + GraphElementProperty p = _properties[sourceRow]; + _properties.remove(sourceRow); + if (sourceRow < destinationRow) { + _properties.insert(destinationRow - 1, p); + } else { + _properties.insert(destinationRow, p); + } + endMoveRows(); + return true; + } else { + return false; + } +} + QVariant GraphElementData::data(const QModelIndex &index, int role) const { if (role == Qt::DisplayRole || role == Qt::EditRole) { diff --git a/src/data/graphelementdata.h b/src/data/graphelementdata.h index acaada7..f48f228 100644 --- a/src/data/graphelementdata.h +++ b/src/data/graphelementdata.h @@ -43,6 +43,11 @@ public: QString property(QString key); bool atom(QString atom); int indexOfKey(QString key); + bool removeRows(int row, int count, const QModelIndex &parent) override; + bool moveRows(const QModelIndex &sourceParent, + int sourceRow, int, + const QModelIndex &destinationParent, + int destinationRow) override; QVariant data(const QModelIndex &index, int role) const override; QVariant headerData(int section, Qt::Orientation orientation, -- cgit v1.2.3