12#include <KDChartWidget_p.h>
27#include <KDABLibFakes>
33Widget::Private::Private(
Widget *qq)
38 , m_cartPlane(&m_chart)
39 , m_polPlane(&m_chart)
46 layout.addWidget(&m_chart);
49Widget::Private::~Private()
67 , _d(new Private(this))
89 if (!checkDatasetWidth(1))
94 justifyModelSize(data.
size(), column + 1);
96 for (
int i = 0;
i < data.
size(); ++
i) {
106 if (!checkDatasetWidth(2))
111 justifyModelSize(data.size(), (column + 1) * 2);
113 for (
int i = 0;
i < data.size(); ++
i) {
117 index = model.
index(
i, column * 2 + 1);
127 if (!checkDatasetWidth(1))
132 justifyModelSize(row + 1, column + 1);
140 if (!checkDatasetWidth(2))
145 justifyModelSize(row + 1, (column + 1) * 2);
150 index = model.
index(row, column * 2 + 1);
160 d->usedDatasetWidth = 0;
168 d->m_chart.setGlobalLeading(left, top, right, bottom);
176 d->m_chart.setGlobalLeadingLeft(leading);
184 return d->m_chart.globalLeadingLeft();
192 d->m_chart.setGlobalLeadingTop(leading);
200 return d->m_chart.globalLeadingTop();
208 d->m_chart.setGlobalLeadingRight(leading);
216 return d->m_chart.globalLeadingRight();
224 d->m_chart.setGlobalLeadingBottom(leading);
232 return d->m_chart.globalLeadingBottom();
240 return d->m_chart.headerFooter();
248 return d->m_chart.headerFooters();
271 d->m_chart.addHeaderFooter(header);
277 d->m_chart.replaceHeaderFooter(header,
oldHeader);
282 d->m_chart.takeHeaderFooter(header);
290 return d->m_chart.legend();
298 return d->m_chart.legends();
336 qDebug() <<
"diagram(): coordinatePlane() was NULL";
368 return d->m_chart.coordinatePlane();
392 d->m_chart.takeCoordinatePlane(&
d->m_polPlane);
393 d->m_chart.addCoordinatePlane(&
d->m_cartPlane);
395 d->m_chart.replaceCoordinatePlane(&
d->m_cartPlane);
399 d->m_chart.takeCoordinatePlane(&
d->m_cartPlane);
400 d->m_chart.addCoordinatePlane(&
d->m_polPlane);
402 d->m_chart.replaceCoordinatePlane(&
d->m_polPlane);
428 if (
diag !=
nullptr) {
446 diag->setModel(&
d->m_model);
457 d->m_chart.resize(
size());
461template<
class DiagramType,
class Subtype>
464 if (
auto *dia = qobject_cast<DiagramType *>(_dia)) {
494 Q_ASSERT_X(
false,
"Widget::setSubType",
"Sub-type not supported!");
537#define TEST_SUB_TYPE(DIAGRAM, INTERNALSUBTYPE, SUBTYPE) \
539 if (DIAGRAM && DIAGRAM->type() == INTERNALSUBTYPE) \
570 "Widget::subType",
"Chart type not supported!");
579bool Widget::checkDatasetWidth(
int width)
582 d->usedDatasetWidth =
width;
585 qDebug() <<
"The current diagram type doesn't support this data dimension.";
599void Widget::justifyModelSize(
int rows,
int columns)
607 qDebug() <<
"justifyModelSize: could not increase model size.";
610 qDebug() <<
"justifyModelSize: could not increase model size.";
#define KDAB_SET_OBJECT_NAME(x)
Base class common for all coordinate planes, CartesianCoordinatePlane, PolarCoordinatePlane,...
virtual void replaceDiagram(AbstractDiagram *diagram, AbstractDiagram *oldDiagram=nullptr)
AbstractDiagram * diagram()
AbstractDiagram defines the interface for diagram classes.
BarDiagram defines a common bar diagram.
Legend defines the interface for the legend drawing class.
void setDiagram(KDChart::AbstractDiagram *newDiagram)
A convenience method doing the same as replaceDiagram( newDiagram, 0 );.
void setPosition(Position position)
Specify the position of a non-floating legend.
LineDiagram defines a common line diagram.
PieDiagram defines a common pie diagram.
Plotter defines a diagram type plotting two-dimensional data.
PolarDiagram defines a common polar diagram.
Defines a position, using compass terminology.
RingDiagram defines a common ring diagram.
virtual int columnCount(const QModelIndex &parent) const const=0
virtual bool insertColumns(int column, int count, const QModelIndex &parent)
virtual bool insertRows(int row, int count, const QModelIndex &parent)
virtual int rowCount(const QModelIndex &parent) const const=0
T qobject_cast(QObject *object)
virtual QModelIndex index(int row, int column, const QModelIndex &parent) const const override
virtual bool setData(const QModelIndex &index, const QVariant &value, int role) override
virtual bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role) override
bool isEmpty() const const