#pragma once #include #include #include class FtbFilterModel : public QSortFilterProxyModel { public: FtbFilterModel(QObject* parent = Q_NULLPTR); enum Sorting { ByName, ByGameVersion }; const QMap getAvailableSortings(); Sorting getCurrentSorting(); void setSorting(Sorting sorting); protected: bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; bool lessThan(const QModelIndex &left, const QModelIndex &right) const override; private: QMap sortings; Sorting currentSorting; }; class FtbListModel : public QAbstractListModel { Q_OBJECT private: FtbModpackList modpacks; public: FtbListModel(QObject *parent); int rowCount(const QModelIndex &parent) const override; int columnCount(const QModelIndex &parent) const override; QVariant data(const QModelIndex &index, int role) const override; void fill(FtbModpackList modpacks); FtbModpack at(int row); };