File indexing completed on 2024-05-19 05:41:19
0001 #ifndef CUSTOMRULEMODEL_H 0002 #define CUSTOMRULEMODEL_H 0003 0004 #include "convertoroperator.h" 0005 #include "rwidgets_global.h" 0006 #include "unit.h" 0007 #include "unitmodel.h" 0008 #include <QAbstractTableModel> 0009 #include <vector> 0010 namespace GMTOOL 0011 { 0012 class RWIDGET_EXPORT CustomRuleModel : public CategoryModel 0013 { 0014 Q_OBJECT 0015 0016 public: 0017 explicit CustomRuleModel(QObject* parent= nullptr); 0018 0019 // Header: 0020 QVariant headerData(int section, Qt::Orientation orientation, int role= Qt::DisplayRole) const override; 0021 0022 bool setHeaderData(int section, Qt::Orientation orientation, const QVariant& value, 0023 int role= Qt::EditRole) override; 0024 0025 // Basic functionality: 0026 // int rowCount(const QModelIndex &parent = QModelIndex()) const override; 0027 int columnCount(const QModelIndex& parent= QModelIndex()) const override; 0028 0029 QVariant data(const QModelIndex& index, int role= Qt::DisplayRole) const override; 0030 0031 // Editable: 0032 bool setData(const QModelIndex& index, const QVariant& value, int role= Qt::EditRole) override; 0033 0034 Qt::ItemFlags flags(const QModelIndex& index) const override; 0035 0036 /* QModelIndex mapToSource(const QModelIndex &proxyIndex) const; 0037 QModelIndex mapFromSource(const QModelIndex &sourceIndex) const;*/ 0038 QModelIndex parent(const QModelIndex& child) const override; 0039 QModelIndex index(int row, int column, const QModelIndex& parent) const override; 0040 0041 // Add data: 0042 bool insertUnit(); 0043 0044 // Remove data: 0045 bool removeUnit(const QModelIndex& index); 0046 0047 qreal convert(QPair<const Unit*, const Unit*> pair, qreal value) const; 0048 0049 QPair<const Unit*, const Unit*> makePair(const QModelIndex& index) const; 0050 0051 CategoryModel* units() const; 0052 void setUnits(CategoryModel* units); 0053 0054 void setCurrentCategoryId(const QString& cat, int categoryId); 0055 0056 QHash<QPair<const Unit*, const Unit*>, ConvertorOperator*>* convertionRules() const; 0057 void setConvertionRules(QHash<QPair<const Unit*, const Unit*>, ConvertorOperator*>* convertionRules); 0058 0059 QModelIndex buddy(const QModelIndex& index) const override; 0060 0061 private: 0062 // CategoryModel* m_units = nullptr; 0063 QHash<QPair<const Unit*, const Unit*>, ConvertorOperator*>* m_convertionRules; 0064 int m_currentCatId= 0; 0065 }; 0066 0067 } // namespace GMTOOL 0068 #endif // CUSTOMRULEMODEL_H