settingsviewmodel.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #include "settingsviewmodel.h"
  2. SettingsViewModel::SettingsViewModel(QObject *parent)
  3. : QAbstractListModel{parent}
  4. {
  5. m_items << SettingItem { tr("BeerLog service address"), "serverAddress", "text" }
  6. << SettingItem { tr("Selected user id"), "selectedUserId", "choice", "users" }
  7. << SettingItem { tr("Selected store"), "selectedStoreId", "choice", "stores" };
  8. m_models["users"] = new BaseModel("users", this);
  9. m_models["stores"] = new BaseModel("stores", this);
  10. }
  11. int SettingsViewModel::rowCount(const QModelIndex &) const
  12. {
  13. return m_items.count();
  14. }
  15. QVariant SettingsViewModel::data(const QModelIndex &index, int role) const
  16. {
  17. if (!index.isValid()) {
  18. return {};
  19. }
  20. SettingItem item = m_items.at(index.row());
  21. switch (role) {
  22. case Roles::Title: return item.title;
  23. case Roles::PropertyName: return item.propertyName;
  24. case Roles::ControlType: return item.controlType;
  25. case Roles::Model: return model(item.modelName);
  26. default:
  27. break;
  28. }
  29. return {};
  30. }
  31. QHash<int, QByteArray> SettingsViewModel::roleNames() const
  32. {
  33. return QHash<int, QByteArray> {
  34. { Roles::Title, "title" },
  35. { Roles::PropertyName, "name" },
  36. { Roles::ControlType, "control" },
  37. { Roles::Model, "choiceModel" }
  38. };
  39. }
  40. QVariant SettingsViewModel::model(const QString &modelName) const
  41. {
  42. if (!m_models.contains(modelName)) {
  43. return {};
  44. }
  45. return m_models[modelName]->items();
  46. }