File indexing completed on 2025-03-23 03:42:18
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 QUICKCHARTS_EXPORT ModelSource : public ChartDataSource 0022 { 0023 Q_OBJECT 0024 QML_ELEMENT 0025 0026 public: 0027 explicit ModelSource(QObject *parent = nullptr); 0028 0029 Q_PROPERTY(int role READ role WRITE setRole NOTIFY roleChanged) 0030 int role() const; 0031 void setRole(int role); 0032 Q_SIGNAL void roleChanged(); 0033 0034 Q_PROPERTY(QString roleName READ roleName WRITE setRoleName NOTIFY roleNameChanged) 0035 QString roleName() const; 0036 void setRoleName(const QString &name); 0037 Q_SIGNAL void roleNameChanged(); 0038 0039 Q_PROPERTY(int column READ column WRITE setColumn NOTIFY columnChanged) 0040 int column() const; 0041 void setColumn(int column); 0042 Q_SIGNAL void columnChanged(); 0043 0044 Q_PROPERTY(QAbstractItemModel *model READ model WRITE setModel NOTIFY modelChanged) 0045 QAbstractItemModel *model() const; 0046 void setModel(QAbstractItemModel *model); 0047 Q_SIGNAL void modelChanged(); 0048 0049 Q_PROPERTY(bool indexColumns READ indexColumns WRITE setIndexColumns NOTIFY indexColumnsChanged) 0050 bool indexColumns() const; 0051 void setIndexColumns(bool index); 0052 Q_SIGNAL void indexColumnsChanged(); 0053 0054 int itemCount() const override; 0055 QVariant item(int index) const override; 0056 QVariant minimum() const override; 0057 QVariant maximum() const override; 0058 0059 private: 0060 Q_SLOT void onMinimumChanged(); 0061 Q_SLOT void onMaximumChanged(); 0062 0063 mutable int m_role = -1; 0064 QString m_roleName; 0065 int m_column = 0; 0066 bool m_indexColumns = false; 0067 QAbstractItemModel *m_model = nullptr; 0068 0069 QVariant m_minimum; 0070 QVariant m_maximum; 0071 }; 0072 0073 #endif // MODELSOURCE_H