diff --git a/src/graphview.cpp b/src/graphview.cpp index a5806d51..36bbba3b 100644 --- a/src/graphview.cpp +++ b/src/graphview.cpp @@ -161,10 +161,10 @@ void GraphView::loadData(const QVector &data) void GraphView::redraw() { if (!_graphs.isEmpty()) - resize(viewport()->size() - QSizeF(MARGIN, MARGIN)); + redraw(viewport()->size() - QSizeF(MARGIN, MARGIN)); } -void GraphView::resize(const QSizeF &size) +void GraphView::redraw(const QSizeF &size) { QRectF r; QSizeF mx, my; @@ -220,6 +220,7 @@ void GraphView::resize(const QSizeF &size) _scene->addItem(_xAxis); _scene->addItem(_yAxis); + qreal sp = (_slider->pos().x() == _slider->area().left()) ? 0 : (_slider->pos().x() - _slider->area().left()) / _slider->area().width(); @@ -251,13 +252,13 @@ void GraphView::plot(QPainter *painter, const QRectF &target) QSizeF orig = _scene->sceneRect().size(); QSizeF canvas = QSizeF(orig.height() * ratio, orig.height()); - resize(canvas); + redraw(canvas); _slider->hide(); _info->hide(); _scene->render(painter, target, QRectF()); _slider->show(); _info->show(); - resize(orig); + redraw(orig); } void GraphView::clear() @@ -352,6 +353,9 @@ qreal GraphView::sliderPosition() const void GraphView::setSliderPosition(qreal pos) { + if (_graphs.isEmpty()) + return; + if (pos > (_xMax - _xMin)) _slider->setVisible(false); else { diff --git a/src/graphview.h b/src/graphview.h index 3768b8be..a06d5577 100644 --- a/src/graphview.h +++ b/src/graphview.h @@ -44,24 +44,23 @@ public: void setPrecision(int precision) {_precision = precision;} void setMinRange(qreal range) {_minRange = range;} - void redraw(); - void plot(QPainter *painter, const QRectF &target); void clear(); qreal sliderPosition() const; void setSliderPosition(qreal pos); - void addInfo(const QString &key, const QString &value); - void clearInfo(); - - void skipColor() {_palette.color();} + int count() const {return _graphs.count();} signals: void sliderPositionChanged(qreal); protected: void resizeEvent(QResizeEvent *); + void redraw(); + void addInfo(const QString &key, const QString &value); + void clearInfo(); + void skipColor() {_palette.color();} qreal _xScale, _yScale; QString _xUnits, _yUnits; @@ -77,7 +76,7 @@ private: void createXLabel(); void createYLabel(); void updateBounds(const QPointF &point); - void resize(const QSizeF &size); + void redraw(const QSizeF &size); Scene *_scene;