diff options
author | Tomaz Canabrava <tcanabrava@kde.org> | 2014-01-19 17:19:00 -0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-01-19 21:36:55 -0800 |
commit | 9d2344d01b05dab1c1d5d59893b980366a041e17 (patch) | |
tree | d8cda80488a22c5c9e4d32b49bf82bef4aaee07e /qt-ui/profile | |
parent | 72b5bbce6e2f177af0b769dbafd0db17dd6a1899 (diff) | |
download | subsurface-9d2344d01b05dab1c1d5d59893b980366a041e17.tar.gz |
Fix the positioning of the Labels using the new DiveTextItem
This uses a combination of items on the canvas which makes it easier to
position it where I want.
This also broke the other texts because I forgot about them. I will
fix that on the next commit.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui/profile')
-rw-r--r-- | qt-ui/profile/divecartesianaxis.cpp | 86 | ||||
-rw-r--r-- | qt-ui/profile/divecartesianaxis.h | 4 | ||||
-rw-r--r-- | qt-ui/profile/divetextitem.cpp | 7 | ||||
-rw-r--r-- | qt-ui/profile/profilewidget2.cpp | 2 |
4 files changed, 70 insertions, 29 deletions
diff --git a/qt-ui/profile/divecartesianaxis.cpp b/qt-ui/profile/divecartesianaxis.cpp index 043f193ea..ea5e97f14 100644 --- a/qt-ui/profile/divecartesianaxis.cpp +++ b/qt-ui/profile/divecartesianaxis.cpp @@ -27,7 +27,7 @@ void DiveCartesianAxis::setTextColor(const QColor& color) textColor = color; } -DiveCartesianAxis::DiveCartesianAxis() : orientation(LeftToRight) +DiveCartesianAxis::DiveCartesianAxis() : orientation(LeftToRight), showTicks(true), showText(true) { } @@ -50,16 +50,30 @@ void DiveCartesianAxis::updateTicks() double steps = (max - min) / interval; double currValue = min; + if (!showTicks && !ticks.empty()){ + qDeleteAll(ticks); + ticks.clear(); + } + + if(!showText && !labels.empty()){ + qDeleteAll(labels); + labels.clear(); + } + // Remove the uneeded Ticks / Texts. - if (!ticks.isEmpty() && ticks.size() > steps) { + if (showTicks && !ticks.isEmpty() && ticks.size() > steps) { while (ticks.size() > steps) { DiveLineItem *removedLine = ticks.takeLast(); removedLine->animatedHide(); - DiveTextItem *removedText = labels.takeLast(); - removedText->animatedHide(); } } + if (!labels.isEmpty() && labels.size() > steps) { + while (labels.size() > steps) { + DiveTextItem *removedText = labels.takeLast(); + removedText->animatedHide(); + } + } // Move the remaining Ticks / Text to it's corerct position // Regartind the possibly new values for the Axis qreal begin, stepSize; @@ -78,7 +92,6 @@ void DiveCartesianAxis::updateTicks() } stepSize = stepSize / steps; - for (int i = 0, count = ticks.size(); i < count; i++, currValue += interval) { qreal childPos; if (orientation == TopToBottom || orientation == LeftToRight) { @@ -104,33 +117,58 @@ void DiveCartesianAxis::updateTicks() } else { childPos = begin - i * stepSize; } - DiveLineItem *item = new DiveLineItem(this); - item->setPen(pen()); - ticks.push_back(item); - - DiveTextItem *label = new DiveTextItem(this); - label->setText(textForValue(currValue)); - label->setBrush(QBrush(textColor)); + DiveLineItem *item = NULL; + DiveTextItem *label = NULL; + if (showTicks){ + item = new DiveLineItem(this); + item->setPen(pen()); + ticks.push_back(item); + } + if (showText){ + label = new DiveTextItem(this); + label->setText(textForValue(currValue)); + label->setBrush(QBrush(textColor)); + } labels.push_back(label); if (orientation == RightToLeft || orientation == LeftToRight) { - item->setLine(0, 0, 0, tickSize); - item->setPos(scene()->sceneRect().width() + 10, m.y1() + tickSize); // position it outside of the scene - item->animateMoveTo(childPos, m.y1() + tickSize); // anim it to scene. - label->setAlignment(Qt::AlignBottom | Qt::AlignHCenter); - label->setPos(scene()->sceneRect().width() + 10, m.y1() + tickSize); // position it outside of the scene); - label->animateMoveTo(childPos, m.y1() + tickSize); + if (showTicks){ + item->setLine(0, 0, 0, tickSize); + item->setPos(scene()->sceneRect().width() + 10, m.y1() + tickSize); // position it outside of the scene + item->animateMoveTo(childPos, m.y1() + tickSize); // anim it to scene. + } + if(showText){ + label->setAlignment(Qt::AlignBottom | Qt::AlignHCenter); + label->setPos(scene()->sceneRect().width() + 10, m.y1() + tickSize); // position it outside of the scene); + label->animateMoveTo(childPos, m.y1() + tickSize); + } } else { - item->setLine(0, 0, tickSize, 0); - item->setPos(m.x1() - tickSize, scene()->sceneRect().height() + 10); - item->animateMoveTo(m.x1() - tickSize, childPos); - label->setAlignment(Qt::AlignVCenter| Qt::AlignRight); - label->setPos(m.x1() - tickSize, scene()->sceneRect().height() + 10); - label->animateMoveTo(m.x1() - tickSize, childPos); + if(showTicks){ + item->setLine(0, 0, tickSize, 0); + item->setPos(m.x1() - tickSize, scene()->sceneRect().height() + 10); + item->animateMoveTo(m.x1() - tickSize, childPos); + } + if(showText){ + label->setAlignment(Qt::AlignVCenter| Qt::AlignRight); + label->setPos(m.x1() - tickSize, scene()->sceneRect().height() + 10); + label->animateMoveTo(m.x1() - tickSize, childPos); + } } } } +void DiveCartesianAxis::setShowText(bool show) +{ + showText = show; + updateTicks(); +} + +void DiveCartesianAxis::setShowTicks(bool show) +{ + showTicks = show; + updateTicks(); +} + QString DiveCartesianAxis::textForValue(double value) { return QString::number(value); diff --git a/qt-ui/profile/divecartesianaxis.h b/qt-ui/profile/divecartesianaxis.h index 3975de7e2..13de9edec 100644 --- a/qt-ui/profile/divecartesianaxis.h +++ b/qt-ui/profile/divecartesianaxis.h @@ -29,6 +29,8 @@ public: qreal posAtValue(qreal value); void setColor(const QColor& color); void setTextColor(const QColor& color); + void setShowTicks(bool show); + void setShowText(bool show); int unitSystem; signals: void sizeChanged(); @@ -43,6 +45,8 @@ protected: double interval; double tickSize; QColor textColor; + bool showTicks; + bool showText; }; class DepthAxis : public DiveCartesianAxis { diff --git a/qt-ui/profile/divetextitem.cpp b/qt-ui/profile/divetextitem.cpp index fcc0517f1..5ace46b5e 100644 --- a/qt-ui/profile/divetextitem.cpp +++ b/qt-ui/profile/divetextitem.cpp @@ -7,6 +7,7 @@ #include <QFontMetrics> #include <QBrush> #include <QPen> +#include <QDebug> DiveTextItem::DiveTextItem(QGraphicsItem* parent): QGraphicsItemGroup(parent), textBackgroundItem(NULL), @@ -50,10 +51,10 @@ void DiveTextItem::updateText() QRectF rect = fm.boundingRect(text); yPos = (internalAlignFlags & Qt::AlignTop) ? -rect.height() : - (internalAlignFlags & Qt::AlignBottom) ? 0 : - /*(internalAlignFlags & Qt::AlignVCenter ? */ -rect.height() / 2; + (internalAlignFlags & Qt::AlignBottom) ? +rect.height() : + /*(internalAlignFlags & Qt::AlignVCenter ? */ +rect.height() / 4; - yPos = (internalAlignFlags & Qt::AlignLeft ) ? 0 : + xPos = (internalAlignFlags & Qt::AlignLeft ) ? +rect.width() : (internalAlignFlags & Qt::AlignHCenter) ? -rect.width()/2 : /* (internalAlignFlags & Qt::AlignRight) */ -rect.width(); diff --git a/qt-ui/profile/profilewidget2.cpp b/qt-ui/profile/profilewidget2.cpp index bb14cf28b..41e1c2b99 100644 --- a/qt-ui/profile/profilewidget2.cpp +++ b/qt-ui/profile/profilewidget2.cpp @@ -294,12 +294,10 @@ void ProfileWidget2::plotDives(QList<dive*> dives) profileYAxis->updateTicks(); temperatureAxis->setMinimum(pInfo.mintemp); temperatureAxis->setMaximum(pInfo.maxtemp); - //temperatureAxis->updateTicks(); timeAxis->setMaximum(maxtime); timeAxis->updateTicks(); cylinderPressureAxis->setMinimum(pInfo.minpressure); cylinderPressureAxis->setMaximum(pInfo.maxpressure); - cylinderPressureAxis->updateTicks(); meanDepth->animateMoveTo(3, profileYAxis->posAtValue(pInfo.meandepth)); dataModel->setDive(current_dive, pInfo); |