##// END OF EJS Templates
Cleaning up ChartModel impl before moving it into a demo app
Cleaning up ChartModel impl before moving it into a demo app

File last commit:

r1190:f9f8ff23359b
r1190:f9f8ff23359b
Show More
declarativemodel.cpp
132 lines | 3.7 KiB | text/x-c | CppLexer
/****************************************************************************
**
** 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 "declarativemodel.h"
#include <qdeclarativelist.h>
#include <QDebug>
QTCOMMERCIALCHART_BEGIN_NAMESPACE
////////////// Table model row ///////////////////
DeclarativeTableModelElement::DeclarativeTableModelElement(QObject *parent)
: QObject(parent)
{
}
QVariantList DeclarativeTableModelElement::values()
{
return m_values;
}
void DeclarativeTableModelElement::setValues(QVariantList values)
{
m_values = values;
}
////////////// Table model ///////////////////
DeclarativeTableModel::DeclarativeTableModel(QObject *parent) :
ChartTableModel(parent)
{
}
void DeclarativeTableModel::classBegin()
{
}
void DeclarativeTableModel::componentComplete()
{
foreach (QObject *child, children()) {
if (qobject_cast<DeclarativeTableModelElement *>(child)) {
append(qobject_cast<DeclarativeTableModelElement *>(child)->values());
}
}
}
QDeclarativeListProperty<QObject> DeclarativeTableModel::modelChildren()
{
return QDeclarativeListProperty<QObject>(this, 0, &DeclarativeTableModel::appendModelChild);
}
void DeclarativeTableModel::appendModelChild(QDeclarativeListProperty<QObject> *list,
QObject *child)
{
// childs are added in componentComplete instead
Q_UNUSED(list)
Q_UNUSED(child)
}
void DeclarativeTableModel::append(QVariantList values)
{
// qDebug() << "DeclarativeTableModel::append:" << values;
while (columnCount() < values.count())
insertColumn(columnCount());
insertRow(rowCount());
QModelIndex beginIndex = QModelIndex();
QModelIndex endIndex = QModelIndex();
for (int i(0); i < values.count(); i++) {
QModelIndex modelIndex = createIndex(rowCount() - 1, i);
if (i == 0)
beginIndex = modelIndex;
if (i == (values.count() - 1))
endIndex = modelIndex;
setData(modelIndex, values.at(i));
}
dataChanged(beginIndex, endIndex);
}
void DeclarativeTableModel::appendPoint(QXYModelMapper *mapper, DeclarativeXyPoint *point)
{
// qDebug() << "DeclarativeTableModel::appendPoint:" << point;
QVariantList values;
values.insert(mapper->mapX(), point->x());
values.insert(mapper->mapY(), point->y());
append(values);
}
////////////// Bar model ///////////////////////
DeclarativeBarModel::DeclarativeBarModel(QObject *parent) :
DeclarativeTableModel(parent)
{
}
void DeclarativeBarModel::append(QBarSet* barSet)
{
insertColumn(columnCount());
for (int i(0); i < barSet->count(); i++) {
if (rowCount() < (i + 1))
insertRow(rowCount());
setData(createIndex(i, columnCount() - 1), barSet->at(i));
// insertRow(rowCount());
// setData(createIndex(rowCount() - 1, 0), );
// setData(createIndex(rowCount() - 1, 1), barSet->at(i));
}
// TODO: setModelMapping(0, 1, columnCount(), Qt::Vertical);
}
#include "moc_declarativemodel.cpp"
QTCOMMERCIALCHART_END_NAMESPACE