mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-18 16:32:16 -07:00
Banner cards should respect providerIds.
This commit is contained in:
parent
30bafe6348
commit
1cf25e3c5f
4 changed files with 40 additions and 25 deletions
|
|
@ -829,7 +829,7 @@ void TabDeckEditor::updateBannerCardComboBox()
|
||||||
bannerCardComboBox->clear();
|
bannerCardComboBox->clear();
|
||||||
|
|
||||||
// Prepare the new items with deduplication
|
// Prepare the new items with deduplication
|
||||||
QSet<QString> bannerCardSet;
|
QSet<QPair<QString, QString>> bannerCardSet;
|
||||||
InnerDecklistNode *listRoot = deckModel->getDeckList()->getRoot();
|
InnerDecklistNode *listRoot = deckModel->getDeckList()->getRoot();
|
||||||
for (int i = 0; i < listRoot->size(); i++) {
|
for (int i = 0; i < listRoot->size(); i++) {
|
||||||
InnerDecklistNode *currentZone = dynamic_cast<InnerDecklistNode *>(listRoot->at(i));
|
InnerDecklistNode *currentZone = dynamic_cast<InnerDecklistNode *>(listRoot->at(i));
|
||||||
|
|
@ -839,23 +839,29 @@ void TabDeckEditor::updateBannerCardComboBox()
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
for (int k = 0; k < currentCard->getNumber(); ++k) {
|
for (int k = 0; k < currentCard->getNumber(); ++k) {
|
||||||
CardInfoPtr info = CardDatabaseManager::getInstance()->getCard(currentCard->getName());
|
CardInfoPtr info = CardDatabaseManager::getInstance()->getCardByNameAndProviderId(
|
||||||
|
currentCard->getName(), currentCard->getCardProviderId());
|
||||||
if (info) {
|
if (info) {
|
||||||
bannerCardSet.insert(currentCard->getName());
|
bannerCardSet.insert(QPair(currentCard->getName(), currentCard->getCardProviderId()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Convert the QSet to a sorted QStringList
|
QList<QPair<QString, QString>> pairList = bannerCardSet.values();
|
||||||
QStringList bannerCardChoices;
|
|
||||||
for (const QString &entry : bannerCardSet) {
|
|
||||||
bannerCardChoices.append(entry);
|
|
||||||
}
|
|
||||||
bannerCardChoices.sort(Qt::CaseInsensitive);
|
|
||||||
|
|
||||||
// Populate the combo box with new items
|
// Sort QList by the first() element of the QPair
|
||||||
bannerCardComboBox->addItems(bannerCardChoices);
|
std::sort(pairList.begin(), pairList.end(), [](const QPair<QString, QString> &a, const QPair<QString, QString> &b) {
|
||||||
|
return a.first.toLower() < b.first.toLower();
|
||||||
|
});
|
||||||
|
|
||||||
|
for (const auto &pair : pairList) {
|
||||||
|
QVariantMap dataMap;
|
||||||
|
dataMap["name"] = pair.first;
|
||||||
|
dataMap["uuid"] = pair.second;
|
||||||
|
|
||||||
|
bannerCardComboBox->addItem(pair.first, dataMap);
|
||||||
|
}
|
||||||
|
|
||||||
// Try to restore the previous selection by finding the currentText
|
// Try to restore the previous selection by finding the currentText
|
||||||
int restoredIndex = bannerCardComboBox->findText(currentText);
|
int restoredIndex = bannerCardComboBox->findText(currentText);
|
||||||
|
|
@ -863,7 +869,7 @@ void TabDeckEditor::updateBannerCardComboBox()
|
||||||
bannerCardComboBox->setCurrentIndex(restoredIndex);
|
bannerCardComboBox->setCurrentIndex(restoredIndex);
|
||||||
} else {
|
} else {
|
||||||
// Add a placeholder "-" and set it as the current selection
|
// Add a placeholder "-" and set it as the current selection
|
||||||
int bannerIndex = bannerCardComboBox->findText(deckModel->getDeckList()->getBannerCard());
|
int bannerIndex = bannerCardComboBox->findText(deckModel->getDeckList()->getBannerCard().first);
|
||||||
if (bannerIndex != -1) {
|
if (bannerIndex != -1) {
|
||||||
bannerCardComboBox->setCurrentIndex(bannerIndex);
|
bannerCardComboBox->setCurrentIndex(bannerIndex);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -878,8 +884,9 @@ void TabDeckEditor::updateBannerCardComboBox()
|
||||||
|
|
||||||
void TabDeckEditor::setBannerCard(int /* changedIndex */)
|
void TabDeckEditor::setBannerCard(int /* changedIndex */)
|
||||||
{
|
{
|
||||||
qDebug() << "Banner card was set to: " << bannerCardComboBox->currentText();
|
QVariantMap data = bannerCardComboBox->itemData(bannerCardComboBox->currentIndex()).toMap();
|
||||||
deckModel->getDeckList()->setBannerCard(bannerCardComboBox->currentText());
|
qDebug() << "Banner card is " << data["name"].toString() << " and " << data["uuid"].toString();
|
||||||
|
deckModel->getDeckList()->setBannerCard(QPair(data["name"].toString(), data["uuid"].toString()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void TabDeckEditor::updateCardInfo(CardInfoPtr _card)
|
void TabDeckEditor::updateCardInfo(CardInfoPtr _card)
|
||||||
|
|
@ -1048,8 +1055,8 @@ void TabDeckEditor::openDeckFromFile(const QString &fileName, DeckOpenLocation d
|
||||||
if (l->loadFromFile(fileName, fmt, true)) {
|
if (l->loadFromFile(fileName, fmt, true)) {
|
||||||
SettingsCache::instance().recents().updateRecentlyOpenedDeckPaths(fileName);
|
SettingsCache::instance().recents().updateRecentlyOpenedDeckPaths(fileName);
|
||||||
updateBannerCardComboBox();
|
updateBannerCardComboBox();
|
||||||
if (!l->getBannerCard().isEmpty()) {
|
if (!l->getBannerCard().first.isEmpty()) {
|
||||||
bannerCardComboBox->setCurrentIndex(bannerCardComboBox->findText(l->getBannerCard()));
|
bannerCardComboBox->setCurrentIndex(bannerCardComboBox->findText(l->getBannerCard().first));
|
||||||
}
|
}
|
||||||
if (deckOpenLocation == NEW_TAB) {
|
if (deckOpenLocation == NEW_TAB) {
|
||||||
emit openDeckEditor(l);
|
emit openDeckEditor(l);
|
||||||
|
|
@ -1544,13 +1551,13 @@ void TabDeckEditor::actDecrement()
|
||||||
|
|
||||||
void TabDeckEditor::setDeck(DeckLoader *_deck)
|
void TabDeckEditor::setDeck(DeckLoader *_deck)
|
||||||
{
|
{
|
||||||
qDebug() << " ORIGINAL BANNER CARD " << _deck->getBannerCard();
|
qDebug() << " ORIGINAL BANNER CARD " << _deck->getBannerCard().first;
|
||||||
deckModel->setDeckList(_deck);
|
deckModel->setDeckList(_deck);
|
||||||
|
|
||||||
nameEdit->setText(deckModel->getDeckList()->getName());
|
nameEdit->setText(deckModel->getDeckList()->getName());
|
||||||
commentsEdit->setText(deckModel->getDeckList()->getComments());
|
commentsEdit->setText(deckModel->getDeckList()->getComments());
|
||||||
qDebug() << deckModel->getDeckList()->getBannerCard() << " was the banner card";
|
qDebug() << deckModel->getDeckList()->getBannerCard() << " was the banner card";
|
||||||
bannerCardComboBox->setCurrentText(deckModel->getDeckList()->getBannerCard());
|
bannerCardComboBox->setCurrentText(deckModel->getDeckList()->getBannerCard().first);
|
||||||
updateBannerCardComboBox();
|
updateBannerCardComboBox();
|
||||||
updateHash();
|
updateHash();
|
||||||
deckModel->sort(deckView->header()->sortIndicatorSection(), deckView->header()->sortIndicatorOrder());
|
deckModel->sort(deckView->header()->sortIndicatorSection(), deckView->header()->sortIndicatorOrder());
|
||||||
|
|
|
||||||
|
|
@ -14,9 +14,10 @@ DeckPreviewWidget::DeckPreviewWidget(QWidget *parent, const QString &_filePath)
|
||||||
deckLoader = new DeckLoader();
|
deckLoader = new DeckLoader();
|
||||||
deckLoader->loadFromFile(filePath, DeckLoader::CockatriceFormat);
|
deckLoader->loadFromFile(filePath, DeckLoader::CockatriceFormat);
|
||||||
|
|
||||||
auto bannerCard = deckLoader->getBannerCard().isEmpty()
|
auto bannerCard = deckLoader->getBannerCard().first.isEmpty()
|
||||||
? CardInfoPtr()
|
? CardInfoPtr()
|
||||||
: CardDatabaseManager::getInstance()->getCard(deckLoader->getBannerCard());
|
: CardDatabaseManager::getInstance()->getCardByNameAndProviderId(
|
||||||
|
deckLoader->getBannerCard().first, deckLoader->getBannerCard().second);
|
||||||
|
|
||||||
bannerCardDisplayWidget = new DeckPreviewCardPictureWidget(this);
|
bannerCardDisplayWidget = new DeckPreviewCardPictureWidget(this);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -427,7 +427,9 @@ bool DeckList::readElement(QXmlStreamReader *xml)
|
||||||
else if (childName == "comments")
|
else if (childName == "comments")
|
||||||
comments = xml->readElementText();
|
comments = xml->readElementText();
|
||||||
else if (childName == "bannerCard") {
|
else if (childName == "bannerCard") {
|
||||||
bannerCard = xml->readElementText();
|
QString providerId = xml->attributes().value("providerId").toString();
|
||||||
|
QString cardName = xml->readElementText();
|
||||||
|
bannerCard = QPair<QString, QString>(cardName, providerId);
|
||||||
} else if (childName == "zone") {
|
} else if (childName == "zone") {
|
||||||
InnerDecklistNode *newZone = getZoneObjFromName(xml->attributes().value("name").toString());
|
InnerDecklistNode *newZone = getZoneObjFromName(xml->attributes().value("name").toString());
|
||||||
newZone->readElement(xml);
|
newZone->readElement(xml);
|
||||||
|
|
@ -449,8 +451,11 @@ void DeckList::write(QXmlStreamWriter *xml)
|
||||||
xml->writeAttribute("version", "1");
|
xml->writeAttribute("version", "1");
|
||||||
xml->writeTextElement("lastLoadedTimestamp", lastLoadedTimestamp);
|
xml->writeTextElement("lastLoadedTimestamp", lastLoadedTimestamp);
|
||||||
xml->writeTextElement("deckname", name);
|
xml->writeTextElement("deckname", name);
|
||||||
|
xml->writeStartElement("bannerCard");
|
||||||
|
xml->writeAttribute("providerId", bannerCard.second);
|
||||||
|
xml->writeCharacters(bannerCard.first);
|
||||||
|
xml->writeEndElement();
|
||||||
xml->writeTextElement("comments", comments);
|
xml->writeTextElement("comments", comments);
|
||||||
xml->writeTextElement("bannerCard", bannerCard);
|
|
||||||
|
|
||||||
for (int i = 0; i < root->size(); i++)
|
for (int i = 0; i < root->size(); i++)
|
||||||
root->at(i)->writeElement(xml);
|
root->at(i)->writeElement(xml);
|
||||||
|
|
@ -458,6 +463,7 @@ void DeckList::write(QXmlStreamWriter *xml)
|
||||||
QMapIterator<QString, SideboardPlan *> i(sideboardPlans);
|
QMapIterator<QString, SideboardPlan *> i(sideboardPlans);
|
||||||
while (i.hasNext())
|
while (i.hasNext())
|
||||||
i.next().value()->write(xml);
|
i.next().value()->write(xml);
|
||||||
|
|
||||||
xml->writeEndElement();
|
xml->writeEndElement();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -250,7 +250,8 @@ class DeckList : public QObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
private:
|
private:
|
||||||
QString name, comments, bannerCard;
|
QString name, comments;
|
||||||
|
QPair<QString, QString> bannerCard;
|
||||||
QString deckHash;
|
QString deckHash;
|
||||||
QString lastLoadedTimestamp;
|
QString lastLoadedTimestamp;
|
||||||
QMap<QString, SideboardPlan *> sideboardPlans;
|
QMap<QString, SideboardPlan *> sideboardPlans;
|
||||||
|
|
@ -280,7 +281,7 @@ public slots:
|
||||||
{
|
{
|
||||||
comments = _comments;
|
comments = _comments;
|
||||||
}
|
}
|
||||||
void setBannerCard(const QString &_bannerCard = QString())
|
void setBannerCard(const QPair<QString, QString> &_bannerCard = QPair<QString, QString>())
|
||||||
{
|
{
|
||||||
bannerCard = _bannerCard;
|
bannerCard = _bannerCard;
|
||||||
}
|
}
|
||||||
|
|
@ -302,7 +303,7 @@ public:
|
||||||
{
|
{
|
||||||
return comments;
|
return comments;
|
||||||
}
|
}
|
||||||
QString getBannerCard() const
|
QPair<QString, QString> getBannerCard() const
|
||||||
{
|
{
|
||||||
return bannerCard;
|
return bannerCard;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue