##// END OF EJS Templates
Adds chart parser to cherviewer options
Adds chart parser to cherviewer options

File last commit:

r2108:530dcb651fe8
r2135:c8d5b77f686a
Show More
qcategoryaxis.cpp
290 lines | 8.4 KiB | text/x-c | CppLexer
Marek Rosa
QIntervalsAxis working somewhat
r1701 /****************************************************************************
**
** Copyright (C) 2012 Digia Plc
** All rights reserved.
** For any questions to Digia, please use contact form at http://qt.digia.com
**
** This file is part of the Qt Commercial Charts Add-on.
**
** $QT_BEGIN_LICENSE$
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia.
**
** If you have questions regarding the use of this file, please use
** contact form at http://qt.digia.com
** $QT_END_LICENSE$
**
****************************************************************************/
Marek Rosa
Renamed QCategoryAxis related files
r1817 #include "qcategoryaxis.h"
#include "qcategoryaxis_p.h"
#include "chartcategoryaxisx_p.h"
#include "chartcategoryaxisy_p.h"
Marek Rosa
QIntervalsAxis working somewhat
r1701 #include <qmath.h>
#include <QDebug>
QTCOMMERCIALCHART_BEGIN_NAMESPACE
/*!
Marek Rosa
QIntervalsAxis renamed to QCategoryAxis
r1816 \class QCategoryAxis
Marek Rosa
Some axes docs update
r1834 \brief The QCategoryAxis class allows putting a named ranges on the axis.
Marek Rosa
QIntervalsAxis working somewhat
r1701 \mainclass
Marek Rosa
Some axes docs update
r1834
This class can be used when the underlying data needs to be given extra meaning.
Unlike with the QBarCategoryAxis the QCategoryAxis allows the categories ranges widths to be specified freely.
Marek Rosa
Axis docs updated
r1887
Example code on how to use QCategoryAxis.
\code
QChartView *chartView = new QChartView;
QLineSeries *series = new QLineSeries;
// ...
chartView->chart()->addSeries(series);
QCategoryAxis *axisX = new QCategoryAxis;
axisX->setStartValue(15);
axisX->append("First", 20);
axisX->append("Second", 37);
axisX->append("Third", 52);
Marek Rosa
Docs fixes for axes code snippets
r2108 chartView->chart()->setAxisX(axisX, series);
Marek Rosa
Axis docs updated
r1887 \endcode
Marek Rosa
QIntervalsAxis working somewhat
r1701 */
/*!
Marek Rosa
Renamed QCategoryAxis related files
r1817 \qmlclass CategoryAxis QCategoryAxis
Tero Ahola
Fixed minor issues in QML axes documentation
r1869 \inherits AbstractAxis
Tero Ahola
Added CategoryAxis and CategoryRange to QML API
r1870 \brief CategoryAxis allows putting a named ranges on the axis.
For example:
Tero Ahola
Improved qmlchart demo and CategoryAxis documentation
r2030 \table
\row
\o \br
\br
\br
\snippet ../demos/qmlaxes/qml/qmlaxes/View3.qml 1
\o \inlineimage demos_qmlaxes3.png
\endtable
Marek Rosa
Some axes docs update
r1834 */
/*!
\property QCategoryAxis::startValue
Defines the low end of the first category on the axis.
*/
/*!
\qmlproperty int CategoryAxis::startValue
Defines the low end of the first category on the axis.
Marek Rosa
QIntervalsAxis working somewhat
r1701 */
/*!
Constructs an axis object which is a child of \a parent.
*/
Marek Rosa
QIntervalsAxis renamed to QCategoryAxis
r1816 QCategoryAxis::QCategoryAxis(QObject *parent):
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 QValueAxis(*new QCategoryAxisPrivate(this), parent)
Marek Rosa
QIntervalsAxis working somewhat
r1701 {
}
/*!
Destroys the object
*/
Marek Rosa
QIntervalsAxis renamed to QCategoryAxis
r1816 QCategoryAxis::~QCategoryAxis()
Marek Rosa
QIntervalsAxis working somewhat
r1701 {
}
/*!
\internal
*/
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 QCategoryAxis::QCategoryAxis(QCategoryAxisPrivate &d, QObject *parent): QValueAxis(d, parent)
Marek Rosa
QIntervalsAxis working somewhat
r1701 {
}
Tero Ahola
Added CategoryAxis and CategoryRange to QML API
r1870 /*!
\qmlmethod CategoryAxis::append(string label, real endValue)
Appends new category to the axis with an \a label. Category label has to be unique.
Parameter \a endValue specifies the high end limit of the category.
It has to be greater than the high end limit of the previous category.
Otherwise the method returns without adding a new category.
*/
Marek Rosa
QIntervalsAxis working somewhat
r1701 /*!
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 Appends new category to the axis with an \a categoryLabel.
Category label has to be unique.
Marek Rosa
QCategoryAxis: method parameter name updated
r1849 Parameter \a categoryEndValue specifies the high end limit of the category.
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 It has to be greater than the high end limit of the previous category.
Otherwise the method returns without adding a new category.
Marek Rosa
QIntervalsAxis working somewhat
r1701 */
Jani Honkonen
more coding style fixes for src-folder...
r2104 void QCategoryAxis::append(const QString &categoryLabel, qreal categoryEndValue)
Marek Rosa
QIntervalsAxis working somewhat
r1701 {
Marek Rosa
QIntervalsAxis renamed to QCategoryAxis
r1816 Q_D(QCategoryAxis);
Marek Rosa
Fixes and tests to Interval axis
r1708
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 if (!d->m_categories.contains(categoryLabel)) {
if (d->m_categories.isEmpty()) {
Marek Rosa
QCategoryAxis: method parameter name updated
r1849 Range range(d->m_categoryMinimum, categoryEndValue);
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 d->m_categoriesMap.insert(categoryLabel, range);
d->m_categories.append(categoryLabel);
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 } else if (categoryEndValue > endValue(d->m_categories.last())) {
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 Range previousRange = d->m_categoriesMap.value(d->m_categories.last());
Marek Rosa
QCategoryAxis: method parameter name updated
r1849 d->m_categoriesMap.insert(categoryLabel, Range(previousRange.second, categoryEndValue));
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 d->m_categories.append(categoryLabel);
Marek Rosa
Fixes and tests to Interval axis
r1708 }
Marek Rosa
QIntervalsAxis working somewhat
r1701 }
}
Marek Rosa
Some axes docs update
r1834 /*!
Sets \a min to be the low end limit of the first category on the axis.
Marek Rosa
QCategoryAxis: renamed some functions according to review
r1847 If there is already some categories added to the axis then passed value must be lower than the high end value of the already defined first category range.
Otherwise nothing is done.
Marek Rosa
Docs update
r1731 */
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 void QCategoryAxis::setStartValue(qreal min)
Marek Rosa
QIntervalsAxis working somewhat
r1701 {
Marek Rosa
QIntervalsAxis renamed to QCategoryAxis
r1816 Q_D(QCategoryAxis);
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 if (d->m_categories.isEmpty()) {
Marek Rosa
Fixes and tests to Interval axis
r1708 d->m_categoryMinimum = min;
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 } else {
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 Range range = d->m_categoriesMap.value(d->m_categories.first());
Marek Rosa
QCategoryAxis: renamed some functions according to review
r1847 if (min < range.second)
d->m_categoriesMap.insert(d->m_categories.first(), Range(min, range.second));
Marek Rosa
Fixes and tests to Interval axis
r1708 }
Marek Rosa
QIntervalsAxis working somewhat
r1701 }
Marek Rosa
Docs update
r1731 /*!
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 Returns the low end limit of the category specified by an \a categoryLabel
Marek Rosa
Docs update
r1731 */
Jani Honkonen
more coding style fixes for src-folder...
r2104 qreal QCategoryAxis::startValue(const QString &categoryLabel) const
Marek Rosa
QIntervalsAxis working somewhat
r1701 {
Marek Rosa
QIntervalsAxis renamed to QCategoryAxis
r1816 Q_D(const QCategoryAxis);
Jani Honkonen
Fix Krazy issues
r1935 if (categoryLabel.isEmpty())
Marek Rosa
QCategoryAxis: renamed some functions according to review
r1847 return d->m_categoryMinimum;
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 return d->m_categoriesMap.value(categoryLabel).first;
Marek Rosa
QIntervalsAxis working somewhat
r1701 }
Marek Rosa
Docs update
r1731 /*!
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 Returns the high end limit of the interval specified by an \a categoryLabel
Marek Rosa
Docs update
r1731 */
Jani Honkonen
more coding style fixes for src-folder...
r2104 qreal QCategoryAxis::endValue(const QString &categoryLabel) const
Marek Rosa
QIntervalsAxis working somewhat
r1701 {
Marek Rosa
QIntervalsAxis renamed to QCategoryAxis
r1816 Q_D(const QCategoryAxis);
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 return d->m_categoriesMap.value(categoryLabel).second;
Marek Rosa
QIntervalsAxis working somewhat
r1701 }
Tero Ahola
Added CategoryAxis and CategoryRange to QML API
r1870 /*!
\qmlmethod CategoryAxis::remove(string label)
Removes a category specified by the \a label from the axis
*/
Marek Rosa
QIntervalsAxis working somewhat
r1701 /*!
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 Removes an interval specified by the \a categoryLabel from the axis
Marek Rosa
QIntervalsAxis working somewhat
r1701 */
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 void QCategoryAxis::remove(const QString &categoryLabel)
Marek Rosa
QIntervalsAxis working somewhat
r1701 {
Marek Rosa
QIntervalsAxis renamed to QCategoryAxis
r1816 Q_D(QCategoryAxis);
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 int labelIndex = d->m_categories.indexOf(categoryLabel);
Marek Rosa
Fixes and tests to Interval axis
r1708
// check if such label exists
if (labelIndex != -1) {
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 d->m_categories.removeAt(labelIndex);
d->m_categoriesMap.remove(categoryLabel);
Marek Rosa
Fixes and tests to Interval axis
r1708
// the range of the interval that follows (if exists) needs to be updated
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 if (labelIndex < d->m_categories.count()) {
QString label = d->m_categories.at(labelIndex);
Range range = d->m_categoriesMap.value(label);
Marek Rosa
Fixes and tests to Interval axis
r1708
// set the range
if (labelIndex == 0) {
range.first = d->m_categoryMinimum;
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 d->m_categoriesMap.insert(label, range);
Marek Rosa
Fixes and tests to Interval axis
r1708 } else {
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 range.first = d->m_categoriesMap.value(d->m_categories.at(labelIndex - 1)).second;
d->m_categoriesMap.insert(label, range);
Marek Rosa
Fixes and tests to Interval axis
r1708 }
}
Marek Rosa
Added posibility to replace interval's label in QIntervalsAxis
r1777 d->emitUpdated();
Marek Rosa
Fixes and tests to Interval axis
r1708 }
Marek Rosa
QIntervalsAxis working somewhat
r1701 }
Tero Ahola
Added CategoryAxis and CategoryRange to QML API
r1870 /*!
\qmlmethod CategoryAxis::replace(string oldLabel, string newLabel)
Replaces \a oldLabel of an existing category with a \a newLabel.
If the old label does not exist the method returns without making any changes.
*/
Marek Rosa
Some interval axis docs updates
r1800 /*!
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 Replaces \a oldLabel of an existing category with a \a newLabel
Marek Rosa
Some interval axis docs updates
r1800 If the old label does not exist the method returns without making any changes.
*/
Jani Honkonen
more coding style fixes for src-folder...
r2104 void QCategoryAxis::replaceLabel(const QString &oldLabel, const QString &newLabel)
Marek Rosa
Added posibility to replace interval's label in QIntervalsAxis
r1777 {
Marek Rosa
QIntervalsAxis renamed to QCategoryAxis
r1816 Q_D(QCategoryAxis);
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 int labelIndex = d->m_categories.indexOf(oldLabel);
Marek Rosa
Added posibility to replace interval's label in QIntervalsAxis
r1777
// check if such label exists
if (labelIndex != -1) {
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 d->m_categories.replace(labelIndex, newLabel);
Range range = d->m_categoriesMap.value(oldLabel);
d->m_categoriesMap.remove(oldLabel);
d->m_categoriesMap.insert(newLabel, range);
Marek Rosa
Added posibility to replace interval's label in QIntervalsAxis
r1777 d->emitUpdated();
}
}
Marek Rosa
Some interval axis docs updates
r1800 /*!
Returns the list of the intervals labels
*/
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 QStringList QCategoryAxis::categoriesLabels()
Marek Rosa
QIntervalsAxis working somewhat
r1701 {
Marek Rosa
QIntervalsAxis renamed to QCategoryAxis
r1816 Q_D(QCategoryAxis);
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 return d->m_categories;
Marek Rosa
QIntervalsAxis working somewhat
r1701 }
/*!
Marek Rosa
QIntervalsAxis some names updates
r1799 Returns number of intervals.
Marek Rosa
QIntervalsAxis working somewhat
r1701 */
Marek Rosa
QIntervalsAxis renamed to QCategoryAxis
r1816 int QCategoryAxis::count() const
Marek Rosa
QIntervalsAxis working somewhat
r1701 {
Marek Rosa
QIntervalsAxis renamed to QCategoryAxis
r1816 Q_D(const QCategoryAxis);
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 return d->m_categories.count();
Marek Rosa
QIntervalsAxis working somewhat
r1701 }
/*!
Returns the type of the axis
*/
Marek Rosa
QIntervalsAxis renamed to QCategoryAxis
r1816 QAbstractAxis::AxisType QCategoryAxis::type() const
Marek Rosa
QIntervalsAxis working somewhat
r1701 {
Marek Rosa
updated AxisType names
r1818 return QAbstractAxis::AxisTypeCategory;
Marek Rosa
QIntervalsAxis working somewhat
r1701 }
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Jani Honkonen
more coding style fixes for src-folder...
r2104 QCategoryAxisPrivate::QCategoryAxisPrivate(QCategoryAxis *q)
: QValueAxisPrivate(q),
m_categoryMinimum(0)
Marek Rosa
QIntervalsAxis working somewhat
r1701 {
}
Marek Rosa
QIntervalsAxis renamed to QCategoryAxis
r1816 QCategoryAxisPrivate::~QCategoryAxisPrivate()
Marek Rosa
QIntervalsAxis working somewhat
r1701 {
}
Marek Rosa
QIntervalsAxis renamed to QCategoryAxis
r1816 int QCategoryAxisPrivate::ticksCount() const
Marek Rosa
QIntervalsAxis working somewhat
r1701 {
Marek Rosa
QCategoryAxis renamed some methods names according to review
r1829 return m_categories.count() + 1;
Marek Rosa
QIntervalsAxis working somewhat
r1701 }
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 void QCategoryAxisPrivate::handleAxisRangeChanged(qreal min, qreal max, int count)
Marek Rosa
QIntervalsAxis working somewhat
r1701 {
Q_UNUSED(count);
Michal Klocek
Implements qbarcategoriesaxis logic...
r1725 Q_UNUSED(min);
Q_UNUSED(max);
Marek Rosa
QIntervalsAxis working somewhat
r1701 }
Jani Honkonen
more coding style fixes for src-folder...
r2104 ChartAxis *QCategoryAxisPrivate::createGraphics(ChartPresenter *presenter)
Marek Rosa
QIntervalsAxis working somewhat
r1701 {
Marek Rosa
QIntervalsAxis renamed to QCategoryAxis
r1816 Q_Q(QCategoryAxis);
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 if (m_orientation == Qt::Vertical)
return new ChartCategoryAxisY(q, presenter);
return new ChartCategoryAxisX(q, presenter);
Marek Rosa
QIntervalsAxis working somewhat
r1701 }
Marek Rosa
Renamed QCategoryAxis related files
r1817 #include "moc_qcategoryaxis.cpp"
#include "moc_qcategoryaxis_p.cpp"
Marek Rosa
QIntervalsAxis working somewhat
r1701
QTCOMMERCIALCHART_END_NAMESPACE