Files
beerlog/viewmodels/settingsviewmodel.h

52 lines
1.4 KiB
C++

#ifndef SETTINGSVIEWMODEL_H
#define SETTINGSVIEWMODEL_H
#include <QAbstractListModel>
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<int, QByteArray> 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<SettingItem> m_items;
};
#endif // SETTINGSVIEWMODEL_H