Cleaning up declarative implementation

This commit is contained in:
Tero Ahola 2012-05-23 09:42:55 +03:00
parent ff2cf2e63a
commit c8b3f0fb84
8 changed files with 77 additions and 19 deletions

View File

@ -96,7 +96,7 @@ Rectangle {
}
AreaSeries {
name: "Swedish"
name: "Finnish"
upperSeries: LineSeries {
XyPoint { x: 0; y: 0 }
XyPoint { x: 1; y: 0 }

View File

@ -30,10 +30,10 @@ Rectangle {
theme: ChartView.ChartThemeLight
legend: ChartView.LegendBottom
// TODO: labels defined by x-axis, not by bar series
// axisXLabels: ["0", "2008", "1", "2009", "2", "2010", "3", "2012"]
axisXLabels: ["0", "2008", "1", "2009", "2", "2010", "3", "2012"]
axisX.max: 10
BarSeries {
GroupedBarSeries {
barCategories: [ "2008", "2009", "2010", "2011", "2012" ]
BarSet { name: "Bob"; values: [2, 2, 3, 4, 5, 6] }
BarSet { name: "Susan"; values: [5, 1, 2, 4, 1, 7] }

View File

@ -90,12 +90,54 @@ DeclarativeTableModel *DeclarativeBarSeries::declarativeModel()
return qobject_cast<DeclarativeTableModel *>(model());
}
void DeclarativeBarSeries::setBarCategories(QStringList categories)
DeclarativeGroupedBarSeries::DeclarativeGroupedBarSeries(QDeclarativeItem *parent) :
QGroupedBarSeries(parent)
{
}
void DeclarativeGroupedBarSeries::classBegin()
{
}
void DeclarativeGroupedBarSeries::componentComplete()
{
foreach(QObject *child, children()) {
if (qobject_cast<QBarSet *>(child)) {
QBarSeries::append(qobject_cast<QBarSet *>(child));
}
}
}
QDeclarativeListProperty<DeclarativeBarSet> DeclarativeGroupedBarSeries::initialBarSets()
{
return QDeclarativeListProperty<DeclarativeBarSet>(this, 0, &DeclarativeGroupedBarSeries::appendInitialBarSets);
}
bool DeclarativeGroupedBarSeries::setDeclarativeModel(DeclarativeTableModel *model)
{
QAbstractItemModel *m = qobject_cast<QAbstractItemModel *>(model);
bool value(false);
if (m) {
setModel(m);
//setModelMapping(int categories, int bottomBoundary, int topBoundary, Qt::Orientation orientation = Qt::Vertical);
// setModelMapping(0, 1, 1, Qt::Vertical);
} else {
qWarning("DeclarativeGroupedBarSeries: Illegal model");
}
return value;
}
DeclarativeTableModel *DeclarativeGroupedBarSeries::declarativeModel()
{
return qobject_cast<DeclarativeTableModel *>(model());
}
void DeclarativeGroupedBarSeries::setBarCategories(QStringList categories)
{
setCategories(categories);
}
QStringList DeclarativeBarSeries::barCategories()
QStringList DeclarativeGroupedBarSeries::barCategories()
{
return categories();
}

View File

@ -48,7 +48,6 @@ class DeclarativeBarSeries : public QGroupedBarSeries, public QDeclarativeParser
Q_OBJECT
Q_INTERFACES(QDeclarativeParserStatus)
Q_PROPERTY(DeclarativeTableModel *model READ declarativeModel WRITE setDeclarativeModel)
Q_PROPERTY(QStringList barCategories READ barCategories WRITE setBarCategories)
Q_PROPERTY(QDeclarativeListProperty<DeclarativeBarSet> initialBarSets READ initialBarSets)
Q_CLASSINFO("DefaultProperty", "initialBarSets")
@ -63,8 +62,33 @@ public: // from QDeclarativeParserStatus
public:
bool setDeclarativeModel(DeclarativeTableModel *model);
DeclarativeTableModel *declarativeModel();
public Q_SLOTS:
static void appendInitialBarSets(QDeclarativeListProperty<DeclarativeBarSet> */*list*/, DeclarativeBarSet */*element*/) {}
};
class DeclarativeGroupedBarSeries : public QGroupedBarSeries, public QDeclarativeParserStatus
{
Q_OBJECT
Q_INTERFACES(QDeclarativeParserStatus)
Q_PROPERTY(DeclarativeTableModel *model READ declarativeModel WRITE setDeclarativeModel)
Q_PROPERTY(QStringList barCategories READ barCategories WRITE setBarCategories)
Q_PROPERTY(QDeclarativeListProperty<DeclarativeBarSet> initialBarSets READ initialBarSets)
Q_CLASSINFO("DefaultProperty", "initialBarSets")
public:
explicit DeclarativeGroupedBarSeries(QDeclarativeItem *parent = 0);
QDeclarativeListProperty<DeclarativeBarSet> initialBarSets();
public: // from QDeclarativeParserStatus
void classBegin();
void componentComplete();
public:
void setBarCategories(QStringList categories);
QStringList barCategories();
bool setDeclarativeModel(DeclarativeTableModel *model);
DeclarativeTableModel *declarativeModel();
public Q_SLOTS:
static void appendInitialBarSets(QDeclarativeListProperty<DeclarativeBarSet> */*list*/, DeclarativeBarSet */*element*/) {}

View File

@ -39,10 +39,8 @@ void DeclarativeLineSeries::appendDeclarativeChildren(QDeclarativeListProperty<Q
{
QXYSeries *series = qobject_cast<QXYSeries*>(list->object);
DeclarativeXyPoint *point = qobject_cast<DeclarativeXyPoint *>(element);
if (series && point) {
qDebug() << "DeclarativeScatterSeries::appendDeclarativeChildren:" << *point;
if (series && point)
series->append(*point);
}
}
#include "moc_declarativelineseries.cpp"

View File

@ -38,11 +38,10 @@ void DeclarativeSplineSeries::appendDeclarativeChildren(QDeclarativeListProperty
{
QXYSeries *series = qobject_cast<QXYSeries*>(list->object);
DeclarativeXyPoint *point = qobject_cast<DeclarativeXyPoint *>(element);
if (series && point) {
qDebug() << "DeclarativeScatterSeries::appendDeclarativeChildren:" << *point;
if (series && point)
series->append(*point);
}
}
#include "moc_declarativesplineseries.cpp"
QTCOMMERCIALCHART_END_NAMESPACE

View File

@ -47,23 +47,21 @@ public:
qmlRegisterType<DeclarativeChart>(uri, 1, 0, "ChartView");
qmlRegisterUncreatableType<QAxis>(uri, 1, 0, "Axis",
QLatin1String("Trying to create uncreatable: Axis."));
//qmlRegisterType<DeclarativeAxisCategory>(uri, 1, 0, "AxisCategory");
qmlRegisterType<DeclarativeXyPoint>(uri, 1, 0, "XyPoint");
qmlRegisterType<DeclarativeScatterSeries>(uri, 1, 0, "ScatterSeries");
qmlRegisterType<DeclarativeLineSeries>(uri, 1, 0, "LineSeries");
qmlRegisterType<DeclarativeSplineSeries>(uri, 1, 0, "SplineSeries");
qmlRegisterType<DeclarativeAreaSeries>(uri, 1, 0, "AreaSeries");
qmlRegisterType<DeclarativeBarSeries>(uri, 1, 0, "BarSeries");
qmlRegisterType<DeclarativeGroupedBarSeries>(uri, 1, 0, "GroupedBarSeries");
qmlRegisterType<DeclarativePieSeries>(uri, 1, 0, "PieSeries");
qmlRegisterType<QPieSlice>(uri, 1, 0, "PieSlice");
qmlRegisterType<DeclarativeTableModel>(uri, 1, 0, "ChartModel");
qmlRegisterType<DeclarativeTableModelElement>(uri, 1, 0, "ChartModelElement");
//qmlRegisterType<DeclarativePieMapping>(uri, 1, 0, "PieMapping");
//qmlRegisterType<QPieModelMapper>(uri, 1, 0, "PieModelMapper");
qmlRegisterUncreatableType<QPieModelMapper>(uri, 1, 0, "PieModelMapper",
QLatin1String("Trying to create uncreatable: PieModelMapper."));
qmlRegisterUncreatableType<QXYModelMapper>(uri, 1, 0, "XYModelMapper",
QLatin1String("Trying to create uncreatable: PieModelMapper."));
QLatin1String("Trying to create uncreatable: XYModelMapper."));
qmlRegisterType<DeclarativeBarSet>(uri, 1, 0, "BarSet");
}
};

View File

@ -353,9 +353,6 @@ QColor ChartTheme::colorAt(const QGradient &gradient, qreal pos)
{
Q_ASSERT(pos >= 0 && pos <= 1.0);
// another possibility:
// http://stackoverflow.com/questions/3306786/get-intermediate-color-from-a-gradient
QGradientStops stops = gradient.stops();
int count = stops.count();