diff --git a/cockatrice/src/decklistmodel.cpp b/cockatrice/src/decklistmodel.cpp index 0929c5e1..00d92fae 100644 --- a/cockatrice/src/decklistmodel.cpp +++ b/cockatrice/src/decklistmodel.cpp @@ -315,7 +315,7 @@ void DeckListModel::sortHelper(InnerDecklistNode *node, Qt::SortOrder order) } } changePersistentIndexList(from, to); - + // Recursion for (int i = node->size() - 1; i >= 0; --i) { InnerDecklistNode *subNode = dynamic_cast(node->at(i)); @@ -330,7 +330,18 @@ void DeckListModel::sort(int column, Qt::SortOrder order) lastKnownOrder = order; emit layoutAboutToBeChanged(); - root->setSortMethod(column); + DeckSortMethod sortMethod; + switch(column) { + case 0: + sortMethod = ByNumber; + break; + case 1: + sortMethod = ByName; + break; + case 2: + sortMethod = ByPrice; + } + root->setSortMethod(sortMethod); sortHelper(root, order); emit layoutChanged(); } diff --git a/common/decklist.cpp b/common/decklist.cpp index 11119945..8ba9378e 100644 --- a/common/decklist.cpp +++ b/common/decklist.cpp @@ -104,7 +104,7 @@ QString InnerDecklistNode::visibleNameFromName(const QString &_name) return _name; } -void InnerDecklistNode::setSortMethod(int method) +void InnerDecklistNode::setSortMethod(DeckSortMethod method) { sortMethod = method; for (int i = 0; i < size(); i++) @@ -218,11 +218,11 @@ bool InnerDecklistNode::comparePrice(AbstractDecklistNode *other) const bool AbstractDecklistCardNode::compare(AbstractDecklistNode *other) const { switch (sortMethod) { - case 0: + case ByNumber: return compareNumber(other); - case 1: + case ByName: return compareName(other); - case 2: + case ByPrice: return compareTotalPrice(other); } } diff --git a/common/decklist.h b/common/decklist.h index 1a74a7fb..94df407a 100644 --- a/common/decklist.h +++ b/common/decklist.h @@ -29,26 +29,28 @@ public: SideboardPlan(const QString &_name = QString(), const QList &_moveList = QList()); bool readElement(QXmlStreamReader *xml); void write(QXmlStreamWriter *xml); - + QString getName() const { return name; } const QList &getMoveList() const { return moveList; } void setMoveList(const QList &_moveList); }; +enum DeckSortMethod { ByNumber, ByName, ByPrice }; + class AbstractDecklistNode { protected: InnerDecklistNode *parent; - int sortMethod; + DeckSortMethod sortMethod; public: AbstractDecklistNode(InnerDecklistNode *_parent = 0); virtual ~AbstractDecklistNode() { } - virtual void setSortMethod(int method) { sortMethod = method; } + virtual void setSortMethod(DeckSortMethod method) { sortMethod = method; } virtual QString getName() const = 0; InnerDecklistNode *getParent() const { return parent; } int depth() const; virtual int height() const = 0; virtual bool compare(AbstractDecklistNode *other) const = 0; - + virtual bool readElement(QXmlStreamReader *xml) = 0; virtual void writeElement(QXmlStreamWriter *xml) = 0; }; @@ -61,7 +63,7 @@ public: InnerDecklistNode(const QString &_name = QString(), InnerDecklistNode *_parent = 0) : AbstractDecklistNode(_parent), name(_name) { } InnerDecklistNode(InnerDecklistNode *other, InnerDecklistNode *_parent = 0); virtual ~InnerDecklistNode(); - void setSortMethod(int method); + void setSortMethod(DeckSortMethod method); QString getName() const { return name; } void setName(const QString &_name) { name = _name; } static QString visibleNameFromName(const QString &_name); @@ -76,7 +78,7 @@ public: bool compareName(AbstractDecklistNode *other) const; bool comparePrice(AbstractDecklistNode *other) const; QVector > sort(Qt::SortOrder order = Qt::AscendingOrder); - + bool readElement(QXmlStreamReader *xml); void writeElement(QXmlStreamWriter *xml); }; @@ -96,7 +98,7 @@ public: bool compareNumber(AbstractDecklistNode *other) const; bool compareName(AbstractDecklistNode *other) const; bool compareTotalPrice(AbstractDecklistNode *other) const; - + bool readElement(QXmlStreamReader *xml); void writeElement(QXmlStreamWriter *xml); };