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>
This commit is contained in:
Tomaz Canabrava 2014-02-15 21:55:31 -02:00 committed by Dirk Hohndel
parent fc55b2abfe
commit 0c5fd7db8e
2 changed files with 22 additions and 7 deletions

View file

@ -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;

View file

@ -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 {