##// END OF EJS Templates
Added axisXTop and axisYRight properties to QML series APIs
Added axisXTop and axisYRight properties to QML series APIs

File last commit:

r2275:95c64613f4b2
r2296:6bd1dc9d15e0
Show More
qvalueaxis.cpp
391 lines | 8.8 KiB | text/x-c | CppLexer
Michal Klocek
Adds new API classes...
r1540 /****************************************************************************
**
** 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 QValueAxis related files
r1805 #include "qvalueaxis.h"
#include "qvalueaxis_p.h"
#include "chartvalueaxisx_p.h"
#include "chartvalueaxisy_p.h"
Marek Rosa
Domains added
r2275 #include "abstractdomain_p.h"
Michal Klocek
Implements qbarcategoriesaxis logic...
r1725 #include "chartdataset_p.h"
Michal Klocek
Refactors internals...
r2273 #include "chartpresenter_p.h"
#include "charttheme_p.h"
Michal Klocek
Implements qbarcategoriesaxis logic...
r1725
Michal Klocek
Adds new API classes...
r1540
QTCOMMERCIALCHART_BEGIN_NAMESPACE
Marek Rosa
Some docs to QValuesAxis
r1547 /*!
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 \class QValueAxis
\brief The QValueAxis class is used for manipulating chart's axis.
Marek Rosa
Some docs to QValuesAxis
r1547 \mainclass
Marek Rosa
Docs update after classes renaming
r1812 ValueAxis can be setup to show axis line with tick marks, grid lines and shades.
Marek Rosa
QValueAxis docs: added usage snippet
r1881 Values of axis are drawn to position of ticks.
Example code on how to use QValueAxis.
\code
QChartView *chartView = new QChartView;
QLineSeries *series = new QLineSeries;
// ...
Marek Rosa
QDateTimeAxis: added snippet on how to use it
r1882 chartView->chart()->addSeries(series);
Marek Rosa
QValueAxis docs: added usage snippet
r1881 QValueAxis *axisX = new QValueAxis;
axisX->setRange(10, 20.5);
axisX->setTickCount(10);
axisX->setLabelFormat("%.2f");
Marek Rosa
Docs fixes for axes code snippets
r2108 chartView->chart()->setAxisX(axisX, series);
Marek Rosa
QValueAxis docs: added usage snippet
r1881 \endcode
Marek Rosa
Some docs to QValuesAxis
r1547 */
/*!
Marek Rosa
Docs update after classes renaming
r1812 \qmlclass ValueAxis QValueAxis
Tero Ahola
Fixed minor issues in QML axes documentation
r1869 \inherits AbstractAxis
Marek Rosa
Docs update after classes renaming
r1812 \brief The ValueAxis element is used for manipulating chart's axes
Marek Rosa
Some docs to QValuesAxis
r1547
sauimone
qml doc update
r1639 ValueAxis can be setup to show axis line with tick marks, grid lines and shades.
Values of axis are drawn to position of ticks
Marek Rosa
Some docs to QValuesAxis
r1547
To access Axes you can use ChartView API. For example:
\code
ChartView {
Marek Rosa
Docs update after classes renaming
r1812 ValueAxis {
sauimone
qml doc update
r1639 id: xAxis
min: 0
max: 10
}
// Add a few series...
Marek Rosa
Some docs to QValuesAxis
r1547 }
\endcode
*/
/*!
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 \property QValueAxis::min
Marek Rosa
Some docs to QValuesAxis
r1547 Defines the minimum value on the axis.
Marek Rosa
Updated min, max properties of values and datetime axes descriptions with information about maintaining the range validity
r1730 When setting this property the max is adjusted if necessary, to ensure that the range remains valid.
Marek Rosa
Some docs to QValuesAxis
r1547 */
/*!
Marek Rosa
Docs update after classes renaming
r1812 \qmlproperty real ValueAxis::min
Marek Rosa
Some docs to QValuesAxis
r1547 Defines the minimum value on the axis.
Marek Rosa
Updated min, max properties of values and datetime axes descriptions with information about maintaining the range validity
r1730 When setting this property the max is adjusted if necessary, to ensure that the range remains valid.
Marek Rosa
Some docs to QValuesAxis
r1547 */
/*!
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 \property QValueAxis::max
Marek Rosa
Some docs to QValuesAxis
r1547 Defines the maximum value on the axis.
Marek Rosa
Updated min, max properties of values and datetime axes descriptions with information about maintaining the range validity
r1730 When setting this property the min is adjusted if necessary, to ensure that the range remains valid.
Marek Rosa
Some docs to QValuesAxis
r1547 */
/*!
Marek Rosa
Docs update after classes renaming
r1812 \qmlproperty real ValueAxis::max
Marek Rosa
Some docs to QValuesAxis
r1547 Defines the maximum value on the axis.
Marek Rosa
Updated min, max properties of values and datetime axes descriptions with information about maintaining the range validity
r1730 When setting this property the min is adjusted if necessary, to ensure that the range remains valid.
Marek Rosa
Some docs to QValuesAxis
r1547 */
Marek Rosa
Added docs for labelFormat in QValueAxis
r1855 /*!
\property QValueAxis::labelFormat
Defines the label format for the axis.
Marek Rosa
setLabelFormat bug fixed in QValueAxis
r2268 Supported specifiers are: d, i, o, x, X, f, F, e, E, g, G, c
See QString::sprintf() for additional details.
Marek Rosa
Added docs for labelFormat in QValueAxis
r1855 */
/*!
\qmlproperty real ValueAxis::labelFormat
Defines the label format for the axis.
Marek Rosa
setLabelFormat bug fixed in QValueAxis
r2268 Supported specifiers are: d, i, o, x, X, f, F, e, E, g, G, c
See QString::sprintf() for additional details.
Marek Rosa
Added docs for labelFormat in QValueAxis
r1855 */
Marek Rosa
Some docs to QValuesAxis
r1547 /*!
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 \fn void QValueAxis::minChanged(qreal min)
Marek Rosa
Some docs to QValuesAxis
r1547 Axis emits signal when \a min of axis has changed.
*/
sauimone
abstract axis qml documentation. bug fix to setArrowVisible
r1654 /*!
Marek Rosa
Docs update after classes renaming
r1812 \qmlsignal ValueAxis::onMinChanged(real min)
sauimone
abstract axis qml documentation. bug fix to setArrowVisible
r1654 Axis emits signal when \a min of axis has changed.
*/
Marek Rosa
Some docs to QValuesAxis
r1547
/*!
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 \fn void QValueAxis::maxChanged(qreal max)
Marek Rosa
Some docs to QValuesAxis
r1547 Axis emits signal when \a max of axis has changed.
*/
sauimone
abstract axis qml documentation. bug fix to setArrowVisible
r1654 /*!
Marek Rosa
Docs update after classes renaming
r1812 \qmlsignal ValueAxis::onMaxChanged(real max)
sauimone
abstract axis qml documentation. bug fix to setArrowVisible
r1654 Axis emits signal when \a max of axis has changed.
*/
Marek Rosa
Some docs to QValuesAxis
r1547
/*!
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 \fn void QValueAxis::rangeChanged(qreal min, qreal max)
Marek Rosa
Some docs to QValuesAxis
r1547 Axis emits signal when \a min or \a max of axis has changed.
*/
Michal Klocek
Adds new API classes...
r1540
sauimone
fixed documentation errors
r1575 /*!
Marek Rosa
Docs update after classes renaming
r1812 \property QValueAxis::tickCount
sauimone
fixed documentation errors
r1575 The number of tick marks for the axis.
*/
/*!
Marek Rosa
Docs update after classes renaming
r1812 \qmlproperty int ValueAxis::tickCount
sauimone
fixed documentation errors
r1575 The number of tick marks for the axis.
*/
/*!
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 \property QValueAxis::niceNumbersEnabled
sauimone
fixed documentation errors
r1575 Whether the nice numbers algorithm is enabled or not for the axis.
*/
/*!
Marek Rosa
Docs update after classes renaming
r1812 \qmlproperty bool ValueAxis::niceNumbersEnabled
sauimone
fixed documentation errors
r1575 Whether the nice numbers algorithm is enabled or not for the axis.
*/
Marek Rosa
Axes docs update
r1636 /*!
Constructs an axis object which is a child of \a parent.
*/
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 QValueAxis::QValueAxis(QObject *parent) :
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 QAbstractAxis(*new QValueAxisPrivate(this), parent)
Michal Klocek
Adds new API classes...
r1540 {
}
Marek Rosa
Various docs fixes
r1638 /*!
\internal
*/
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 QValueAxis::QValueAxis(QValueAxisPrivate &d, QObject *parent)
: QAbstractAxis(d, parent)
Michal Klocek
Adds new API classes...
r1540 {
}
Marek Rosa
Various docs fixes
r1638 /*!
Destroys the object
*/
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 QValueAxis::~QValueAxis()
Michal Klocek
Adds new API classes...
r1540 {
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 Q_D(QValueAxis);
Michal Klocek
Refactors internals...
r2273 if (d->m_chart)
d->m_chart->removeAxis(this);
Michal Klocek
Adds new API classes...
r1540 }
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 void QValueAxis::setMin(qreal min)
Michal Klocek
Adds new API classes...
r1540 {
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 Q_D(QValueAxis);
Marek Rosa
Ranges on values, intervals and datatime axes cannot be set to be invalid
r1728 setRange(min, qMax(d->m_max, min));
Michal Klocek
Adds new API classes...
r1540 }
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 qreal QValueAxis::min() const
Michal Klocek
Adds new API classes...
r1540 {
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 Q_D(const QValueAxis);
Michal Klocek
Adds new API classes...
r1540 return d->m_min;
}
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 void QValueAxis::setMax(qreal max)
Michal Klocek
Adds new API classes...
r1540 {
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 Q_D(QValueAxis);
Marek Rosa
Ranges on values, intervals and datatime axes cannot be set to be invalid
r1728 setRange(qMin(d->m_min, max), max);
Michal Klocek
Adds new API classes...
r1540 }
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 qreal QValueAxis::max() const
Michal Klocek
Adds new API classes...
r1540 {
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 Q_D(const QValueAxis);
Michal Klocek
Adds new API classes...
r1540 return d->m_max;
}
/*!
Sets range from \a min to \a max on the axis.
Marek Rosa
Updated min, max properties of values and datetime axes descriptions with information about maintaining the range validity
r1730 If min is greater than max then this function returns without making any changes.
Michal Klocek
Adds new API classes...
r1540 */
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 void QValueAxis::setRange(qreal min, qreal max)
Michal Klocek
Adds new API classes...
r1540 {
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 Q_D(QValueAxis);
Michal Klocek
Refactors internals...
r2273 d->setRange(min,max);
Michal Klocek
Adds new API classes...
r1540 }
/*!
Sets \a count for ticks on the axis.
*/
Marek Rosa
QValueAxis ticksCount to tickCount
r1807 void QValueAxis::setTickCount(int count)
Michal Klocek
Adds new API classes...
r1540 {
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 Q_D(QValueAxis);
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 if (d->m_tickCount != count && count >= 2) {
Michal Klocek
Refactors Domain and Axis...
r1698 d->m_tickCount = count;
Michal Klocek
Refactors internals...
r2273 emit tickCountChanged(count);
Michal Klocek
Adds new API classes...
r1540 }
}
/*!
Marek Rosa
Docs update after classes renaming
r1812 \fn int QValueAxis::tickCount() const
Michal Klocek
Adds new API classes...
r1540 Return number of ticks on the axis
*/
Marek Rosa
QValueAxis ticksCount to tickCount
r1807 int QValueAxis::tickCount() const
Michal Klocek
Adds new API classes...
r1540 {
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 Q_D(const QValueAxis);
Michal Klocek
Refactors Domain and Axis...
r1698 return d->m_tickCount;
Michal Klocek
Adds new API classes...
r1540 }
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 void QValueAxis::setNiceNumbersEnabled(bool enable)
Michal Klocek
Adds new API classes...
r1540 {
Michal Klocek
Refactors internals...
r2273 Q_UNUSED(enable);
qWarning()<<"This function is depreciated.Use applyNiceNumbers().";
Michal Klocek
Adds new API classes...
r1540 }
Michal Klocek
Refactors internals...
r2273 bool QValueAxis::niceNumbersEnabled() const
Michal Klocek
Adds new API classes...
r1540 {
Michal Klocek
Refactors internals...
r2273 qWarning()<<"This function is depreciated.Use applyNiceNumbers().";
return false;
Michal Klocek
Adds new API classes...
r1540 }
Marek Rosa
QValueAxis: added posibility to specify label format
r1854 void QValueAxis::setLabelFormat(const QString &format)
{
Q_D(QValueAxis);
d->m_format = format;
}
QString QValueAxis::labelFormat() const
{
Q_D(const QValueAxis);
return d->m_format;
}
Marek Rosa
Few more axes docs updates
r1637 /*!
Returns the type of the axis
*/
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 QAbstractAxis::AxisType QValueAxis::type() const
Michal Klocek
Adds new API classes...
r1540 {
Marek Rosa
updated AxisType names
r1818 return AxisTypeValue;
Michal Klocek
Adds new API classes...
r1540 }
Michal Klocek
Refactors internals...
r2273 void QValueAxis::applyNiceNumbers()
{
Q_D(QValueAxis);
qreal min = d->m_min;
qreal max = d->m_max;
int ticks = d->m_tickCount;
Marek Rosa
Domains added
r2275 AbstractDomain::looseNiceNumbers(min,max,ticks);
Michal Klocek
Refactors internals...
r2273 d->setRange(min,max);
setTickCount(ticks);
}
Michal Klocek
Adds new API classes...
r1540 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Jani Honkonen
more coding style fixes for src-folder...
r2104 QValueAxisPrivate::QValueAxisPrivate(QValueAxis *q)
: QAbstractAxisPrivate(q),
m_min(0),
m_max(0),
m_tickCount(5),
m_format(QString::null)
Michal Klocek
Adds new API classes...
r1540 {
}
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 QValueAxisPrivate::~QValueAxisPrivate()
Michal Klocek
Adds new API classes...
r1540 {
}
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 void QValueAxisPrivate::setMin(const QVariant &min)
Michal Klocek
Refactors setMin setMax setRange to be pure viritual on private implementation
r1544 {
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 Q_Q(QValueAxis);
sauimone
QAbstractAxis: variants strike back.
r1578 bool ok;
qreal value = min.toReal(&ok);
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 if (ok)
q->setMin(value);
Michal Klocek
Refactors setMin setMax setRange to be pure viritual on private implementation
r1544 }
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 void QValueAxisPrivate::setMax(const QVariant &max)
Michal Klocek
Refactors setMin setMax setRange to be pure viritual on private implementation
r1544 {
Michal Klocek
Fixes tst_qchartview
r1652
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 Q_Q(QValueAxis);
sauimone
QAbstractAxis: variants strike back.
r1578 bool ok;
qreal value = max.toReal(&ok);
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 if (ok)
q->setMax(value);
Michal Klocek
Refactors setMin setMax setRange to be pure viritual on private implementation
r1544 }
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 void QValueAxisPrivate::setRange(const QVariant &min, const QVariant &max)
Michal Klocek
Refactors setMin setMax setRange to be pure viritual on private implementation
r1544 {
Marek Rosa
class QValuesAxis renamed to QValueAxis
r1804 Q_Q(QValueAxis);
sauimone
QAbstractAxis: variants strike back.
r1578 bool ok1;
bool ok2;
qreal value1 = min.toReal(&ok1);
qreal value2 = max.toReal(&ok2);
Jani Honkonen
astyle and manual coding style fixes for src-folder
r2097 if (ok1 && ok2)
q->setRange(value1, value2);
Michal Klocek
Refactors setMin setMax setRange to be pure viritual on private implementation
r1544 }
Michal Klocek
Refactors internals...
r2273 void QValueAxisPrivate::setRange(qreal min, qreal max)
Michal Klocek
Refactors core to support mulitpile axis and domains...
r1556 {
Michal Klocek
Refactors internals...
r2273 Q_Q(QValueAxis);
bool changed = false;
Michal Klocek
Refactors core to support mulitpile axis and domains...
r1556
Michal Klocek
Refactors internals...
r2273 if (min > max)
return;
if (!qFuzzyCompare(m_min,min)) {
m_min = min;
changed = true;
emit q->minChanged(min);
}
if (!qFuzzyCompare(m_max,max)) {
m_max = max;
changed = true;
emit q->maxChanged(max);
Michal Klocek
Creates default initalization of axes
r1661 }
Michal Klocek
Refactors internals...
r2273 if (changed) {
emit q->rangeChanged(min, max);
emit rangeChanged(min,max);
}
}
Michal Klocek
Refactors Domain and Axis...
r1698
Michal Klocek
Refactors internals...
r2273 void QValueAxisPrivate::initializeGraphics(QGraphicsItem* parent)
Michal Klocek
Refactors Domain and Axis...
r1698 {
Michal Klocek
Refactors internals...
r2273 Q_Q(QValueAxis);
ChartAxis* axis(0);
if (orientation() == Qt::Vertical)
axis = new ChartValueAxisY(q,parent);
if (orientation() == Qt::Horizontal)
axis = new ChartValueAxisX(q,parent);
m_item.reset(axis);
QAbstractAxisPrivate::initializeGraphics(parent);
Michal Klocek
Refactors Domain and Axis...
r1698 }
Marek Rosa
Domains added
r2275 void QValueAxisPrivate::initializeDomain(AbstractDomain *domain)
Michal Klocek
Refactors Domain and Axis...
r1698 {
Michal Klocek
Refactors internals...
r2273 if (orientation() == Qt::Vertical) {
if(!qFuzzyIsNull(m_max - m_min)) {
domain->setRangeY(m_min, m_max);
}
else {
setRange(domain->minY(), domain->maxY());
}
}
if (orientation() == Qt::Horizontal) {
if(!qFuzzyIsNull(m_max - m_min)) {
domain->setRangeX(m_min, m_max);
}
else {
setRange(domain->minX(), domain->maxX());
}
Michal Klocek
Refactors Domain and Axis...
r1698 }
}
Marek Rosa
renamed QValueAxis related files
r1805 #include "moc_qvalueaxis.cpp"
#include "moc_qvalueaxis_p.cpp"
Michal Klocek
Adds new API classes...
r1540
QTCOMMERCIALCHART_END_NAMESPACE