diff options
author | Tomaz Canabrava <tomaz.canabrava@intel.com> | 2014-02-15 21:55:31 -0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-02-15 17:16:15 -0800 |
commit | 0c5fd7db8eac11d74d27098b6f38d22e174f5439 (patch) | |
tree | 19ae1bc153615a464604317eb0c121709bf43d76 /qt-ui/profile | |
parent | fc55b2abfea6079c730688566bd2452e903cec30 (diff) | |
download | subsurface-0c5fd7db8eac11d74d27098b6f38d22e174f5439.tar.gz |
New template-based-function: remove the uneeded items on a QList.
This function is for non-duplication of code for different QLists, since I
now have Texts and Lines, I needed to make the code in a way that it
worked without dupplication.
It's a pretty standard use of templates, I think that even the C guys will
not be offended by it. :)
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui/profile')
-rw-r--r-- | qt-ui/profile/divecartesianaxis.cpp | 26 | ||||
-rw-r--r-- | qt-ui/profile/divecartesianaxis.h | 3 |
2 files changed, 22 insertions, 7 deletions
diff --git a/qt-ui/profile/divecartesianaxis.cpp b/qt-ui/profile/divecartesianaxis.cpp index dbcd82306..c272ffe70 100644 --- a/qt-ui/profile/divecartesianaxis.cpp +++ b/qt-ui/profile/divecartesianaxis.cpp @@ -64,7 +64,8 @@ DiveCartesianAxis::DiveCartesianAxis() : QObject(), interval(1), labelScale(1.0), tick_size(0), - textVisibility(true) + textVisibility(true), + line_size(-1) { setPen(gridPen()); } @@ -74,6 +75,11 @@ DiveCartesianAxis::~DiveCartesianAxis() } +void DiveCartesianAxis::setLineSize(qreal lineSize) +{ + line_size = lineSize; +} + void DiveCartesianAxis::setOrientation(Orientation o) { orientation = o; @@ -95,6 +101,15 @@ void DiveCartesianAxis::setTextVisible(bool arg1) } } +template<typename T> void emptyList( QList<T*>& list, double steps){ + if (!list.isEmpty() && list.size() > steps) { + while (list.size() > steps) { + T *removedItem = list.takeLast(); + Animations::animDelete(removedItem); + } + } +} + void DiveCartesianAxis::updateTicks() { if (!scene()) @@ -108,12 +123,9 @@ void DiveCartesianAxis::updateTicks() if (steps < 1) return; - if (!labels.isEmpty() && labels.size() > steps) { - while (labels.size() > steps) { - DiveTextItem *removedText = labels.takeLast(); - Animations::animDelete(removedText); - } - } + emptyList(labels, steps); + emptyList(lines, steps); + // Move the remaining Ticks / Text to it's corerct position // Regartind the possibly new values for the Axis qreal begin, stepSize; diff --git a/qt-ui/profile/divecartesianaxis.h b/qt-ui/profile/divecartesianaxis.h index 58468f209..7db47ae9d 100644 --- a/qt-ui/profile/divecartesianaxis.h +++ b/qt-ui/profile/divecartesianaxis.h @@ -37,6 +37,7 @@ public: void setTextColor(const QColor& color); void animateChangeLine(const QLineF& newLine); void setTextVisible(bool arg1); + void setLineSize(qreal lineSize); int unitSystem; public slots: virtual void updateTicks(); @@ -49,6 +50,7 @@ protected: virtual QColor colorForValue(double value); Orientation orientation; QList<DiveTextItem*> labels; + QList<DiveLineItem*> lines; double min; double max; double interval; @@ -56,6 +58,7 @@ protected: QColor textColor; bool textVisibility; double labelScale; + qreal line_size; }; class DepthAxis : public DiveCartesianAxis { |