declarativecategoryaxis.cpp
122 lines
| 3.9 KiB
| text/x-c
|
CppLexer
|
r2854 | /**************************************************************************** | ||
|
r1872 | ** | ||
|
r2854 | ** Copyright (C) 2016 The Qt Company Ltd. | ||
** Contact: https://www.qt.io/licensing/ | ||||
|
r1872 | ** | ||
|
r2854 | ** This file is part of the Qt Charts module of the Qt Toolkit. | ||
|
r1872 | ** | ||
|
r2854 | ** $QT_BEGIN_LICENSE:GPL$ | ||
|
r2845 | ** Commercial License Usage | ||
** Licensees holding valid commercial Qt licenses may use this file in | ||||
** accordance with the commercial license agreement provided with the | ||||
** Software or, alternatively, in accordance with the terms contained in | ||||
** a written agreement between you and The Qt Company. For licensing terms | ||||
|
r2854 | ** and conditions see https://www.qt.io/terms-conditions. For further | ||
** information use the contact form at https://www.qt.io/contact-us. | ||||
** | ||||
** GNU General Public License Usage | ||||
** Alternatively, this file may be used under the terms of the GNU | ||||
** General Public License version 3 or (at your option) any later version | ||||
** approved by the KDE Free Qt Foundation. The licenses are as published by | ||||
** the Free Software Foundation and appearing in the file LICENSE.GPL3 | ||||
** included in the packaging of this file. Please review the following | ||||
** information to ensure the GNU General Public License requirements will | ||||
** be met: https://www.gnu.org/licenses/gpl-3.0.html. | ||||
|
r1872 | ** | ||
|
r2845 | ** $QT_END_LICENSE$ | ||
** | ||||
|
r2854 | ****************************************************************************/ | ||
|
r1872 | |||
#include "declarativecategoryaxis.h" | ||||
|
r2714 | #include <QtCore/QDebug> | ||
|
r1872 | |||
|
r2712 | QT_CHARTS_BEGIN_NAMESPACE | ||
|
r1872 | |||
|
r2639 | /*! | ||
\qmltype CategoryRange | ||||
|
r2712 | \inqmlmodule QtCharts | ||
|
r2639 | |||
|
r2712 | \brief With CategoryRange you can define a range used by a CategoryAxis. | ||
\sa CategoryAxis | ||||
|
r2639 | */ | ||
|
r1872 | |||
DeclarativeCategoryRange::DeclarativeCategoryRange(QObject *parent) : | ||||
QObject(parent), | ||||
m_endValue(0), | ||||
m_label(QString()) | ||||
{ | ||||
} | ||||
DeclarativeCategoryAxis::DeclarativeCategoryAxis(QObject *parent) : | ||||
QCategoryAxis(parent) | ||||
{ | ||||
} | ||||
void DeclarativeCategoryAxis::classBegin() | ||||
{ | ||||
} | ||||
void DeclarativeCategoryAxis::componentComplete() | ||||
{ | ||||
|
r2080 | QList<QPair<QString, qreal> > ranges; | ||
|
r2100 | foreach (QObject *child, children()) { | ||
|
r1872 | if (qobject_cast<DeclarativeCategoryRange *>(child)) { | ||
DeclarativeCategoryRange *range = qobject_cast<DeclarativeCategoryRange *>(child); | ||||
|
r2080 | ranges.append(QPair<QString, qreal>(range->label(), range->endValue())); | ||
|
r1872 | } | ||
} | ||||
|
r2080 | |||
// Sort and append the range objects according to end value | ||||
qSort(ranges.begin(), ranges.end(), endValueLessThan); | ||||
for (int i(0); i < ranges.count(); i++) | ||||
append(ranges.at(i).first, ranges.at(i).second); | ||||
} | ||||
bool DeclarativeCategoryAxis::endValueLessThan(const QPair<QString, qreal> &value1, const QPair<QString, qreal> &value2) | ||||
{ | ||||
return value1.second < value2.second; | ||||
|
r1872 | } | ||
|
r2712 | QQmlListProperty<QObject> DeclarativeCategoryAxis::axisChildren() | ||
|
r1872 | { | ||
|
r2712 | return QQmlListProperty<QObject>(this, 0, &DeclarativeCategoryAxis::appendAxisChildren ,0,0,0); | ||
|
r1872 | } | ||
void DeclarativeCategoryAxis::append(const QString &label, qreal categoryEndValue) | ||||
{ | ||||
QCategoryAxis::append(label, categoryEndValue); | ||||
} | ||||
void DeclarativeCategoryAxis::remove(const QString &label) | ||||
{ | ||||
QCategoryAxis::remove(label); | ||||
} | ||||
|
r2101 | void DeclarativeCategoryAxis::replace(const QString &oldLabel, const QString &newLabel) | ||
|
r1872 | { | ||
QCategoryAxis::replaceLabel(oldLabel, newLabel); | ||||
} | ||||
|
r2712 | void DeclarativeCategoryAxis::appendAxisChildren(QQmlListProperty<QObject> *list, QObject *element) | ||
|
r1872 | { | ||
// Empty implementation; the children are parsed in componentComplete instead | ||||
Q_UNUSED(list) | ||||
Q_UNUSED(element) | ||||
} | ||||
|
r2780 | DeclarativeCategoryAxis::AxisLabelsPosition DeclarativeCategoryAxis::labelsPosition() const | ||
{ | ||||
return (DeclarativeCategoryAxis::AxisLabelsPosition) QCategoryAxis::labelsPosition(); | ||||
} | ||||
void DeclarativeCategoryAxis::setLabelsPosition(AxisLabelsPosition position) | ||||
{ | ||||
|
r2799 | if (position != m_labelsPosition) { | ||
QCategoryAxis::setLabelsPosition((QCategoryAxis::AxisLabelsPosition)position); | ||||
|
r2780 | emit labelsPositionChanged(position); | ||
} | ||||
} | ||||
|
r1872 | #include "moc_declarativecategoryaxis.cpp" | ||
|
r2712 | QT_CHARTS_END_NAMESPACE | ||