diff options
Diffstat (limited to 'src/barchart')
48 files changed, 0 insertions, 6481 deletions
diff --git a/src/barchart/abstractbarchartitem.cpp b/src/barchart/abstractbarchartitem.cpp deleted file mode 100644 index 23874bfe..00000000 --- a/src/barchart/abstractbarchartitem.cpp +++ /dev/null @@ -1,268 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 "abstractbarchartitem_p.h" -#include "bar_p.h" -#include "qbarset.h" -#include "qbarset_p.h" -#include "qabstractbarseries.h" -#include "qabstractbarseries_p.h" -#include "qchart.h" -#include "chartpresenter_p.h" -#include "charttheme_p.h" -#include "baranimation_p.h" -#include "chartdataset_p.h" -#include <QPainter> -#include <QTextDocument> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -AbstractBarChartItem::AbstractBarChartItem(QAbstractBarSeries *series, QGraphicsItem* item) : - ChartItem(series->d_func(),item), - m_animation(0), - m_series(series) -{ - - setFlag(ItemClipsChildrenToShape); - connect(series->d_func(), SIGNAL(updatedLayout()), this, SLOT(handleLayoutChanged())); - connect(series->d_func(), SIGNAL(updatedBars()), this, SLOT(handleUpdatedBars())); - connect(series->d_func(), SIGNAL(labelsVisibleChanged(bool)), this, SLOT(handleLabelsVisibleChanged(bool))); - connect(series->d_func(), SIGNAL(restructuredBars()), this, SLOT(handleDataStructureChanged())); - connect(series, SIGNAL(visibleChanged()), this, SLOT(handleVisibleChanged())); - connect(series, SIGNAL(opacityChanged()), this, SLOT(handleOpacityChanged())); - connect(series, SIGNAL(labelsFormatChanged(QString)), this, SLOT(handleUpdatedBars())); - connect(series, SIGNAL(labelsFormatChanged(QString)), this, SLOT(positionLabels())); - connect(series, SIGNAL(labelsPositionChanged(QAbstractBarSeries::LabelsPosition)), - this, SLOT(handleLabelsPositionChanged())); - setZValue(ChartPresenter::BarSeriesZValue); - handleDataStructureChanged(); - handleVisibleChanged(); - handleUpdatedBars(); -} - -AbstractBarChartItem::~AbstractBarChartItem() -{ -} - -void AbstractBarChartItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) -{ - Q_UNUSED(painter); - Q_UNUSED(option); - Q_UNUSED(widget); -} - -QRectF AbstractBarChartItem::boundingRect() const -{ - return m_rect; -} - -void AbstractBarChartItem::applyLayout(const QVector<QRectF> &layout) -{ - QSizeF size = geometry().size(); - if (geometry().size().isValid()) { - if (m_animation) { - if (m_layout.count() == 0 || m_oldSize != size) { - initializeLayout(); - m_oldSize = size; - } - m_animation->setup(m_layout, layout); - presenter()->startAnimation(m_animation); - } else { - setLayout(layout); - update(); - } - } -} - -void AbstractBarChartItem::setAnimation(BarAnimation *animation) -{ - m_animation = animation; -} - -void AbstractBarChartItem::setLayout(const QVector<QRectF> &layout) -{ - if (layout.count() != m_bars.count()) - return; - - m_layout = layout; - - for (int i = 0; i < m_bars.count(); i++) - m_bars.at(i)->setRect(layout.at(i)); - - positionLabels(); -} -//handlers - -void AbstractBarChartItem::handleDomainUpdated() -{ - m_domainMinX = domain()->minX(); - m_domainMaxX = domain()->maxX(); - m_domainMinY = domain()->minY(); - m_domainMaxY = domain()->maxY(); - - QRectF rect(QPointF(0,0),domain()->size()); - - if(m_rect != rect){ - prepareGeometryChange(); - m_rect = rect; - } - - handleLayoutChanged(); -} - -void AbstractBarChartItem::handleLayoutChanged() -{ - if ((m_rect.width() <= 0) || (m_rect.height() <= 0)) - return; // rect size zero. - QVector<QRectF> layout = calculateLayout(); - applyLayout(layout); - handleUpdatedBars(); -} - -void AbstractBarChartItem::handleLabelsVisibleChanged(bool visible) -{ - foreach (QGraphicsTextItem *label, m_labels) - label->setVisible(visible); - update(); -} - -void AbstractBarChartItem::handleDataStructureChanged() -{ - foreach (QGraphicsItem *item, childItems()) - delete item; - - m_bars.clear(); - m_labels.clear(); - m_layout.clear(); - - // Create new graphic items for bars - for (int c = 0; c < m_series->d_func()->categoryCount(); c++) { - for (int s = 0; s < m_series->count(); s++) { - QBarSet *set = m_series->d_func()->barsetAt(s); - - // Bars - Bar *bar = new Bar(set, c, this); - m_bars.append(bar); - connect(bar, SIGNAL(clicked(int,QBarSet*)), m_series, SIGNAL(clicked(int,QBarSet*))); - connect(bar, SIGNAL(hovered(bool,QBarSet*)), m_series, SIGNAL(hovered(bool,QBarSet*))); - connect(bar, SIGNAL(hovered(bool, int, QBarSet*)), m_series, SIGNAL(hovered(bool, int, QBarSet*))); - connect(bar, SIGNAL(clicked(int,QBarSet*)), set, SIGNAL(clicked(int))); - connect(bar, SIGNAL(hovered(bool,QBarSet*)), set, SIGNAL(hovered(bool))); - connect(bar, SIGNAL(hovered(bool, int, QBarSet*)), set, SIGNAL(hovered(bool, int))); - // m_layout.append(QRectF(0, 0, 1, 1)); - - // Labels - QGraphicsTextItem *newLabel = new QGraphicsTextItem(this); - newLabel->document()->setDocumentMargin(ChartPresenter::textMargin()); - m_labels.append(newLabel); - } - } - - if(themeManager()) themeManager()->updateSeries(m_series); - handleLayoutChanged(); - handleVisibleChanged(); -} - -void AbstractBarChartItem::handleVisibleChanged() -{ - bool visible = m_series->isVisible(); - if (visible) - handleLabelsVisibleChanged(m_series->isLabelsVisible()); - else - handleLabelsVisibleChanged(visible); - - foreach (QGraphicsItem *bar, m_bars) - bar->setVisible(visible); -} - -void AbstractBarChartItem::handleOpacityChanged() -{ - foreach (QGraphicsItem *item, childItems()) - item->setOpacity(m_series->opacity()); -} - -void AbstractBarChartItem::handleUpdatedBars() -{ - if (!m_series->d_func()->blockBarUpdate()) { - // Handle changes in pen, brush, labels etc. - int categoryCount = m_series->d_func()->categoryCount(); - int setCount = m_series->count(); - int itemIndex(0); - static const QString valueTag(QLatin1String("@value")); - - for (int category = 0; category < categoryCount; category++) { - for (int set = 0; set < setCount; set++) { - QBarSetPrivate *barSet = m_series->d_func()->barsetAt(set)->d_ptr.data(); - Bar *bar = m_bars.at(itemIndex); - bar->setPen(barSet->m_pen); - bar->setBrush(barSet->m_brush); - bar->update(); - - QGraphicsTextItem *label = m_labels.at(itemIndex); - QString valueLabel; - if (presenter()) { // At startup presenter is not yet set, yet somehow update comes - if (m_series->labelsFormat().isEmpty()) { - valueLabel = presenter()->numberToString(barSet->value(category)); - } else { - valueLabel = m_series->labelsFormat(); - valueLabel.replace(valueTag, - presenter()->numberToString(barSet->value(category))); - } - } - label->setHtml(valueLabel); - label->setFont(barSet->m_labelFont); - label->setDefaultTextColor(barSet->m_labelBrush.color()); - label->update(); - itemIndex++; - } - } - } -} - -void AbstractBarChartItem::handleLabelsPositionChanged() -{ - positionLabels(); -} - -void AbstractBarChartItem::positionLabels() -{ - for (int i = 0; i < m_layout.count(); i++) { - QGraphicsTextItem *label = m_labels.at(i); - qreal xPos = 0; - qreal yPos = m_layout.at(i).center().y() - label->boundingRect().center().y(); - - int offset = m_bars.at(i)->pen().width() / 2 + 2; - if (m_series->labelsPosition() == QAbstractBarSeries::LabelsCenter) - xPos = m_layout.at(i).center().x() - label->boundingRect().center().x(); - else if (m_series->labelsPosition() == QAbstractBarSeries::LabelsInsideEnd) - xPos = m_layout.at(i).right() - label->boundingRect().width() - offset; - else if (m_series->labelsPosition() == QAbstractBarSeries::LabelsInsideBase) - xPos = m_layout.at(i).left() + offset; - else if (m_series->labelsPosition() == QAbstractBarSeries::LabelsOutsideEnd) - xPos = m_layout.at(i).right() + offset; - - label->setPos(xPos, yPos); - label->setZValue(zValue() + 1); - } -} - -#include "moc_abstractbarchartitem_p.cpp" - -QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/abstractbarchartitem_p.h b/src/barchart/abstractbarchartitem_p.h deleted file mode 100644 index 2aa00ac4..00000000 --- a/src/barchart/abstractbarchartitem_p.h +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 Qt Enterprise 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 ABSTRACTBARCHARTITEM_H -#define ABSTRACTBARCHARTITEM_H - -#include "chartitem_p.h" -#include "qabstractbarseries.h" -#include <QPen> -#include <QBrush> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class Bar; -class QAxisCategories; -class QChart; -class BarAnimation; - -class AbstractBarChartItem : public ChartItem -{ - Q_OBJECT -public: - AbstractBarChartItem(QAbstractBarSeries *series, QGraphicsItem* item = 0); - virtual ~AbstractBarChartItem(); - -public: - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget); - QRectF boundingRect() const; - - virtual QVector<QRectF> calculateLayout() = 0; - virtual void initializeLayout() = 0; - virtual void applyLayout(const QVector<QRectF> &layout); - virtual void setAnimation(BarAnimation *animation); - void setLayout(const QVector<QRectF> &layout); - void updateLayout(const QVector<QRectF> &layout); - QRectF geometry() const { return m_rect;} - -public Q_SLOTS: - void handleDomainUpdated(); - void handleLayoutChanged(); - void handleLabelsVisibleChanged(bool visible); - void handleDataStructureChanged(); // structure of of series has changed, recreate graphic items - void handleVisibleChanged(); - void handleOpacityChanged(); - virtual void handleUpdatedBars(); - void handleLabelsPositionChanged(); - virtual void positionLabels(); - -protected: - - qreal m_domainMinX; - qreal m_domainMaxX; - qreal m_domainMinY; - qreal m_domainMaxY; - - QRectF m_rect; - QVector<QRectF> m_layout; - - BarAnimation *m_animation; - - QAbstractBarSeries *m_series; // Not owned. - QList<Bar *> m_bars; - QList<QGraphicsTextItem *> m_labels; - QSizeF m_oldSize; -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // ABSTRACTBARCHARTITEM_H diff --git a/src/barchart/bar.cpp b/src/barchart/bar.cpp deleted file mode 100644 index f9a5897d..00000000 --- a/src/barchart/bar.cpp +++ /dev/null @@ -1,71 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 "bar_p.h" -#include <QPainter> -#include <QGraphicsSceneEvent> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -Bar::Bar(QBarSet *barset, int index, QGraphicsItem *parent) : QGraphicsRectItem(parent), - m_index(index), - m_barset(barset), - m_hovering(false) -{ - setAcceptedMouseButtons(Qt::LeftButton | Qt::RightButton); - setAcceptHoverEvents(true); -} - -Bar::~Bar() -{ - // End hover event, if bar is deleted during it - if (m_hovering) { - emit hovered(false, m_barset); - emit hovered(false, m_index, m_barset); - } -} - -void Bar::mousePressEvent(QGraphicsSceneMouseEvent *event) -{ - Q_UNUSED(event) - emit clicked(m_index, m_barset); - QGraphicsItem::mousePressEvent(event); -} - -void Bar::hoverEnterEvent(QGraphicsSceneHoverEvent *event) -{ - Q_UNUSED(event) - m_hovering = true; - emit hovered(true, m_barset); - emit hovered(true, m_index, m_barset); - -} - -void Bar::hoverLeaveEvent(QGraphicsSceneHoverEvent *event) -{ - Q_UNUSED(event) - m_hovering = false; - emit hovered(false, m_barset); - emit hovered(false, m_index, m_barset); -} - -#include "moc_bar_p.cpp" - -QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/bar_p.h b/src/barchart/bar_p.h deleted file mode 100644 index 041923b0..00000000 --- a/src/barchart/bar_p.h +++ /dev/null @@ -1,66 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 Qt Enterprise 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 BAR_H -#define BAR_H - -#include "qchartglobal.h" -#include <QGraphicsRectItem> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class QBarSet; - -// Single visual bar item of chart -class Bar : public QObject, public QGraphicsRectItem -{ - Q_OBJECT -public: - Bar(QBarSet *barset, int index, QGraphicsItem *parent = 0); - ~Bar(); - -public: - void mousePressEvent(QGraphicsSceneMouseEvent *event); - void hoverEnterEvent(QGraphicsSceneHoverEvent *event); - void hoverLeaveEvent(QGraphicsSceneHoverEvent *event); - -Q_SIGNALS: - void clicked(int index, QBarSet *barset); - void hovered(bool status, QBarSet *barset); - void hovered(bool status, int index, QBarSet *barset); - -private: - int m_index; - QBarSet *m_barset; - bool m_hovering; -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // BAR_H diff --git a/src/barchart/barchart.pri b/src/barchart/barchart.pri deleted file mode 100644 index 0e78d232..00000000 --- a/src/barchart/barchart.pri +++ /dev/null @@ -1,71 +0,0 @@ -#Subdirectiores are defined here, because qt creator doesn't handle nested include(foo.pri) chains very well. - -INCLUDEPATH += $$PWD \ - $$PWD/vertical/bar \ - $$PWD/vertical/stacked \ - $$PWD/vertical/percent \ - $$PWD/horizontal/bar \ - $$PWD/horizontal/stacked \ - $$PWD/horizontal/percent - -DEPENDPATH += $$PWD \ - $$PWD/vertical/bar \ - $$PWD/vertical/stacked \ - $$PWD/vertical/percent \ - $$PWD/horizontal/bar \ - $$PWD/horizontal/stacked \ - $$PWD/horizontal/percent - -SOURCES += \ - $$PWD/bar.cpp \ - $$PWD/abstractbarchartitem.cpp \ - $$PWD/qabstractbarseries.cpp \ - $$PWD/qbarset.cpp \ - $$PWD/qbarmodelmapper.cpp \ - $$PWD/qvbarmodelmapper.cpp \ - $$PWD/qhbarmodelmapper.cpp \ - $$PWD/vertical/bar/qbarseries.cpp \ - $$PWD/vertical/bar/barchartitem.cpp \ - $$PWD/vertical/stacked/qstackedbarseries.cpp \ - $$PWD/vertical/stacked/stackedbarchartitem.cpp \ - $$PWD/vertical/percent/qpercentbarseries.cpp \ - $$PWD/vertical/percent/percentbarchartitem.cpp \ - $$PWD/horizontal/bar/qhorizontalbarseries.cpp \ - $$PWD/horizontal/bar/horizontalbarchartitem.cpp \ - $$PWD/horizontal/stacked/qhorizontalstackedbarseries.cpp \ - $$PWD/horizontal/stacked/horizontalstackedbarchartitem.cpp \ - $$PWD/horizontal/percent/qhorizontalpercentbarseries.cpp \ - $$PWD/horizontal/percent/horizontalpercentbarchartitem.cpp - -PRIVATE_HEADERS += \ - $$PWD/bar_p.h \ - $$PWD/qbarset_p.h \ - $$PWD/abstractbarchartitem_p.h \ - $$PWD/qabstractbarseries_p.h \ - $$PWD/qbarmodelmapper_p.h \ - $$PWD/vertical/bar/qbarseries_p.h \ - $$PWD/vertical/bar/barchartitem_p.h \ - $$PWD/vertical/stacked/qstackedbarseries_p.h \ - $$PWD/vertical/stacked/stackedbarchartitem_p.h \ - $$PWD/vertical/percent/qpercentbarseries_p.h \ - $$PWD/vertical/percent/percentbarchartitem_p.h \ - $$PWD/horizontal/bar/qhorizontalbarseries_p.h \ - $$PWD/horizontal/bar/horizontalbarchartitem_p.h \ - $$PWD/horizontal/stacked/qhorizontalstackedbarseries_p.h \ - $$PWD/horizontal/stacked/horizontalstackedbarchartitem_p.h \ - $$PWD/horizontal/percent/qhorizontalpercentbarseries_p.h \ - $$PWD/horizontal/percent/horizontalpercentbarchartitem_p.h - -PUBLIC_HEADERS += \ - $$PWD/qabstractbarseries.h \ - $$PWD/qbarset.h \ - $$PWD/qbarmodelmapper.h \ - $$PWD/qvbarmodelmapper.h \ - $$PWD/qhbarmodelmapper.h \ - $$PWD/vertical/bar/qbarseries.h \ - $$PWD/vertical/stacked/qstackedbarseries.h \ - $$PWD/vertical/percent/qpercentbarseries.h \ - $$PWD/horizontal/bar/qhorizontalbarseries.h \ - $$PWD/horizontal/stacked/qhorizontalstackedbarseries.h \ - $$PWD/horizontal/percent/qhorizontalpercentbarseries.h - diff --git a/src/barchart/horizontal/bar/horizontalbarchartitem.cpp b/src/barchart/horizontal/bar/horizontalbarchartitem.cpp deleted file mode 100644 index 6fc9e751..00000000 --- a/src/barchart/horizontal/bar/horizontalbarchartitem.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 "horizontalbarchartitem_p.h" -#include "qabstractbarseries_p.h" -#include "qbarset_p.h" -#include "bar_p.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -HorizontalBarChartItem::HorizontalBarChartItem(QAbstractBarSeries *series, QGraphicsItem* item) - : AbstractBarChartItem(series, item) -{ -} - -void HorizontalBarChartItem::initializeLayout() -{ - qreal categoryCount = m_series->d_func()->categoryCount(); - qreal setCount = m_series->count(); - qreal barWidth = m_series->d_func()->barWidth(); - - m_layout.clear(); - for(int category = 0; category < categoryCount; category++) { - for (int set = 0; set < setCount; set++) { - QRectF rect; - QPointF topLeft; - QPointF bottomRight; - if (domain()->type() == AbstractDomain::LogXYDomain || domain()->type() == AbstractDomain::LogXLogYDomain) { - topLeft = domain()->calculateGeometryPoint(QPointF(domain()->minX(), category - barWidth / 2 + set/setCount * barWidth), m_validData); - bottomRight = domain()->calculateGeometryPoint(QPointF(domain()->minX(), category - barWidth / 2 + (set + 1)/setCount * barWidth), m_validData); - } else { - topLeft = domain()->calculateGeometryPoint(QPointF(0, category - barWidth / 2 + set/setCount * barWidth), m_validData); - bottomRight = domain()->calculateGeometryPoint(QPointF(0, category - barWidth / 2 + (set + 1)/setCount * barWidth), m_validData); - } - - if (!m_validData) - return; - - rect.setTopLeft(topLeft); - rect.setBottomRight(bottomRight); - m_layout.append(rect.normalized()); - } - } -} - -QVector<QRectF> HorizontalBarChartItem::calculateLayout() -{ - QVector<QRectF> layout; - - // Use temporary qreals for accuracy - qreal categoryCount = m_series->d_func()->categoryCount(); - qreal setCount = m_series->count(); - qreal barWidth = m_series->d_func()->barWidth(); - - for(int category = 0; category < categoryCount; category++) { - for (int set = 0; set < setCount; set++) { - qreal value = m_series->barSets().at(set)->at(category); - QRectF rect; - QPointF topLeft; - if (domain()->type() == AbstractDomain::LogXYDomain || domain()->type() == AbstractDomain::LogXLogYDomain) - topLeft = domain()->calculateGeometryPoint(QPointF(domain()->minX(), category - barWidth / 2 + set/setCount * barWidth), m_validData); - else - topLeft = domain()->calculateGeometryPoint(QPointF(0, category - barWidth / 2 + set/setCount * barWidth), m_validData); - - QPointF bottomRight = domain()->calculateGeometryPoint(QPointF(value, category - barWidth / 2 + (set + 1)/setCount * barWidth), m_validData); - - rect.setTopLeft(topLeft); - rect.setBottomRight(bottomRight); - layout.append(rect.normalized()); - } - } - return layout; -} - -#include "moc_horizontalbarchartitem_p.cpp" - -QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/horizontal/bar/horizontalbarchartitem_p.h b/src/barchart/horizontal/bar/horizontalbarchartitem_p.h deleted file mode 100644 index 9991caa2..00000000 --- a/src/barchart/horizontal/bar/horizontalbarchartitem_p.h +++ /dev/null @@ -1,51 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 Qt Enterprise 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 HORIZONTALBARCHARTITEM_H -#define HORIZONTALBARCHARTITEM_H - -#include "abstractbarchartitem_p.h" -#include <QGraphicsItem> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class HorizontalBarChartItem : public AbstractBarChartItem -{ - Q_OBJECT -public: - HorizontalBarChartItem(QAbstractBarSeries *series, QGraphicsItem* item = 0); - -private: - virtual QVector<QRectF> calculateLayout(); - void initializeLayout(); -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // HORIZONTALBARCHARTITEM_H diff --git a/src/barchart/horizontal/bar/qhorizontalbarseries.cpp b/src/barchart/horizontal/bar/qhorizontalbarseries.cpp deleted file mode 100644 index fdcfd6f9..00000000 --- a/src/barchart/horizontal/bar/qhorizontalbarseries.cpp +++ /dev/null @@ -1,125 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 "qhorizontalbarseries.h" -#include "qhorizontalbarseries_p.h" -#include "horizontalbarchartitem_p.h" -#include "qbarcategoryaxis.h" - -#include "chartdataset_p.h" -#include "charttheme_p.h" - - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -/*! - \class QHorizontalBarSeries - \inmodule Qt Charts - \brief Series for creating horizontal bar chart. - \mainclass - - QHorizontalBarSeries represents a series of data shown as bars. The purpose of this class is to draw bars - as groups, where bars in same category are grouped next to each other. QHorizontalBarSeries groups the data - from sets to categories, which are defined by a QStringList. - - See the \l {HorizontalBarChart Example} {horizontal bar chart example} to learn how to create a horizontal bar chart. - \image examples_horizontalbarchart.png - - \sa QBarSet, QBarSeries, QPercentBarSeries, QAbstractBarSeries, QStackedBarSeries, QHorizontalStackedBarSeries, QHorizontalPercentBarSeries -*/ -#ifdef QDOC_QT5 -/*! - \qmltype HorizontalBarSeries - \instantiates QHorizontalBarSeries - \inqmlmodule QtCommercial.Chart - - \include doc/src/horizontalbarseries.qdocinc -*/ -#else -/*! - \qmlclass HorizontalBarSeries QHorizontalBarSeries - - \include ../doc/src/horizontalbarseries.qdocinc -*/ -#endif - -/*! - Constructs empty QHorizontalBarSeries. - QHorizontalBarSeries is QObject which is a child of a \a parent. -*/ -QHorizontalBarSeries::QHorizontalBarSeries(QObject *parent) - : QAbstractBarSeries(*new QHorizontalBarSeriesPrivate(this), parent) -{ -} - -/*! - Destructor. - Removes series from chart. -*/ -QHorizontalBarSeries::~QHorizontalBarSeries() -{ - Q_D(QHorizontalBarSeries); - if (d->m_chart) - d->m_chart->removeSeries(this); -} - -/*! - Returns QChartSeries::SeriesTypeHorizontalBar. -*/ -QAbstractSeries::SeriesType QHorizontalBarSeries::type() const -{ - return QAbstractSeries::SeriesTypeHorizontalBar; -} - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -QHorizontalBarSeriesPrivate::QHorizontalBarSeriesPrivate(QHorizontalBarSeries *q) - : QAbstractBarSeriesPrivate(q) -{ - -} - -void QHorizontalBarSeriesPrivate::initializeDomain() -{ - qreal minX(domain()->minX()); - qreal minY(domain()->minY()); - qreal maxX(domain()->maxX()); - qreal maxY(domain()->maxY()); - - qreal y = categoryCount(); - minX = qMin(minX, min()); - minY = qMin(minY, - (qreal)0.5); - maxX = qMax(maxX, max()); - maxY = qMax(maxY, y - (qreal)0.5); - - domain()->setRange(minX, maxX, minY, maxY); -} - -void QHorizontalBarSeriesPrivate::initializeGraphics(QGraphicsItem* parent) -{ - Q_Q(QHorizontalBarSeries); - HorizontalBarChartItem *bar = new HorizontalBarChartItem(q,parent); - m_item.reset(bar); - QAbstractSeriesPrivate::initializeGraphics(parent); -} - -#include "moc_qhorizontalbarseries.cpp" - -QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/horizontal/bar/qhorizontalbarseries.h b/src/barchart/horizontal/bar/qhorizontalbarseries.h deleted file mode 100644 index 0631c05e..00000000 --- a/src/barchart/horizontal/bar/qhorizontalbarseries.h +++ /dev/null @@ -1,45 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 QHORIZONTALBARSERIES_H -#define QHORIZONTALBARSERIES_H - -#include <qabstractbarseries.h> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class QHorizontalBarSeriesPrivate; - -class QTCOMMERCIALCHART_EXPORT QHorizontalBarSeries : public QAbstractBarSeries -{ - Q_OBJECT -public: - explicit QHorizontalBarSeries(QObject *parent = 0); - ~QHorizontalBarSeries(); - QAbstractSeries::SeriesType type() const; - -private: - Q_DECLARE_PRIVATE(QHorizontalBarSeries) - Q_DISABLE_COPY(QHorizontalBarSeries) -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // QHORIZONTALBARSERIES_H diff --git a/src/barchart/horizontal/bar/qhorizontalbarseries_p.h b/src/barchart/horizontal/bar/qhorizontalbarseries_p.h deleted file mode 100644 index 9cafcca8..00000000 --- a/src/barchart/horizontal/bar/qhorizontalbarseries_p.h +++ /dev/null @@ -1,50 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 Qt Enterprise 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 QHORIZONTALBARSERIES_P_H -#define QHORIZONTALBARSERIES_P_H - -#include "qabstractbarseries_p.h" -#include "abstractdomain_p.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class QHorizontalBarSeriesPrivate: public QAbstractBarSeriesPrivate -{ -public: - QHorizontalBarSeriesPrivate(QHorizontalBarSeries *q); - void initializeGraphics(QGraphicsItem* parent); - void initializeDomain(); -private: - Q_DECLARE_PUBLIC(QHorizontalBarSeries) -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // QHORIZONTALBARSERIES_P_H diff --git a/src/barchart/horizontal/percent/horizontalpercentbarchartitem.cpp b/src/barchart/horizontal/percent/horizontalpercentbarchartitem.cpp deleted file mode 100644 index 9dd875dd..00000000 --- a/src/barchart/horizontal/percent/horizontalpercentbarchartitem.cpp +++ /dev/null @@ -1,140 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 "horizontalpercentbarchartitem_p.h" -#include "qabstractbarseries_p.h" -#include "qbarset_p.h" -#include "bar_p.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -HorizontalPercentBarChartItem::HorizontalPercentBarChartItem(QAbstractBarSeries *series, QGraphicsItem* item) - : AbstractBarChartItem(series, item) -{ -} - -void HorizontalPercentBarChartItem::initializeLayout() -{ - qreal categoryCount = m_series->d_func()->categoryCount(); - qreal setCount = m_series->count(); - qreal barWidth = m_series->d_func()->barWidth(); - - m_layout.clear(); - for(int category = 0; category < categoryCount; category++) { - for (int set = 0; set < setCount; set++) { - QRectF rect; - QPointF topLeft; - QPointF bottomRight; - if (domain()->type() == AbstractDomain::LogXYDomain || domain()->type() == AbstractDomain::LogXLogYDomain) { - topLeft = domain()->calculateGeometryPoint(QPointF(domain()->minX(), category - barWidth / 2), m_validData); - bottomRight = domain()->calculateGeometryPoint(QPointF(domain()->minX(), category + barWidth / 2), m_validData); - } else { - topLeft = domain()->calculateGeometryPoint(QPointF(0, category - barWidth / 2), m_validData); - bottomRight = domain()->calculateGeometryPoint(QPointF(0, category + barWidth / 2), m_validData); - } - - if (!m_validData) - return; - - rect.setTopLeft(topLeft); - rect.setBottomRight(bottomRight); - m_layout.append(rect.normalized()); - } - } -} - -QVector<QRectF> HorizontalPercentBarChartItem::calculateLayout() -{ - QVector<QRectF> layout; - - // Use temporary qreals for accuracy - qreal categoryCount = m_series->d_func()->categoryCount(); - qreal setCount = m_series->count(); - qreal barWidth = m_series->d_func()->barWidth(); - - for(int category = 0; category < categoryCount; category++) { - qreal sum = 0; - qreal categorySum = m_series->d_func()->categorySum(category); - for (int set = 0; set < setCount; set++) { - qreal value = m_series->barSets().at(set)->at(category); - QRectF rect; - qreal topX = 0; - if (sum > 0) - topX = 100 * sum / categorySum; - qreal bottomX = 0; - qreal newSum = value + sum; - if (newSum > 0) - bottomX = 100 * newSum / categorySum; - QPointF topLeft; - if (domain()->type() == AbstractDomain::LogXYDomain || domain()->type() == AbstractDomain::LogXLogYDomain) - topLeft = domain()->calculateGeometryPoint(QPointF(set ? topX : domain()->minX(), category - barWidth/2), m_validData); - else - topLeft = domain()->calculateGeometryPoint(QPointF(set ? topX : 0, category - barWidth/2), m_validData); - QPointF bottomRight = domain()->calculateGeometryPoint(QPointF(bottomX, category + barWidth/2), m_validData); - - rect.setTopLeft(topLeft); - rect.setBottomRight(bottomRight); - layout.append(rect.normalized()); - sum = newSum; - } - } - return layout; -} - -void HorizontalPercentBarChartItem::handleUpdatedBars() -{ - // Handle changes in pen, brush, labels etc. - int categoryCount = m_series->d_func()->categoryCount(); - int setCount = m_series->count(); - int itemIndex(0); - static const QString valueTag(QLatin1String("@value")); - - for (int category = 0; category < categoryCount; category++) { - for (int set = 0; set < setCount; set++) { - QBarSetPrivate *barSet = m_series->d_func()->barsetAt(set)->d_ptr.data(); - Bar *bar = m_bars.at(itemIndex); - bar->setPen(barSet->m_pen); - bar->setBrush(barSet->m_brush); - bar->update(); - - QGraphicsTextItem *label = m_labels.at(itemIndex); - qreal p = m_series->d_func()->percentageAt(set, category) * 100.0; - QString vString(presenter()->numberToString(p, 'f', 0)); - QString valueLabel; - if (m_series->labelsFormat().isEmpty()) { - vString.append("%"); - valueLabel = vString; - } else { - valueLabel = m_series->labelsFormat(); - valueLabel.replace(valueTag, vString); - } - label->setHtml(valueLabel); - label->setFont(barSet->m_labelFont); - label->setDefaultTextColor(barSet->m_labelBrush.color()); - label->update(); - itemIndex++; - } - } -} - -#include "moc_horizontalpercentbarchartitem_p.cpp" - -QTCOMMERCIALCHART_END_NAMESPACE - diff --git a/src/barchart/horizontal/percent/horizontalpercentbarchartitem_p.h b/src/barchart/horizontal/percent/horizontalpercentbarchartitem_p.h deleted file mode 100644 index 5e313521..00000000 --- a/src/barchart/horizontal/percent/horizontalpercentbarchartitem_p.h +++ /dev/null @@ -1,52 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 Qt Enterprise 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 HORIZONTALPERCENTBARCHARTITEM_P_H -#define HORIZONTALPERCENTBARCHARTITEM_P_H - -#include "abstractbarchartitem_p.h" -#include <QGraphicsItem> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class HorizontalPercentBarChartItem : public AbstractBarChartItem -{ - Q_OBJECT -public: - HorizontalPercentBarChartItem(QAbstractBarSeries *series, QGraphicsItem* item = 0); - void handleUpdatedBars(); - -private: - virtual QVector<QRectF> calculateLayout(); - void initializeLayout(); -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // HORIZONTALPERCENTBARCHARTITEM_P_H diff --git a/src/barchart/horizontal/percent/qhorizontalpercentbarseries.cpp b/src/barchart/horizontal/percent/qhorizontalpercentbarseries.cpp deleted file mode 100644 index 846f77d4..00000000 --- a/src/barchart/horizontal/percent/qhorizontalpercentbarseries.cpp +++ /dev/null @@ -1,124 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 "qhorizontalpercentbarseries.h" -#include "qhorizontalpercentbarseries_p.h" -#include "horizontalpercentbarchartitem_p.h" - -#include "chartdataset_p.h" -#include "charttheme_p.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -/*! - \class QHorizontalPercentBarSeries - \inmodule Qt Charts - \brief Series for creating horizontal percent bar chart. - \mainclass - - QHorizontalPercentBarSeries represents a series of data shown as bars. The purpose of this - class is to draw bars as groups, where bars in same category are grouped next to each other. - QHorizontalPercentBarSeries groups the data from sets to categories, which are defined by a - QStringList. Bars with zero value are not drawn. - - See the \l {HorizontalPercentBarChart Example} {horizontal percent bar chart example} to learn - how to create a horizontal percent bar chart. - \image examples_horizontalpercentbarchart.png - - \sa QBarSet, QBarSeries, QPercentBarSeries, QAbstractBarSeries, QStackedBarSeries, - QHorizontalStackedBarSeries, QHorizontalBarSeries -*/ -#ifdef QDOC_QT5 -/*! - \qmltype HorizontalPercentBarSeries - \instantiates QHorizontalPercentBarSeries - \inqmlmodule QtCommercial.Chart - - \include doc/src/horizontalpercentbarseries.qdocinc -*/ -#else -/*! - \qmlclass HorizontalPercentBarSeries QHorizontalPercentBarSeries - - \include ../doc/src/horizontalpercentbarseries.qdocinc -*/ -#endif - -/*! - Constructs empty QHorizontalPercentBarSeries. - QHorizontalPercentBarSeries is QObject which is a child of a \a parent. -*/ -QHorizontalPercentBarSeries::QHorizontalPercentBarSeries(QObject *parent) : - QAbstractBarSeries(*new QHorizontalPercentBarSeriesPrivate(this), parent) -{ -} - -/*! - Returns QAbstractSeries::SeriesTypeHorizontalPercentBar. -*/ -QAbstractSeries::SeriesType QHorizontalPercentBarSeries::type() const -{ - return QAbstractSeries::SeriesTypeHorizontalPercentBar; -} - -/*! - Destructor. - Removes series from chart. -*/ -QHorizontalPercentBarSeries::~QHorizontalPercentBarSeries() -{ - Q_D(QHorizontalPercentBarSeries); - if (d->m_chart) - d->m_chart->removeSeries(this); -} - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -QHorizontalPercentBarSeriesPrivate::QHorizontalPercentBarSeriesPrivate(QHorizontalPercentBarSeries *q) : QAbstractBarSeriesPrivate(q) -{ - -} - -void QHorizontalPercentBarSeriesPrivate::initializeDomain() -{ - qreal minX(domain()->minX()); - qreal minY(domain()->minY()); - qreal maxX(domain()->maxX()); - qreal maxY(domain()->maxY()); - - qreal y = categoryCount(); - minX = 0; - maxX = 100; - minY = qMin(minY, - (qreal)0.5); - maxY = qMax(maxY, y - (qreal)0.5); - - domain()->setRange(minX, maxX, minY, maxY); -} - -void QHorizontalPercentBarSeriesPrivate::initializeGraphics(QGraphicsItem* parent) -{ - Q_Q(QHorizontalPercentBarSeries); - HorizontalPercentBarChartItem *bar = new HorizontalPercentBarChartItem(q,parent); - m_item.reset(bar); - QAbstractSeriesPrivate::initializeGraphics(parent); -} - -#include "moc_qhorizontalpercentbarseries.cpp" - -QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/horizontal/percent/qhorizontalpercentbarseries.h b/src/barchart/horizontal/percent/qhorizontalpercentbarseries.h deleted file mode 100644 index 72ceb44e..00000000 --- a/src/barchart/horizontal/percent/qhorizontalpercentbarseries.h +++ /dev/null @@ -1,45 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 QHORIZONTALPERCENTBARSERIES_H -#define QHORIZONTALPERCENTBARSERIES_H - -#include <qabstractbarseries.h> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class QHorizontalPercentBarSeriesPrivate; - -class QTCOMMERCIALCHART_EXPORT QHorizontalPercentBarSeries : public QAbstractBarSeries -{ - Q_OBJECT -public: - explicit QHorizontalPercentBarSeries(QObject *parent = 0); - ~QHorizontalPercentBarSeries(); - QAbstractSeries::SeriesType type() const; - -private: - Q_DECLARE_PRIVATE(QHorizontalPercentBarSeries) - Q_DISABLE_COPY(QHorizontalPercentBarSeries) -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // QHORIZONTALPERCENTBARSERIES_H diff --git a/src/barchart/horizontal/percent/qhorizontalpercentbarseries_p.h b/src/barchart/horizontal/percent/qhorizontalpercentbarseries_p.h deleted file mode 100644 index 60de7425..00000000 --- a/src/barchart/horizontal/percent/qhorizontalpercentbarseries_p.h +++ /dev/null @@ -1,50 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 Qt Enterprise 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 QHORIZONTALPERCENTBARSERIES_P_H -#define QHORIZONTALPERCENTBARSERIES_P_H - -#include "qabstractbarseries_p.h" -#include "abstractdomain_p.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class QHorizontalPercentBarSeriesPrivate: public QAbstractBarSeriesPrivate -{ -public: - QHorizontalPercentBarSeriesPrivate(QHorizontalPercentBarSeries *q); - void initializeGraphics(QGraphicsItem* parent); - void initializeDomain(); -private: - Q_DECLARE_PUBLIC(QHorizontalPercentBarSeries) -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // QHORIZONTALPERCENTBARSERIES_P_H diff --git a/src/barchart/horizontal/stacked/horizontalstackedbarchartitem.cpp b/src/barchart/horizontal/stacked/horizontalstackedbarchartitem.cpp deleted file mode 100644 index ad80ec72..00000000 --- a/src/barchart/horizontal/stacked/horizontalstackedbarchartitem.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 "horizontalstackedbarchartitem_p.h" -#include "qabstractbarseries_p.h" -#include "qbarset_p.h" -#include "bar_p.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -HorizontalStackedBarChartItem::HorizontalStackedBarChartItem(QAbstractBarSeries *series, QGraphicsItem* item) - : AbstractBarChartItem(series, item) -{ -} - -void HorizontalStackedBarChartItem::initializeLayout() -{ - qreal categoryCount = m_series->d_func()->categoryCount(); - qreal setCount = m_series->count(); - qreal barWidth = m_series->d_func()->barWidth(); - - m_layout.clear(); - for(int category = 0; category < categoryCount; category++) { - for (int set = 0; set < setCount; set++) { - QRectF rect; - QPointF topLeft; - QPointF bottomRight; - if (domain()->type() == AbstractDomain::LogXYDomain || domain()->type() == AbstractDomain::LogXLogYDomain) { - topLeft = domain()->calculateGeometryPoint(QPointF(domain()->minX(), category - barWidth / 2), m_validData); - bottomRight = domain()->calculateGeometryPoint(QPointF(domain()->minX(), category + barWidth / 2), m_validData); - } else { - topLeft = domain()->calculateGeometryPoint(QPointF(0, category - barWidth / 2), m_validData); - bottomRight = domain()->calculateGeometryPoint(QPointF(0, category + barWidth / 2), m_validData); - } - - if (!m_validData) - return; - - rect.setTopLeft(topLeft); - rect.setBottomRight(bottomRight); - m_layout.append(rect.normalized()); - } - } -} - -QVector<QRectF> HorizontalStackedBarChartItem::calculateLayout() -{ - QVector<QRectF> layout; - - // Use temporary qreals for accuracy - qreal categoryCount = m_series->d_func()->categoryCount(); - qreal setCount = m_series->count(); - qreal barWidth = m_series->d_func()->barWidth(); - - for(int category = 0; category < categoryCount; category++) { - qreal positiveSum = 0; - qreal negativeSum = 0; - for (int set = 0; set < setCount; set++) { - qreal value = m_series->barSets().at(set)->at(category); - QRectF rect; - QPointF topLeft; - QPointF bottomRight; - if (value < 0) { - bottomRight = domain()->calculateGeometryPoint(QPointF(value + negativeSum, category - barWidth / 2), m_validData); - if (domain()->type() == AbstractDomain::LogXYDomain || domain()->type() == AbstractDomain::LogXLogYDomain) - topLeft = domain()->calculateGeometryPoint(QPointF(set ? negativeSum : domain()->minX(), category + barWidth / 2), m_validData); - else - topLeft = domain()->calculateGeometryPoint(QPointF(set ? negativeSum : 0, category + barWidth / 2), m_validData); - negativeSum += value; - } else { - bottomRight = domain()->calculateGeometryPoint(QPointF(value + positiveSum, category - barWidth / 2), m_validData); - if (domain()->type() == AbstractDomain::LogXYDomain || domain()->type() == AbstractDomain::LogXLogYDomain) - topLeft = domain()->calculateGeometryPoint(QPointF(set ? positiveSum : domain()->minX(), category + barWidth / 2), m_validData); - else - topLeft = domain()->calculateGeometryPoint(QPointF(set ? positiveSum : 0, category + barWidth / 2), m_validData); - positiveSum += value; - } - - rect.setTopLeft(topLeft); - rect.setBottomRight(bottomRight); - layout.append(rect.normalized()); - } - } - return layout; -} - -#include "moc_horizontalstackedbarchartitem_p.cpp" - -QTCOMMERCIALCHART_END_NAMESPACE - diff --git a/src/barchart/horizontal/stacked/horizontalstackedbarchartitem_p.h b/src/barchart/horizontal/stacked/horizontalstackedbarchartitem_p.h deleted file mode 100644 index 4e91a8b3..00000000 --- a/src/barchart/horizontal/stacked/horizontalstackedbarchartitem_p.h +++ /dev/null @@ -1,51 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 Qt Enterprise 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 HORIZONTALSTACKEDBARCHARTITEM_P_H -#define HORIZONTALSTACKEDBARCHARTITEM_P_H - -#include "abstractbarchartitem_p.h" -#include <QGraphicsItem> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class HorizontalStackedBarChartItem : public AbstractBarChartItem -{ - Q_OBJECT -public: - HorizontalStackedBarChartItem(QAbstractBarSeries *series, QGraphicsItem* item = 0); - -private: - virtual QVector<QRectF> calculateLayout(); - void initializeLayout(); -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // HORIZONTALSTACKEDBARCHARTITEM_P_H diff --git a/src/barchart/horizontal/stacked/qhorizontalstackedbarseries.cpp b/src/barchart/horizontal/stacked/qhorizontalstackedbarseries.cpp deleted file mode 100644 index a5d8f519..00000000 --- a/src/barchart/horizontal/stacked/qhorizontalstackedbarseries.cpp +++ /dev/null @@ -1,120 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 "qhorizontalstackedbarseries.h" -#include "qhorizontalstackedbarseries_p.h" -#include "horizontalstackedbarchartitem_p.h" - -#include "chartdataset_p.h" -#include "charttheme_p.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE -/*! - \class QHorizontalStackedBarSeries - \inmodule Qt Charts - \brief Series for creating horizontal stacked bar chart. - \mainclass - - QHorizontalStackedBarSeries represents a series of data shown as bars. The purpose of this class is to draw bars - as groups, where bars in same category are grouped next to each other. QHorizontalStackedBarSeries groups the data - from sets to categories, which are defined by a QStringList. - - See the \l {HorizontalStackedBarChart Example} {horizontal stacked bar chart example} to learn how to create a horizontal stacked bar chart. - \image examples_horizontalstackedbarchart.png - - \sa QBarSet, QBarSeries, QPercentBarSeries, QAbstractBarSeries, QStackedBarSeries, QHorizontalPercentBarSeries, QHorizontalBarSeries -*/ -#ifdef QDOC_QT5 -/*! - \qmltype HorizontalStackedBarSeries - \instantiates QHorizontalStackedBarSeries - \inqmlmodule QtCommercial.Chart - - \include doc/src/horizontalstackedbarseries.qdocinc -*/ -#else -/*! - \qmlclass HorizontalStackedBarSeries QHorizontalStackedBarSeries - - \include ../doc/src/horizontalstackedbarseries.qdocinc -*/ -#endif - -/*! - Constructs empty QHorizontalStackedBarSeries. - QHorizontalStackedBarSeries is QObject which is a child of a \a parent. -*/ -QHorizontalStackedBarSeries::QHorizontalStackedBarSeries(QObject *parent) - : QAbstractBarSeries(*new QHorizontalStackedBarSeriesPrivate(this), parent) -{ -} - -/*! - Destructor. - Removes series from chart. -*/ -QHorizontalStackedBarSeries::~QHorizontalStackedBarSeries() -{ - Q_D(QHorizontalStackedBarSeries); - if (d->m_chart) - d->m_chart->removeSeries(this); -} - -/*! - Returns QAbstractSeries::SeriesTypeHorizontalStackedBar. -*/ -QAbstractSeries::SeriesType QHorizontalStackedBarSeries::type() const -{ - return QAbstractSeries::SeriesTypeHorizontalStackedBar; -} - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -QHorizontalStackedBarSeriesPrivate::QHorizontalStackedBarSeriesPrivate(QHorizontalStackedBarSeries *q) : QAbstractBarSeriesPrivate(q) -{ - -} - -void QHorizontalStackedBarSeriesPrivate::initializeDomain() -{ - qreal minX(domain()->minX()); - qreal minY(domain()->minY()); - qreal maxX(domain()->maxX()); - qreal maxY(domain()->maxY()); - - qreal y = categoryCount(); - minX = qMin(minX, bottom()); - minY = qMin(minY, - (qreal)0.5); - maxX = qMax(maxX, top()); - maxY = qMax(maxY, y - (qreal)0.5); - - domain()->setRange(minX, maxX, minY, maxY); -} - -void QHorizontalStackedBarSeriesPrivate::initializeGraphics(QGraphicsItem *parent) -{ - Q_Q(QHorizontalStackedBarSeries); - HorizontalStackedBarChartItem *bar = new HorizontalStackedBarChartItem(q,parent); - m_item.reset(bar); - QAbstractSeriesPrivate::initializeGraphics(parent); -} - -#include "moc_qhorizontalstackedbarseries.cpp" - -QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/horizontal/stacked/qhorizontalstackedbarseries.h b/src/barchart/horizontal/stacked/qhorizontalstackedbarseries.h deleted file mode 100644 index 5db21851..00000000 --- a/src/barchart/horizontal/stacked/qhorizontalstackedbarseries.h +++ /dev/null @@ -1,45 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 QHORIZONTALSTACKEDBARSERIES_H -#define QHORIZONTALSTACKEDBARSERIES_H - -#include <qabstractbarseries.h> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class QHorizontalStackedBarSeriesPrivate; - -class QTCOMMERCIALCHART_EXPORT QHorizontalStackedBarSeries : public QAbstractBarSeries -{ - Q_OBJECT -public: - explicit QHorizontalStackedBarSeries(QObject *parent = 0); - ~QHorizontalStackedBarSeries(); - QAbstractSeries::SeriesType type() const; - -private: - Q_DECLARE_PRIVATE(QHorizontalStackedBarSeries) - Q_DISABLE_COPY(QHorizontalStackedBarSeries) -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // QHORIZONTALSTACKEDBARSERIES_H diff --git a/src/barchart/horizontal/stacked/qhorizontalstackedbarseries_p.h b/src/barchart/horizontal/stacked/qhorizontalstackedbarseries_p.h deleted file mode 100644 index 869cf593..00000000 --- a/src/barchart/horizontal/stacked/qhorizontalstackedbarseries_p.h +++ /dev/null @@ -1,50 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 Qt Enterprise 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 QHORIZONTALSTACKEDBARSERIES_P_H -#define QHORIZONTALSTACKEDBARSERIES_P_H - -#include "qabstractbarseries_p.h" -#include "abstractdomain_p.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class QHorizontalStackedBarSeriesPrivate: public QAbstractBarSeriesPrivate -{ -public: - QHorizontalStackedBarSeriesPrivate(QHorizontalStackedBarSeries *q); - void initializeGraphics(QGraphicsItem* parent); - void initializeDomain(); -private: - Q_DECLARE_PUBLIC(QHorizontalStackedBarSeries) -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // QHORIZONTALSTACKEDBARSERIES_P_H diff --git a/src/barchart/qabstractbarseries.cpp b/src/barchart/qabstractbarseries.cpp deleted file mode 100644 index 564ee3a6..00000000 --- a/src/barchart/qabstractbarseries.cpp +++ /dev/null @@ -1,1028 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 "qabstractbarseries.h" -#include "qabstractbarseries_p.h" -#include "qbarset.h" -#include "qbarset_p.h" -#include "abstractdomain_p.h" -#include "chartdataset_p.h" -#include "charttheme_p.h" -#include "qvalueaxis.h" -#include "qbarcategoryaxis.h" -#include "qbarlegendmarker.h" -#include "baranimation_p.h" -#include "abstractbarchartitem_p.h" -#include "qchart_p.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -/*! - \class QAbstractBarSeries - \inmodule Qt Charts - \brief Series for creating a bar chart. - \mainclass - - QAbstractBarSeries represents a series of data shown as bars. The purpose of this class is to draw bars to - the position defined by data. Single bar is defined by QPointF, where x value is the x-coordinate of the bar - and y-value is the height of the bar. The category names are ignored with this series and x-axis - shows the x-values. - - See the \l {BarChart Example} {bar chart example} to learn how to create a simple bar chart. - \image examples_barchart.png - - \sa QBarSet, QStackedBarSeries, QPercentBarSeries -*/ -#ifdef QDOC_QT5 -/*! - \qmltype AbstractBarSeries - \instantiates QAbstractBarSeries - \inqmlmodule QtCommercial.Chart - - \include doc/src/abstractbarseries.qdocinc -*/ -#else -/*! - \qmlclass AbstractBarSeries QAbstractBarSeries - - \include ../doc/src/abstractbarseries.qdocinc -*/ -#endif - -/*! - \qmlproperty AbstractAxis AbstractBarSeries::axisX - The x axis used for the series. If you leave both axisX and axisXTop undefined, a BarCategoriesAxis is created for - the series. - \sa axisXTop -*/ - -/*! - \qmlproperty AbstractAxis AbstractBarSeries::axisY - The y axis used for the series. If you leave both axisY and axisYRight undefined, a ValueAxis is created for - the series. - \sa axisYRight -*/ - -/*! - \qmlproperty AbstractAxis AbstractBarSeries::axisXTop - The x axis used for the series, drawn on top of the chart view. Note that you can only provide either axisX or - axisXTop, but not both. - \sa axisX -*/ - -/*! - \qmlproperty AbstractAxis AbstractBarSeries::axisYRight - The y axis used for the series, drawn to the right on the chart view. Note that you can only provide either axisY - or axisYRight, but not both. - \sa axisY -*/ - -/*! - \property QAbstractBarSeries::barWidth - The width of the bars of the series. The unit of \a width is the unit of x-axis. The minimum width for bars - is zero and negative values are treated as zero. Setting the width to zero means that width of the bar on screen - is one pixel no matter what the scale of x-axis is. Bars wider than zero are scaled with x-axis. - Note that with QBarSeries this value means the width of one group of bars instead of just one bar. - \sa QBarSeries -*/ -/*! - \qmlproperty real AbstractBarSeries::barWidth - The width of the bars of the series. The unit of width is the unit of x-axis. The minimum width for bars - is zero and negative values are treated as zero. Setting the width to zero means that width of the bar on screen - is one pixel no matter what the scale of x-axis is. Bars wider than zero are scaled with x-axis. - Note that with QBarSeries this value means the width of one group of bars instead of just one bar. -*/ - -/*! - \property QAbstractBarSeries::count - Holds the number of sets in series. -*/ -/*! - \qmlproperty int AbstractBarSeries::count - Holds the number of sets in series. -*/ - -/*! - \property QAbstractBarSeries::labelsVisible - Defines the visibility of the labels in series -*/ -/*! - \qmlproperty bool AbstractBarSeries::labelsVisible - Defines the visibility of the labels in series -*/ - -/*! - \property QAbstractBarSeries::labelsFormat - The \a format used for showing labels in series. - - QAbstractBarSeries supports the following format tag: - \table - \row - \li @value \li The value of the bar - \endtable - - For example, the following usage of the format tags would produce labels that show the value - followed by unit ('u'): - \code - series->setLabelsFormat("@value u"); - \endcode - - By default, the labels shows the value of the bar. For percent bar series '%' is added after - the value. The labels are shown on the plot area, labels on the edge of the plot area are cut. - If the bars are close to each other the labels may overlap. - - \sa QAbstractBarSeries::labelsVisible, QAbstractBarSeries::labelsPosition -*/ -/*! - \qmlproperty string AbstractBarSeries::labelsFormat - The format used for showing labels in series. - - \sa QAbstractBarSeries::labelsFormat, labelsVisible, labelsPosition -*/ -/*! - \fn void QAbstractBarSeries::labelsFormatChanged(const QString &format) - Signal is emitted when the \a format of data value labels is changed. -*/ -/*! - \qmlsignal XYSeries::onLabelsFormatChanged(string format) - Signal is emitted when the \a format of data value labels is changed. -*/ - -/*! - \enum QAbstractBarSeries::LabelsPosition - - This enum describes the position of the data value labels. - - \value LabelsCenter Label is in the center of the bar. - \value LabelsInsideEnd Label is inside the bar at the high end of it. - \value LabelsInsideBase Label is inside the bar at the low end of it. - \value LabelsOutsideEnd Label is outside the bar at the high end of it. - */ - -/*! - \property QAbstractBarSeries::labelsPosition - Defines the \a position of value labels. - - \sa QAbstractBarSeries::labelsVisible, QAbstractBarSeries::labelsFormat -*/ -/*! - \qmlproperty string AbstractBarSeries::labelsPosition - Defines the \a position of value labels. - - \sa labelsVisible, labelsFormat -*/ -/*! - \fn void QAbstractBarSeries::labelsPositionChanged(QAbstractBarSeries::LabelsPosition position) - Signal is emitted when the \a position of value labels is changed. -*/ -/*! - \qmlsignal AbstractBarSeries::onLabelsPositionChanged(LabelsPosition position) - Signal is emitted when the \a position of value labels is changed. -*/ - -/*! - \fn void QAbstractBarSeries::clicked(int index, QBarSet *barset) - The signal is emitted if the user clicks with a mouse on top of QBarSet \a barset. - Clicked bar inside set is indexed by \a index -*/ -/*! - \qmlsignal AbstractBarSeries::onClicked(int index, BarSet barset) - The signal is emitted if the user clicks with a mouse on top of BarSet. - Clicked bar inside set is indexed by \a index -*/ - -/*! - \fn void QAbstractBarSeries::hovered(bool status, QBarSet* barset) - - The signal is emitted if mouse is hovered on top of series. - Parameter \a barset is the pointer of barset, where hover happened. - Parameter \a status is true, if mouse entered on top of series, false if mouse left from top of series. -*/ - -/*! - \fn void QAbstractBarSeries::hovered(bool status, int index, QBarSet* barset) - - The signal is emitted if mouse is hovered on top of series. - Parameter \a barset is the pointer of barset, where hover happened. - Parameter \a status is true, if mouse entered on top of series, false if mouse left from top of series. - Hovered bar inside the set is indexed by \a index. -*/ -/*! - \qmlsignal AbstractBarSeries::onHovered(bool status, int index, BarSet barset) - - The signal is emitted if mouse is hovered on top of series. - Parameter \a barset is the pointer of barset, where hover happened. - Parameter \a status is true, if mouse entered on top of series, false if mouse left from top of series. - Hovered bar inside the set is indexed by \a index. -*/ - -/*! - \fn void QAbstractBarSeries::countChanged() - This signal is emitted when barset count has been changed, for example by append or remove. -*/ -/*! - \qmlsignal AbstractBarSeries::onCountChanged() - This signal is emitted when barset count has been changed, for example by append or remove. -*/ - -/*! - \fn void QAbstractBarSeries::labelsVisibleChanged() - This signal is emitted when labels visibility have changed. - \sa isLabelsVisible(), setLabelsVisible() -*/ - -/*! - \fn void QAbstractBarSeries::barsetsAdded(QList<QBarSet*> sets) - This signal is emitted when \a sets have been added to the series. - \sa append(), insert() -*/ -/*! - \qmlsignal AbstractBarSeries::onBarsetsAdded(BarSet barset) - Emitted when \a barset has been added to the series. -*/ - -/*! - \fn void QAbstractBarSeries::barsetsRemoved(QList<QBarSet*> sets) - This signal is emitted when \a sets have been removed from the series. - \sa remove() -*/ -/*! - \qmlsignal AbstractBarSeries::onBarsetsRemoved(BarSet barset) - Emitted when \a barset has been removed from the series. -*/ - -/*! - \qmlmethod BarSet AbstractBarSeries::at(int index) - Returns bar set at \a index. Returns null if the index is not valid. -*/ - -/*! - \qmlmethod BarSet AbstractBarSeries::append(string label, VariantList values) - Adds a new bar set with \a label and \a values to \a index. Values is a list of reals. - For example: - \code - myBarSeries.append("set 1", [0, 0.2, 0.2, 0.5, 0.4, 1.5, 0.9]); - \endcode -*/ - -/*! - \qmlmethod BarSet AbstractBarSeries::insert(int index, string label, VariantList values) - Inserts a new bar set with \a label and \a values to \a index. Values can be a list of reals or a list of XYPoints. - If index is zero or smaller, the new barset is prepended. If the index is count or bigger, the new barset is - appended. - \sa AbstractBarSeries::append() -*/ - -/*! - \qmlmethod bool AbstractBarSeries::remove(BarSet barset) - Removes the barset from the series. Returns true if successful, false otherwise. -*/ - -/*! - \qmlmethod AbstractBarSeries::clear() - Removes all barsets from the series. -*/ - -/*! - Destructs abstractbarseries and owned barsets. -*/ -QAbstractBarSeries::~QAbstractBarSeries() -{ - -} - -/*! - \internal -*/ -QAbstractBarSeries::QAbstractBarSeries(QAbstractBarSeriesPrivate &o, QObject *parent) - : QAbstractSeries(o, parent) -{ - Q_D(QAbstractSeries); - QObject::connect(this, SIGNAL(countChanged()), d, SIGNAL(countChanged())); -} - -/*! - Sets the width of the bars of the series. The unit of \a width is the unit of x-axis. The minimum width for bars - is zero and negative values are treated as zero. Setting the width to zero means that width of the bar on screen - is one pixel no matter what the scale of x-axis is. Bars wider than zero are scaled with x-axis. - Note that with \link QBarSeries \endlink this value means the width of one group of bars instead of just one bar. -*/ -void QAbstractBarSeries::setBarWidth(qreal width) -{ - Q_D(QAbstractBarSeries); - d->setBarWidth(width); -} - -/*! - Returns the width of the bars of the series. - \sa setBarWidth() -*/ -qreal QAbstractBarSeries::barWidth() const -{ - Q_D(const QAbstractBarSeries); - return d->barWidth(); -} - -/*! - Adds a set of bars to series. Takes ownership of \a set. If the set is null or is already in series, it won't be appended. - Returns true, if appending succeeded. -*/ -bool QAbstractBarSeries::append(QBarSet *set) -{ - Q_D(QAbstractBarSeries); - bool success = d->append(set); - if (success) { - QList<QBarSet *> sets; - sets.append(set); - set->setParent(this); - emit barsetsAdded(sets); - emit countChanged(); - } - return success; -} - -/*! - Removes barset from series. Releases ownership of \a set. Deletes the set, if remove - was successful. - Returns true, if set was removed. -*/ -bool QAbstractBarSeries::remove(QBarSet *set) -{ - Q_D(QAbstractBarSeries); - bool success = d->remove(set); - if (success) { - QList<QBarSet *> sets; - sets.append(set); - set->setParent(0); - emit barsetsRemoved(sets); - emit countChanged(); - delete set; - set = 0; - } - return success; -} - -/*! - Takes a single \a set from the series. Does not delete the barset object. - - NOTE: The series remains as the barset's parent object. You must set the - parent object to take full ownership. - - Returns true if take was successful. -*/ -bool QAbstractBarSeries::take(QBarSet *set) -{ - Q_D(QAbstractBarSeries); - bool success = d->remove(set); - if (success) { - QList<QBarSet *> sets; - sets.append(set); - emit barsetsRemoved(sets); - emit countChanged(); - } - return success; -} - -/*! - Adds a list of barsets to series. Takes ownership of \a sets. - Returns true, if all sets were appended successfully. If any of the sets is null or is already appended to series, - nothing is appended and function returns false. If any of the sets is in list more than once, nothing is appended - and function returns false. -*/ -bool QAbstractBarSeries::append(QList<QBarSet *> sets) -{ - Q_D(QAbstractBarSeries); - bool success = d->append(sets); - if (success) { - emit barsetsAdded(sets); - emit countChanged(); - } - return success; -} - -/*! - Insert a set of bars to series at \a index postion. Takes ownership of \a set. If the set is null or is already in series, it won't be appended. - Returns true, if inserting succeeded. - -*/ -bool QAbstractBarSeries::insert(int index, QBarSet *set) -{ - Q_D(QAbstractBarSeries); - bool success = d->insert(index, set); - if (success) { - QList<QBarSet *> sets; - sets.append(set); - emit barsetsAdded(sets); - emit countChanged(); - } - return success; -} - -/*! - Removes all barsets from the series. Deletes removed sets. -*/ -void QAbstractBarSeries::clear() -{ - Q_D(QAbstractBarSeries); - QList<QBarSet *> sets = barSets(); - bool success = d->remove(sets); - if (success) { - emit barsetsRemoved(sets); - emit countChanged(); - foreach (QBarSet *set, sets) - delete set; - } -} - -/*! - Returns number of sets in series. -*/ -int QAbstractBarSeries::count() const -{ - Q_D(const QAbstractBarSeries); - return d->m_barSets.count(); -} - -/*! - Returns a list of sets in series. Keeps ownership of sets. - */ -QList<QBarSet *> QAbstractBarSeries::barSets() const -{ - Q_D(const QAbstractBarSeries); - return d->m_barSets; -} - -/*! - Sets the visibility of labels in series to \a visible -*/ -void QAbstractBarSeries::setLabelsVisible(bool visible) -{ - Q_D(QAbstractBarSeries); - if (d->m_labelsVisible != visible) { - d->setLabelsVisible(visible); - emit labelsVisibleChanged(); - } -} - -/*! - Returns the visibility of labels -*/ -bool QAbstractBarSeries::isLabelsVisible() const -{ - Q_D(const QAbstractBarSeries); - return d->m_labelsVisible; -} - -void QAbstractBarSeries::setLabelsFormat(const QString &format) -{ - Q_D(QAbstractBarSeries); - if (d->m_labelsFormat != format) { - d->m_labelsFormat = format; - emit labelsFormatChanged(format); - } -} - -QString QAbstractBarSeries::labelsFormat() const -{ - Q_D(const QAbstractBarSeries); - return d->m_labelsFormat; -} - -void QAbstractBarSeries::setLabelsPosition(QAbstractBarSeries::LabelsPosition position) -{ - Q_D(QAbstractBarSeries); - if (d->m_labelsPosition != position) { - d->m_labelsPosition = position; - emit labelsPositionChanged(position); - } -} - -QAbstractBarSeries::LabelsPosition QAbstractBarSeries::labelsPosition() const -{ - Q_D(const QAbstractBarSeries); - return d->m_labelsPosition; -} - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -QAbstractBarSeriesPrivate::QAbstractBarSeriesPrivate(QAbstractBarSeries *q) : - QAbstractSeriesPrivate(q), - m_barWidth(0.5), // Default value is 50% of category width - m_labelsVisible(false), - m_visible(true), - m_blockBarUpdate(false), - m_labelsFormat(), - m_labelsPosition(QAbstractBarSeries::LabelsCenter) -{ -} - -int QAbstractBarSeriesPrivate::categoryCount() const -{ - // No categories defined. return count of longest set. - int count = 0; - for (int i = 0; i < m_barSets.count(); i++) { - if (m_barSets.at(i)->count() > count) - count = m_barSets.at(i)->count(); - } - - return count; -} - -void QAbstractBarSeriesPrivate::setBarWidth(qreal width) -{ - if (width < 0.0) - width = 0.0; - m_barWidth = width; - emit updatedLayout(); -} - -qreal QAbstractBarSeriesPrivate::barWidth() const -{ - return m_barWidth; -} - -QBarSet *QAbstractBarSeriesPrivate::barsetAt(int index) -{ - return m_barSets.at(index); -} - -void QAbstractBarSeriesPrivate::setVisible(bool visible) -{ - m_visible = visible; - emit visibleChanged(); -} - -void QAbstractBarSeriesPrivate::setLabelsVisible(bool visible) -{ - m_labelsVisible = visible; - emit labelsVisibleChanged(visible); -} - -qreal QAbstractBarSeriesPrivate::min() -{ - if (m_barSets.count() <= 0) - return 0; - - qreal min = INT_MAX; - - for (int i = 0; i < m_barSets.count(); i++) { - int categoryCount = m_barSets.at(i)->count(); - for (int j = 0; j < categoryCount; j++) { - qreal temp = m_barSets.at(i)->at(j); - if (temp < min) - min = temp; - } - } - return min; -} - -qreal QAbstractBarSeriesPrivate::max() -{ - if (m_barSets.count() <= 0) - return 0; - - qreal max = INT_MIN; - - for (int i = 0; i < m_barSets.count(); i++) { - int categoryCount = m_barSets.at(i)->count(); - for (int j = 0; j < categoryCount; j++) { - qreal temp = m_barSets.at(i)->at(j); - if (temp > max) - max = temp; - } - } - - return max; -} - -qreal QAbstractBarSeriesPrivate::valueAt(int set, int category) -{ - if ((set < 0) || (set >= m_barSets.count())) - return 0; // No set, no value. - else if ((category < 0) || (category >= m_barSets.at(set)->count())) - return 0; // No category, no value. - - return m_barSets.at(set)->at(category); -} - -qreal QAbstractBarSeriesPrivate::percentageAt(int set, int category) -{ - if ((set < 0) || (set >= m_barSets.count())) - return 0; // No set, no value. - else if ((category < 0) || (category >= m_barSets.at(set)->count())) - return 0; // No category, no value. - - qreal value = m_barSets.at(set)->at(category); - qreal sum = categorySum(category); - if (qFuzzyCompare(sum, 0)) - return 0; - - return value / sum; -} - -qreal QAbstractBarSeriesPrivate::categorySum(int category) -{ - qreal sum(0); - int count = m_barSets.count(); // Count sets - for (int set = 0; set < count; set++) { - if (category < m_barSets.at(set)->count()) - sum += m_barSets.at(set)->at(category); - } - return sum; -} - -qreal QAbstractBarSeriesPrivate::absoluteCategorySum(int category) -{ - qreal sum(0); - int count = m_barSets.count(); // Count sets - for (int set = 0; set < count; set++) { - if (category < m_barSets.at(set)->count()) - sum += qAbs(m_barSets.at(set)->at(category)); - } - return sum; -} - -qreal QAbstractBarSeriesPrivate::maxCategorySum() -{ - qreal max = INT_MIN; - int count = categoryCount(); - for (int i = 0; i < count; i++) { - qreal sum = categorySum(i); - if (sum > max) - max = sum; - } - return max; -} - -qreal QAbstractBarSeriesPrivate::minX() -{ - if (m_barSets.count() <= 0) - return 0; - - qreal min = INT_MAX; - - for (int i = 0; i < m_barSets.count(); i++) { - int categoryCount = m_barSets.at(i)->count(); - for (int j = 0; j < categoryCount; j++) { - qreal temp = m_barSets.at(i)->d_ptr.data()->m_values.at(j).x(); - if (temp < min) - min = temp; - } - } - return min; -} - -qreal QAbstractBarSeriesPrivate::maxX() -{ - if (m_barSets.count() <= 0) - return 0; - - qreal max = INT_MIN; - - for (int i = 0; i < m_barSets.count(); i++) { - int categoryCount = m_barSets.at(i)->count(); - for (int j = 0; j < categoryCount; j++) { - qreal temp = m_barSets.at(i)->d_ptr.data()->m_values.at(j).x(); - if (temp > max) - max = temp; - } - } - - return max; -} - -qreal QAbstractBarSeriesPrivate::categoryTop(int category) -{ - // Returns top (sum of all positive values) of category. - // Returns 0, if all values are negative - qreal top(0); - int count = m_barSets.count(); - for (int set = 0; set < count; set++) { - if (category < m_barSets.at(set)->count()) { - qreal temp = m_barSets.at(set)->at(category); - if (temp > 0) { - top += temp; - } - } - } - return top; -} - -qreal QAbstractBarSeriesPrivate::categoryBottom(int category) -{ - // Returns bottom (sum of all negative values) of category - // Returns 0, if all values are positive - qreal bottom(0); - int count = m_barSets.count(); - for (int set = 0; set < count; set++) { - if (category < m_barSets.at(set)->count()) { - qreal temp = m_barSets.at(set)->at(category); - if (temp < 0) { - bottom += temp; - } - } - } - return bottom; -} - -qreal QAbstractBarSeriesPrivate::top() -{ - // Returns top of all categories - qreal top(0); - int count = categoryCount(); - for (int i = 0; i < count; i++) { - qreal temp = categoryTop(i); - if (temp > top) - top = temp; - } - return top; -} - -qreal QAbstractBarSeriesPrivate::bottom() -{ - // Returns bottom of all categories - qreal bottom(0); - int count = categoryCount(); - for (int i = 0; i < count; i++) { - qreal temp = categoryBottom(i); - if (temp < bottom) - bottom = temp; - } - return bottom; -} - -bool QAbstractBarSeriesPrivate::blockBarUpdate() -{ - return m_blockBarUpdate; -} - -void QAbstractBarSeriesPrivate::initializeDomain() -{ - qreal minX(domain()->minX()); - qreal minY(domain()->minY()); - qreal maxX(domain()->maxX()); - qreal maxY(domain()->maxY()); - - qreal seriesMinX = this->minX(); - qreal seriesMaxX = this->maxX(); - qreal y = max(); - minX = qMin(minX, seriesMinX - (qreal)0.5); - minY = qMin(minY, y); - maxX = qMax(maxX, seriesMaxX + (qreal)0.5); - maxY = qMax(maxY, y); - - domain()->setRange(minX, maxX, minY, maxY); -} - -QList<QLegendMarker*> QAbstractBarSeriesPrivate::createLegendMarkers(QLegend* legend) -{ - Q_Q(QAbstractBarSeries); - QList<QLegendMarker*> markers; - - foreach(QBarSet* set, q->barSets()) { - QBarLegendMarker* marker = new QBarLegendMarker(q,set,legend); - markers << marker; - } - return markers; -} - - -bool QAbstractBarSeriesPrivate::append(QBarSet *set) -{ - if ((m_barSets.contains(set)) || (set == 0)) - return false; // Fail if set is already in list or set is null. - - m_barSets.append(set); - QObject::connect(set->d_ptr.data(), SIGNAL(updatedLayout()), this, SIGNAL(updatedLayout())); - QObject::connect(set->d_ptr.data(), SIGNAL(updatedBars()), this, SIGNAL(updatedBars())); - QObject::connect(set->d_ptr.data(), SIGNAL(restructuredBars()), this, SIGNAL(restructuredBars())); - - emit restructuredBars(); // this notifies barchartitem - return true; -} - -bool QAbstractBarSeriesPrivate::remove(QBarSet *set) -{ - if (!m_barSets.contains(set)) - return false; // Fail if set is not in list - - m_barSets.removeOne(set); - QObject::disconnect(set->d_ptr.data(), SIGNAL(updatedLayout()), this, SIGNAL(updatedLayout())); - QObject::disconnect(set->d_ptr.data(), SIGNAL(updatedBars()), this, SIGNAL(updatedBars())); - QObject::disconnect(set->d_ptr.data(), SIGNAL(restructuredBars()), this, SIGNAL(restructuredBars())); - - emit restructuredBars(); // this notifies barchartitem - return true; -} - -bool QAbstractBarSeriesPrivate::append(QList<QBarSet * > sets) -{ - foreach (QBarSet *set, sets) { - if ((set == 0) || (m_barSets.contains(set))) - return false; // Fail if any of the sets is null or is already appended. - if (sets.count(set) != 1) - return false; // Also fail if same set is more than once in given list. - } - - foreach (QBarSet *set, sets) { - m_barSets.append(set); - QObject::connect(set->d_ptr.data(), SIGNAL(updatedLayout()), this, SIGNAL(updatedLayout())); - QObject::connect(set->d_ptr.data(), SIGNAL(updatedBars()), this, SIGNAL(updatedBars())); - QObject::connect(set->d_ptr.data(), SIGNAL(restructuredBars()), this, SIGNAL(restructuredBars())); - } - - emit restructuredBars(); // this notifies barchartitem - return true; -} - -bool QAbstractBarSeriesPrivate::remove(QList<QBarSet * > sets) -{ - if (sets.count() == 0) - return false; - - foreach (QBarSet *set, sets) { - if ((set == 0) || (!m_barSets.contains(set))) - return false; // Fail if any of the sets is null or is not in series - if (sets.count(set) != 1) - return false; // Also fail if same set is more than once in given list. - } - - foreach (QBarSet *set, sets) { - m_barSets.removeOne(set); - QObject::disconnect(set->d_ptr.data(), SIGNAL(updatedLayout()), this, SIGNAL(updatedLayout())); - QObject::disconnect(set->d_ptr.data(), SIGNAL(updatedBars()), this, SIGNAL(updatedBars())); - QObject::disconnect(set->d_ptr.data(), SIGNAL(restructuredBars()), this, SIGNAL(restructuredBars())); - } - - emit restructuredBars(); // this notifies barchartitem - - return true; -} - -bool QAbstractBarSeriesPrivate::insert(int index, QBarSet *set) -{ - if ((m_barSets.contains(set)) || (set == 0)) - return false; // Fail if set is already in list or set is null. - - m_barSets.insert(index, set); - QObject::connect(set->d_ptr.data(), SIGNAL(updatedLayout()), this, SIGNAL(updatedLayout())); - QObject::connect(set->d_ptr.data(), SIGNAL(updatedBars()), this, SIGNAL(updatedBars())); - QObject::connect(set->d_ptr.data(), SIGNAL(restructuredBars()), this, SIGNAL(restructuredBars())); - - emit restructuredBars(); // this notifies barchartitem - return true; -} - -void QAbstractBarSeriesPrivate::initializeAxes() -{ - Q_Q(QAbstractBarSeries); - - foreach(QAbstractAxis* axis, m_axes) { - - if (axis->type() == QAbstractAxis::AxisTypeBarCategory) { - switch (q->type()) { - case QAbstractSeries::SeriesTypeHorizontalBar: - case QAbstractSeries::SeriesTypeHorizontalPercentBar: - case QAbstractSeries::SeriesTypeHorizontalStackedBar: - if (axis->orientation() == Qt::Vertical) - populateCategories(qobject_cast<QBarCategoryAxis *>(axis)); - break; - case QAbstractSeries::SeriesTypeBar: - case QAbstractSeries::SeriesTypePercentBar: - case QAbstractSeries::SeriesTypeStackedBar: - case QAbstractSeries::SeriesTypeBoxPlot: - if (axis->orientation() == Qt::Horizontal) - populateCategories(qobject_cast<QBarCategoryAxis *>(axis)); - break; - default: - qWarning() << "Unexpected series type"; - break; - } - } - } -} - -QAbstractAxis::AxisType QAbstractBarSeriesPrivate::defaultAxisType(Qt::Orientation orientation) const -{ - Q_Q(const QAbstractBarSeries); - - switch (q->type()) { - case QAbstractSeries::SeriesTypeHorizontalBar: - case QAbstractSeries::SeriesTypeHorizontalPercentBar: - case QAbstractSeries::SeriesTypeHorizontalStackedBar: - if (orientation == Qt::Vertical) - return QAbstractAxis::AxisTypeBarCategory; - break; - case QAbstractSeries::SeriesTypeBar: - case QAbstractSeries::SeriesTypePercentBar: - case QAbstractSeries::SeriesTypeStackedBar: - case QAbstractSeries::SeriesTypeBoxPlot: - if (orientation == Qt::Horizontal) - return QAbstractAxis::AxisTypeBarCategory; - break; - default: - qWarning() << "Unexpected series type"; - break; - } - return QAbstractAxis::AxisTypeValue; - -} - -void QAbstractBarSeriesPrivate::populateCategories(QBarCategoryAxis *axis) -{ - QStringList categories; - if (axis->categories().isEmpty()) { - for (int i(1); i < categoryCount() + 1; i++) - categories << presenter()->numberToString(i); - axis->append(categories); - } -} - -QAbstractAxis* QAbstractBarSeriesPrivate::createDefaultAxis(Qt::Orientation orientation) const -{ - if (defaultAxisType(orientation) == QAbstractAxis::AxisTypeBarCategory) - return new QBarCategoryAxis; - else - return new QValueAxis; -} - -void QAbstractBarSeriesPrivate::initializeTheme(int index, ChartTheme* theme, bool forced) -{ - m_blockBarUpdate = true; // Ensures that the bars are not updated before the theme is ready - - const QList<QGradient> gradients = theme->seriesGradients(); - - qreal takeAtPos = 0.5; - qreal step = 0.2; - if (m_barSets.count() > 1) { - step = 1.0 / (qreal) m_barSets.count(); - if (m_barSets.count() % gradients.count()) - step *= gradients.count(); - else - step *= (gradients.count() - 1); - } - - for (int i(0); i < m_barSets.count(); i++) { - int colorIndex = (index + i) % gradients.count(); - if (i > 0 && i %gradients.count() == 0) { - // There is no dedicated base color for each sets, generate more colors - takeAtPos += step; - if (takeAtPos == 1.0) - takeAtPos += step; - takeAtPos -= (int) takeAtPos; - } - if (forced || QChartPrivate::defaultBrush() == m_barSets.at(i)->d_ptr->m_brush) - m_barSets.at(i)->setBrush(ChartThemeManager::colorAt(gradients.at(colorIndex), takeAtPos)); - - // Pick label color from the opposite end of the gradient. - // 0.3 as a boundary seems to work well. - if (forced || QChartPrivate::defaultBrush() == m_barSets.at(i)->d_ptr->m_labelBrush) { - if (takeAtPos < 0.3) - m_barSets.at(i)->setLabelBrush(ChartThemeManager::colorAt(gradients.at(index % gradients.size()), 1)); - else - m_barSets.at(i)->setLabelBrush(ChartThemeManager::colorAt(gradients.at(index % gradients.size()), 0)); - } - if (forced || QChartPrivate::defaultPen() == m_barSets.at(i)->d_ptr->m_pen) { - QColor c = ChartThemeManager::colorAt(gradients.at(index % gradients.size()), 0.0); - m_barSets.at(i)->setPen(c); - } - } - m_blockBarUpdate = false; - emit updatedBars(); -} - -void QAbstractBarSeriesPrivate::initializeAnimations(QChart::AnimationOptions options) -{ - AbstractBarChartItem *bar = static_cast<AbstractBarChartItem *>(m_item.data()); - Q_ASSERT(bar); - if (bar->animation()) - bar->animation()->stopAndDestroyLater(); - - if (options.testFlag(QChart::SeriesAnimations)) - bar->setAnimation(new BarAnimation(bar)); - else - bar->setAnimation(0); - QAbstractSeriesPrivate::initializeAnimations(options); -} - -#include "moc_qabstractbarseries.cpp" -#include "moc_qabstractbarseries_p.cpp" - -QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/qabstractbarseries.h b/src/barchart/qabstractbarseries.h deleted file mode 100644 index cf23ab90..00000000 --- a/src/barchart/qabstractbarseries.h +++ /dev/null @@ -1,105 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 QABSTRACTBARSERIES_H -#define QABSTRACTBARSERIES_H - -#include <qabstractseries.h> -#include <QStringList> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class QBarSet; -class QAbstractBarSeriesPrivate; - -// Container for series -class QTCOMMERCIALCHART_EXPORT QAbstractBarSeries : public QAbstractSeries -{ - Q_OBJECT - Q_PROPERTY(qreal barWidth READ barWidth WRITE setBarWidth) - Q_PROPERTY(int count READ count NOTIFY countChanged) - Q_PROPERTY(bool labelsVisible READ isLabelsVisible WRITE setLabelsVisible NOTIFY labelsVisibleChanged) - Q_PROPERTY(QString labelsFormat READ labelsFormat WRITE setLabelsFormat NOTIFY labelsFormatChanged) - Q_PROPERTY(LabelsPosition labelsPosition READ labelsPosition WRITE setLabelsPosition NOTIFY labelsPositionChanged) - Q_ENUMS(LabelsPosition) - -public: - enum LabelsPosition { - LabelsCenter = 0, - LabelsInsideEnd, - LabelsInsideBase, - LabelsOutsideEnd - }; - -public: - virtual ~QAbstractBarSeries(); - - void setBarWidth(qreal width); - qreal barWidth() const; - - bool append(QBarSet *set); - bool remove(QBarSet *set); - bool take(QBarSet *set); - bool append(QList<QBarSet *> sets); - bool insert(int index, QBarSet *set); - int count() const; - QList<QBarSet *> barSets() const; - void clear(); - - void setLabelsVisible(bool visible = true); - bool isLabelsVisible() const; - - void setLabelsFormat(const QString &format); - QString labelsFormat() const; - - void setLabelsPosition(QAbstractBarSeries::LabelsPosition position); - QAbstractBarSeries::LabelsPosition labelsPosition() const; - -protected: - explicit QAbstractBarSeries(QAbstractBarSeriesPrivate &d, QObject *parent = 0); - -Q_SIGNALS: - void clicked(int index, QBarSet *barset); - void hovered(bool status, QBarSet *barset); - void hovered(bool status, int index, QBarSet *barset); - void countChanged(); - void labelsVisibleChanged(); - void labelsFormatChanged(const QString &format); - void labelsPositionChanged(QAbstractBarSeries::LabelsPosition position); - - void barsetsAdded(QList<QBarSet *> sets); - void barsetsRemoved(QList<QBarSet *> sets); - -protected: - Q_DECLARE_PRIVATE(QAbstractBarSeries) - friend class AbstractBarChartItem; - friend class PercentBarChartItem; - friend class StackedBarChartItem; - friend class BoxPlotChartItem; - friend class BarChartItem; - friend class HorizontalBarChartItem; - friend class HorizontalStackedBarChartItem; - friend class HorizontalPercentBarChartItem; - friend class BarSet; -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // QABSTRACTBARSERIES_H diff --git a/src/barchart/qabstractbarseries_p.h b/src/barchart/qabstractbarseries_p.h deleted file mode 100644 index 0cedc331..00000000 --- a/src/barchart/qabstractbarseries_p.h +++ /dev/null @@ -1,118 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 Qt Enterprise 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 QABSTRACTBARSERIES_P_H -#define QABSTRACTBARSERIES_P_H - -#include "qabstractbarseries.h" -#include "qabstractseries_p.h" -#include <QStringList> -#include <QAbstractSeries> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class QBarModelMapper; -class QBarCategoryAxis; -class QLegendMarker; - -class QAbstractBarSeriesPrivate : public QAbstractSeriesPrivate -{ - Q_OBJECT -public: - QAbstractBarSeriesPrivate(QAbstractBarSeries *parent); - int categoryCount() const; - - void setBarWidth(qreal width); - qreal barWidth() const; - - void setVisible(bool visible); - void setLabelsVisible(bool visible); - - void initializeDomain(); - void initializeAxes(); - void initializeAnimations(QChart::AnimationOptions options); - void initializeTheme(int index, ChartTheme* theme, bool forced = false); - - QList<QLegendMarker*> createLegendMarkers(QLegend *legend); - - virtual QAbstractAxis::AxisType defaultAxisType(Qt::Orientation orientation) const; - QAbstractAxis* createDefaultAxis(Qt::Orientation orientation) const; - - bool append(QBarSet *set); - bool remove(QBarSet *set); - bool append(QList<QBarSet *> sets); - bool remove(QList<QBarSet *> sets); - bool insert(int index, QBarSet *set); - - QBarSet *barsetAt(int index); - qreal min(); - qreal max(); - qreal valueAt(int set, int category); - qreal percentageAt(int set, int category); - qreal categorySum(int category); - qreal absoluteCategorySum(int category); - qreal maxCategorySum(); - qreal minX(); - qreal maxX(); - qreal categoryTop(int category); - qreal categoryBottom(int category); - qreal top(); - qreal bottom(); - - bool blockBarUpdate(); - -Q_SIGNALS: - void clicked(int index, QBarSet *barset); - void updatedBars(); - void updatedLayout(); - void restructuredBars(); - void labelsVisibleChanged(bool visible); - void visibleChanged(); - -private: - void populateCategories(QBarCategoryAxis *axis); - -protected: - QList<QBarSet *> m_barSets; - qreal m_barWidth; - bool m_labelsVisible; - bool m_visible; - bool m_blockBarUpdate; - QString m_labelsFormat; - QAbstractBarSeries::LabelsPosition m_labelsPosition; - -private: - Q_DECLARE_PUBLIC(QAbstractBarSeries) - friend class HorizontalBarChartItem; - friend class BarChartItem; -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // QABSTRACTBARSERIES_P_H diff --git a/src/barchart/qbarmodelmapper.cpp b/src/barchart/qbarmodelmapper.cpp deleted file mode 100644 index 1e87a1ab..00000000 --- a/src/barchart/qbarmodelmapper.cpp +++ /dev/null @@ -1,561 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 "qbarmodelmapper.h" -#include "qbarmodelmapper_p.h" -#include "qabstractbarseries.h" -#include "qbarset.h" -#include "qchart.h" -#include <QAbstractItemModel> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -QBarModelMapper::QBarModelMapper(QObject *parent) : - QObject(parent), - d_ptr(new QBarModelMapperPrivate(this)) -{ -} - -QAbstractItemModel *QBarModelMapper::model() const -{ - Q_D(const QBarModelMapper); - return d->m_model; -} - -void QBarModelMapper::setModel(QAbstractItemModel *model) -{ - if (model == 0) - return; - - Q_D(QBarModelMapper); - if (d->m_model) - disconnect(d->m_model, 0, d, 0); - - d->m_model = model; - d->initializeBarFromModel(); - // connect signals from the model - connect(d->m_model, SIGNAL(dataChanged(QModelIndex,QModelIndex)), d, SLOT(modelUpdated(QModelIndex,QModelIndex))); - connect(d->m_model, SIGNAL(headerDataChanged(Qt::Orientation,int,int)), d, SLOT(modelHeaderDataUpdated(Qt::Orientation,int,int))); - connect(d->m_model, SIGNAL(rowsInserted(QModelIndex,int,int)), d, SLOT(modelRowsAdded(QModelIndex,int,int))); - connect(d->m_model, SIGNAL(rowsRemoved(QModelIndex,int,int)), d, SLOT(modelRowsRemoved(QModelIndex,int,int))); - connect(d->m_model, SIGNAL(columnsInserted(QModelIndex,int,int)), d, SLOT(modelColumnsAdded(QModelIndex,int,int))); - connect(d->m_model, SIGNAL(columnsRemoved(QModelIndex,int,int)), d, SLOT(modelColumnsRemoved(QModelIndex,int,int))); - connect(d->m_model, SIGNAL(destroyed()), d, SLOT(handleModelDestroyed())); -} - -QAbstractBarSeries *QBarModelMapper::series() const -{ - Q_D(const QBarModelMapper); - return d->m_series; -} - -void QBarModelMapper::setSeries(QAbstractBarSeries *series) -{ - Q_D(QBarModelMapper); - if (d->m_series) - disconnect(d->m_series, 0, d, 0); - - if (series == 0) - return; - - d->m_series = series; - d->initializeBarFromModel(); - // connect the signals from the series - connect(d->m_series, SIGNAL(barsetsAdded(QList<QBarSet*>)), d, SLOT(barSetsAdded(QList<QBarSet*>))); - connect(d->m_series, SIGNAL(barsetsRemoved(QList<QBarSet*>)), d, SLOT(barSetsRemoved(QList<QBarSet*>))); - connect(d->m_series, SIGNAL(destroyed()), d, SLOT(handleSeriesDestroyed())); -} - -/*! - Returns which row/column of the model contains the first values of the QBarSets in the series. - The default value is 0. -*/ -int QBarModelMapper::first() const -{ - Q_D(const QBarModelMapper); - return d->m_first; -} - -/*! - Sets which row of the model contains the \a first values of the QBarSets in the series. - The default value is 0. -*/ -void QBarModelMapper::setFirst(int first) -{ - Q_D(QBarModelMapper); - d->m_first = qMax(first, 0); - d->initializeBarFromModel(); -} - -/*! - Returns the number of rows/columns of the model that are mapped as the data for QAbstractBarSeries - Minimal and default value is: -1 (count limited by the number of rows/columns in the model) -*/ -int QBarModelMapper::count() const -{ - Q_D(const QBarModelMapper); - return d->m_count; -} - -/*! - Sets the \a count of rows/columns of the model that are mapped as the data for QAbstractBarSeries - Minimal and default value is: -1 (count limited by the number of rows/columns in the model) -*/ -void QBarModelMapper::setCount(int count) -{ - Q_D(QBarModelMapper); - d->m_count = qMax(count, -1); - d->initializeBarFromModel(); -} - -/*! - Returns the orientation that is used when QBarModelMapper accesses the model. - This mean whether the consecutive values of the bar set are read from row (Qt::Horizontal) - or from columns (Qt::Vertical) -*/ -Qt::Orientation QBarModelMapper::orientation() const -{ - Q_D(const QBarModelMapper); - return d->m_orientation; -} - -/*! - Returns the \a orientation that is used when QBarModelMapper accesses the model. - This mean whether the consecutive values of the pie are read from row (Qt::Horizontal) - or from columns (Qt::Vertical) -*/ -void QBarModelMapper::setOrientation(Qt::Orientation orientation) -{ - Q_D(QBarModelMapper); - d->m_orientation = orientation; - d->initializeBarFromModel(); -} - -/*! - Returns which section of the model is used as the data source for the first bar set -*/ -int QBarModelMapper::firstBarSetSection() const -{ - Q_D(const QBarModelMapper); - return d->m_firstBarSetSection; -} - -/*! - Sets the model section that is used as the data source for the first bar set - Parameter \a firstBarSetSection specifies the section of the model. -*/ -void QBarModelMapper::setFirstBarSetSection(int firstBarSetSection) -{ - Q_D(QBarModelMapper); - d->m_firstBarSetSection = qMax(-1, firstBarSetSection); - d->initializeBarFromModel(); -} - -/*! - Returns which section of the model is used as the data source for the last bar set -*/ -int QBarModelMapper::lastBarSetSection() const -{ - Q_D(const QBarModelMapper); - return d->m_lastBarSetSection; -} - -/*! - Sets the model section that is used as the data source for the last bar set - Parameter \a lastBarSetSection specifies the section of the model. -*/ -void QBarModelMapper::setLastBarSetSection(int lastBarSetSection) -{ - Q_D(QBarModelMapper); - d->m_lastBarSetSection = qMax(-1, lastBarSetSection); - d->initializeBarFromModel(); -} - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -QBarModelMapperPrivate::QBarModelMapperPrivate(QBarModelMapper *q) : - QObject(q), - m_series(0), - m_model(0), - m_first(0), - m_count(-1), - m_orientation(Qt::Vertical), - m_firstBarSetSection(-1), - m_lastBarSetSection(-1), - m_seriesSignalsBlock(false), - m_modelSignalsBlock(false), - q_ptr(q) -{ -} - -void QBarModelMapperPrivate::blockModelSignals(bool block) -{ - m_modelSignalsBlock = block; -} - -void QBarModelMapperPrivate::blockSeriesSignals(bool block) -{ - m_seriesSignalsBlock = block; -} - -QBarSet *QBarModelMapperPrivate::barSet(QModelIndex index) -{ - if (!index.isValid()) - return 0; - - if (m_orientation == Qt::Vertical && index.column() >= m_firstBarSetSection && index.column() <= m_lastBarSetSection) { - if (index.row() >= m_first && (m_count == - 1 || index.row() < m_first + m_count)) { - return m_series->barSets().at(index.column() - m_firstBarSetSection); - } - } else if (m_orientation == Qt::Horizontal && index.row() >= m_firstBarSetSection && index.row() <= m_lastBarSetSection) { - if (index.column() >= m_first && (m_count == - 1 || index.column() < m_first + m_count)) - return m_series->barSets().at(index.row() - m_firstBarSetSection); - } - return 0; // This part of model has not been mapped to any slice -} - -QModelIndex QBarModelMapperPrivate::barModelIndex(int barSection, int posInBar) -{ - if (m_count != -1 && posInBar >= m_count) - return QModelIndex(); // invalid - - if (barSection < m_firstBarSetSection || barSection > m_lastBarSetSection) - return QModelIndex(); // invalid - - if (m_orientation == Qt::Vertical) - return m_model->index(posInBar + m_first, barSection); - else - return m_model->index(barSection, posInBar + m_first); -} - -void QBarModelMapperPrivate::handleSeriesDestroyed() -{ - m_series = 0; -} - -void QBarModelMapperPrivate::modelUpdated(QModelIndex topLeft, QModelIndex bottomRight) -{ - Q_UNUSED(topLeft) - Q_UNUSED(bottomRight) - - if (m_model == 0 || m_series == 0) - return; - - if (m_modelSignalsBlock) - return; - - blockSeriesSignals(); - QModelIndex index; - for (int row = topLeft.row(); row <= bottomRight.row(); row++) { - for (int column = topLeft.column(); column <= bottomRight.column(); column++) { - index = topLeft.sibling(row, column); - QBarSet *bar = barSet(index); - if (bar) { - if (m_orientation == Qt::Vertical) - bar->replace(row - m_first, m_model->data(index).toReal()); - else - bar->replace(column - m_first, m_model->data(index).toReal()); - } - } - } - blockSeriesSignals(false); -} - -void QBarModelMapperPrivate::modelHeaderDataUpdated(Qt::Orientation orientation, int first, int last) -{ - if (m_model == 0 || m_series == 0) - return; - - if (m_modelSignalsBlock) - return; - - blockSeriesSignals(); - if (orientation != m_orientation) { - for (int section = first; section <= last; section++) { - if (section >= m_firstBarSetSection && section <= m_lastBarSetSection) { - QBarSet *bar = m_series->barSets().at(section - m_firstBarSetSection); - if (bar) - bar->setLabel(m_model->headerData(section, orientation).toString()); - } - } - } - blockSeriesSignals(false); -} - -void QBarModelMapperPrivate::modelRowsAdded(QModelIndex parent, int start, int end) -{ - Q_UNUSED(parent) - if (m_modelSignalsBlock) - return; - - blockSeriesSignals(); - if (m_orientation == Qt::Vertical) - insertData(start, end); - else if (start <= m_firstBarSetSection || start <= m_lastBarSetSection) // if the changes affect the map - reinitialize - initializeBarFromModel(); - blockSeriesSignals(false); -} - -void QBarModelMapperPrivate::modelRowsRemoved(QModelIndex parent, int start, int end) -{ - Q_UNUSED(parent) - if (m_modelSignalsBlock) - return; - - blockSeriesSignals(); - if (m_orientation == Qt::Vertical) - removeData(start, end); - else if (start <= m_firstBarSetSection || start <= m_lastBarSetSection) // if the changes affect the map - reinitialize - initializeBarFromModel(); - blockSeriesSignals(false); -} - -void QBarModelMapperPrivate::modelColumnsAdded(QModelIndex parent, int start, int end) -{ - Q_UNUSED(parent) - if (m_modelSignalsBlock) - return; - - blockSeriesSignals(); - if (m_orientation == Qt::Horizontal) - insertData(start, end); - else if (start <= m_firstBarSetSection || start <= m_lastBarSetSection) // if the changes affect the map - reinitialize - initializeBarFromModel(); - blockSeriesSignals(false); -} - -void QBarModelMapperPrivate::modelColumnsRemoved(QModelIndex parent, int start, int end) -{ - Q_UNUSED(parent) - if (m_modelSignalsBlock) - return; - - blockSeriesSignals(); - if (m_orientation == Qt::Horizontal) - removeData(start, end); - else if (start <= m_firstBarSetSection || start <= m_lastBarSetSection) // if the changes affect the map - reinitialize - initializeBarFromModel(); - blockSeriesSignals(false); -} - -void QBarModelMapperPrivate::handleModelDestroyed() -{ - m_model = 0; -} - -void QBarModelMapperPrivate::insertData(int start, int end) -{ - Q_UNUSED(end) - Q_UNUSED(start) - Q_UNUSED(end) - // Currently barchart needs to be fully recalculated when change is made. - // Re-initialize - initializeBarFromModel(); -} - -void QBarModelMapperPrivate::removeData(int start, int end) -{ - Q_UNUSED(end) - Q_UNUSED(start) - Q_UNUSED(end) - // Currently barchart needs to be fully recalculated when change is made. - // Re-initialize - initializeBarFromModel(); -} - -void QBarModelMapperPrivate::barSetsAdded(QList<QBarSet *> sets) -{ - if (m_seriesSignalsBlock) - return; - - if (sets.count() == 0) - return; - - int firstIndex = m_series->barSets().indexOf(sets.at(0)); - if (firstIndex == -1) - return; - - int maxCount = 0; - for (int i = 0; i < sets.count(); i++) { - if (sets.at(i)->count() > m_count) - maxCount = sets.at(i)->count(); - } - - if (m_count != -1 && m_count < maxCount) - m_count = maxCount; - - m_lastBarSetSection += sets.count(); - - blockModelSignals(); - int modelCapacity = m_orientation == Qt::Vertical ? m_model->rowCount() - m_first : m_model->columnCount() - m_first; - if (maxCount > modelCapacity) { - if (m_orientation == Qt::Vertical) - m_model->insertRows(m_model->rowCount(), maxCount - modelCapacity); - else - m_model->insertColumns(m_model->columnCount(), maxCount - modelCapacity); - } - - if (m_orientation == Qt::Vertical) - m_model->insertColumns(firstIndex + m_firstBarSetSection, sets.count()); - else - m_model->insertRows(firstIndex + m_firstBarSetSection, sets.count()); - - - for (int i = firstIndex + m_firstBarSetSection; i < firstIndex + m_firstBarSetSection + sets.count(); i++) { - m_model->setHeaderData(i, m_orientation == Qt::Vertical ? Qt::Horizontal : Qt::Vertical, sets.at(i - firstIndex - m_firstBarSetSection)->label()); - for (int j = 0; j < sets.at(i - firstIndex - m_firstBarSetSection)->count(); j++) - m_model->setData(barModelIndex(i, j), sets.at(i - firstIndex - m_firstBarSetSection)->at(j)); - } - blockModelSignals(false); - initializeBarFromModel(); -} - -void QBarModelMapperPrivate::barSetsRemoved(QList<QBarSet *> sets) -{ - if (m_seriesSignalsBlock) - return; - - if (sets.count() == 0) - return; - - int firstIndex = m_barSets.indexOf(sets.at(0)); - if (firstIndex == -1) - return; - - m_lastBarSetSection -= sets.count(); - - for (int i = firstIndex + sets.count() - 1; i >= firstIndex; i--) - m_barSets.removeAt(i); - - blockModelSignals(); - if (m_orientation == Qt::Vertical) - m_model->removeColumns(firstIndex + m_firstBarSetSection, sets.count()); - else - m_model->removeRows(firstIndex + m_firstBarSetSection, sets.count()); - blockModelSignals(false); - initializeBarFromModel(); -} - -void QBarModelMapperPrivate::valuesAdded(int index, int count) -{ - if (m_seriesSignalsBlock) - return; - - if (m_count != -1) - m_count += count; - - int barSetIndex = m_barSets.indexOf(qobject_cast<QBarSet *>(QObject::sender())); - - blockModelSignals(); - if (m_orientation == Qt::Vertical) - m_model->insertRows(index + m_first, count); - else - m_model->insertColumns(index + m_first, count); - - for (int j = index; j < index + count; j++) - m_model->setData(barModelIndex(barSetIndex + m_firstBarSetSection, j), m_barSets.at(barSetIndex)->at(j)); - - blockModelSignals(false); - initializeBarFromModel(); -} - -void QBarModelMapperPrivate::valuesRemoved(int index, int count) -{ - if (m_seriesSignalsBlock) - return; - - if (m_count != -1) - m_count -= count; - - blockModelSignals(); - if (m_orientation == Qt::Vertical) - m_model->removeRows(index + m_first, count); - else - m_model->removeColumns(index + m_first, count); - - blockModelSignals(false); - initializeBarFromModel(); -} - -void QBarModelMapperPrivate::barLabelChanged() -{ - if (m_seriesSignalsBlock) - return; - - int barSetIndex = m_barSets.indexOf(qobject_cast<QBarSet *>(QObject::sender())); - - blockModelSignals(); - m_model->setHeaderData(barSetIndex + m_firstBarSetSection, m_orientation == Qt::Vertical ? Qt::Horizontal : Qt::Vertical, m_barSets.at(barSetIndex)->label()); - blockModelSignals(false); - initializeBarFromModel(); -} - -void QBarModelMapperPrivate::barValueChanged(int index) -{ - if (m_seriesSignalsBlock) - return; - - int barSetIndex = m_barSets.indexOf(qobject_cast<QBarSet *>(QObject::sender())); - - blockModelSignals(); - m_model->setData(barModelIndex(barSetIndex + m_firstBarSetSection, index), m_barSets.at(barSetIndex)->at(index)); - blockModelSignals(false); - initializeBarFromModel(); -} - -void QBarModelMapperPrivate::initializeBarFromModel() -{ - if (m_model == 0 || m_series == 0) - return; - - blockSeriesSignals(); - // clear current content - m_series->clear(); - m_barSets.clear(); - - // create the initial bar sets - for (int i = m_firstBarSetSection; i <= m_lastBarSetSection; i++) { - int posInBar = 0; - QModelIndex barIndex = barModelIndex(i, posInBar); - // check if there is such model index - if (barIndex.isValid()) { - QBarSet *barSet = new QBarSet(m_model->headerData(i, m_orientation == Qt::Vertical ? Qt::Horizontal : Qt::Vertical).toString()); - while (barIndex.isValid()) { - barSet->append(m_model->data(barIndex, Qt::DisplayRole).toDouble()); - posInBar++; - barIndex = barModelIndex(i, posInBar); - } - connect(barSet, SIGNAL(valuesAdded(int,int)), this, SLOT(valuesAdded(int,int))); - connect(barSet, SIGNAL(valuesRemoved(int,int)), this, SLOT(valuesRemoved(int,int))); - connect(barSet, SIGNAL(valueChanged(int)), this, SLOT(barValueChanged(int))); - connect(barSet, SIGNAL(labelChanged()), this, SLOT(barLabelChanged())); - m_series->append(barSet); - m_barSets.append(barSet); - } else { - break; - } - } - blockSeriesSignals(false); -} - -#include "moc_qbarmodelmapper.cpp" -#include "moc_qbarmodelmapper_p.cpp" - -QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/qbarmodelmapper.h b/src/barchart/qbarmodelmapper.h deleted file mode 100644 index b8d3b16a..00000000 --- a/src/barchart/qbarmodelmapper.h +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 QBARMODELMAPPER_H -#define QBARMODELMAPPER_H - -#include "qchartglobal.h" -#include <QObject> - -class QAbstractItemModel; - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class QBarModelMapperPrivate; -class QAbstractBarSeries; - -class QTCOMMERCIALCHART_EXPORT QBarModelMapper : public QObject -{ - Q_OBJECT - -protected: - explicit QBarModelMapper(QObject *parent = 0); - - QAbstractItemModel *model() const; - void setModel(QAbstractItemModel *model); - - QAbstractBarSeries *series() const; - void setSeries(QAbstractBarSeries *series); - - int first() const; - void setFirst(int first); - - int count() const; - void setCount(int count); - - int firstBarSetSection() const; - void setFirstBarSetSection(int firstBarSetSection); - - int lastBarSetSection() const; - void setLastBarSetSection(int lastBarSetSection); - - Qt::Orientation orientation() const; - void setOrientation(Qt::Orientation orientation); - -protected: - QBarModelMapperPrivate * const d_ptr; - Q_DECLARE_PRIVATE(QBarModelMapper) -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // QBARMODELMAPPER_H diff --git a/src/barchart/qbarmodelmapper_p.h b/src/barchart/qbarmodelmapper_p.h deleted file mode 100644 index d578a9d7..00000000 --- a/src/barchart/qbarmodelmapper_p.h +++ /dev/null @@ -1,96 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 Qt Enterprise 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 QBARMODELMAPPER_P_H -#define QBARMODELMAPPER_P_H - -#include <QObject> -#include "qbarmodelmapper.h" - -class QModelIndex; - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class QBarSet; - -class QBarModelMapperPrivate : public QObject -{ - Q_OBJECT -public: - explicit QBarModelMapperPrivate(QBarModelMapper *q); - -public Q_SLOTS: - // for the model - void modelUpdated(QModelIndex topLeft, QModelIndex bottomRight); - void modelHeaderDataUpdated(Qt::Orientation orientation, int first, int last); - void modelRowsAdded(QModelIndex parent, int start, int end); - void modelRowsRemoved(QModelIndex parent, int start, int end); - void modelColumnsAdded(QModelIndex parent, int start, int end); - void modelColumnsRemoved(QModelIndex parent, int start, int end); - void handleModelDestroyed(); - - // for the series - void barSetsAdded(QList<QBarSet *> sets); - void barSetsRemoved(QList<QBarSet *> sets); - void valuesAdded(int index, int count); - void valuesRemoved(int index, int count); - void barLabelChanged(); - void barValueChanged(int index); - void handleSeriesDestroyed(); - - void initializeBarFromModel(); - -private: - QBarSet *barSet(QModelIndex index); - QModelIndex barModelIndex(int barSection, int posInBar); - void insertData(int start, int end); - void removeData(int start, int end); - void blockModelSignals(bool block = true); - void blockSeriesSignals(bool block = true); - -private: - QAbstractBarSeries *m_series; - QList<QBarSet *> m_barSets; - QAbstractItemModel *m_model; - int m_first; - int m_count; - Qt::Orientation m_orientation; - int m_firstBarSetSection; - int m_lastBarSetSection; - bool m_seriesSignalsBlock; - bool m_modelSignalsBlock; - -private: - QBarModelMapper *q_ptr; - Q_DECLARE_PUBLIC(QBarModelMapper) -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // QBARMODELMAPPER_P_H diff --git a/src/barchart/qbarset.cpp b/src/barchart/qbarset.cpp deleted file mode 100644 index 7a320f95..00000000 --- a/src/barchart/qbarset.cpp +++ /dev/null @@ -1,678 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 "qbarset.h" -#include "qbarset_p.h" -#include "charthelpers_p.h" -#include "qchart_p.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -/*! - \class QBarSet - \inmodule Qt Charts - \brief Building block for different bar charts. - - QBarSet represents one set of bars. Set of bars contains one data value for each category. - First value of set is assumed to belong to first category, second to second category and so on. - If set has fewer values than there are categories, then the missing values are assumed to be - at the end of set. For missing values in middle of a set, numerical value of zero is used. - - \mainclass - - \sa QAbstractBarSeries, QBarSeries, QStackedBarSeries, QPercentBarSeries -*/ -#ifdef QDOC_QT5 -/*! - \qmltype BarSet - \instantiates QBarSet - \inqmlmodule QtCommercial.Chart - - \include doc/src/barset.qdocinc -*/ -#else -/*! - \qmlclass BarSet QBarSet - - \include ../doc/src/barset.qdocinc -*/ -#endif - -/*! - \property QBarSet::label - Defines the label of the bar set. -*/ -/*! - \qmlproperty string BarSet::label - Defines the label of the bar set. -*/ - -/*! - \property QBarSet::pen - \brief Defines the pen used by the bar set. -*/ - -/*! - \property QBarSet::brush - \brief Defines the brush used by the bar set. -*/ - -/*! - \qmlproperty QString BarSet::brushFilename - The name of the file used as a brush for the set. -*/ - -/*! - \property QBarSet::labelBrush - \brief Defines the brush used by the bar set's label. -*/ - -/*! - \property QBarSet::labelFont - \brief Defines the font used by the bar set's label. -*/ - -/*! - \qmlproperty Font BarSet::labelFont - Defines the font used by the bar set's label. - - See the Qt documentation for more details of Font. -*/ - -/*! - \property QBarSet::color - The fill (brush) color of the bar set. -*/ -/*! - \qmlproperty color BarSet::color - The fill (brush) color of the bar set. -*/ - -/*! - \property QBarSet::borderColor - The line (pen) color of the bar set. -*/ -/*! - \qmlproperty color BarSet::borderColor - The line (pen) color of the bar set. -*/ - -/*! - \qmlproperty real BarSet::borderWidth - The width of the border line. By default the width is 2.0. -*/ - -/*! - \property QBarSet::labelColor - The text (label) color of the bar set. -*/ -/*! - \qmlproperty color BarSet::labelColor - The text (label) color of the bar set. -*/ - -/*! - \fn void QBarSet::clicked(int index) - - The signal is emitted if the user clicks with a mouse on top of bar set. - Clicked bar inside set is indexed by \a index -*/ - -/*! - \fn void QBarSet::hovered(bool status) - - The signal is emitted if mouse is hovered on top of bar set. - Parameter \a status is true, if mouse entered on top of bar set, false if mouse left from top of bar set. -*/ - -/*! - \fn void QBarSet::hovered(bool status, int index) - - The signal is emitted if mouse is hovered on top of bar set. - Parameter \a status is true, if mouse entered on top of bar set, false if mouse left from top of bar set. - Hovered bar inside the set is indexed by \a index. -*/ - - -/*! - \fn void QBarSet::labelChanged() - This signal is emitted when the label of the bar set has changed. - \sa label -*/ -/*! - \qmlsignal BarSet::onLabelChanged() - This signal is emitted when the label of the bar set has changed. -*/ - -/*! - \fn void QBarSet::penChanged() - This signal is emitted when the pen of the bar set has changed. - \sa pen -*/ - -/*! - \fn void QBarSet::brushChanged() - This signal is emitted when the brush of the bar set has changed. - \sa brush -*/ - -/*! - \fn void QBarSet::labelBrushChanged() - This signal is emitted when the brush of the bar set's label has changed. - \sa labelBrush -*/ - -/*! - \fn void QBarSet::labelFontChanged() - This signal is emitted when the font of the bar set's label has changed. - \sa labelBrush -*/ - -/*! - \fn void QBarSet::colorChanged(QColor) - This signal is emitted when the fill (brush) color of the set has changed to \a color. -*/ -/*! - \qmlsignal BarSet::onColorChanged(color color) - This signal is emitted when the fill (brush) color of the set has changed to \a color. -*/ - -/*! - \fn void QBarSet::borderColorChanged(QColor) - This signal is emitted when the line (pen) color of the set has changed to \a color. -*/ -/*! - \qmlsignal BarSet::onBorderColorChanged(color color) - This signal is emitted when the line (pen) color of the set has changed to \a color. -*/ - -/*! - \fn void QBarSet::labelColorChanged(QColor) - This signal is emitted when the text (label) color of the set has changed to \a color. -*/ -/*! - \qmlsignal BarSet::onLabelColorChanged(color color) - This signal is emitted when the text (label) color of the set has changed to \a color. -*/ - -/*! - \fn void QBarSet::valuesAdded(int index, int count) - This signal is emitted when new values have been added to the set. - Parameter \a index indicates the position of the first inserted value. - Parameter \a count is the number of inserted values. - \sa append(), insert() -*/ -/*! - \qmlsignal BarSet::onValuesAdded(int index, int count) - This signal is emitted when new values have been added to the set. - Parameter \a index indicates the position of the first inserted value. - Parameter \a count is the number of inserted values. -*/ - -/*! - \fn void QBarSet::valuesRemoved(int index, int count) - This signal is emitted values have been removed from the set. - Parameter \a index indicates the position of the first removed value. - Parameter \a count is the number of removed values. - \sa remove() -*/ -/*! - \qmlsignal BarSet::onValuesRemoved(int index, int count) - This signal is emitted values have been removed from the set. - Parameter \a index indicates the position of the first removed value. - Parameter \a count is the number of removed values. -*/ - -/*! - \fn void QBarSet::valueChanged(int index) - This signal is emitted values the value in the set has been modified. - Parameter \a index indicates the position of the modified value. - \sa at() -*/ -/*! - \qmlsignal BarSet::onValueChanged(int index) - This signal is emitted values the value in the set has been modified. - Parameter \a index indicates the position of the modified value. -*/ - -/*! - \qmlproperty int BarSet::count - The count of values on the bar set -*/ - -/*! - \qmlproperty QVariantList BarSet::values - The values of the bar set. You can set either a list of reals or a list of points as values. If you set a list of - reals as values, the values are automatically completed to points by using the index of a value as it's - x-coordinate. For example the following sets have equal values: - \code - myBarSet1.values = [0, 5, 1, 5]; - myBarSet2.values = [Qt.point(0, 0), Qt.point(1, 5), Qt.point(2, 1), Qt.point(3, 5)]; - \endcode -*/ - -/*! - Constructs QBarSet with a label of \a label and with parent of \a parent. -*/ -QBarSet::QBarSet(const QString label, QObject *parent) - : QObject(parent), - d_ptr(new QBarSetPrivate(label, this)) -{ -} - -/*! - Destroys the bar set. -*/ -QBarSet::~QBarSet() -{ - // NOTE: d_ptr destroyed by QObject -} - -/*! - Sets new \a label for set. -*/ -void QBarSet::setLabel(const QString label) -{ - d_ptr->m_label = label; - emit labelChanged(); -} - -/*! - Returns label of the set. -*/ -QString QBarSet::label() const -{ - return d_ptr->m_label; -} - -/*! - Appends new value \a value to the end of set. -*/ -void QBarSet::append(const qreal value) -{ - // Convert to QPointF - int index = d_ptr->m_values.count(); - d_ptr->append(QPointF(d_ptr->m_values.count(), value)); - emit valuesAdded(index, 1); -} - -/*! - Appends a list of reals to set. Works like append with single real value. The \a values in list - are appended to end of bar set. - \sa append() -*/ -void QBarSet::append(const QList<qreal> &values) -{ - int index = d_ptr->m_values.count(); - d_ptr->append(values); - emit valuesAdded(index, values.count()); -} - -/*! - Convenience operator. Same as append, with real \a value. - \sa append() -*/ -QBarSet &QBarSet::operator << (const qreal &value) -{ - append(value); - return *this; -} - -/*! - Inserts new \a value on the \a index position. - The value that is currently at this postion is moved to position index + 1 - \sa remove() -*/ -void QBarSet::insert(const int index, const qreal value) -{ - d_ptr->insert(index, value); - emit valuesAdded(index, 1); -} - -/*! - Removes \a count number of values from the set starting at \a index. - \sa insert() -*/ -void QBarSet::remove(const int index, const int count) -{ - int removedCount = d_ptr->remove(index, count); - if (removedCount > 0) - emit valuesRemoved(index, removedCount); - return; -} - -/*! - Sets a new value \a value to set, indexed by \a index. -*/ -void QBarSet::replace(const int index, const qreal value) -{ - if (index >= 0 && index < d_ptr->m_values.count()) { - d_ptr->replace(index, value); - emit valueChanged(index); - } -} - - -/*! - Returns value of set indexed by \a index. - If the index is out of bounds 0.0 is returned. -*/ -qreal QBarSet::at(const int index) const -{ - if (index < 0 || index >= d_ptr->m_values.count()) - return 0; - return d_ptr->m_values.at(index).y(); -} - -/*! - Returns value of set indexed by \a index. - If the index is out of bounds 0.0 is returned. -*/ -qreal QBarSet::operator [](const int index) const -{ - return at(index); -} - -/*! - Returns count of values in set. -*/ -int QBarSet::count() const -{ - return d_ptr->m_values.count(); -} - -/*! - Returns sum of all values in the bar set. -*/ -qreal QBarSet::sum() const -{ - qreal total(0); - for (int i = 0; i < d_ptr->m_values.count(); i++) - total += d_ptr->m_values.at(i).y(); - return total; -} - -/*! - Sets pen for set. Bars of this set are drawn using \a pen -*/ -void QBarSet::setPen(const QPen &pen) -{ - if (d_ptr->m_pen != pen) { - d_ptr->m_pen = pen; - emit d_ptr->updatedBars(); - emit penChanged(); - } -} - -/*! - Returns pen of the set. -*/ -QPen QBarSet::pen() const -{ - if (d_ptr->m_pen == QChartPrivate::defaultPen()) - return QPen(); - else - return d_ptr->m_pen; -} - -/*! - Sets brush for the set. Bars of this set are drawn using \a brush. -*/ -void QBarSet::setBrush(const QBrush &brush) -{ - if (d_ptr->m_brush != brush) { - d_ptr->m_brush = brush; - emit d_ptr->updatedBars(); - emit brushChanged(); - } -} - -/*! - Returns brush of the set. -*/ -QBrush QBarSet::brush() const -{ - if (d_ptr->m_brush == QChartPrivate::defaultBrush()) - return QBrush(); - else - return d_ptr->m_brush; -} - -/*! - Sets \a brush of the values that are drawn on top of this bar set. -*/ -void QBarSet::setLabelBrush(const QBrush &brush) -{ - if (d_ptr->m_labelBrush != brush) { - d_ptr->m_labelBrush = brush; - emit d_ptr->updatedBars(); - emit labelBrushChanged(); - } -} - -/*! - Returns brush of the values that are drawn on top of this bar set. -*/ -QBrush QBarSet::labelBrush() const -{ - if (d_ptr->m_labelBrush == QChartPrivate::defaultBrush()) - return QBrush(); - else - return d_ptr->m_labelBrush; -} - -/*! - Sets the \a font for values that are drawn on top of this bar set. -*/ -void QBarSet::setLabelFont(const QFont &font) -{ - if (d_ptr->m_labelFont != font) { - d_ptr->m_labelFont = font; - emit d_ptr->updatedBars(); - emit labelFontChanged(); - } - -} - -/*! - Returns the pen for values that are drawn on top of this bar set. -*/ -QFont QBarSet::labelFont() const -{ - return d_ptr->m_labelFont; -} - -/*! - Returns the color of the brush of bar set. -*/ -QColor QBarSet::color() -{ - return brush().color(); -} - -/*! - Sets the \a color of brush for this bar set. -*/ -void QBarSet::setColor(QColor color) -{ - QBrush b = brush(); - if ((b.color() != color) || (b.style() == Qt::NoBrush)) { - b.setColor(color); - if (b.style() == Qt::NoBrush) { - // Set tyle to Qt::SolidPattern. (Default is Qt::NoBrush) - // This prevents theme to override color defined in QML side: - // BarSet { label: "Bob"; color:"red"; values: [1,2,3] } - // The color must be obeyed, since user wanted it. - b.setStyle(Qt::SolidPattern); - } - setBrush(b); - emit colorChanged(color); - } -} - -/*! - Returns the color of pen of this bar set. -*/ -QColor QBarSet::borderColor() -{ - return pen().color(); -} - -/*! - Sets the color of pen for this bar set. -*/ -void QBarSet::setBorderColor(QColor color) -{ - QPen p = pen(); - if (p.color() != color) { - p.setColor(color); - setPen(p); - emit borderColorChanged(color); - } -} - -/*! - Returns the color of labels of this bar set. -*/ -QColor QBarSet::labelColor() -{ - return labelBrush().color(); -} - -/*! - Sets the color of labels for this bar set. -*/ -void QBarSet::setLabelColor(QColor color) -{ - QBrush b = labelBrush(); - if (b == QBrush()) - b.setStyle(Qt::SolidPattern); - - if (b.color() != color) { - b.setColor(color); - setLabelBrush(b); - emit labelColorChanged(color); - } -} - -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -QBarSetPrivate::QBarSetPrivate(const QString label, QBarSet *parent) : QObject(parent), - q_ptr(parent), - m_label(label), - m_pen(QChartPrivate::defaultPen()), - m_brush(QChartPrivate::defaultBrush()), - m_labelBrush(QChartPrivate::defaultBrush()) -{ -} - -QBarSetPrivate::~QBarSetPrivate() -{ -} - -void QBarSetPrivate::append(QPointF value) -{ - if (isValidValue(value)) { - m_values.append(value); - emit restructuredBars(); - } -} - -void QBarSetPrivate::append(QList<QPointF> values) -{ - for (int i = 0; i < values.count(); i++) { - if (isValidValue(values.at(i))) - m_values.append(values.at(i)); - } - emit restructuredBars(); -} - -void QBarSetPrivate::append(QList<qreal> values) -{ - int index = m_values.count(); - for (int i = 0; i < values.count(); i++) { - if (isValidValue(values.at(i))) { - m_values.append(QPointF(index, values.at(i))); - index++; - } - } - emit restructuredBars(); -} - -void QBarSetPrivate::insert(const int index, const qreal value) -{ - m_values.insert(index, QPointF(index, value)); - emit restructuredBars(); -} - -void QBarSetPrivate::insert(const int index, const QPointF value) -{ - m_values.insert(index, value); - emit restructuredBars(); -} - -int QBarSetPrivate::remove(const int index, const int count) -{ - int removeCount = count; - - if ((index < 0) || (m_values.count() == 0)) - return 0; // Invalid index or not values in list, remove nothing. - else if ((index + count) > m_values.count()) - removeCount = m_values.count() - index; // Trying to remove more items than list has. Limit amount to be removed. - - int c = 0; - while (c < removeCount) { - m_values.removeAt(index); - c++; - } - emit restructuredBars(); - return removeCount; -} - -void QBarSetPrivate::replace(const int index, const qreal value) -{ - m_values.replace(index, QPointF(index, value)); - emit updatedLayout(); -} - -void QBarSetPrivate::replace(const int index, const QPointF value) -{ - m_values.replace(index, value); - emit updatedLayout(); -} - -qreal QBarSetPrivate::pos(const int index) -{ - if (index < 0 || index >= m_values.count()) - return 0; - return m_values.at(index).x(); -} - -qreal QBarSetPrivate::value(const int index) -{ - if (index < 0 || index >= m_values.count()) - return 0; - return m_values.at(index).y(); -} - -#include "moc_qbarset.cpp" -#include "moc_qbarset_p.cpp" - -QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/qbarset.h b/src/barchart/qbarset.h deleted file mode 100644 index 1ce09c7e..00000000 --- a/src/barchart/qbarset.h +++ /dev/null @@ -1,120 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 QBARSET_H -#define QBARSET_H - -#include <qchartglobal.h> -#include <QPen> -#include <QBrush> -#include <QFont> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE -class QBarSetPrivate; - -class QTCOMMERCIALCHART_EXPORT QBarSet : public QObject -{ - Q_OBJECT - Q_PROPERTY(QString label READ label WRITE setLabel NOTIFY labelChanged) - Q_PROPERTY(QPen pen READ pen WRITE setPen NOTIFY penChanged) - Q_PROPERTY(QBrush brush READ brush WRITE setBrush NOTIFY brushChanged) - Q_PROPERTY(QBrush labelBrush READ labelBrush WRITE setLabelBrush NOTIFY labelBrushChanged) - Q_PROPERTY(QFont labelFont READ labelFont WRITE setLabelFont NOTIFY labelFontChanged) - Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged) - Q_PROPERTY(QColor borderColor READ borderColor WRITE setBorderColor NOTIFY borderColorChanged) - Q_PROPERTY(QColor labelColor READ labelColor WRITE setLabelColor NOTIFY labelColorChanged) - -public: - explicit QBarSet(const QString label, QObject *parent = 0); - virtual ~QBarSet(); - - void setLabel(const QString label); - QString label() const; - - void append(const qreal value); - void append(const QList<qreal> &values); - - QBarSet &operator << (const qreal &value); - - void insert(const int index, const qreal value); - void remove(const int index, const int count = 1); - void replace(const int index, const qreal value); - qreal at(const int index) const; - qreal operator [](const int index) const; - int count() const; - qreal sum() const; - - void setPen(const QPen &pen); - QPen pen() const; - - void setBrush(const QBrush &brush); - QBrush brush() const; - - void setLabelBrush(const QBrush &brush); - QBrush labelBrush() const; - - void setLabelFont(const QFont &font); - QFont labelFont() const; - - QColor color(); - void setColor(QColor color); - - QColor borderColor(); - void setBorderColor(QColor color); - - QColor labelColor(); - void setLabelColor(QColor color); - -Q_SIGNALS: - void clicked(int index); - void hovered(bool status); - void hovered(bool status, int index); - void penChanged(); - void brushChanged(); - void labelChanged(); - void labelBrushChanged(); - void labelFontChanged(); - void colorChanged(QColor color); - void borderColorChanged(QColor color); - void labelColorChanged(QColor color); - - void valuesAdded(int index, int count); - void valuesRemoved(int index, int count); - void valueChanged(int index); - -private: - QScopedPointer<QBarSetPrivate> d_ptr; - Q_DISABLE_COPY(QBarSet) - friend class QAbstractBarSeries; - friend class BarLegendMarker; - friend class AbstractBarChartItem; - friend class QAbstractBarSeriesPrivate; - friend class StackedBarChartItem; - friend class PercentBarChartItem; - friend class BarChartItem; - friend class HorizontalBarChartItem; - friend class HorizontalStackedBarChartItem; - friend class HorizontalPercentBarChartItem; - friend class BoxPlotChartItem; -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // QBARSET_H diff --git a/src/barchart/qbarset_p.h b/src/barchart/qbarset_p.h deleted file mode 100644 index 789a30a8..00000000 --- a/src/barchart/qbarset_p.h +++ /dev/null @@ -1,82 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 Qt Enterprise 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 QBARSET_P_H -#define QBARSET_P_H - -#include "qbarset.h" -#include <QMap> -#include <QPen> -#include <QBrush> -#include <QFont> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class QBarSetPrivate : public QObject -{ - Q_OBJECT - -public: - QBarSetPrivate(const QString label, QBarSet *parent); - ~QBarSetPrivate(); - - void append(QPointF value); - void append(QList<QPointF> values); - void append(QList<qreal> values); - - void insert(const int index, const qreal value); - void insert(const int index, const QPointF value); - int remove(const int index, const int count); - - void replace(const int index, const qreal value); - void replace(const int index, const QPointF value); - - qreal pos(const int index); - qreal value(const int index); - -Q_SIGNALS: - void restructuredBars(); - void updatedBars(); - void updatedLayout(); - -public: - QBarSet * const q_ptr; - QString m_label; - QList<QPointF> m_values; - QPen m_pen; - QBrush m_brush; - QBrush m_labelBrush; - QFont m_labelFont; - - friend class QBarSet; -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // QBARSETPRIVATE_P_H diff --git a/src/barchart/qhbarmodelmapper.cpp b/src/barchart/qhbarmodelmapper.cpp deleted file mode 100644 index 3aa1c8ec..00000000 --- a/src/barchart/qhbarmodelmapper.cpp +++ /dev/null @@ -1,248 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 "qhbarmodelmapper.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -/*! - \class QHBarModelMapper - \inmodule Qt Charts - \brief Horizontal model mapper for bar series. - \mainclass - - Model mappers allow you to use QAbstractItemModel derived models as a data source for a chart series. - Horizontal model mapper is used to create a connection between QAbstractBarSeries and QAbstractItemModel derived model object. - Model mapper maintains equal size of all the BarSets. - Adding/removing value from the BarSet causes the the same change in the rest of the BarSets added to the same series. - \note Used model has to support adding/removing rows/columns and modifying the data of the cells. -*/ -#ifdef QDOC_QT5 -/*! - \qmltype HBarModelMapper - \instantiates QHBarModelMapper - \inqmlmodule QtCommercial.Chart - - \include doc/src/hbarmodelmapper.qdocinc -*/ -#else -/*! - \qmlclass HBarModelMapper QHBarModelMapper - - \include ../doc/src/hbarmodelmapper.qdocinc -*/ -#endif - -/*! - \property QHBarModelMapper::series - \brief Defines the QPieSeries object that is used by the mapper. - - All the data in the series is discarded when it is set to the mapper. - When new series is specified the old series is disconnected (it preserves its data) -*/ -/*! - \qmlproperty AbstractBarSeries HBarModelMapper::series - Defines the AbstractBarSeries based object that is used by the mapper. All the data in the series is discarded when it is - set to the mapper. When new series is specified the old series is disconnected (it preserves its data). -*/ - -/*! - \property QHBarModelMapper::model - \brief Defines the model that is used by the mapper. -*/ -/*! - \qmlproperty SomeModel HBarModelMapper::model - The QAbstractItemModel based model that is used by the mapper. You need to implement the model - and expose it to QML. Note: the model has to support adding/removing rows/columns and modifying - the data of the cells. -*/ - -/*! - \property QHBarModelMapper::firstBarSetRow - \brief Defines which column of the model is used as the data source for the first bar set. - - Default value is: -1 (invalid mapping) -*/ -/*! - \qmlproperty int HBarModelMapper::firstBarSetRow - Defines which column of the model is used as the data source for the first bar set. The default value is -1 - (invalid mapping). -*/ - -/*! - \property QHBarModelMapper::lastBarSetRow - \brief Defines which column of the model is used as the data source for the last bar set. - - Default value is: -1 (invalid mapping) -*/ -/*! - \qmlproperty int HBarModelMapper::lastBarSetRow - Defines which column of the model is used as the data source for the last bar set. The default value is -1 - (invalid mapping). -*/ - -/*! - \property QHBarModelMapper::firstColumn - \brief Defines which column of the model contains the first values of the QBarSets in the series. - - Minimal and default value is: 0 -*/ -/*! - \qmlproperty int HBarModelMapper::firstColumn - Defines which column of the model contains the first values of the QBarSets in the series. - The default value is 0. -*/ - -/*! - \property QHBarModelMapper::columnCount - \brief Defines the number of columns of the model that are mapped as the data for QAbstractBarSeries. - - Minimal and default value is: -1 (count limited by the number of columns in the model) -*/ -/*! - \qmlproperty int HBarModelMapper::columnCount - Defines the number of columns of the model that are mapped as the data for QAbstractBarSeries. The default value is - -1 (count limited by the number of columns in the model) -*/ - -/*! - \fn void QHBarModelMapper::seriesReplaced() - - Emitted when the series to which mapper is connected to has changed. -*/ - -/*! - \fn void QHBarModelMapper::modelReplaced() - - Emitted when the model to which mapper is connected to has changed. -*/ - -/*! - \fn void QHBarModelMapper::firstBarSetRowChanged() - - Emitted when the firstBarSetRow has changed. -*/ - -/*! - \fn void QHBarModelMapper::lastBarSetRowChanged() - - Emitted when the lastBarSetRow has changed. -*/ - -/*! - \fn void QHBarModelMapper::firstColumnChanged() - Emitted when the firstColumn has changed. -*/ - -/*! - \fn void QHBarModelMapper::columnCountChanged() - Emitted when the columnCount has changed. -*/ - -/*! - Constructs a mapper object which is a child of \a parent. -*/ -QHBarModelMapper::QHBarModelMapper(QObject *parent) : - QBarModelMapper(parent) -{ - QBarModelMapper::setOrientation(Qt::Horizontal); -} - -QAbstractItemModel *QHBarModelMapper::model() const -{ - return QBarModelMapper::model(); -} - -void QHBarModelMapper::setModel(QAbstractItemModel *model) -{ - if (model != QBarModelMapper::model()) { - QBarModelMapper::setModel(model); - emit modelReplaced(); - } -} - -QAbstractBarSeries *QHBarModelMapper::series() const -{ - return QBarModelMapper::series(); -} - -void QHBarModelMapper::setSeries(QAbstractBarSeries *series) -{ - if (series != QBarModelMapper::series()) { - QBarModelMapper::setSeries(series); - emit seriesReplaced(); - } -} - -int QHBarModelMapper::firstBarSetRow() const -{ - return QBarModelMapper::firstBarSetSection(); -} - -void QHBarModelMapper::setFirstBarSetRow(int firstBarSetRow) -{ - if (firstBarSetRow != firstBarSetSection()) { - QBarModelMapper::setFirstBarSetSection(firstBarSetRow); - emit firstBarSetRowChanged(); - } -} - -int QHBarModelMapper::lastBarSetRow() const -{ - return QBarModelMapper::lastBarSetSection(); -} - -void QHBarModelMapper::setLastBarSetRow(int lastBarSetRow) -{ - if (lastBarSetRow != lastBarSetSection()) { - QBarModelMapper::setLastBarSetSection(lastBarSetRow); - emit lastBarSetRowChanged(); - } -} - -int QHBarModelMapper::firstColumn() const -{ - return QBarModelMapper::first(); -} - -void QHBarModelMapper::setFirstColumn(int firstColumn) -{ - if (firstColumn != first()) { - QBarModelMapper::setFirst(firstColumn); - emit firstColumnChanged(); - } -} - -int QHBarModelMapper::columnCount() const -{ - return QBarModelMapper::count(); -} - -void QHBarModelMapper::setColumnCount(int columnCount) -{ - if (columnCount != count()) { - QBarModelMapper::setCount(columnCount); - emit columnCountChanged(); - } -} - -#include "moc_qhbarmodelmapper.cpp" - -QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/qhbarmodelmapper.h b/src/barchart/qhbarmodelmapper.h deleted file mode 100644 index 03e84b5f..00000000 --- a/src/barchart/qhbarmodelmapper.h +++ /dev/null @@ -1,70 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 QHBARMODELMAPPER_H -#define QHBARMODELMAPPER_H - -#include <QBarModelMapper> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class QTCOMMERCIALCHART_EXPORT QHBarModelMapper : public QBarModelMapper -{ - Q_OBJECT - Q_PROPERTY(QAbstractBarSeries *series READ series WRITE setSeries NOTIFY seriesReplaced) - Q_PROPERTY(QAbstractItemModel *model READ model WRITE setModel NOTIFY modelReplaced) - Q_PROPERTY(int firstBarSetRow READ firstBarSetRow WRITE setFirstBarSetRow NOTIFY firstBarSetRowChanged) - Q_PROPERTY(int lastBarSetRow READ lastBarSetRow WRITE setLastBarSetRow NOTIFY lastBarSetRowChanged) - Q_PROPERTY(int firstColumn READ firstColumn WRITE setFirstColumn NOTIFY firstColumnChanged) - Q_PROPERTY(int columnCount READ columnCount WRITE setColumnCount NOTIFY columnCountChanged) - -public: - explicit QHBarModelMapper(QObject *parent = 0); - - QAbstractItemModel *model() const; - void setModel(QAbstractItemModel *model); - - QAbstractBarSeries *series() const; - void setSeries(QAbstractBarSeries *series); - - int firstBarSetRow() const; - void setFirstBarSetRow(int firstBarSetRow); - - int lastBarSetRow() const; - void setLastBarSetRow(int lastBarSetRow); - - int firstColumn() const; - void setFirstColumn(int firstColumn); - - int columnCount() const; - void setColumnCount(int columnCount); - -Q_SIGNALS: - void seriesReplaced(); - void modelReplaced(); - void firstBarSetRowChanged(); - void lastBarSetRowChanged(); - void firstColumnChanged(); - void columnCountChanged(); -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // QHBARMODELMAPPER_H diff --git a/src/barchart/qvbarmodelmapper.cpp b/src/barchart/qvbarmodelmapper.cpp deleted file mode 100644 index c32f5c91..00000000 --- a/src/barchart/qvbarmodelmapper.cpp +++ /dev/null @@ -1,246 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 "qvbarmodelmapper.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -/*! - \class QVBarModelMapper - \inmodule Qt Charts - \brief Vertical model mapper for bar series. - \mainclass - - Model mappers allow you to use QAbstractItemModel derived models as a data source for a chart series. - Vertical model mapper is used to create a connection between QAbstractBarSeries and QAbstractItemModel derived model object. - Model mapper maintains equal size of all the BarSets. - Adding/removing value from the BarSet causes the the same change in the rest of the BarSets added to the same series. - \note Used model has to support adding/removing rows/columns and modifying the data of the cells. -*/ -#ifdef QDOC_QT5 -/*! - \qmltype VBarModelMapper - \instantiates QVBarModelMapper - \inqmlmodule QtCommercial.Chart - - \include doc/src/vbarmodelmapper.qdocinc -*/ -#else -/*! - \qmlclass VBarModelMapper QVBarModelMapper - - \include ../doc/src/vbarmodelmapper.qdocinc -*/ -#endif - -/*! - \property QVBarModelMapper::series - \brief Defines the QBarSeries object that is used by the mapper. - - All the data in the series is discarded when it is set to the mapper. - When new series is specified the old series is disconnected (it preserves its data) -*/ -/*! - \qmlproperty AbstractBarSeries VBarModelMapper::series - Defines the AbstractBarSeries based object that is used by the mapper. All the data in the series is discarded when it is - set to the mapper. When new series is specified the old series is disconnected (it preserves its data). -*/ - -/*! - \property QVBarModelMapper::model - \brief Defines the model that is used by the mapper. -*/ -/*! - \qmlproperty SomeModel VBarModelMapper::model - The QAbstractItemModel based model that is used by the mapper. You need to implement the model - and expose it to QML. Note: the model has to support adding/removing rows/columns and modifying - the data of the cells. -*/ - -/*! - \property QVBarModelMapper::firstBarSetColumn - \brief Defines which column of the model is used as the data source for the first bar set. - - Default value is: -1 (invalid mapping) -*/ -/*! - \qmlproperty int VBarModelMapper::firstBarSetColumn - Defines which column of the model is used as the data source for the first bar set. Default value - is: -1 (invalid mapping). -*/ - -/*! - \property QVBarModelMapper::lastBarSetColumn - \brief Defines which column of the model is used as the data source for the last bar set. - - Default value is: -1 (invalid mapping) -*/ -/*! - \qmlproperty int VBarModelMapper::lastBarSetColumn - Defines which column of the model is used as the data source for the last bar set. Default - value is: -1 (invalid mapping). -*/ - -/*! - \property QVBarModelMapper::firstRow - \brief Defines which row of the model contains the first values of the QBarSets in the series. - - Minimal and default value is: 0 -*/ -/*! - \qmlproperty int VBarModelMapper::firstRow - Defines which row of the model contains the first values of the QBarSets in the series. - The default value is 0. -*/ - -/*! - \property QVBarModelMapper::rowCount - \brief Defines the number of rows of the model that are mapped as the data for QAbstractBarSeries. - - Minimal and default value is: -1 (count limited by the number of rows in the model) -*/ -/*! - \qmlproperty int VBarModelMapper::rowCount - Defines the number of rows of the model that are mapped as the data for QAbstractBarSeries. The default value is - -1 (count limited by the number of rows in the model) -*/ - -/*! - \fn void QVBarModelMapper::seriesReplaced() - - Emitted when the series to which mapper is connected to has changed. -*/ - -/*! - \fn void QVBarModelMapper::modelReplaced() - - Emitted when the model to which mapper is connected to has changed. -*/ - -/*! - \fn void QVBarModelMapper::firstBarSetColumnChanged() - Emitted when the firstBarSetColumn has changed. -*/ - -/*! - \fn void QVBarModelMapper::lastBarSetColumnChanged() - Emitted when the lastBarSetColumn has changed. -*/ - -/*! - \fn void QVBarModelMapper::firstRowChanged() - Emitted when the firstRow has changed. -*/ - -/*! - \fn void QVBarModelMapper::rowCountChanged() - Emitted when the rowCount has changed. -*/ - -/*! - Constructs a mapper object which is a child of \a parent. -*/ -QVBarModelMapper::QVBarModelMapper(QObject *parent) : - QBarModelMapper(parent) -{ - QBarModelMapper::setOrientation(Qt::Vertical); -} - -QAbstractItemModel *QVBarModelMapper::model() const -{ - return QBarModelMapper::model(); -} - -void QVBarModelMapper::setModel(QAbstractItemModel *model) -{ - if (model != QBarModelMapper::model()) { - QBarModelMapper::setModel(model); - emit modelReplaced(); - } -} - -QAbstractBarSeries *QVBarModelMapper::series() const -{ - return QBarModelMapper::series(); -} - -void QVBarModelMapper::setSeries(QAbstractBarSeries *series) -{ - if (series != QBarModelMapper::series()) { - QBarModelMapper::setSeries(series); - emit seriesReplaced(); - } -} - -int QVBarModelMapper::firstBarSetColumn() const -{ - return QBarModelMapper::firstBarSetSection(); -} - -void QVBarModelMapper::setFirstBarSetColumn(int firstBarSetColumn) -{ - if (firstBarSetColumn != firstBarSetSection()) { - QBarModelMapper::setFirstBarSetSection(firstBarSetColumn); - emit firstBarSetColumnChanged(); - } -} - -int QVBarModelMapper::lastBarSetColumn() const -{ - return QBarModelMapper::lastBarSetSection(); -} - -void QVBarModelMapper::setLastBarSetColumn(int lastBarSetColumn) -{ - if (lastBarSetColumn != lastBarSetSection()) { - QBarModelMapper::setLastBarSetSection(lastBarSetColumn); - emit lastBarSetColumnChanged(); - } -} - -int QVBarModelMapper::firstRow() const -{ - return QBarModelMapper::first(); -} - -void QVBarModelMapper::setFirstRow(int firstRow) -{ - if (firstRow != first()) { - QBarModelMapper::setFirst(firstRow); - emit firstRowChanged(); - } -} - -int QVBarModelMapper::rowCount() const -{ - return QBarModelMapper::count(); -} - -void QVBarModelMapper::setRowCount(int rowCount) -{ - if (rowCount != count()) { - QBarModelMapper::setCount(rowCount); - emit rowCountChanged(); - } -} - -#include "moc_qvbarmodelmapper.cpp" - -QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/qvbarmodelmapper.h b/src/barchart/qvbarmodelmapper.h deleted file mode 100644 index 1fd377d1..00000000 --- a/src/barchart/qvbarmodelmapper.h +++ /dev/null @@ -1,70 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 QVBARMODELMAPPER_H -#define QVBARMODELMAPPER_H - -#include <QBarModelMapper> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class QTCOMMERCIALCHART_EXPORT QVBarModelMapper : public QBarModelMapper -{ - Q_OBJECT - Q_PROPERTY(QAbstractBarSeries *series READ series WRITE setSeries NOTIFY seriesReplaced) - Q_PROPERTY(QAbstractItemModel *model READ model WRITE setModel NOTIFY modelReplaced) - Q_PROPERTY(int firstBarSetColumn READ firstBarSetColumn WRITE setFirstBarSetColumn NOTIFY firstBarSetColumnChanged) - Q_PROPERTY(int lastBarSetColumn READ lastBarSetColumn WRITE setLastBarSetColumn NOTIFY lastBarSetColumnChanged) - Q_PROPERTY(int firstRow READ firstRow WRITE setFirstRow NOTIFY firstRowChanged) - Q_PROPERTY(int rowCount READ rowCount WRITE setRowCount NOTIFY rowCountChanged) - -public: - explicit QVBarModelMapper(QObject *parent = 0); - - QAbstractItemModel *model() const; - void setModel(QAbstractItemModel *model); - - QAbstractBarSeries *series() const; - void setSeries(QAbstractBarSeries *series); - - int firstBarSetColumn() const; - void setFirstBarSetColumn(int firstBarSetColumn); - - int lastBarSetColumn() const; - void setLastBarSetColumn(int lastBarSetColumn); - - int firstRow() const; - void setFirstRow(int firstRow); - - int rowCount() const; - void setRowCount(int rowCount); - -Q_SIGNALS: - void seriesReplaced(); - void modelReplaced(); - void firstBarSetColumnChanged(); - void lastBarSetColumnChanged(); - void firstRowChanged(); - void rowCountChanged(); -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // QVBARMODELMAPPER_H diff --git a/src/barchart/vertical/bar/barchartitem.cpp b/src/barchart/vertical/bar/barchartitem.cpp deleted file mode 100644 index 9a57325a..00000000 --- a/src/barchart/vertical/bar/barchartitem.cpp +++ /dev/null @@ -1,125 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 "barchartitem_p.h" -#include "bar_p.h" -#include "qabstractbarseries_p.h" -#include "qbarset.h" -#include "qbarset_p.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -BarChartItem::BarChartItem(QAbstractBarSeries *series, QGraphicsItem* item) : - AbstractBarChartItem(series, item) -{ - connect(series, SIGNAL(labelsPositionChanged(QAbstractBarSeries::LabelsPosition)), - this, SLOT(handleLabelsPositionChanged())); - connect(series, SIGNAL(labelsFormatChanged(QString)), this, SLOT(positionLabels())); -} - -void BarChartItem::initializeLayout() -{ - qreal categoryCount = m_series->d_func()->categoryCount(); - qreal setCount = m_series->count(); - qreal barWidth = m_series->d_func()->barWidth(); - - m_layout.clear(); - for(int category = 0; category < categoryCount; category++) { - for (int set = 0; set < setCount; set++) { - QRectF rect; - QPointF topLeft; - QPointF bottomRight; - - if (domain()->type() == AbstractDomain::XLogYDomain || domain()->type() == AbstractDomain::LogXLogYDomain) { - topLeft = domain()->calculateGeometryPoint(QPointF(category - barWidth / 2 + set/setCount * barWidth, domain()->minY()), m_validData); - bottomRight = domain()->calculateGeometryPoint(QPointF(category - barWidth / 2 + (set + 1)/setCount * barWidth, domain()->minY()), m_validData); - } else { - topLeft = domain()->calculateGeometryPoint(QPointF(category - barWidth / 2 + set/setCount * barWidth, 0), m_validData); - bottomRight = domain()->calculateGeometryPoint(QPointF(category - barWidth / 2 + (set + 1)/setCount * barWidth, 0), m_validData); - } - - if (!m_validData) - return; - rect.setTopLeft(topLeft); - rect.setBottomRight(bottomRight); - m_layout.append(rect.normalized()); - } - } -} - -QVector<QRectF> BarChartItem::calculateLayout() -{ - QVector<QRectF> layout; - - // Use temporary qreals for accuracy - qreal categoryCount = m_series->d_func()->categoryCount(); - qreal setCount = m_series->count(); - qreal barWidth = m_series->d_func()->barWidth(); - - for(int category = 0; category < categoryCount; category++) { - for (int set = 0; set < setCount; set++) { - qreal value = m_series->barSets().at(set)->at(category); - QRectF rect; - QPointF topLeft = domain()->calculateGeometryPoint(QPointF(category - barWidth / 2 + (set)/(setCount) * barWidth, value), m_validData); - QPointF bottomRight; - if (domain()->type() == AbstractDomain::XLogYDomain || domain()->type() == AbstractDomain::LogXLogYDomain) - bottomRight = domain()->calculateGeometryPoint(QPointF(category - barWidth / 2 + (set + 1)/(setCount) * barWidth, domain()->minY()), m_validData); - else - bottomRight = domain()->calculateGeometryPoint(QPointF(category - barWidth / 2 + (set + 1)/(setCount) * barWidth, 0), m_validData); - - rect.setTopLeft(topLeft); - rect.setBottomRight(bottomRight); - layout.append(rect.normalized()); - } - } - - return layout; -} - -void BarChartItem::handleLabelsPositionChanged() -{ - positionLabels(); -} - -void BarChartItem::positionLabels() -{ - for (int i = 0; i < m_layout.count(); i++) { - QGraphicsTextItem *label = m_labels.at(i); - qreal xPos = m_layout.at(i).center().x() - label->boundingRect().center().x(); - qreal yPos = 0; - - int offset = m_bars.at(i)->pen().width() / 2 + 2; - if (m_series->labelsPosition() == QAbstractBarSeries::LabelsCenter) - yPos = m_layout.at(i).center().y() - label->boundingRect().center().y(); - else if (m_series->labelsPosition() == QAbstractBarSeries::LabelsInsideEnd) - yPos = m_layout.at(i).top() - offset; - else if (m_series->labelsPosition() == QAbstractBarSeries::LabelsInsideBase) - yPos = m_layout.at(i).bottom() - label->boundingRect().height() + offset; - else if (m_series->labelsPosition() == QAbstractBarSeries::LabelsOutsideEnd) - yPos = m_layout.at(i).top() - label->boundingRect().height() + offset; - - label->setPos(xPos, yPos); - label->setZValue(zValue() + 1); - } -} - -#include "moc_barchartitem_p.cpp" - -QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/vertical/bar/barchartitem_p.h b/src/barchart/vertical/bar/barchartitem_p.h deleted file mode 100644 index b94e9c34..00000000 --- a/src/barchart/vertical/bar/barchartitem_p.h +++ /dev/null @@ -1,57 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 Qt Enterprise 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 BARCHARTITEM_H -#define BARCHARTITEM_H - -#include "abstractbarchartitem_p.h" -#include "qstackedbarseries.h" -#include <QGraphicsItem> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class BarChartItem : public AbstractBarChartItem -{ - Q_OBJECT -public: - BarChartItem(QAbstractBarSeries *series, QGraphicsItem* item = 0); - -private slots: - void handleLabelsPositionChanged(); - void positionLabels(); - -private: - virtual QVector<QRectF> calculateLayout(); - void initializeLayout(); -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // BARCHARTITEM_H diff --git a/src/barchart/vertical/bar/qbarseries.cpp b/src/barchart/vertical/bar/qbarseries.cpp deleted file mode 100644 index 780f5837..00000000 --- a/src/barchart/vertical/bar/qbarseries.cpp +++ /dev/null @@ -1,124 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 "qbarseries.h" -#include "qbarseries_p.h" -#include "barchartitem_p.h" -#include "chartdataset_p.h" -#include "charttheme_p.h" -#include "qvalueaxis.h" -#include "qbarcategoryaxis.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -/*! - \class QBarSeries - \inmodule Qt Charts - \brief Series for creating bar chart. - \mainclass - - QBarSeries represents a series of data shown as bars. The purpose of this class is to draw bars - as groups, where bars in same category are grouped next to each other. QBarSeries groups the data - from sets to categories, which are defined by a QStringList. - - See the \l {BarChart Example} {bar chart example} to learn how to create a grouped bar chart. - \image examples_barchart.png - - \sa QBarSet, QPercentBarSeries, QAbstractBarSeries, QStackedBarSeries -*/ -#ifdef QDOC_QT5 -/*! - \qmltype BarSeries - \instantiates QBarSeries - \inqmlmodule QtCommercial.Chart - - \include doc/src/barseries.qdocinc -*/ -#else -/*! - \qmlclass BarSeries QBarSeries - - \include ../doc/src/barseries.qdocinc -*/ -#endif - -/*! - Constructs empty QBarSeries. - QBarSeries is QObject which is a child of a \a parent. -*/ -QBarSeries::QBarSeries(QObject *parent) - : QAbstractBarSeries(*new QBarSeriesPrivate(this), parent) -{ - -} - -/*! - Returns QAbstractSeries::SeriesTypeBar. -*/ -QAbstractSeries::SeriesType QBarSeries::type() const -{ - return QAbstractSeries::SeriesTypeBar; -} - -/*! - Destructor. Removes series from chart. -*/ -QBarSeries::~QBarSeries() -{ - Q_D(QBarSeries); - if (d->m_chart) - d->m_chart->removeSeries(this); -} -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -QBarSeriesPrivate::QBarSeriesPrivate(QBarSeries *q) : QAbstractBarSeriesPrivate(q) -{ - -} - -void QBarSeriesPrivate::initializeDomain() -{ - qreal minX(domain()->minX()); - qreal minY(domain()->minY()); - qreal maxX(domain()->maxX()); - qreal maxY(domain()->maxY()); - - qreal x = categoryCount(); - minX = qMin(minX, - (qreal)0.5); - minY = qMin(minY, min()); - maxX = qMax(maxX, x - (qreal)0.5); - maxY = qMax(maxY, max()); - - domain()->setRange(minX, maxX, minY, maxY); -} - - -void QBarSeriesPrivate::initializeGraphics(QGraphicsItem* parent) -{ - Q_Q(QBarSeries); - BarChartItem *bar = new BarChartItem(q,parent); - m_item.reset(bar); - QAbstractSeriesPrivate::initializeGraphics(parent); -} - -#include "moc_qbarseries.cpp" - -QTCOMMERCIALCHART_END_NAMESPACE - diff --git a/src/barchart/vertical/bar/qbarseries.h b/src/barchart/vertical/bar/qbarseries.h deleted file mode 100644 index 4e38543e..00000000 --- a/src/barchart/vertical/bar/qbarseries.h +++ /dev/null @@ -1,45 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 QBARSERIES_H -#define QBARSERIES_H - -#include <qabstractbarseries.h> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class QBarSeriesPrivate; - -class QTCOMMERCIALCHART_EXPORT QBarSeries : public QAbstractBarSeries -{ - Q_OBJECT -public: - explicit QBarSeries(QObject *parent = 0); - ~QBarSeries(); - QAbstractSeries::SeriesType type() const; - -private: - Q_DECLARE_PRIVATE(QBarSeries) - Q_DISABLE_COPY(QBarSeries) -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // QBARSERIES_H diff --git a/src/barchart/vertical/bar/qbarseries_p.h b/src/barchart/vertical/bar/qbarseries_p.h deleted file mode 100644 index e6d3a8a7..00000000 --- a/src/barchart/vertical/bar/qbarseries_p.h +++ /dev/null @@ -1,52 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 Qt Enterprise 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 QBARSERIES_P_H -#define QBARSERIES_P_H - -#include "qabstractbarseries_p.h" -#include "abstractdomain_p.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - - -class QBarSeriesPrivate: public QAbstractBarSeriesPrivate -{ -public: - QBarSeriesPrivate(QBarSeries *q); - void initializeGraphics(QGraphicsItem* parent); - void initializeDomain(); - -private: - Q_DECLARE_PUBLIC(QBarSeries) -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // QBARSERIES_P_H diff --git a/src/barchart/vertical/percent/percentbarchartitem.cpp b/src/barchart/vertical/percent/percentbarchartitem.cpp deleted file mode 100644 index d5a8430b..00000000 --- a/src/barchart/vertical/percent/percentbarchartitem.cpp +++ /dev/null @@ -1,171 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 "percentbarchartitem_p.h" -#include "bar_p.h" -#include "qabstractbarseries_p.h" -#include "qbarset.h" -#include "qbarset_p.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -PercentBarChartItem::PercentBarChartItem(QAbstractBarSeries *series, QGraphicsItem* item) : - AbstractBarChartItem(series, item) -{ - connect(series, SIGNAL(labelsPositionChanged(QAbstractBarSeries::LabelsPosition)), - this, SLOT(handleLabelsPositionChanged())); - connect(series, SIGNAL(labelsFormatChanged(QString)), this, SLOT(positionLabels())); -} - -void PercentBarChartItem::initializeLayout() -{ - qreal categoryCount = m_series->d_func()->categoryCount(); - qreal setCount = m_series->count(); - qreal barWidth = m_series->d_func()->barWidth(); - - m_layout.clear(); - for(int category = 0; category < categoryCount; category++) { - for (int set = 0; set < setCount; set++) { - QRectF rect; - QPointF topLeft; - QPointF bottomRight; - - if (domain()->type() == AbstractDomain::XLogYDomain || domain()->type() == AbstractDomain::LogXLogYDomain) { - topLeft = domain()->calculateGeometryPoint(QPointF(category - barWidth / 2, domain()->minY()), m_validData); - bottomRight = domain()->calculateGeometryPoint(QPointF(category + barWidth / 2, domain()->minY()), m_validData); - } else { - topLeft = domain()->calculateGeometryPoint(QPointF(category - barWidth / 2, 0), m_validData); - bottomRight = domain()->calculateGeometryPoint(QPointF(category + barWidth / 2, 0), m_validData); - } - - if (!m_validData) - return; - - rect.setTopLeft(topLeft); - rect.setBottomRight(bottomRight); - m_layout.append(rect.normalized()); - } - } -} - -QVector<QRectF> PercentBarChartItem::calculateLayout() -{ - QVector<QRectF> layout; - - // Use temporary qreals for accuracy - qreal categoryCount = m_series->d_func()->categoryCount(); - qreal setCount = m_series->count(); - qreal barWidth = m_series->d_func()->barWidth(); - - for(int category = 0; category < categoryCount; category++) { - qreal sum = 0; - qreal categorySum = m_series->d_func()->categorySum(category); - for (int set = 0; set < setCount; set++) { - qreal value = m_series->barSets().at(set)->at(category); - QRectF rect; - qreal topY = 0; - qreal newSum = value + sum; - if (newSum > 0) - topY = 100 * newSum / categorySum; - qreal bottomY = 0; - if (sum > 0) - bottomY = 100 * sum / categorySum; - QPointF topLeft = domain()->calculateGeometryPoint(QPointF(category - barWidth/2, topY), m_validData); - QPointF bottomRight; - if (domain()->type() == AbstractDomain::XLogYDomain || domain()->type() == AbstractDomain::LogXLogYDomain) - bottomRight = domain()->calculateGeometryPoint(QPointF(category + barWidth/2, set ? bottomY : domain()->minY()), m_validData); - else - bottomRight = domain()->calculateGeometryPoint(QPointF(category + barWidth/2, set ? bottomY : 0), m_validData); - - rect.setTopLeft(topLeft); - rect.setBottomRight(bottomRight); - layout.append(rect.normalized()); - sum = newSum; - } - } - return layout; -} - -void PercentBarChartItem::handleUpdatedBars() -{ - // Handle changes in pen, brush, labels etc. - int categoryCount = m_series->d_func()->categoryCount(); - int setCount = m_series->count(); - int itemIndex(0); - static const QString valueTag(QLatin1String("@value")); - - for (int category = 0; category < categoryCount; category++) { - for (int set = 0; set < setCount; set++) { - QBarSetPrivate *barSet = m_series->d_func()->barsetAt(set)->d_ptr.data(); - Bar *bar = m_bars.at(itemIndex); - bar->setPen(barSet->m_pen); - bar->setBrush(barSet->m_brush); - bar->update(); - - QGraphicsTextItem *label = m_labels.at(itemIndex); - qreal p = m_series->d_func()->percentageAt(set, category) * 100.0; - QString vString(presenter()->numberToString(p, 'f', 0)); - QString valueLabel; - if (m_series->labelsFormat().isEmpty()) { - vString.append("%"); - valueLabel = vString; - } else { - valueLabel = m_series->labelsFormat(); - valueLabel.replace(valueTag, vString); - } - label->setHtml(valueLabel); - label->setFont(barSet->m_labelFont); - label->setDefaultTextColor(barSet->m_labelBrush.color()); - label->update(); - itemIndex++; - } - } -} - -void PercentBarChartItem::handleLabelsPositionChanged() -{ - positionLabels(); -} - -void PercentBarChartItem::positionLabels() -{ - for (int i = 0; i < m_layout.count(); i++) { - QGraphicsTextItem *label = m_labels.at(i); - qreal xPos = m_layout.at(i).center().x() - label->boundingRect().center().x(); - qreal yPos = 0; - - int offset = m_bars.at(i)->pen().width() / 2 + 2; - if (m_series->labelsPosition() == QAbstractBarSeries::LabelsCenter) - yPos = m_layout.at(i).center().y() - label->boundingRect().center().y(); - else if (m_series->labelsPosition() == QAbstractBarSeries::LabelsInsideEnd) - yPos = m_layout.at(i).top() - offset; - else if (m_series->labelsPosition() == QAbstractBarSeries::LabelsInsideBase) - yPos = m_layout.at(i).bottom() - label->boundingRect().height() + offset; - else if (m_series->labelsPosition() == QAbstractBarSeries::LabelsOutsideEnd) - yPos = m_layout.at(i).top() - label->boundingRect().height() + offset; - - label->setPos(xPos, yPos); - label->setZValue(zValue() + 1); - } -} - -#include "moc_percentbarchartitem_p.cpp" - -QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/vertical/percent/percentbarchartitem_p.h b/src/barchart/vertical/percent/percentbarchartitem_p.h deleted file mode 100644 index da9fb897..00000000 --- a/src/barchart/vertical/percent/percentbarchartitem_p.h +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 Qt Enterprise 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 PERCENTBARCHARTITEM_H -#define PERCENTBARCHARTITEM_H - -#include "abstractbarchartitem_p.h" -#include <QGraphicsItem> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class QAbstractBarSeries; - -class PercentBarChartItem : public AbstractBarChartItem -{ - Q_OBJECT -public: - PercentBarChartItem(QAbstractBarSeries *series, QGraphicsItem* item = 0); - void handleUpdatedBars(); - -private slots: - void handleLabelsPositionChanged(); - void positionLabels(); - -private: - virtual QVector<QRectF> calculateLayout(); - void initializeLayout(); -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // PERCENTBARCHARTITEM_H diff --git a/src/barchart/vertical/percent/qpercentbarseries.cpp b/src/barchart/vertical/percent/qpercentbarseries.cpp deleted file mode 100644 index 2fde3658..00000000 --- a/src/barchart/vertical/percent/qpercentbarseries.cpp +++ /dev/null @@ -1,125 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 "qpercentbarseries.h" -#include "qpercentbarseries_p.h" -#include "percentbarchartitem_p.h" -#include "chartdataset_p.h" -#include "charttheme_p.h" -#include "qvalueaxis.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -/*! - \class QPercentBarSeries - \inmodule Qt Charts - \brief Series for creating percent bar chart. - \mainclass - - QPercentBarSeries represents a series of data shown as bars. The purpose of this class is to - draw bars as stacks, where each bar is shown as percentage of all bars in that category. - QPercentBarSeries groups the data from sets to categories, which are defined by a QStringList. - Bars with zero value are not drawn. - - See the \l {PercentbarChart Example} {percent bar chart example} to learn how to create a - percent bar chart. - \image examples_percentbarchart.png - - \sa QBarSet, QStackedBarSeries, QAbstractBarSeries -*/ -#ifdef QDOC_QT5 -/*! - \qmltype PercentBarSeries - \instantiates QPercentBarSeries - \inqmlmodule QtCommercial.Chart - - \include doc/src/persentbarseries.qdocinc -*/ -#else -/*! - \qmlclass PercentBarSeries QPercentBarSeries - - \include ../doc/src/persentbarseries.qdocinc -*/ -#endif - -/*! - Constructs empty QPercentBarSeries. - QPercentBarSeries is QObject which is a child of a \a parent. -*/ -QPercentBarSeries::QPercentBarSeries(QObject *parent) - : QAbstractBarSeries(*new QPercentBarSeriesPrivate(this), parent) -{ -} - -/*! - Destructor. Removes series from chart. -*/ -QPercentBarSeries::~QPercentBarSeries() -{ - Q_D(QPercentBarSeries); - if (d->m_chart) - d->m_chart->removeSeries(this); -} - -/*! - Returns QAbstractSeries::SeriesTypePercentBar. -*/ -QAbstractSeries::SeriesType QPercentBarSeries::type() const -{ - return QAbstractSeries::SeriesTypePercentBar; -} - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -QPercentBarSeriesPrivate::QPercentBarSeriesPrivate(QPercentBarSeries *q) : QAbstractBarSeriesPrivate(q) -{ - -} - -void QPercentBarSeriesPrivate::initializeDomain() -{ - qreal minX(domain()->minX()); - qreal minY(domain()->minY()); - qreal maxX(domain()->maxX()); - qreal maxY(domain()->maxY()); - - qreal x = categoryCount(); - minX = qMin(minX, - (qreal)0.5); - maxX = qMax(maxX, x - (qreal)0.5); - minY = 0; - maxY = 100; - - domain()->setRange(minX, maxX, minY, maxY); -} - - -void QPercentBarSeriesPrivate::initializeGraphics(QGraphicsItem* parent) -{ - Q_Q(QPercentBarSeries); - PercentBarChartItem *bar = new PercentBarChartItem(q,parent); - m_item.reset(bar); - QAbstractSeriesPrivate::initializeGraphics(parent); -} - -#include "moc_qpercentbarseries.cpp" - -QTCOMMERCIALCHART_END_NAMESPACE - diff --git a/src/barchart/vertical/percent/qpercentbarseries.h b/src/barchart/vertical/percent/qpercentbarseries.h deleted file mode 100644 index d6745771..00000000 --- a/src/barchart/vertical/percent/qpercentbarseries.h +++ /dev/null @@ -1,46 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 QPERCENTBARSERIES_H -#define QPERCENTBARSERIES_H - -#include <QStringList> -#include <qabstractbarseries.h> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class QPercentBarSeriesPrivate; - -class QTCOMMERCIALCHART_EXPORT QPercentBarSeries : public QAbstractBarSeries -{ - Q_OBJECT -public: - explicit QPercentBarSeries(QObject *parent = 0); - ~QPercentBarSeries(); - QAbstractSeries::SeriesType type() const; - -private: - Q_DECLARE_PRIVATE(QPercentBarSeries) - Q_DISABLE_COPY(QPercentBarSeries) -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // QPERCENTBARSERIES_H diff --git a/src/barchart/vertical/percent/qpercentbarseries_p.h b/src/barchart/vertical/percent/qpercentbarseries_p.h deleted file mode 100644 index 1ab08430..00000000 --- a/src/barchart/vertical/percent/qpercentbarseries_p.h +++ /dev/null @@ -1,51 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 Qt Enterprise 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 QPERCENTBARSERIES_P_H -#define QPERCENTBARSERIES_P_H - -#include "qabstractbarseries_p.h" -#include "abstractdomain_p.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - - -class QPercentBarSeriesPrivate: public QAbstractBarSeriesPrivate -{ -public: - QPercentBarSeriesPrivate(QPercentBarSeries *q); - void initializeDomain(); - void initializeGraphics(QGraphicsItem* parent); -private: - Q_DECLARE_PUBLIC(QPercentBarSeries) -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif diff --git a/src/barchart/vertical/stacked/qstackedbarseries.cpp b/src/barchart/vertical/stacked/qstackedbarseries.cpp deleted file mode 100644 index 6ca42806..00000000 --- a/src/barchart/vertical/stacked/qstackedbarseries.cpp +++ /dev/null @@ -1,122 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 "qstackedbarseries.h" -#include "qstackedbarseries_p.h" -#include "stackedbarchartitem_p.h" -#include "chartdataset_p.h" -#include "charttheme_p.h" -#include "qvalueaxis.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -/*! - \class QStackedBarSeries - \inmodule Qt Charts - \brief Series for creating stacked bar chart. - \mainclass - - QStackedBarSeries represents a series of data shown as bars. The purpose of this class is to draw bars - as stacks, where bars in same category are stacked on top of each other. - QStackedBarSeries groups the data from sets to categories, which are defined by QStringList. - - See the \l {StackedbarChart Example} {stacked bar chart example} to learn how to create a stacked bar chart. - \image examples_stackedbarchart.png - - \sa QBarSet, QPercentBarSeries, QAbstractBarSeries -*/ - -#ifdef QDOC_QT5 -/*! - \qmltype StackedBarSeries - \instantiates QStackedBarSeries - \inqmlmodule QtCommercial.Chart - - \include doc/src/stackedbarseries.qdocinc -*/ -#else -/*! - \qmlclass StackedBarSeries QStackedBarSeries - - \include ../doc/src/stackedbarseries.qdocinc -*/ -#endif - -/*! - Constructs empty QStackedBarSeries. - QStackedBarSeries is QObject which is a child of a \a parent. -*/ -QStackedBarSeries::QStackedBarSeries(QObject *parent) - : QAbstractBarSeries(*new QStackedBarSeriesPrivate(this), parent) -{ -} - -/*! - Destructor. Removes series from chart. -*/ -QStackedBarSeries::~QStackedBarSeries() -{ - Q_D(QStackedBarSeries); - if (d->m_chart) - d->m_chart->removeSeries(this); -} -/*! - Returns QAbstractSeries::SeriesTypeStackedBar. -*/ -QAbstractSeries::SeriesType QStackedBarSeries::type() const -{ - return QAbstractSeries::SeriesTypeStackedBar; -} - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -QStackedBarSeriesPrivate::QStackedBarSeriesPrivate(QStackedBarSeries *q) : QAbstractBarSeriesPrivate(q) -{ - -} - -void QStackedBarSeriesPrivate::initializeDomain() -{ - qreal minX(domain()->minX()); - qreal minY(domain()->minY()); - qreal maxX(domain()->maxX()); - qreal maxY(domain()->maxY()); - - qreal x = categoryCount(); - minX = qMin(minX, - (qreal)0.5); - minY = qMin(minY, bottom()); - maxX = qMax(maxX, x - (qreal)0.5); - maxY = qMax(maxY, top()); - - domain()->setRange(minX, maxX, minY, maxY); -} - -void QStackedBarSeriesPrivate::initializeGraphics(QGraphicsItem* parent) -{ - Q_Q(QStackedBarSeries); - StackedBarChartItem *bar = new StackedBarChartItem(q,parent); - m_item.reset(bar); - QAbstractSeriesPrivate::initializeGraphics(parent); -} - -#include "moc_qstackedbarseries.cpp" - -QTCOMMERCIALCHART_END_NAMESPACE - diff --git a/src/barchart/vertical/stacked/qstackedbarseries.h b/src/barchart/vertical/stacked/qstackedbarseries.h deleted file mode 100644 index ca262e03..00000000 --- a/src/barchart/vertical/stacked/qstackedbarseries.h +++ /dev/null @@ -1,46 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 QSTACKEDBARSERIES_H -#define QSTACKEDBARSERIES_H - -#include <QStringList> -#include <qabstractbarseries.h> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class QStackedBarSeriesPrivate; - -class QTCOMMERCIALCHART_EXPORT QStackedBarSeries : public QAbstractBarSeries -{ - Q_OBJECT -public: - explicit QStackedBarSeries(QObject *parent = 0); - ~QStackedBarSeries(); - QAbstractSeries::SeriesType type() const; - -private: - Q_DECLARE_PRIVATE(QStackedBarSeries) - Q_DISABLE_COPY(QStackedBarSeries) -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // QSTACKEDBARSERIES_H diff --git a/src/barchart/vertical/stacked/qstackedbarseries_p.h b/src/barchart/vertical/stacked/qstackedbarseries_p.h deleted file mode 100644 index 99e0934a..00000000 --- a/src/barchart/vertical/stacked/qstackedbarseries_p.h +++ /dev/null @@ -1,51 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 Qt Enterprise 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 QSTACKEDBARSERIES_P_H -#define QSTACKEDBARSERIES_P_H - -#include "qabstractbarseries_p.h" -#include "abstractdomain_p.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - - -class QStackedBarSeriesPrivate: public QAbstractBarSeriesPrivate -{ -public: - QStackedBarSeriesPrivate(QStackedBarSeries *q); - void initializeGraphics(QGraphicsItem* parent); - void initializeDomain(); -private: - Q_DECLARE_PUBLIC(QStackedBarSeries) -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif diff --git a/src/barchart/vertical/stacked/stackedbarchartitem.cpp b/src/barchart/vertical/stacked/stackedbarchartitem.cpp deleted file mode 100644 index 72bc650a..00000000 --- a/src/barchart/vertical/stacked/stackedbarchartitem.cpp +++ /dev/null @@ -1,137 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 "stackedbarchartitem_p.h" -#include "bar_p.h" -#include "qbarset_p.h" -#include "qabstractbarseries_p.h" -#include "qbarset.h" - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -StackedBarChartItem::StackedBarChartItem(QAbstractBarSeries *series, QGraphicsItem* item) : - AbstractBarChartItem(series, item) -{ - connect(series, SIGNAL(labelsPositionChanged(QAbstractBarSeries::LabelsPosition)), - this, SLOT(handleLabelsPositionChanged())); - connect(series, SIGNAL(labelsFormatChanged(QString)), this, SLOT(positionLabels())); -} - -void StackedBarChartItem::initializeLayout() -{ - qreal categoryCount = m_series->d_func()->categoryCount(); - qreal setCount = m_series->count(); - qreal barWidth = m_series->d_func()->barWidth(); - - m_layout.clear(); - for(int category = 0; category < categoryCount; category++) { - for (int set = 0; set < setCount; set++) { - QRectF rect; - QPointF topLeft; - QPointF bottomRight; - - if (domain()->type() == AbstractDomain::XLogYDomain || domain()->type() == AbstractDomain::LogXLogYDomain) { - topLeft = domain()->calculateGeometryPoint(QPointF(category - barWidth / 2, domain()->minY()), m_validData); - bottomRight = domain()->calculateGeometryPoint(QPointF(category + barWidth / 2, domain()->minY()), m_validData); - } else { - topLeft = domain()->calculateGeometryPoint(QPointF(category - barWidth / 2, 0), m_validData); - bottomRight = domain()->calculateGeometryPoint(QPointF(category + barWidth / 2, 0), m_validData); - } - - if (!m_validData) - return; - - rect.setTopLeft(topLeft); - rect.setBottomRight(bottomRight); - m_layout.append(rect.normalized()); - } - } -} - -QVector<QRectF> StackedBarChartItem::calculateLayout() -{ - QVector<QRectF> layout; - // Use temporary qreals for accuracy - qreal categoryCount = m_series->d_func()->categoryCount(); - qreal setCount = m_series->count(); - qreal barWidth = m_series->d_func()->barWidth(); - - for(int category = 0; category < categoryCount; category++) { - qreal positiveSum = 0; - qreal negativeSum = 0; - for (int set = 0; set < setCount; set++) { - qreal value = m_series->barSets().at(set)->at(category); - QRectF rect; - QPointF topLeft; - QPointF bottomRight; - if (value < 0) { - bottomRight = domain()->calculateGeometryPoint(QPointF(category - barWidth / 2, value + negativeSum), m_validData); - if (domain()->type() == AbstractDomain::XLogYDomain || domain()->type() == AbstractDomain::LogXLogYDomain) - topLeft = domain()->calculateGeometryPoint(QPointF(category + barWidth / 2, set ? negativeSum : domain()->minY()), m_validData); - else - topLeft = domain()->calculateGeometryPoint(QPointF(category + barWidth / 2, set ? negativeSum : 0), m_validData); - negativeSum += value; - } else { - topLeft = domain()->calculateGeometryPoint(QPointF(category - barWidth / 2, value + positiveSum), m_validData); - if (domain()->type() == AbstractDomain::XLogYDomain || domain()->type() == AbstractDomain::LogXLogYDomain) - bottomRight = domain()->calculateGeometryPoint(QPointF(category + barWidth / 2, set ? positiveSum : domain()->minY()), m_validData); - else - bottomRight = domain()->calculateGeometryPoint(QPointF(category + barWidth / 2, set ? positiveSum : 0), m_validData); - positiveSum += value; - } - - rect.setTopLeft(topLeft); - rect.setBottomRight(bottomRight); - layout.append(rect.normalized()); - } - } - return layout; -} - -void StackedBarChartItem::handleLabelsPositionChanged() -{ - positionLabels(); -} - -void StackedBarChartItem::positionLabels() -{ - for (int i = 0; i < m_layout.count(); i++) { - QGraphicsTextItem *label = m_labels.at(i); - qreal xPos = m_layout.at(i).center().x() - label->boundingRect().center().x(); - qreal yPos = 0; - - int offset = m_bars.at(i)->pen().width() / 2 + 2; - if (m_series->labelsPosition() == QAbstractBarSeries::LabelsCenter) - yPos = m_layout.at(i).center().y() - label->boundingRect().center().y(); - else if (m_series->labelsPosition() == QAbstractBarSeries::LabelsInsideEnd) - yPos = m_layout.at(i).top() - offset; - else if (m_series->labelsPosition() == QAbstractBarSeries::LabelsInsideBase) - yPos = m_layout.at(i).bottom() - label->boundingRect().height() + offset; - else if (m_series->labelsPosition() == QAbstractBarSeries::LabelsOutsideEnd) - yPos = m_layout.at(i).top() - label->boundingRect().height() + offset; - - label->setPos(xPos, yPos); - label->setZValue(zValue() + 1); - } -} - -#include "moc_stackedbarchartitem_p.cpp" - -QTCOMMERCIALCHART_END_NAMESPACE diff --git a/src/barchart/vertical/stacked/stackedbarchartitem_p.h b/src/barchart/vertical/stacked/stackedbarchartitem_p.h deleted file mode 100644 index f6f645a0..00000000 --- a/src/barchart/vertical/stacked/stackedbarchartitem_p.h +++ /dev/null @@ -1,58 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2014 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 Enterprise Charts Add-on. -** -** $QT_BEGIN_LICENSE$ -** Licensees holding valid Qt Enterprise licenses may use this file in -** accordance with the Qt Enterprise 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 Qt Enterprise 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 STACKEDBARCHARTITEM_H -#define STACKEDBARCHARTITEM_H - -#include "abstractbarchartitem_p.h" -#include "qstackedbarseries.h" -#include <QGraphicsItem> - -QTCOMMERCIALCHART_BEGIN_NAMESPACE - -class StackedBarChartItem : public AbstractBarChartItem -{ - Q_OBJECT -public: - StackedBarChartItem(QAbstractBarSeries *series, QGraphicsItem* item =0); - -private slots: - void handleLabelsPositionChanged(); - void positionLabels(); - -private: - virtual QVector<QRectF> calculateLayout(); - void initializeLayout(); - -}; - -QTCOMMERCIALCHART_END_NAMESPACE - -#endif // STACKEDBARCHARTITEM_H |