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

View file

@ -42,9 +42,17 @@ public:
{
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
{

View file

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

View file

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