settingsviewmodel.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #ifndef SETTINGSVIEWMODEL_H
  2. #define SETTINGSVIEWMODEL_H
  3. #include <QAbstractListModel>
  4. #include "models/basemodel.h"
  5. class SettingsViewModel : public QAbstractListModel
  6. {
  7. Q_OBJECT
  8. public:
  9. explicit SettingsViewModel(QObject *parent = nullptr);
  10. int rowCount(const QModelIndex &parent) const override;
  11. QVariant data(const QModelIndex &index, int role) const override;
  12. QHash<int, QByteArray> roleNames() const override;
  13. private:
  14. enum Roles {
  15. Title = Qt::UserRole + 1,
  16. PropertyName,
  17. ControlType,
  18. Model
  19. };
  20. struct SettingItem
  21. {
  22. QString title;
  23. QString propertyName;
  24. QString controlType;
  25. QString modelName;
  26. SettingItem(const QString &title, const QString &propertyName, const QString &controlType, const QString &modelName = {}) :
  27. title(title),
  28. propertyName(propertyName),
  29. controlType(controlType),
  30. modelName(modelName) {}
  31. };
  32. QVariant model(const QString &modelName) const;
  33. QList<SettingItem> m_items;
  34. QMap<QString, BaseModel *> m_models;
  35. };
  36. #endif // SETTINGSVIEWMODEL_H