cmodlistmodel_moc.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #pragma once
  2. #include "cmodlist.h"
  3. #include <QAbstractTableModel>
  4. #include <QSortFilterProxyModel>
  5. namespace ModFields
  6. {
  7. enum EModFields
  8. {
  9. NAME,
  10. STATUS_ENABLED,
  11. STATUS_UPDATE,
  12. TYPE,
  13. VERSION,
  14. SIZE,
  15. AUTHOR,
  16. COUNT
  17. };
  18. }
  19. namespace ModRoles
  20. {
  21. enum EModRoles
  22. {
  23. ValueRole = Qt::UserRole,
  24. ModNameRole
  25. };
  26. }
  27. class CModListModel : public QAbstractItemModel, public CModList
  28. {
  29. Q_OBJECT
  30. QVector<QString> modNameToID;
  31. // contains mapping mod -> numbered list of submods
  32. // mods that have no parent located under "" key (empty string)
  33. QMap<QString, QVector<QString>> modIndex;
  34. void endResetModel();
  35. QString modIndexToName(const QModelIndex & index) const;
  36. QVariant getTextAlign(int field) const;
  37. QVariant getValue(const CModEntry & mod, int field) const;
  38. QVariant getText(const CModEntry & mod, int field) const;
  39. QVariant getIcon(const CModEntry & mod, int field) const;
  40. public:
  41. explicit CModListModel(QObject *parent = 0);
  42. /// CModListContainer overrides
  43. void resetRepositories() override;
  44. void addRepository(QVariantMap data) override;
  45. void modChanged(QString modID) override;
  46. QVariant data(const QModelIndex &index, int role) const override;
  47. QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
  48. int rowCount(const QModelIndex &parent) const override;
  49. int columnCount(const QModelIndex &parent) const override;
  50. QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override;
  51. QModelIndex parent(const QModelIndex &child) const override;
  52. Qt::ItemFlags flags(const QModelIndex &index) const override;
  53. signals:
  54. public slots:
  55. };
  56. class CModFilterModel : public QSortFilterProxyModel
  57. {
  58. CModListModel * base;
  59. int filteredType;
  60. int filterMask;
  61. bool filterMatchesThis(const QModelIndex & source) const;
  62. bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const;
  63. public:
  64. void setTypeFilter(int filteredType, int filterMask);
  65. CModFilterModel(CModListModel * model, QObject *parent = 0);
  66. };