diff --git a/cockatrice/src/setsmodel.cpp b/cockatrice/src/setsmodel.cpp index 562f67d9..8cdd4a96 100644 --- a/cockatrice/src/setsmodel.cpp +++ b/cockatrice/src/setsmodel.cpp @@ -30,10 +30,21 @@ QVariant SetsModel::data(const QModelIndex &index, int role) const CardSet *set = sets[index.row()]; - if ( role == Qt::CheckStateRole && index.column() == EnabledCol ) - return static_cast< int >( enabledSets.contains(set) ? Qt::Checked : Qt::Unchecked ); + if (index.column() == EnabledCol) + { + switch(role) + { + case SortRole: + return enabledSets.contains(set) ? "1" : "0"; + case Qt::CheckStateRole: + return static_cast< int >( enabledSets.contains(set) ? Qt::Checked : Qt::Unchecked ); + case Qt::DisplayRole: + default: + return QVariant(); + } + } - if (role != Qt::DisplayRole) + if (role != Qt::DisplayRole && role != SortRole) return QVariant(); switch (index.column()) { @@ -178,7 +189,7 @@ void SetsModel::sort(int column, Qt::SortOrder order) int row; for(row = 0; row < numRows; ++row) - setMap.insertMulti(index(row, column).data().toString(), sets.at(row)); + setMap.insertMulti(index(row, column).data(SetsModel::SortRole).toString(), sets.at(row)); QList tmp = setMap.values(); sets.clear(); diff --git a/cockatrice/src/setsmodel.h b/cockatrice/src/setsmodel.h index 8bac1513..b33a67d4 100644 --- a/cockatrice/src/setsmodel.h +++ b/cockatrice/src/setsmodel.h @@ -27,6 +27,7 @@ private: QSet enabledSets; public: enum SetsColumns { SortKeyCol, IsKnownCol, EnabledCol, LongNameCol, ShortNameCol, SetTypeCol, ReleaseDateCol }; + enum Role { SortRole=Qt::UserRole }; SetsModel(CardDatabase *_db, QObject *parent = 0); ~SetsModel();