diff options
-rw-r--r-- | qt-ui/profile/diveeventitem.cpp | 11 | ||||
-rw-r--r-- | qt-ui/profile/diveeventitem.h | 4 | ||||
-rw-r--r-- | qt-ui/profile/diveprofileitem.cpp | 33 | ||||
-rw-r--r-- | qt-ui/profile/diveprofileitem.h | 16 |
4 files changed, 37 insertions, 27 deletions
diff --git a/qt-ui/profile/diveeventitem.cpp b/qt-ui/profile/diveeventitem.cpp index a6153f96f..8709a1484 100644 --- a/qt-ui/profile/diveeventitem.cpp +++ b/qt-ui/profile/diveeventitem.cpp @@ -14,19 +14,19 @@ DiveEventItem::DiveEventItem(QObject* parent): DivePixmapItem(parent), void DiveEventItem::setHorizontalAxis(DiveCartesianAxis* axis) { hAxis = axis; - recalculate(); + recalculatePos(); } void DiveEventItem::setModel(DivePlotDataModel* model) { dataModel = model; - recalculate(); + recalculatePos(); } void DiveEventItem::setVerticalAxis(DiveCartesianAxis* axis) { vAxis = axis; - recalculate(); + recalculatePos(); } void DiveEventItem::setEvent(struct event* ev) @@ -34,7 +34,7 @@ void DiveEventItem::setEvent(struct event* ev) internalEvent = ev; setupPixmap(); setupToolTipString(); - recalculate(); + recalculatePos(); } void DiveEventItem::setupPixmap() @@ -102,12 +102,11 @@ void DiveEventItem::eventVisibilityChanged(const QString& eventName, bool visibl } -void DiveEventItem::recalculate() +void DiveEventItem::recalculatePos() { if (!vAxis || !hAxis || !internalEvent || !dataModel){ return; } - qDebug() << "Calculating."; QModelIndexList result = dataModel->match(dataModel->index(0,DivePlotDataModel::TIME), Qt::DisplayRole, internalEvent->time.seconds ); if(result.isEmpty()){ hide(); diff --git a/qt-ui/profile/diveeventitem.h b/qt-ui/profile/diveeventitem.h index 896036e8d..d729daa9f 100644 --- a/qt-ui/profile/diveeventitem.h +++ b/qt-ui/profile/diveeventitem.h @@ -16,10 +16,10 @@ public: void setVerticalAxis(DiveCartesianAxis *axis); void setHorizontalAxis(DiveCartesianAxis *axis); void setModel(DivePlotDataModel *model); - void recalculate(); private: void setupToolTipString(); - void setupPixmap(); + void recalculatePos(); + void setupPixmap(); DiveCartesianAxis *vAxis; DiveCartesianAxis *hAxis; DivePlotDataModel *dataModel; diff --git a/qt-ui/profile/diveprofileitem.cpp b/qt-ui/profile/diveprofileitem.cpp index 398d71220..1a96d7009 100644 --- a/qt-ui/profile/diveprofileitem.cpp +++ b/qt-ui/profile/diveprofileitem.cpp @@ -7,43 +7,43 @@ #include <QPainter> #include <QLinearGradient> -DiveProfileItem::DiveProfileItem(): QObject(), QGraphicsPolygonItem(), +AbstractProfilePolygonItem::AbstractProfilePolygonItem(): QObject(), QGraphicsPolygonItem(), hAxis(NULL), vAxis(NULL), dataModel(NULL), hDataColumn(-1), vDataColumn(-1) { } -void DiveProfileItem::setHorizontalAxis(DiveCartesianAxis* horizontal) +void AbstractProfilePolygonItem::setHorizontalAxis(DiveCartesianAxis* horizontal) { hAxis = horizontal; modelDataChanged(); } -void DiveProfileItem::setHorizontalDataColumn(int column) +void AbstractProfilePolygonItem::setHorizontalDataColumn(int column) { hDataColumn = column; modelDataChanged(); } -void DiveProfileItem::setModel(QAbstractTableModel* model) +void AbstractProfilePolygonItem::setModel(QAbstractTableModel* model) { dataModel = model; modelDataChanged(); } -void DiveProfileItem::setVerticalAxis(DiveCartesianAxis* vertical) +void AbstractProfilePolygonItem::setVerticalAxis(DiveCartesianAxis* vertical) { vAxis = vertical; modelDataChanged(); } -void DiveProfileItem::setVerticalDataColumn(int column) +void AbstractProfilePolygonItem::setVerticalDataColumn(int column) { vDataColumn = column; modelDataChanged(); } -void DiveProfileItem::modelDataChanged() +void AbstractProfilePolygonItem::modelDataChanged() { // We don't have enougth data to calculate things, quit. if (!hAxis || !vAxis || !dataModel || hDataColumn == -1 || vDataColumn == -1) @@ -62,13 +62,6 @@ void DiveProfileItem::modelDataChanged() poly.append(point); } setPolygon(poly); - - // This is the blueish gradient that the Depth Profile should have. - // It's a simple QLinearGradient with 2 stops, starting from top to bottom. - QLinearGradient pat(0, poly.boundingRect().top(), 0, poly.boundingRect().bottom()); - pat.setColorAt(1, getColor(DEPTH_BOTTOM)); - pat.setColorAt(0, getColor(DEPTH_TOP)); - setBrush(QBrush(pat)); } void DiveProfileItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) { @@ -92,3 +85,15 @@ void DiveProfileItem::paint(QPainter* painter, const QStyleOptionGraphicsItem* o painter->drawLine(polygon()[i-1],polygon()[i]); } } + +void DiveProfileItem::modelDataChanged(){ + AbstractProfilePolygonItem::modelDataChanged(); + if(polygon().isEmpty()) + return; + // This is the blueish gradient that the Depth Profile should have. + // It's a simple QLinearGradient with 2 stops, starting from top to bottom. + QLinearGradient pat(0, polygon().boundingRect().top(), 0, polygon().boundingRect().bottom()); + pat.setColorAt(1, getColor(DEPTH_BOTTOM)); + pat.setColorAt(0, getColor(DEPTH_TOP)); + setBrush(QBrush(pat)); +}
\ No newline at end of file diff --git a/qt-ui/profile/diveprofileitem.h b/qt-ui/profile/diveprofileitem.h index 1e8c0b296..171dec053 100644 --- a/qt-ui/profile/diveprofileitem.h +++ b/qt-ui/profile/diveprofileitem.h @@ -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
\ No newline at end of file |