From 2741539ef9e9b6953f680e51c36a250b4cc822eb 2012-11-29 13:43:50 From: Marek Rosa Date: 2012-11-29 13:43:50 Subject: [PATCH] Fixed: chart not redrawing when logaxis's logBase value changed --- diff --git a/src/axis/logvalueaxis/chartlogvalueaxisx.cpp b/src/axis/logvalueaxis/chartlogvalueaxisx.cpp index 58db5cb..08bf48e 100644 --- a/src/axis/logvalueaxis/chartlogvalueaxisx.cpp +++ b/src/axis/logvalueaxis/chartlogvalueaxisx.cpp @@ -32,6 +32,7 @@ ChartLogValueAxisX::ChartLogValueAxisX(QLogValueAxis *axis, QGraphicsItem* item) : HorizontalAxis(axis, item), m_axis(axis) { + QObject::connect(m_axis,SIGNAL(baseChanged(qreal)),this, SLOT(handleBaseChanged(qreal))); } ChartLogValueAxisX::~ChartLogValueAxisX() @@ -67,10 +68,11 @@ void ChartLogValueAxisX::updateGeometry() HorizontalAxis::updateGeometry(); } -//void ChartLogValueAxisX::handleAxisUpdated() -//{ -// ChartAxis::handleAxisUpdated(); -//} +void ChartLogValueAxisX::handleBaseChanged(qreal base) +{ + Q_UNUSED(base); + if(presenter()) presenter()->layout()->invalidate(); +} QSizeF ChartLogValueAxisX::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const { @@ -120,4 +122,6 @@ QSizeF ChartLogValueAxisX::sizeHint(Qt::SizeHint which, const QSizeF &constraint return sh; } +#include "moc_chartlogvalueaxisx_p.cpp" + QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/axis/logvalueaxis/chartlogvalueaxisx_p.h b/src/axis/logvalueaxis/chartlogvalueaxisx_p.h index f156dbe..a7bf49e 100644 --- a/src/axis/logvalueaxis/chartlogvalueaxisx_p.h +++ b/src/axis/logvalueaxis/chartlogvalueaxisx_p.h @@ -39,6 +39,8 @@ class ChartPresenter; class ChartLogValueAxisX : public HorizontalAxis { + Q_OBJECT + public: ChartLogValueAxisX(QLogValueAxis *axis, QGraphicsItem* item); ~ChartLogValueAxisX(); @@ -50,6 +52,9 @@ protected: QVector calculateLayout() const; void updateGeometry(); +private Q_SLOTS: + void handleBaseChanged(qreal base); + private: QLogValueAxis *m_axis; }; diff --git a/src/axis/logvalueaxis/chartlogvalueaxisy.cpp b/src/axis/logvalueaxis/chartlogvalueaxisy.cpp index 9ae85d2..1fe5c55 100644 --- a/src/axis/logvalueaxis/chartlogvalueaxisy.cpp +++ b/src/axis/logvalueaxis/chartlogvalueaxisy.cpp @@ -32,6 +32,7 @@ ChartLogValueAxisY::ChartLogValueAxisY(QLogValueAxis *axis, QGraphicsItem* item) : VerticalAxis(axis, item), m_axis(axis) { + QObject::connect(m_axis, SIGNAL(baseChanged(qreal)),this, SLOT(handleBaseChanged(qreal))); } ChartLogValueAxisY::~ChartLogValueAxisY() @@ -67,10 +68,11 @@ void ChartLogValueAxisY::updateGeometry() VerticalAxis::updateGeometry(); } -//void ChartLogValueAxisY::handleAxisUpdated() -//{ -// ChartAxis::handleAxisUpdated(); -//} +void ChartLogValueAxisY::handleBaseChanged(qreal base) +{ + Q_UNUSED(base); + if(presenter()) presenter()->layout()->invalidate(); +} QSizeF ChartLogValueAxisY::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const { @@ -117,4 +119,6 @@ QSizeF ChartLogValueAxisY::sizeHint(Qt::SizeHint which, const QSizeF &constraint return sh; } +#include "moc_chartlogvalueaxisy_p.cpp" + QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/axis/logvalueaxis/chartlogvalueaxisy_p.h b/src/axis/logvalueaxis/chartlogvalueaxisy_p.h index d835083..bc98c01 100644 --- a/src/axis/logvalueaxis/chartlogvalueaxisy_p.h +++ b/src/axis/logvalueaxis/chartlogvalueaxisy_p.h @@ -39,6 +39,8 @@ class ChartPresenter; class ChartLogValueAxisY : public VerticalAxis { + Q_OBJECT + public: ChartLogValueAxisY(QLogValueAxis *axis, QGraphicsItem* item); ~ChartLogValueAxisY(); @@ -50,6 +52,9 @@ protected: QVector calculateLayout() const; void updateGeometry(); +private Q_SLOTS: + void handleBaseChanged(qreal base); + private: QLogValueAxis *m_axis; }; diff --git a/src/domain/logxlogydomain.cpp b/src/domain/logxlogydomain.cpp index 4ddbb7e..37f6273 100644 --- a/src/domain/logxlogydomain.cpp +++ b/src/domain/logxlogydomain.cpp @@ -192,6 +192,7 @@ void LogXLogYDomain::handleVerticalAxisBaseChanged(qreal baseY) m_logBaseY = baseY; m_logMinY = log10(m_minY) / log10(m_logBaseY); m_logMaxY = log10(m_maxY) / log10(m_logBaseY); + emit updated(); } void LogXLogYDomain::handleHorizontalAxisBaseChanged(qreal baseX) @@ -199,6 +200,7 @@ void LogXLogYDomain::handleHorizontalAxisBaseChanged(qreal baseX) m_logBaseX = baseX; m_logMinX = log10(m_minX) / log10(m_logBaseX); m_logMaxX = log10(m_maxX) / log10(m_logBaseX); + emit updated(); } // operators diff --git a/src/domain/logxydomain.cpp b/src/domain/logxydomain.cpp index 2842196..fd46e66 100644 --- a/src/domain/logxydomain.cpp +++ b/src/domain/logxydomain.cpp @@ -184,6 +184,7 @@ void LogXYDomain::handleHorizontalAxisBaseChanged(qreal baseX) m_logBaseX = baseX; m_logMinX = log10(m_minX) / log10(m_logBaseX); m_logMaxX = log10(m_maxX) / log10(m_logBaseX); + emit updated(); } // operators diff --git a/src/domain/xlogydomain.cpp b/src/domain/xlogydomain.cpp index e2ddfa3..28f9952 100644 --- a/src/domain/xlogydomain.cpp +++ b/src/domain/xlogydomain.cpp @@ -182,6 +182,7 @@ void XLogYDomain::handleVerticalAxisBaseChanged(qreal baseY) m_logBaseY = baseY; m_logMinY = log10(m_minY) / log10(m_logBaseY); m_logMaxY = log10(m_maxY) / log10(m_logBaseY); + emit updated(); } // operators