Add a MeanDepthItem that has 2 strings.

Dirk's implementation of the MeanDepth item was correct, but in order to
add the 2 strings to it ( one at the begin, one at the end ) I had to put
more stuff inside the ProfileWidget that's already packed with graphics
items.

So I created a new class MeanDepthItem that contains these 2 strings and
will get updated whenever the value changes.

I also fixed a math inconsistency where I changed RIGHT to LEFT.
(wich fixed a few text-placements, and broke others.)

Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Tomaz Canabrava 2014-01-22 15:08:19 -02:00 committed by Dirk Hohndel
parent f22428b345
commit 2e2a87e619
5 changed files with 47 additions and 6 deletions

View file

@ -7,6 +7,7 @@
#include "dive.h"
#include "profilegraphics.h"
#include "preferences.h"
#include "helpers.h"
#include <QPen>
#include <QPainter>
@ -384,7 +385,6 @@ void DiveCalculatedCeiling::paint(QPainter* painter, const QStyleOptionGraphicsI
QGraphicsPolygonItem::paint(painter, option, widget);
}
void DiveReportedCeiling::modelDataChanged()
{
if (!hAxis || !vAxis || !dataModel || hDataColumn == -1 || vDataColumn == -1)
@ -425,3 +425,28 @@ void DiveReportedCeiling::paint(QPainter* painter, const QStyleOptionGraphicsIte
{
QGraphicsPolygonItem::paint(painter, option, widget);
}
MeanDepthLine::MeanDepthLine()
{
leftText = new DiveTextItem(this);
leftText->setAlignment(Qt::AlignRight | Qt::AlignBottom);
leftText->setBrush(getColor(MEAN_DEPTH));
rightText = new DiveTextItem(this);
rightText->setAlignment(Qt::AlignLeft | Qt::AlignBottom);
rightText->setBrush(getColor(MEAN_DEPTH));
leftText->setPos(0, 0);
rightText->setPos(line().length(), 0);
}
void MeanDepthLine::setLine(qreal x1, qreal y1, qreal x2, qreal y2)
{
QGraphicsLineItem::setLine(x1, y1, x2, y2);
leftText->setPos(x1, 0);
rightText->setPos(x2, 0);
}
void MeanDepthLine::setMeanDepth(int value)
{
leftText->setText(get_depth_string(value, false, false));
rightText->setText(get_depth_string(value, false, false));
}

View file

@ -4,6 +4,8 @@
#include <QObject>
#include <QGraphicsPolygonItem>
#include "graphicsview-common.h"
#include "divelineitem.h"
/* This is the Profile Item, it should be used for quite a lot of things
on the profile view. The usage should be pretty simple:
@ -100,4 +102,16 @@ public:
virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0);
virtual void preferencesChanged();
};
#endif
class MeanDepthLine : public DiveLineItem {
Q_OBJECT
public:
MeanDepthLine();
void setMeanDepth(int value);
void setLine(qreal x1, qreal y1, qreal x2, qreal y2);
private:
int meanDepth;
DiveTextItem *leftText;
DiveTextItem *rightText;
};
#endif

View file

@ -59,9 +59,9 @@ void DiveTextItem::updateText()
(internalAlignFlags & Qt::AlignBottom) ? +rect.height() :
/*(internalAlignFlags & Qt::AlignVCenter ? */ +rect.height() / 4;
xPos = (internalAlignFlags & Qt::AlignLeft ) ? +rect.width() :
xPos = (internalAlignFlags & Qt::AlignLeft ) ? -rect.width() :
(internalAlignFlags & Qt::AlignHCenter) ? -rect.width()/2 :
/* (internalAlignFlags & Qt::AlignRight) */ -rect.width();
/* (internalAlignFlags & Qt::AlignRight) */ 0;
textPath.addText( xPos, yPos, fnt, internalText);
QPainterPathStroker stroker;

View file

@ -37,7 +37,7 @@ ProfileWidget2::ProfileWidget2(QWidget *parent) :
temperatureItem(NULL),
gasPressureItem(NULL),
cartesianPlane(new DiveCartesianPlane()),
meanDepth(new DiveLineItem()),
meanDepth(new MeanDepthLine()),
diveComputerText(new DiveTextItem()),
diveCeiling(NULL),
reportedCeiling(NULL)
@ -304,6 +304,7 @@ void ProfileWidget2::plotDives(QList<dive*> dives)
timeAxis->updateTicks();
cylinderPressureAxis->setMinimum(pInfo.minpressure);
cylinderPressureAxis->setMaximum(pInfo.maxpressure);
meanDepth->setMeanDepth(pInfo.meandepth);
meanDepth->animateMoveTo(3, profileYAxis->posAtValue(pInfo.meandepth));
dataModel->setDive(current_dive, pInfo);

View file

@ -16,6 +16,7 @@
#include "graphicsview-common.h"
#include "divelineitem.h"
class MeanDepthLine;
class DiveReportedCeiling;
class DiveTextItem;
class TemperatureAxis;
@ -83,7 +84,7 @@ private:
DiveTemperatureItem *temperatureItem;
DiveCartesianAxis *cylinderPressureAxis;
DiveGasPressureItem *gasPressureItem;
DiveLineItem *meanDepth;
MeanDepthLine *meanDepth;
QList<DiveEventItem*> eventItems;
DiveTextItem *diveComputerText;
DiveCalculatedCeiling *diveCeiling;