1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-11-30 22:51:16 +01:00

Better handling of empty graphs

This commit is contained in:
Martin Tůma 2016-08-30 08:39:14 +02:00
parent bf69ef58ba
commit 05f1536285
2 changed files with 33 additions and 11 deletions

View File

@ -13,6 +13,7 @@
#define MARGIN 10.0 #define MARGIN 10.0
void Scene::mousePressEvent(QGraphicsSceneMouseEvent *e) void Scene::mousePressEvent(QGraphicsSceneMouseEvent *e)
{ {
if (e->button() == Qt::LeftButton) if (e->button() == Qt::LeftButton)
@ -39,11 +40,6 @@ GraphView::GraphView(QWidget *parent)
_sliderInfo->setZValue(2.0); _sliderInfo->setZValue(2.0);
_info = new InfoItem(); _info = new InfoItem();
_scene->addItem(_xAxis);
_scene->addItem(_yAxis);
_scene->addItem(_slider);
_scene->addItem(_info);
connect(_slider, SIGNAL(positionChanged(const QPointF&)), this, connect(_slider, SIGNAL(positionChanged(const QPointF&)), this,
SLOT(emitSliderPositionChanged(const QPointF&))); SLOT(emitSliderPositionChanged(const QPointF&)));
connect(_scene, SIGNAL(mouseClicked(const QPointF&)), this, connect(_scene, SIGNAL(mouseClicked(const QPointF&)), this,
@ -121,6 +117,18 @@ void GraphView::loadData(const QVector<QPointF> &data, int id)
} }
} }
void GraphView::removeItem(QGraphicsItem *item)
{
if (item->scene() == _scene)
_scene->removeItem(item);
}
void GraphView::addItem(QGraphicsItem *item)
{
if (item->scene() != _scene)
_scene->addItem(item);
}
void GraphView::showGraph(bool show, int id) void GraphView::showGraph(bool show, int id)
{ {
if (show) if (show)
@ -132,12 +140,10 @@ void GraphView::showGraph(bool show, int id)
_bounds = QRectF(); _bounds = QRectF();
for (int i = 0; i < _graphs.count(); i++) { for (int i = 0; i < _graphs.count(); i++) {
GraphItem* gi = _graphs.at(i); GraphItem* gi = _graphs.at(i);
if (_hide.contains(gi->id())) { if (_hide.contains(gi->id()))
if (gi->scene() == _scene) removeItem(gi);
_scene->removeItem(gi); else {
} else { addItem(gi);
if (gi->scene() != _scene)
_scene->addItem(gi);
_visible.append(gi); _visible.append(gi);
updateBounds(gi->path()); updateBounds(gi->path());
} }
@ -175,6 +181,20 @@ void GraphView::redraw(const QSizeF &size)
qreal xs, ys; qreal xs, ys;
if (_visible.isEmpty()) {
removeItem(_xAxis);
removeItem(_yAxis);
removeItem(_slider);
removeItem(_info);
_scene->setSceneRect(QRectF());
return;
}
addItem(_xAxis);
addItem(_yAxis);
addItem(_slider);
addItem(_info);
rx = RangeF(_bounds.left() * _xScale, _bounds.right() * _xScale); rx = RangeF(_bounds.left() * _xScale, _bounds.right() * _xScale);
ry = RangeF(_bounds.top() * _yScale + _yOffset, _bounds.bottom() * _yScale ry = RangeF(_bounds.top() * _yScale + _yOffset, _bounds.bottom() * _yScale
+ _yOffset); + _yOffset);

View File

@ -87,6 +87,8 @@ private:
void updateSliderInfo(); void updateSliderInfo();
void updateBounds(const QPainterPath &path); void updateBounds(const QPainterPath &path);
QRectF graphsBoundingRect() const; QRectF graphsBoundingRect() const;
void removeItem(QGraphicsItem *item);
void addItem(QGraphicsItem *item);
qreal _xScale, _yScale; qreal _xScale, _yScale;
qreal _yOffset; qreal _yOffset;