#ifndef SETTINGSVIEWMODEL_H #define SETTINGSVIEWMODEL_H #include class SettingsService; class SettingsViewModel : public QAbstractListModel { Q_OBJECT public: explicit SettingsViewModel(QObject *parent = nullptr); int rowCount(const QModelIndex &parent) const override; QVariant data(const QModelIndex &index, int role) const override; QHash roleNames() const override; bool setData(const QModelIndex &index, const QVariant &value, int role) override; Qt::ItemFlags flags(const QModelIndex &index) const override; private: enum Roles { Title = Qt::UserRole + 1, Subtitle, Value, ControlType, Model }; struct SettingItem { QString title; QString propertyName; QString controlType; QString modelName; SettingItem(const QString &title, const QString &propertyName, const QString &controlType, const QString &modelName = {}) : title(title), propertyName(propertyName), controlType(controlType), modelName(modelName) {} }; SettingsService *settings() const; QVariant model(const QString &modelName) const; QVariant subtitle(const QString &propertyName, const QString &modelName) const; QList m_items; }; #endif // SETTINGSVIEWMODEL_H