##// END OF EJS Templates
Enabled legend by default
Enabled legend by default

File last commit:

r1186:0385556f52b3
r1188:71182590e3fe
Show More
declarativepieseries.cpp
96 lines | 2.8 KiB | text/x-c | CppLexer
/ qmlplugin / declarativepieseries.cpp
/****************************************************************************
**
** 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$
**
****************************************************************************/
#include "declarativepieseries.h"
#include "declarativechart.h"
#include "qchart.h"
#include <qdeclarativelist.h>
#include "qpiemodelmapper.h"
QTCOMMERCIALCHART_BEGIN_NAMESPACE
DeclarativePieSeries::DeclarativePieSeries(QObject *parent) :
QPieSeries(parent)
{
// TODO: set default model on init?
setModel(new DeclarativeTableModel());
// Set default mapper parameters to allow easy to use PieSeries api
QPieModelMapper *mapper = new QPieModelMapper();
mapper->setMapLabels(0);
mapper->setMapValues(1);
mapper->setOrientation(Qt::Vertical);
mapper->setFirst(0);
mapper->setCount(-1);
setModelMapper(mapper);
}
void DeclarativePieSeries::classBegin()
{
}
void DeclarativePieSeries::componentComplete()
{
foreach(QObject *child, children()) {
qDebug() << "pie child: " << child;
if (qobject_cast<QPieSlice *>(child)) {
QPieSlice *slice = qobject_cast<QPieSlice *>(child);
QVariantList values;
values.insert(modelMapper()->mapLabels(), slice->label());
values.insert(modelMapper()->mapValues(), slice->value());
DeclarativeTableModel *m = qobject_cast<DeclarativeTableModel *>(model());
Q_ASSERT(m);
m->append(values);
}
}
}
QDeclarativeListProperty<QPieSlice> DeclarativePieSeries::initialSlices()
{
return QDeclarativeListProperty<QPieSlice>(this, 0, &DeclarativePieSeries::appendInitialSlices);
}
QPieSlice *DeclarativePieSeries::slice(int index)
{
QList<QPieSlice*> sliceList = slices();
if (index < sliceList.count())
return sliceList[index];
return 0;
}
void DeclarativePieSeries::setPieModel(DeclarativeTableModel *model)
{
QAbstractItemModel *m = qobject_cast<QAbstractItemModel *>(model);
if (m) {
QPieSeries::setModel(m);
} else {
qWarning("DeclarativePieSeries: Illegal model");
}
}
DeclarativeTableModel *DeclarativePieSeries::pieModel()
{
return qobject_cast<DeclarativeTableModel *>(model());
}
#include "moc_declarativepieseries.cpp"
QTCOMMERCIALCHART_END_NAMESPACE