diff --git a/src/barchart/barchartmodel.cpp b/src/barchart/barchartmodel.cpp index 89a6dfe..bdee5da 100644 --- a/src/barchart/barchartmodel.cpp +++ b/src/barchart/barchartmodel.cpp @@ -39,6 +39,11 @@ void BarChartModel::insertCategory(int i, QString category) mCategory.insert(i, category); } +void BarChartModel::removeCategory(int i) +{ + mCategory.removeAt(i); +} + QBarSet* BarChartModel::setAt(int index) { return mDataModel.at(index); diff --git a/src/barchart/barchartmodel_p.h b/src/barchart/barchartmodel_p.h index bdef70f..14608fe 100644 --- a/src/barchart/barchartmodel_p.h +++ b/src/barchart/barchartmodel_p.h @@ -24,6 +24,7 @@ public: void removeBarSet(QBarSet *set); void insertBarSet(int i, QBarSet *set); void insertCategory(int i, QString category); + void removeCategory(int i); QBarSet *setAt(int index); QList barSets(); diff --git a/src/barchart/qbarseries.cpp b/src/barchart/qbarseries.cpp index 79d8fea..e54a57c 100644 --- a/src/barchart/qbarseries.cpp +++ b/src/barchart/qbarseries.cpp @@ -80,6 +80,11 @@ void QBarSeries::insertCategory(int i, QString category) mModel->insertCategory(i, category); } +void QBarSeries::removeCategory(int i) +{ + mModel->removeCategory(i); +} + /*! Returns number of sets in series. */ @@ -343,9 +348,14 @@ void QBarSeries::modelDataAdded(QModelIndex /*parent*/, int start, int /*end*/) emit restructuredBar(1); } -void QBarSeries::modelDataRemoved(QModelIndex /*parent*/, int /*start*/, int /*end*/) +void QBarSeries::modelDataRemoved(QModelIndex /*parent*/, int start, int /*end*/) { - // + removeCategory(start); + for (int i = 0; i <= m_mapBarTop - m_mapBarBottom; i++) + { + barsetAt(i)->removeValue(start); + } + emit restructuredBar(1); } void QBarSeries::barsetChanged() diff --git a/src/barchart/qbarseries.h b/src/barchart/qbarseries.h index 9a0e33c..6adf571 100644 --- a/src/barchart/qbarseries.h +++ b/src/barchart/qbarseries.h @@ -23,6 +23,7 @@ public: void removeBarSet(QBarSet *set); // Releases ownership, doesn't delete set void insertBarSet(int i, QBarSet *set); void insertCategory(int i, QString category); + void removeCategory(int i); int barsetCount(); int categoryCount(); QList barSets(); diff --git a/src/barchart/qbarset.cpp b/src/barchart/qbarset.cpp index 3c579f3..a53cdd3 100644 --- a/src/barchart/qbarset.cpp +++ b/src/barchart/qbarset.cpp @@ -91,6 +91,11 @@ void QBarSet::insertValue(int i, qreal value) mValues.insert(i, value); } +void QBarSet::removeValue(int i) +{ + mValues.removeAt(i); +} + /*! Returns count of values in set. */ diff --git a/src/barchart/qbarset.h b/src/barchart/qbarset.h index ce0af59..8206b8d 100644 --- a/src/barchart/qbarset.h +++ b/src/barchart/qbarset.h @@ -17,6 +17,7 @@ public: QString name(); QBarSet& operator << (const qreal &value); // appends new value to set void insertValue(int i, qreal value); + void removeValue(int i); // TODO: remove indices eventually. Use as internal? int count(); // count of values in set