aboutsummaryrefslogtreecommitdiffstats
path: root/qt-ui/profile
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tomaz.canabrava@intel.com>2014-02-15 21:55:31 -0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-02-15 17:16:15 -0800
commit0c5fd7db8eac11d74d27098b6f38d22e174f5439 (patch)
tree19ae1bc153615a464604317eb0c121709bf43d76 /qt-ui/profile
parentfc55b2abfea6079c730688566bd2452e903cec30 (diff)
downloadsubsurface-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.cpp26
-rw-r--r--qt-ui/profile/divecartesianaxis.h3
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 {