settingsviewmodel.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #ifndef SETTINGSVIEWMODEL_H
  2. #define SETTINGSVIEWMODEL_H
  3. #include <QAbstractListModel>
  4. class SettingsService;
  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. bool setData(const QModelIndex &index, const QVariant &value, int role) override;
  14. Qt::ItemFlags flags(const QModelIndex &index) const override;
  15. private:
  16. enum Roles {
  17. Title = Qt::UserRole + 1,
  18. Subtitle,
  19. Value,
  20. ControlType,
  21. Model
  22. };
  23. struct SettingItem
  24. {
  25. QString title;
  26. QString propertyName;
  27. QString controlType;
  28. QString modelName;
  29. SettingItem(const QString &title, const QString &propertyName, const QString &controlType, const QString &modelName = {}) :
  30. title(title),
  31. propertyName(propertyName),
  32. controlType(controlType),
  33. modelName(modelName) {}
  34. };
  35. SettingsService *settings() const;
  36. QVariant model(const QString &modelName) const;
  37. QVariant subtitle(const QString &propertyName, const QString &modelName) const;
  38. QList<SettingItem> m_items;
  39. };
  40. #endif // SETTINGSVIEWMODEL_H