Refactor setCode to cardUUID and introduce new cardSetShortName field.

This commit is contained in:
Lukas Brübach 2024-11-18 23:47:36 +01:00
parent 89daa0ec4a
commit ff3e6796cf
5 changed files with 85 additions and 35 deletions

View file

@ -726,7 +726,7 @@ void TabDeckEditor::updateCardInfoRight(const QModelIndex &current, const QModel
return; return;
if (!current.model()->hasChildren(current.sibling(current.row(), 0))) { if (!current.model()->hasChildren(current.sibling(current.row(), 0))) {
cardInfo->setCard(current.sibling(current.row(), 1).data().toString(), cardInfo->setCard(current.sibling(current.row(), 1).data().toString(),
current.sibling(current.row(), 2).data().toString()); current.sibling(current.row(), 4).data().toString());
} }
} }

View file

@ -79,7 +79,7 @@ int DeckListModel::rowCount(const QModelIndex &parent) const
int DeckListModel::columnCount(const QModelIndex & /*parent*/) const int DeckListModel::columnCount(const QModelIndex & /*parent*/) const
{ {
return 4; return 5;
} }
QVariant DeckListModel::data(const QModelIndex &index, int role) const QVariant DeckListModel::data(const QModelIndex &index, int role) const
@ -114,11 +114,14 @@ QVariant DeckListModel::data(const QModelIndex &index, int role) const
return node->getName(); return node->getName();
} }
case 2: { case 2: {
return node->getCardUuid(); return node->getCardSetShortName();
} }
case 3: { case 3: {
return node->getCardCollectorNumber(); return node->getCardCollectorNumber();
} }
case 4: {
return node->getCardUuid();
}
default: default:
return {}; return {};
} }
@ -143,9 +146,11 @@ QVariant DeckListModel::data(const QModelIndex &index, int role) const
case 1: case 1:
return card->getName(); return card->getName();
case 2: case 2:
return card->getCardUuid(); return card->getCardSetShortName();
case 3: case 3:
return card->getCardCollectorNumber(); return card->getCardCollectorNumber();
case 4:
return card->getCardUuid();
default: default:
return {}; return {};
} }
@ -182,6 +187,8 @@ QVariant DeckListModel::headerData(const int section, const Qt::Orientation orie
return tr("Set"); return tr("Set");
case 3: case 3:
return tr("Number"); return tr("Number");
case 4:
return tr("UUID");
default: default:
return {}; return {};
} }
@ -244,11 +251,14 @@ bool DeckListModel::setData(const QModelIndex &index, const QVariant &value, con
node->setName(value.toString()); node->setName(value.toString());
break; break;
case 2: case 2:
node->setCardSetCode(value.toString()); node->setCardSetShortName(value.toString());
break; break;
case 3: case 3:
node->setCardCollectorNumber(value.toString()); node->setCardCollectorNumber(value.toString());
break; break;
case 4:
node->setCardUUID(value.toString());
break;
default: default:
return false; return false;
} }
@ -375,15 +385,17 @@ QModelIndex DeckListModel::addCard(const QString &cardName,
auto *cardNode = dynamic_cast<DecklistModelCardNode *>( auto *cardNode = dynamic_cast<DecklistModelCardNode *>(
cardTypeNode->findCardChildByNameAndUUID(cardName, cardInfoSet.getProperty("uuid"))); cardTypeNode->findCardChildByNameAndUUID(cardName, cardInfoSet.getProperty("uuid")));
if (!cardNode) { if (!cardNode) {
auto *decklistCard = deckList->addCard(cardInfo->getName(), zoneName, cardInfoSet.getProperty("uuid"), auto *decklistCard =
cardInfoSet.getProperty("num")); deckList->addCard(cardInfo->getName(), zoneName, cardInfoSet.getPtr()->getCorrectedShortName(),
cardInfoSet.getProperty("num"), cardInfoSet.getProperty("uuid"));
beginInsertRows(parentIndex, static_cast<int>(cardTypeNode->size()), static_cast<int>(cardTypeNode->size())); beginInsertRows(parentIndex, static_cast<int>(cardTypeNode->size()), static_cast<int>(cardTypeNode->size()));
cardNode = new DecklistModelCardNode(decklistCard, cardTypeNode); cardNode = new DecklistModelCardNode(decklistCard, cardTypeNode);
endInsertRows(); endInsertRows();
} else { } else {
cardNode->setNumber(cardNode->getNumber() + 1); cardNode->setNumber(cardNode->getNumber() + 1);
cardNode->setCardSetCode(cardInfoSet.getProperty("uuid")); cardNode->setCardSetShortName(cardInfoSet.getPtr()->getCorrectedShortName());
cardNode->setCardCollectorNumber(cardInfoSet.getProperty("num")); cardNode->setCardCollectorNumber(cardInfoSet.getProperty("num"));
cardNode->setCardUUID(cardInfoSet.getProperty("uuid"));
deckList->updateDeckHash(); deckList->updateDeckHash();
} }
sort(lastKnownColumn, lastKnownOrder); sort(lastKnownColumn, lastKnownOrder);

View file

@ -42,9 +42,17 @@ public:
{ {
return dataNode->getCardUuid(); return dataNode->getCardUuid();
} }
void setCardSetCode(const QString &_cardSetName) override void setCardUUID(const QString &_cardUUID) override
{ {
dataNode->setCardSetCode(_cardSetName); dataNode->setCardUUID(_cardUUID);
}
QString getCardSetShortName() const override
{
return dataNode->getCardSetShortName();
}
void setCardSetShortName(const QString &_cardSetShortName) override
{
dataNode->setCardSetShortName(_cardSetShortName);
} }
QString getCardCollectorNumber() const override QString getCardCollectorNumber() const override
{ {

View file

@ -88,8 +88,8 @@ int AbstractDecklistNode::depth() const
} }
InnerDecklistNode::InnerDecklistNode(InnerDecklistNode *other, InnerDecklistNode *_parent) InnerDecklistNode::InnerDecklistNode(InnerDecklistNode *other, InnerDecklistNode *_parent)
: AbstractDecklistNode(_parent), name(other->getName()), cardSetCode(other->getCardUuid()), : AbstractDecklistNode(_parent), name(other->getName()), cardSetShortName(other->getCardSetShortName()),
cardCollectorNumber(other->getCardCollectorNumber()) cardCollectorNumber(other->getCardCollectorNumber()), cardUUID(other->getCardUuid())
{ {
for (int i = 0; i < other->size(); ++i) { for (int i = 0; i < other->size(); ++i) {
auto *inner = dynamic_cast<InnerDecklistNode *>(other->at(i)); auto *inner = dynamic_cast<InnerDecklistNode *>(other->at(i));
@ -141,7 +141,8 @@ void InnerDecklistNode::clearTree()
DecklistCardNode::DecklistCardNode(DecklistCardNode *other, InnerDecklistNode *_parent) DecklistCardNode::DecklistCardNode(DecklistCardNode *other, InnerDecklistNode *_parent)
: AbstractDecklistCardNode(_parent), name(other->getName()), number(other->getNumber()), : AbstractDecklistCardNode(_parent), name(other->getName()), number(other->getNumber()),
cardSetName(other->getCardUuid()), cardSetNumber(other->getCardCollectorNumber()) cardSetShortName(other->getCardSetShortName()), cardSetNumber(other->getCardCollectorNumber()),
cardUUID(other->getCardUuid())
{ {
} }
@ -280,10 +281,10 @@ bool InnerDecklistNode::readElement(QXmlStreamReader *xml)
InnerDecklistNode *newZone = new InnerDecklistNode(xml->attributes().value("name").toString(), this); InnerDecklistNode *newZone = new InnerDecklistNode(xml->attributes().value("name").toString(), this);
newZone->readElement(xml); newZone->readElement(xml);
} else if (childName == "card") { } else if (childName == "card") {
DecklistCardNode *newCard = new DecklistCardNode(xml->attributes().value("name").toString(), DecklistCardNode *newCard = new DecklistCardNode(
xml->attributes().value("number").toString().toInt(), xml->attributes().value("name").toString(), xml->attributes().value("number").toString().toInt(),
this, xml->attributes().value("uuid").toString(), this, xml->attributes().value("setShortName").toString(),
xml->attributes().value("collectorNumber").toString()); xml->attributes().value("collectorNumber").toString(), xml->attributes().value("uuid").toString());
newCard->readElement(xml); newCard->readElement(xml);
} }
} else if (xml->isEndElement() && (childName == "zone")) } else if (xml->isEndElement() && (childName == "zone"))
@ -317,11 +318,14 @@ void AbstractDecklistCardNode::writeElement(QXmlStreamWriter *xml)
xml->writeAttribute("number", QString::number(getNumber())); xml->writeAttribute("number", QString::number(getNumber()));
xml->writeAttribute("name", getName()); xml->writeAttribute("name", getName());
if (getCardSetShortName() != "") {
xml->writeAttribute("setShortName", getCardSetShortName());
}
if (getCardCollectorNumber() != "") {
xml->writeAttribute("collectorNumber", getCardCollectorNumber());
}
if (getCardUuid() != "") { if (getCardUuid() != "") {
xml->writeAttribute("uuid", getCardUuid()); xml->writeAttribute("uuid", getCardUuid());
if (getCardCollectorNumber() != "") {
xml->writeAttribute("collectorNumber", getCardCollectorNumber());
}
} }
} }
@ -763,14 +767,15 @@ int DeckList::getSideboardSize() const
DecklistCardNode *DeckList::addCard(const QString &cardName, DecklistCardNode *DeckList::addCard(const QString &cardName,
const QString &zoneName, const QString &zoneName,
const QString &cardSetName, const QString &cardSetName,
const QString &cardSetCollectorNumber) const QString &cardSetCollectorNumber,
const QString &cardUUID)
{ {
auto *zoneNode = dynamic_cast<InnerDecklistNode *>(root->findChild(zoneName)); auto *zoneNode = dynamic_cast<InnerDecklistNode *>(root->findChild(zoneName));
if (zoneNode == nullptr) { if (zoneNode == nullptr) {
zoneNode = new InnerDecklistNode(zoneName, root); zoneNode = new InnerDecklistNode(zoneName, root);
} }
auto *node = new DecklistCardNode(cardName, 1, zoneNode, cardSetName, cardSetCollectorNumber); auto *node = new DecklistCardNode(cardName, 1, zoneNode, cardSetName, cardSetCollectorNumber, cardUUID);
updateDeckHash(); updateDeckHash();
return node; return node;

View file

@ -64,6 +64,7 @@ public:
} }
virtual QString getName() const = 0; virtual QString getName() const = 0;
virtual QString getCardUuid() const = 0; virtual QString getCardUuid() const = 0;
virtual QString getCardSetShortName() const = 0;
virtual QString getCardCollectorNumber() const = 0; virtual QString getCardCollectorNumber() const = 0;
InnerDecklistNode *getParent() const InnerDecklistNode *getParent() const
{ {
@ -80,8 +81,9 @@ public:
class InnerDecklistNode : public AbstractDecklistNode, public QList<AbstractDecklistNode *> class InnerDecklistNode : public AbstractDecklistNode, public QList<AbstractDecklistNode *>
{ {
QString name; QString name;
QString cardSetCode; QString cardSetShortName;
QString cardCollectorNumber; QString cardCollectorNumber;
QString cardUUID;
class compareFunctor; class compareFunctor;
public: public:
@ -104,11 +106,19 @@ public:
[[nodiscard]] virtual QString getVisibleName() const; [[nodiscard]] virtual QString getVisibleName() const;
[[nodiscard]] QString getCardUuid() const override [[nodiscard]] QString getCardUuid() const override
{ {
return cardSetCode; return cardUUID;
} }
void setCardSetCode(const QString &_cardSetCode) void setCardUUID(const QString &_cardUUID)
{ {
cardSetCode = _cardSetCode; cardUUID = _cardUUID;
}
[[nodiscard]] QString getCardSetShortName() const override
{
return cardSetShortName;
}
void setCardSetShortName(const QString &_cardSetShortName)
{
cardSetShortName = _cardSetShortName;
} }
[[nodiscard]] QString getCardCollectorNumber() const override [[nodiscard]] QString getCardCollectorNumber() const override
{ {
@ -144,7 +154,9 @@ public:
QString getName() const override = 0; QString getName() const override = 0;
virtual void setName(const QString &_name) = 0; virtual void setName(const QString &_name) = 0;
virtual QString getCardUuid() const override = 0; virtual QString getCardUuid() const override = 0;
virtual void setCardSetCode(const QString &_cardSetName) = 0; virtual void setCardUUID(const QString &_cardUUID) = 0;
virtual QString getCardSetShortName() const override = 0;
virtual void setCardSetShortName(const QString &_cardSetShortName) = 0;
virtual QString getCardCollectorNumber() const override = 0; virtual QString getCardCollectorNumber() const override = 0;
virtual void setCardCollectorNumber(const QString &_cardSetNumber) = 0; virtual void setCardCollectorNumber(const QString &_cardSetNumber) = 0;
int height() const override int height() const override
@ -163,17 +175,20 @@ class DecklistCardNode : public AbstractDecklistCardNode
{ {
QString name; QString name;
int number; int number;
QString cardSetName; QString cardSetShortName;
QString cardSetNumber; QString cardSetNumber;
QString cardUUID;
public: public:
explicit DecklistCardNode(QString _name = QString(), explicit DecklistCardNode(QString _name = QString(),
int _number = 1, int _number = 1,
InnerDecklistNode *_parent = nullptr, InnerDecklistNode *_parent = nullptr,
QString _cardSetName = QString(), QString _cardSetShortName = QString(),
QString _cardSetNumber = QString()) QString _cardSetNumber = QString(),
QString _cardUUID = QString())
: AbstractDecklistCardNode(_parent), name(std::move(_name)), number(_number), : AbstractDecklistCardNode(_parent), name(std::move(_name)), number(_number),
cardSetName(std::move(_cardSetName)), cardSetNumber(std::move(_cardSetNumber)) cardSetShortName(std::move(_cardSetShortName)), cardSetNumber(std::move(_cardSetNumber)),
cardUUID(std::move(_cardUUID))
{ {
} }
explicit DecklistCardNode(DecklistCardNode *other, InnerDecklistNode *_parent); explicit DecklistCardNode(DecklistCardNode *other, InnerDecklistNode *_parent);
@ -195,11 +210,20 @@ public:
} }
QString getCardUuid() const override QString getCardUuid() const override
{ {
return cardSetName; return cardUUID;
} }
void setCardSetCode(const QString &_cardSetName) override void setCardUUID(const QString &_cardUUID) override
{ {
cardSetName = _cardSetName; cardUUID = _cardUUID;
}
QString getCardSetShortName() const override
{
return cardSetShortName;
}
void setCardSetShortName(const QString &_cardSetShortName)
{
cardSetShortName = _cardSetShortName;
} }
QString getCardCollectorNumber() const override QString getCardCollectorNumber() const override
{ {
@ -300,7 +324,8 @@ public:
DecklistCardNode *addCard(const QString &cardName, DecklistCardNode *addCard(const QString &cardName,
const QString &zoneName, const QString &zoneName,
const QString &cardSetName = QString(), const QString &cardSetName = QString(),
const QString &cardSetCollectorNumber = QString()); const QString &cardSetCollectorNumber = QString(),
const QString &cardUUID = QString());
bool deleteNode(AbstractDecklistNode *node, InnerDecklistNode *rootNode = nullptr); bool deleteNode(AbstractDecklistNode *node, InnerDecklistNode *rootNode = nullptr);
/** /**