Warning, file /frameworks/kquickcharts/src/datasource/ModelSource.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002  * This file is part of KQuickCharts
0003  * SPDX-FileCopyrightText: 2019 Arjen Hiemstra <ahiemstra@heimr.nl>
0004  *
0005  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0006  */
0007 
0008 #ifndef MODELSOURCE_H
0009 #define MODELSOURCE_H
0010 
0011 #include <QAbstractItemModel>
0012 #include <QPointer>
0013 
0014 #include "ChartDataSource.h"
0015 
0016 /**
0017  * A data source that reads data from a QAbstractItemModel.
0018  *
0019  *
0020  */
0021 class ModelSource : public ChartDataSource
0022 {
0023     Q_OBJECT
0024     Q_PROPERTY(int role READ role WRITE setRole NOTIFY roleChanged)
0025     Q_PROPERTY(QString roleName READ roleName WRITE setRoleName NOTIFY roleNameChanged)
0026     Q_PROPERTY(int column READ column WRITE setColumn NOTIFY columnChanged)
0027     Q_PROPERTY(QAbstractItemModel *model READ model WRITE setModel NOTIFY modelChanged)
0028     Q_PROPERTY(bool indexColumns READ indexColumns WRITE setIndexColumns NOTIFY indexColumnsChanged)
0029 
0030 public:
0031     explicit ModelSource(QObject *parent = nullptr);
0032 
0033     int role() const;
0034     void setRole(int role);
0035     Q_SIGNAL void roleChanged();
0036 
0037     QString roleName() const;
0038     void setRoleName(const QString &name);
0039     Q_SIGNAL void roleNameChanged();
0040 
0041     int column() const;
0042     void setColumn(int column);
0043     Q_SIGNAL void columnChanged();
0044 
0045     QAbstractItemModel *model() const;
0046     void setModel(QAbstractItemModel *model);
0047     Q_SIGNAL void modelChanged();
0048 
0049     bool indexColumns() const;
0050     void setIndexColumns(bool index);
0051     Q_SIGNAL void indexColumnsChanged();
0052 
0053     virtual int itemCount() const override;
0054     virtual QVariant item(int index) const override;
0055     virtual QVariant minimum() const override;
0056     virtual QVariant maximum() const override;
0057 
0058 private:
0059     Q_SLOT void onMinimumChanged();
0060     Q_SLOT void onMaximumChanged();
0061 
0062     mutable int m_role = -1;
0063     QString m_roleName;
0064     int m_column = 0;
0065     bool m_indexColumns = false;
0066     QAbstractItemModel *m_model = nullptr;
0067 
0068     QVariant m_minimum;
0069     QVariant m_maximum;
0070 };
0071 
0072 #endif // MODELSOURCE_H