Transform the DiveProfileItem to an Abstract Generalization

The DiveProfileItem contained much of the complexity and
algorithms for almost all line-based items on the canvas,
so I transformed that to a general abstraction and implemented
a new DiveProfileItem that uses it. this should reduce a
bit of code since the implementation of the PP Graphs, Temperature
Cylinder Pressure and maybe a few others will only need to
reimplement the paint() and the modelDataChanged() methods.
The rest is ready.

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-16 16:21:23 -02:00 committed by Dirk Hohndel
parent 1f80788286
commit 254beef5d4
4 changed files with 37 additions and 27 deletions

View file

@ -21,22 +21,22 @@
class DiveCartesianAxis;
class QAbstractTableModel;
class DiveProfileItem : public QObject, public QGraphicsPolygonItem{
class AbstractProfilePolygonItem : public QObject, public QGraphicsPolygonItem{
Q_OBJECT
Q_PROPERTY(QPointF pos WRITE setPos READ pos)
Q_PROPERTY(qreal x WRITE setX READ x)
Q_PROPERTY(qreal y WRITE setY READ y)
public:
DiveProfileItem();
AbstractProfilePolygonItem();
void setVerticalAxis(DiveCartesianAxis *vertical);
void setHorizontalAxis(DiveCartesianAxis *horizontal);
void setModel(QAbstractTableModel *model);
void setHorizontalDataColumn(int column);
void setVerticalDataColumn(int column);
virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0);
virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0) = 0;
public slots:
void modelDataChanged();
private:
virtual void modelDataChanged();
protected:
DiveCartesianAxis *hAxis;
DiveCartesianAxis *vAxis;
QAbstractTableModel *dataModel;
@ -44,5 +44,11 @@ private:
int vDataColumn;
};
class DiveProfileItem : public AbstractProfilePolygonItem{
Q_OBJECT
public:
virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0);
virtual void modelDataChanged();
};
#endif