diff --git a/cockatrice/src/interface/deck_loader/deck_loader.cpp b/cockatrice/src/interface/deck_loader/deck_loader.cpp index c01f7f73e..df963617e 100644 --- a/cockatrice/src/interface/deck_loader/deck_loader.cpp +++ b/cockatrice/src/interface/deck_loader/deck_loader.cpp @@ -25,13 +25,13 @@ const QStringList DeckLoader::ACCEPTED_FILE_EXTENSIONS = {"*.cod", "*.dec", "*.d const QStringList DeckLoader::FILE_NAME_FILTERS = { tr("Common deck formats (%1)").arg(ACCEPTED_FILE_EXTENSIONS.join(" ")), tr("All files (*.*)")}; -DeckLoader::DeckLoader(QObject *parent) : QObject(parent), lastFileFormat(CockatriceFormat), lastRemoteDeckId(-1) +DeckLoader::DeckLoader(QObject *parent) + : QObject(parent), deckList(new DeckList()), lastFileFormat(CockatriceFormat), lastRemoteDeckId(-1) { } -DeckLoader::DeckLoader(QObject *parent, const DeckList *_deckList) - : QObject(parent), deckList(_deckList->writeToString_Native()), lastFileFormat(CockatriceFormat), - lastRemoteDeckId(-1) +DeckLoader::DeckLoader(QObject *parent, DeckList *_deckList) + : QObject(parent), deckList(_deckList), lastFileFormat(CockatriceFormat), lastRemoteDeckId(-1) { } @@ -45,15 +45,15 @@ bool DeckLoader::loadFromFile(const QString &fileName, FileFormat fmt, bool user bool result = false; switch (fmt) { case PlainTextFormat: - result = deckList.loadFromFile_Plain(&file); + result = deckList->loadFromFile_Plain(&file); break; case CockatriceFormat: { - result = deckList.loadFromFile_Native(&file); + result = deckList->loadFromFile_Native(&file); qCInfo(DeckLoaderLog) << "Loaded from" << fileName << "-" << result; if (!result) { qCInfo(DeckLoaderLog) << "Retrying as plain format"; file.seek(0); - result = deckList.loadFromFile_Plain(&file); + result = deckList->loadFromFile_Plain(&file); fmt = PlainTextFormat; } break; @@ -105,13 +105,13 @@ bool DeckLoader::loadFromFileAsync(const QString &fileName, FileFormat fmt, bool switch (fmt) { case PlainTextFormat: - return deckList.loadFromFile_Plain(&file); + return deckList->loadFromFile_Plain(&file); case CockatriceFormat: { bool result = false; - result = deckList.loadFromFile_Native(&file); + result = deckList->loadFromFile_Native(&file); if (!result) { file.seek(0); - return deckList.loadFromFile_Plain(&file); + return deckList->loadFromFile_Plain(&file); } return result; } @@ -127,7 +127,7 @@ bool DeckLoader::loadFromFileAsync(const QString &fileName, FileFormat fmt, bool bool DeckLoader::loadFromRemote(const QString &nativeString, int remoteDeckId) { - bool result = deckList.loadFromString_Native(nativeString); + bool result = deckList->loadFromString_Native(nativeString); if (result) { lastFileName = QString(); lastFileFormat = CockatriceFormat; @@ -148,10 +148,10 @@ bool DeckLoader::saveToFile(const QString &fileName, FileFormat fmt) bool result = false; switch (fmt) { case PlainTextFormat: - result = deckList.saveToFile_Plain(&file); + result = deckList->saveToFile_Plain(&file); break; case CockatriceFormat: - result = deckList.saveToFile_Native(&file); + result = deckList->saveToFile_Native(&file); qCInfo(DeckLoaderLog) << "Saving to " << fileName << "-" << result; break; } @@ -190,11 +190,11 @@ bool DeckLoader::updateLastLoadedTimestamp(const QString &fileName, FileFormat f // Perform file modifications switch (fmt) { case PlainTextFormat: - result = deckList.saveToFile_Plain(&file); + result = deckList->saveToFile_Plain(&file); break; case CockatriceFormat: - deckList.setLastLoadedTimestamp(QDateTime::currentDateTime().toString()); - result = deckList.saveToFile_Native(&file); + deckList->setLastLoadedTimestamp(QDateTime::currentDateTime().toString()); + result = deckList->saveToFile_Native(&file); break; } @@ -561,7 +561,7 @@ bool DeckLoader::convertToCockatriceFormat(QString fileName) switch (getFormatFromName(fileName)) { case PlainTextFormat: // Save in Cockatrice's native format - result = deckList.saveToFile_Native(&file); + result = deckList->saveToFile_Native(&file); break; case CockatriceFormat: qCInfo(DeckLoaderLog) << "File is already in Cockatrice format. No conversion needed."; diff --git a/cockatrice/src/interface/deck_loader/deck_loader.h b/cockatrice/src/interface/deck_loader/deck_loader.h index 19372992a..5d925f29f 100644 --- a/cockatrice/src/interface/deck_loader/deck_loader.h +++ b/cockatrice/src/interface/deck_loader/deck_loader.h @@ -45,14 +45,14 @@ public: }; private: - DeckList deckList; + DeckList *deckList; QString lastFileName; FileFormat lastFileFormat; int lastRemoteDeckId; public: DeckLoader(QObject *parent); - DeckLoader(QObject *parent, const DeckList *_deckList); + DeckLoader(QObject *parent, DeckList *_deckList); DeckLoader(const DeckLoader &) = delete; DeckLoader &operator=(const DeckLoader &) = delete; @@ -80,16 +80,16 @@ public: void setName(const QString &_name = QString()) { - deckList.setName(_name); + deckList->setName(_name); } void setComments(const QString &_comments = QString()) { - deckList.setComments(_comments); + deckList->setComments(_comments); } void setTags(const QStringList &_tags = QStringList()) { - deckList.setTags(_tags); + deckList->setTags(_tags); } static void clearSetNamesAndNumbers(const DeckList *deckList); @@ -116,23 +116,23 @@ public: ///@{ bool loadFromXml(QXmlStreamReader *xml) { - return deckList.loadFromXml(xml); + return deckList->loadFromXml(xml); }; bool loadFromString_Native(const QString &nativeString) { - return deckList.loadFromString_Native(nativeString); + return deckList->loadFromString_Native(nativeString); }; QString writeToString_Native() const { - return deckList.writeToString_Native(); + return deckList->writeToString_Native(); }; bool loadFromFile_Native(QIODevice *device) { - return deckList.loadFromFile_Native(device); + return deckList->loadFromFile_Native(device); }; bool saveToFile_Native(QIODevice *device) { - return deckList.saveToFile_Native(device); + return deckList->saveToFile_Native(device); }; ///@} @@ -140,23 +140,23 @@ public: ///@{ bool loadFromStream_Plain(QTextStream &stream, bool preserveMetadata) { - return deckList.loadFromStream_Plain(stream, preserveMetadata); + return deckList->loadFromStream_Plain(stream, preserveMetadata); }; bool loadFromFile_Plain(QIODevice *device) { - return deckList.loadFromFile_Plain(device); + return deckList->loadFromFile_Plain(device); }; bool saveToStream_Plain(QTextStream &stream, bool prefixSideboardCards, bool slashTappedOutSplitCards) { - return deckList.saveToStream_Plain(stream, prefixSideboardCards, slashTappedOutSplitCards); + return deckList->saveToStream_Plain(stream, prefixSideboardCards, slashTappedOutSplitCards); }; bool saveToFile_Plain(QIODevice *device, bool prefixSideboardCards = true, bool slashTappedOutSplitCards = false) { - return deckList.saveToFile_Plain(device, prefixSideboardCards, slashTappedOutSplitCards); + return deckList->saveToFile_Plain(device, prefixSideboardCards, slashTappedOutSplitCards); }; QString writeToString_Plain(bool prefixSideboardCards = true, bool slashTappedOutSplitCards = false) { - return deckList.writeToString_Plain(prefixSideboardCards, slashTappedOutSplitCards); + return deckList->writeToString_Plain(prefixSideboardCards, slashTappedOutSplitCards); }; ///@} @@ -171,7 +171,7 @@ public: DeckList *getDeckList() { - return &deckList; + return deckList; } DecklistCardNode *addCard(const QString &cardName, @@ -181,12 +181,12 @@ public: const QString &cardSetCollectorNumber = QString(), const QString &cardProviderId = QString()) { - return deckList.addCard(cardName, zoneName, position, cardSetName, cardSetCollectorNumber, cardProviderId); + return deckList->addCard(cardName, zoneName, position, cardSetName, cardSetCollectorNumber, cardProviderId); }; void setBannerCard(const CardRef &_bannerCard = {}) { - deckList.setBannerCard(_bannerCard); + deckList->setBannerCard(_bannerCard); } private: