diff --git a/cockatrice/src/carddatabase.cpp b/cockatrice/src/carddatabase.cpp index 25886d18..0ca8e565 100644 --- a/cockatrice/src/carddatabase.cpp +++ b/cockatrice/src/carddatabase.cpp @@ -22,13 +22,15 @@ static QXmlStreamWriter &operator<<(QXmlStreamWriter &xml, const CardSet *set) xml.writeStartElement("set"); xml.writeTextElement("name", set->getShortName()); xml.writeTextElement("longname", set->getLongName()); + xml.writeTextElement("settype", set->getSetType()); + xml.writeTextElement("releasedate", set->getReleaseDate().toString(Qt::ISODate)); xml.writeEndElement(); return xml; } -CardSet::CardSet(const QString &_shortName, const QString &_longName) - : shortName(_shortName), longName(_longName) +CardSet::CardSet(const QString &_shortName, const QString &_longName, const QString &_setType, const QDate &_releaseDate) + : shortName(_shortName), longName(_longName), setType(_setType), releaseDate(_releaseDate) { updateSortKey(); } @@ -703,7 +705,8 @@ void CardDatabase::loadSetsFromXml(QXmlStreamReader &xml) if (xml.readNext() == QXmlStreamReader::EndElement) break; if (xml.name() == "set") { - QString shortName, longName; + QString shortName, longName, setType; + QDate releaseDate; while (!xml.atEnd()) { if (xml.readNext() == QXmlStreamReader::EndElement) break; @@ -711,8 +714,12 @@ void CardDatabase::loadSetsFromXml(QXmlStreamReader &xml) shortName = xml.readElementText(); else if (xml.name() == "longname") longName = xml.readElementText(); + else if (xml.name() == "settype") + setType = xml.readElementText(); + else if (xml.name() == "releasedate") + releaseDate = QDate::fromString(xml.readElementText(), Qt::ISODate); } - sets.insert(shortName, new CardSet(shortName, longName)); + sets.insert(shortName, new CardSet(shortName, longName, setType, releaseDate)); } } } diff --git a/cockatrice/src/carddatabase.h b/cockatrice/src/carddatabase.h index af5a16f1..60b8006b 100644 --- a/cockatrice/src/carddatabase.h +++ b/cockatrice/src/carddatabase.h @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -27,11 +28,15 @@ class CardSet : public QList { private: QString shortName, longName; unsigned int sortKey; + QDate releaseDate; + QString setType; public: - CardSet(const QString &_shortName = QString(), const QString &_longName = QString()); + CardSet(const QString &_shortName = QString(), const QString &_longName = QString(), const QString &_setType = QString(), const QDate &_releaseDate = QDate()); QString getCorrectedShortName() const; QString getShortName() const { return shortName; } QString getLongName() const { return longName; } + QString getSetType() const { return setType; } + QDate getReleaseDate() const { return releaseDate; } int getSortKey() const { return sortKey; } void setSortKey(unsigned int _sortKey); void updateSortKey(); diff --git a/oracle/src/oracleimporter.cpp b/oracle/src/oracleimporter.cpp index 48172c48..1b552aa7 100644 --- a/oracle/src/oracleimporter.cpp +++ b/oracle/src/oracleimporter.cpp @@ -30,6 +30,8 @@ bool OracleImporter::readSetsFromByteArray(const QByteArray &data) QString edition; QString editionLong; QVariant editionCards; + QString setType; + QDate releaseDate; bool import; while (it.hasNext()) { @@ -37,12 +39,14 @@ bool OracleImporter::readSetsFromByteArray(const QByteArray &data) edition = map.value("code").toString(); editionLong = map.value("name").toString(); editionCards = map.value("cards"); + setType = map.value("type").toString(); + releaseDate = map.value("releaseDate").toDate(); // core and expansion sets are marked to be imported by default - import = (0 == QString::compare(map.value("type").toString(), QString("core"), Qt::CaseInsensitive) || - 0 == QString::compare(map.value("type").toString(), QString("expansion"), Qt::CaseInsensitive)); + import = (0 == QString::compare(setType, QString("core"), Qt::CaseInsensitive) || + 0 == QString::compare(setType, QString("expansion"), Qt::CaseInsensitive)); - newSetList.append(SetToDownload(edition, editionLong, editionCards, import)); + newSetList.append(SetToDownload(edition, editionLong, editionCards, import, setType, releaseDate)); } qSort(newSetList); @@ -237,7 +241,7 @@ int OracleImporter::startImport() if(!curSet->getImport()) continue; - CardSet *set = new CardSet(curSet->getShortName(), curSet->getLongName()); + CardSet *set = new CardSet(curSet->getShortName(), curSet->getLongName(), curSet->getSetType(), curSet->getReleaseDate()); if (!sets.contains(set->getShortName())) sets.insert(set->getShortName(), set); diff --git a/oracle/src/oracleimporter.h b/oracle/src/oracleimporter.h index 4c36a211..261bf62b 100644 --- a/oracle/src/oracleimporter.h +++ b/oracle/src/oracleimporter.h @@ -10,14 +10,18 @@ private: QString shortName, longName; bool import; QVariant cards; + QDate releaseDate; + QString setType; public: const QString &getShortName() const { return shortName; } const QString &getLongName() const { return longName; } const QVariant &getCards() const { return cards; } + const QString &getSetType() const { return setType; } + const QDate &getReleaseDate() const { return releaseDate; } bool getImport() const { return import; } void setImport(bool _import) { import = _import; } - SetToDownload(const QString &_shortName, const QString &_longName, const QVariant &_cards, bool _import) - : shortName(_shortName), longName(_longName), import(_import), cards(_cards) { } + SetToDownload(const QString &_shortName, const QString &_longName, const QVariant &_cards, bool _import, const QString &_setType = QString(), const QDate &_releaseDate = QDate()) + : shortName(_shortName), longName(_longName), import(_import), cards(_cards), setType(_setType), releaseDate(_releaseDate) { } bool operator<(const SetToDownload &set) const { return longName.compare(set.longName, Qt::CaseInsensitive) < 0; } };