From 7ddc5a29fd997100eb7ebbe4a665d4cab1bd42db 2013-04-08 08:12:11 From: Mika Salmela Date: 2013-04-08 08:12:11 Subject: [PATCH] Legend markers for BoxPlot Change-Id: If277453522e413f9c7c21fb450647ad2ee141083 Reviewed-by: Mika Salmela --- diff --git a/src/legend/legend.pri b/src/legend/legend.pri index 3649007..c14cf6b 100644 --- a/src/legend/legend.pri +++ b/src/legend/legend.pri @@ -10,7 +10,8 @@ SOURCES += \ $$PWD/qbarlegendmarker.cpp \ $$PWD/qxylegendmarker.cpp \ $$PWD/qarealegendmarker.cpp \ - $$PWD/legendscroller.cpp + $$PWD/legendscroller.cpp \ + $$PWD/qboxplotlegendmarker.cpp PRIVATE_HEADERS += \ $$PWD/legendscroller_p.h \ @@ -21,7 +22,8 @@ PRIVATE_HEADERS += \ $$PWD/qpielegendmarker_p.h \ $$PWD/qbarlegendmarker_p.h \ $$PWD/qxylegendmarker_p.h \ - $$PWD/qarealegendmarker_p.h + $$PWD/qarealegendmarker_p.h \ + $$PWD/qboxplotlegendmarker_p.h PUBLIC_HEADERS += \ @@ -30,4 +32,5 @@ PUBLIC_HEADERS += \ $$PWD/qpielegendmarker.h \ $$PWD/qbarlegendmarker.h \ $$PWD/qxylegendmarker.h \ - $$PWD/qarealegendmarker.h + $$PWD/qarealegendmarker.h \ + $$PWD/qboxplotlegendmarker.h diff --git a/src/legend/qboxplotlegendmarker.cpp b/src/legend/qboxplotlegendmarker.cpp new file mode 100644 index 0000000..b43c64f --- /dev/null +++ b/src/legend/qboxplotlegendmarker.cpp @@ -0,0 +1,127 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the Qt Commercial Charts Add-on. +** +** $QT_BEGIN_LICENSE$ +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "qboxplotlegendmarker.h" +#include "qboxplotlegendmarker_p.h" +#include "qboxplotseries.h" +#include "qboxplotseries_p.h" +#include + +QTCOMMERCIALCHART_BEGIN_NAMESPACE + +/*! + \class QBoxPlotLegendMarker + \brief QBoxPlotLegendMarker object + \mainclass + + QBoxPlotLegendMarker is related to xxx derived classes. + + \sa QLegend QXYSeries QSplineSeries QScatterSeries QLineSeries +*/ + +/*! + \fn virtual LegendMarkerType QBoxPlotLegendMarker::type() + Returns QLegendMarker::LegendMarkerTypeBoxPlot +*/ + +/*! + \internal +*/ +QBoxPlotLegendMarker::QBoxPlotLegendMarker(QBoxPlotSeries *series, QLegend *legend, QObject *parent) : + QLegendMarker(*new QBoxPlotLegendMarkerPrivate(this,series,legend), parent) +{ + d_ptr->updated(); +} + +/*! + Destructor +*/ +QBoxPlotLegendMarker::~QBoxPlotLegendMarker() +{ +} + +/*! + \internal +*/ +QBoxPlotLegendMarker::QBoxPlotLegendMarker(QBoxPlotLegendMarkerPrivate &d, QObject *parent) : + QLegendMarker(d, parent) +{ +} + +/*! + Returns the related series +*/ +QBoxPlotSeries* QBoxPlotLegendMarker::series() +{ + Q_D(QBoxPlotLegendMarker); + return d->m_series; +} + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +QBoxPlotLegendMarkerPrivate::QBoxPlotLegendMarkerPrivate(QBoxPlotLegendMarker *q, QBoxPlotSeries *series, QLegend *legend) : + QLegendMarkerPrivate(q,legend), + q_ptr(q), + m_series(series) +{ + QObject::connect(m_series, SIGNAL(nameChanged()), this, SLOT(updated())); + QObject::connect(m_series->d_func(), SIGNAL(updated()), this, SLOT(updated())); +} + +QBoxPlotLegendMarkerPrivate::~QBoxPlotLegendMarkerPrivate() +{ +} + +QAbstractSeries* QBoxPlotLegendMarkerPrivate::series() +{ + return m_series; +} + +QObject* QBoxPlotLegendMarkerPrivate::relatedObject() +{ + return m_series; +} + +void QBoxPlotLegendMarkerPrivate::updated() +{ + bool labelChanged = false; + bool brushChanged = false; + + if (!m_customLabel && (m_item->label() != m_series->name())) { + m_item->setLabel(m_series->name()); + labelChanged = true; + } + if (!m_customBrush && (m_item->brush() != m_series->brush())) { + m_item->setBrush(m_series->brush()); + brushChanged = true; + } + invalidateLegend(); + + if (labelChanged) + emit q_ptr->labelChanged(); + if (brushChanged) + emit q_ptr->brushChanged(); +} + +#include "moc_qboxplotlegendmarker.cpp" +#include "moc_qboxplotlegendmarker_p.cpp" + +QTCOMMERCIALCHART_END_NAMESPACE + diff --git a/src/legend/qboxplotlegendmarker.h b/src/legend/qboxplotlegendmarker.h new file mode 100644 index 0000000..69c16af --- /dev/null +++ b/src/legend/qboxplotlegendmarker.h @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2013 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the Qt Commercial Charts Add-on. +** +** $QT_BEGIN_LICENSE$ +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QBOXPLOTLEGENDMARKER_H +#define QBOXPLOTLEGENDMARKER_H + +#include +#include +#include + +QTCOMMERCIALCHART_BEGIN_NAMESPACE + +class QBoxPlotLegendMarkerPrivate; + +class QTCOMMERCIALCHART_EXPORT QBoxPlotLegendMarker : public QLegendMarker +{ + Q_OBJECT + +public: + explicit QBoxPlotLegendMarker(QBoxPlotSeries *series, QLegend *legend, QObject *parent = 0); + virtual ~QBoxPlotLegendMarker(); + + virtual LegendMarkerType type() { return LegendMarkerTypeBoxPlot; } + + // Related series + virtual QBoxPlotSeries* series(); + +protected: + QBoxPlotLegendMarker(QBoxPlotLegendMarkerPrivate &d, QObject *parent = 0); + +private: + Q_DECLARE_PRIVATE(QBoxPlotLegendMarker) + Q_DISABLE_COPY(QBoxPlotLegendMarker) +}; + +QTCOMMERCIALCHART_END_NAMESPACE + +#endif // QBOXPLOTLEGENDMARKER_H diff --git a/src/legend/qboxplotlegendmarker_p.h b/src/legend/qboxplotlegendmarker_p.h new file mode 100644 index 0000000..782ade6 --- /dev/null +++ b/src/legend/qboxplotlegendmarker_p.h @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc +** All rights reserved. +** For any questions to Digia, please use contact form at http://qt.digia.com +** +** This file is part of the Qt Commercial Charts Add-on. +** +** $QT_BEGIN_LICENSE$ +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. +** +** If you have questions regarding the use of this file, please use +** contact form at http://qt.digia.com +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// W A R N I N G +// ------------- +// +// This file is not part of the QtCommercial Chart API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. + +#ifndef QBOXPLOTLEGENDMARKER_P_H +#define QBOXPLOTLEGENDMARKER_P_H + +#include "qchartglobal.h" +#include "qlegendmarker_p.h" +#include "legendmarkeritem_p.h" +#include + +QTCOMMERCIALCHART_BEGIN_NAMESPACE + +class QBoxPlotLegendMarker; + +class QBoxPlotLegendMarkerPrivate : public QLegendMarkerPrivate +{ + Q_OBJECT +public: + explicit QBoxPlotLegendMarkerPrivate(QBoxPlotLegendMarker *q, QBoxPlotSeries *series, QLegend *legend); + virtual ~QBoxPlotLegendMarkerPrivate(); + + virtual QAbstractSeries* series(); + virtual QObject* relatedObject(); + +public Q_SLOTS: + virtual void updated(); + +private: + QBoxPlotLegendMarker *q_ptr; + QBoxPlotSeries *m_series; + + Q_DECLARE_PUBLIC(QBoxPlotLegendMarker) +}; + +QTCOMMERCIALCHART_END_NAMESPACE + +#endif // QBOXPLOTLEGENDMARKER_P_H