From aa225f8df7bf4d3cbc776cca19c8b2a7b54fb273 Mon Sep 17 00:00:00 2001 From: Fabio Bas Date: Sat, 26 Jul 2014 23:36:51 +0200 Subject: [PATCH 1/2] Add back support for custom picture urls in cards.xml --- cockatrice/src/carddatabase.cpp | 34 ++++++++++++++++++++++++++++++--- cockatrice/src/carddatabase.h | 7 +++++++ 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/cockatrice/src/carddatabase.cpp b/cockatrice/src/carddatabase.cpp index 51120ee0..e216c10f 100644 --- a/cockatrice/src/carddatabase.cpp +++ b/cockatrice/src/carddatabase.cpp @@ -153,9 +153,18 @@ QString PictureLoader::getPicUrl(CardInfo *card) { if (!picDownload) return 0; - QString picUrl = picDownloadHq ? settingsCache->getPicUrlHq() : settingsCache->getPicUrl(); - picUrl.replace("!name!", QUrl::toPercentEncoding(card->getCorrectedName())); + // first check if a custom card url exists in cards.xml CardSet *set = card->getPreferredSet(); + QString picUrl = picDownloadHq ? + card->getCustomPicURLHq(set->getShortName()) : + card->getCustomPicURL(set->getShortName()); + + if (!picUrl.isEmpty()) + return picUrl; + + // otherwise, fallback to the default url + picUrl = picDownloadHq ? settingsCache->getPicUrlHq() : settingsCache->getPicUrl(); + picUrl.replace("!name!", QUrl::toPercentEncoding(card->getCorrectedName())); picUrl.replace("!setcode!", QUrl::toPercentEncoding(set->getShortName())); picUrl.replace("!setname!", QUrl::toPercentEncoding(set->getLongName())); picUrl.replace("!cardid!", QUrl::toPercentEncoding(QString::number(card->getPreferredMuId()))); @@ -275,6 +284,8 @@ CardInfo::CardInfo(CardDatabase *_db, bool _cipt, int _tableRow, const SetList &_sets, + const QStringMap &_customPicURLs, + const QStringMap &_customPicURLsHq, MuidMap _muIds) : db(_db), name(_name), @@ -286,6 +297,8 @@ CardInfo::CardInfo(CardDatabase *_db, text(_text), colors(_colors), loyalty(_loyalty), + customPicURLs(_customPicURLs), + customPicURLsHq(_customPicURLsHq), muIds(_muIds), cipt(_cipt), tableRow(_tableRow), @@ -464,6 +477,14 @@ static QXmlStreamWriter &operator<<(QXmlStreamWriter &xml, const CardInfo *info) tmpSet=sets[i]->getShortName(); xml.writeAttribute("muId", QString::number(info->getMuId(tmpSet))); + tmpString = info->getCustomPicURL(tmpSet); + if(!tmpString.isEmpty()) + xml.writeAttribute("picURL", tmpString); + + tmpString = info->getCustomPicURLHq(tmpSet); + if(!tmpString.isEmpty()) + xml.writeAttribute("picURLHq", tmpString); + xml.writeCharacters(tmpSet); xml.writeEndElement(); } @@ -628,6 +649,7 @@ void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml) if (xml.name() == "card") { QString name, manacost, type, pt, text; QStringList colors; + QStringMap customPicURLs, customPicURLsHq; MuidMap muids; SetList sets; int tableRow = 0; @@ -654,6 +676,12 @@ void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml) if (attrs.hasAttribute("muId")) { muids[setName] = attrs.value("muId").toString().toInt(); } + if (attrs.hasAttribute("picURL")) { + customPicURLs[setName] = attrs.value("picURL").toString(); + } + if (attrs.hasAttribute("picURLHq")) { + customPicURLsHq[setName] = attrs.value("picURLHq").toString(); + } } else if (xml.name() == "color") colors << xml.readElementText(); else if (xml.name() == "tablerow") @@ -665,7 +693,7 @@ void CardDatabase::loadCardsFromXml(QXmlStreamReader &xml) else if (xml.name() == "token") isToken = xml.readElementText().toInt(); } - addCard(new CardInfo(this, name, isToken, manacost, type, pt, text, colors, loyalty, cipt, tableRow, sets, muids)); + addCard(new CardInfo(this, name, isToken, manacost, type, pt, text, colors, loyalty, cipt, tableRow, sets, customPicURLs, customPicURLsHq, muids)); } } } diff --git a/cockatrice/src/carddatabase.h b/cockatrice/src/carddatabase.h index 3d1da9a2..bb151e7d 100644 --- a/cockatrice/src/carddatabase.h +++ b/cockatrice/src/carddatabase.h @@ -110,6 +110,7 @@ private: QString text; QStringList colors; int loyalty; + QStringMap customPicURLs, customPicURLsHq; MuidMap muIds; bool cipt; int tableRow; @@ -128,6 +129,8 @@ public: bool _cipt = false, int _tableRow = 0, const SetList &_sets = SetList(), + const QStringMap &_customPicURLs = QStringMap(), + const QStringMap &_customPicURLsHq = QStringMap(), MuidMap muids = MuidMap()); ~CardInfo(); const QString &getName() const { return name; } @@ -145,12 +148,16 @@ public: void setText(const QString &_text) { text = _text; emit cardInfoChanged(this); } void setColors(const QStringList &_colors) { colors = _colors; emit cardInfoChanged(this); } const QStringList &getColors() const { return colors; } + QString getCustomPicURL(const QString &set) const { return customPicURLs.value(set); } + QString getCustomPicURLHq(const QString &set) const { return customPicURLsHq.value(set); } int getMuId(const QString &set) const { return muIds.value(set); } QString getMainCardType() const; QString getCorrectedName() const; int getTableRow() const { return tableRow; } void setTableRow(int _tableRow) { tableRow = _tableRow; } void setLoyalty(int _loyalty) { loyalty = _loyalty; emit cardInfoChanged(this); } + void setCustomPicURL(const QString &_set, const QString &_customPicURL) { customPicURLs.insert(_set, _customPicURL); } + void setCustomPicURLHq(const QString &_set, const QString &_customPicURL) { customPicURLsHq.insert(_set, _customPicURL); } void setMuId(const QString &_set, const int &_muId) { muIds.insert(_set, _muId); } void addToSet(CardSet *set); QPixmap *loadPixmap(); From 9e12c5b2d44caf3f02beee8bb81bfea07331e92d Mon Sep 17 00:00:00 2001 From: Fabio Bas Date: Sun, 27 Jul 2014 22:06:35 +0200 Subject: [PATCH 2/2] Use custom picUrl if picUrlHq is not defined --- cockatrice/src/carddatabase.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/cockatrice/src/carddatabase.cpp b/cockatrice/src/carddatabase.cpp index e216c10f..f77b98d5 100644 --- a/cockatrice/src/carddatabase.cpp +++ b/cockatrice/src/carddatabase.cpp @@ -153,12 +153,18 @@ QString PictureLoader::getPicUrl(CardInfo *card) { if (!picDownload) return 0; - // first check if a custom card url exists in cards.xml CardSet *set = card->getPreferredSet(); - QString picUrl = picDownloadHq ? - card->getCustomPicURLHq(set->getShortName()) : - card->getCustomPicURL(set->getShortName()); + QString picUrl = QString(""); + // first check if Hq is enabled and a custom Hq card url exists in cards.xml + if(picDownloadHq) + { + picUrl = card->getCustomPicURLHq(set->getShortName()); + if (!picUrl.isEmpty()) + return picUrl; + } + // then, test for a custom, non-Hq card url in cards.xml + picUrl = card->getCustomPicURL(set->getShortName()); if (!picUrl.isEmpty()) return picUrl;