Make some DeckLoader methods static

This commit is contained in:
RickyRister 2025-11-17 01:54:38 -08:00
parent 3a350459d8
commit 3d004f682a
2 changed files with 50 additions and 42 deletions

View file

@ -276,9 +276,11 @@ static QString toDecklistExportString(const DecklistCardNode *card)
/** /**
* Export deck to decklist function, called to format the deck in a way to be sent to a server * Export deck to decklist function, called to format the deck in a way to be sent to a server
*
* @param deckList The decklist to export
* @param website The website we're sending the deck to * @param website The website we're sending the deck to
*/ */
QString DeckLoader::exportDeckToDecklist(DecklistWebsite website) QString DeckLoader::exportDeckToDecklist(const DeckList *deckList, DecklistWebsite website)
{ {
// Add the base url // Add the base url
QString deckString = "https://" + getDomainForWebsite(website) + "/?"; QString deckString = "https://" + getDomainForWebsite(website) + "/?";
@ -346,7 +348,7 @@ struct SetProviderIdToPreferred
* This function iterates through each card in the decklist and sets the providerId * This function iterates through each card in the decklist and sets the providerId
* on each card based on its set name and collector number. * on each card based on its set name and collector number.
*/ */
void DeckLoader::setProviderIdToPreferredPrinting() void DeckLoader::setProviderIdToPreferredPrinting(const DeckList *deckList)
{ {
// Set up the struct to call. // Set up the struct to call.
SetProviderIdToPreferred setProviderIdToPreferred; SetProviderIdToPreferred setProviderIdToPreferred;
@ -358,7 +360,7 @@ void DeckLoader::setProviderIdToPreferredPrinting()
/** /**
* Sets the providerId on each card in the decklist based on its set name and collector number. * Sets the providerId on each card in the decklist based on its set name and collector number.
*/ */
void DeckLoader::resolveSetNameAndNumberToProviderID() void DeckLoader::resolveSetNameAndNumberToProviderID(const DeckList *deckList)
{ {
auto setProviderId = [](const auto node, const auto card) { auto setProviderId = [](const auto node, const auto card) {
Q_UNUSED(node); Q_UNUSED(node);
@ -398,7 +400,7 @@ struct ClearSetNameNumberAndProviderId
/** /**
* Clears the set name and numbers on each card in the decklist. * Clears the set name and numbers on each card in the decklist.
*/ */
void DeckLoader::clearSetNamesAndNumbers() void DeckLoader::clearSetNamesAndNumbers(const DeckList *deckList)
{ {
auto clearSetNameAndNumber = [](const auto node, auto card) { auto clearSetNameAndNumber = [](const auto node, auto card) {
Q_UNUSED(node) Q_UNUSED(node)
@ -419,19 +421,22 @@ DeckLoader::FileFormat DeckLoader::getFormatFromName(const QString &fileName)
return PlainTextFormat; return PlainTextFormat;
} }
void DeckLoader::saveToClipboard(bool addComments, bool addSetNameAndNumber) const void DeckLoader::saveToClipboard(const DeckList *deckList, bool addComments, bool addSetNameAndNumber)
{ {
QString buffer; QString buffer;
QTextStream stream(&buffer); QTextStream stream(&buffer);
saveToStream_Plain(stream, addComments, addSetNameAndNumber); saveToStream_Plain(stream, deckList, addComments, addSetNameAndNumber);
QApplication::clipboard()->setText(buffer, QClipboard::Clipboard); QApplication::clipboard()->setText(buffer, QClipboard::Clipboard);
QApplication::clipboard()->setText(buffer, QClipboard::Selection); QApplication::clipboard()->setText(buffer, QClipboard::Selection);
} }
bool DeckLoader::saveToStream_Plain(QTextStream &out, bool addComments, bool addSetNameAndNumber) const bool DeckLoader::saveToStream_Plain(QTextStream &out,
const DeckList *deckList,
bool addComments,
bool addSetNameAndNumber)
{ {
if (addComments) { if (addComments) {
saveToStream_DeckHeader(out); saveToStream_DeckHeader(out, deckList);
} }
// loop zones // loop zones
@ -447,7 +452,7 @@ bool DeckLoader::saveToStream_Plain(QTextStream &out, bool addComments, bool add
return true; return true;
} }
void DeckLoader::saveToStream_DeckHeader(QTextStream &out) const void DeckLoader::saveToStream_DeckHeader(QTextStream &out, const DeckList *deckList)
{ {
if (!deckList->getName().isEmpty()) { if (!deckList->getName().isEmpty()) {
out << "// " << deckList->getName() << "\n\n"; out << "// " << deckList->getName() << "\n\n";
@ -465,7 +470,7 @@ void DeckLoader::saveToStream_DeckHeader(QTextStream &out) const
void DeckLoader::saveToStream_DeckZone(QTextStream &out, void DeckLoader::saveToStream_DeckZone(QTextStream &out,
const InnerDecklistNode *zoneNode, const InnerDecklistNode *zoneNode,
bool addComments, bool addComments,
bool addSetNameAndNumber) const bool addSetNameAndNumber)
{ {
// group cards by card type and count the subtotals // group cards by card type and count the subtotals
QMultiMap<QString, DecklistCardNode *> cardsByType; QMultiMap<QString, DecklistCardNode *> cardsByType;
@ -513,7 +518,7 @@ void DeckLoader::saveToStream_DeckZoneCards(QTextStream &out,
const InnerDecklistNode *zoneNode, const InnerDecklistNode *zoneNode,
QList<DecklistCardNode *> cards, QList<DecklistCardNode *> cards,
bool addComments, bool addComments,
bool addSetNameAndNumber) const bool addSetNameAndNumber)
{ {
// QMultiMap sorts values in reverse order // QMultiMap sorts values in reverse order
for (int i = cards.size() - 1; i >= 0; --i) { for (int i = cards.size() - 1; i >= 0; --i) {
@ -589,7 +594,7 @@ bool DeckLoader::convertToCockatriceFormat(QString fileName)
return result; return result;
} }
QString DeckLoader::getCardZoneFromName(QString cardName, QString currentZoneName) QString DeckLoader::getCardZoneFromName(const QString &cardName, QString currentZoneName)
{ {
CardInfoPtr card = CardDatabaseManager::query()->getCardInfo(cardName); CardInfoPtr card = CardDatabaseManager::query()->getCardInfo(cardName);
@ -600,7 +605,7 @@ QString DeckLoader::getCardZoneFromName(QString cardName, QString currentZoneNam
return currentZoneName; return currentZoneName;
} }
QString DeckLoader::getCompleteCardName(const QString &cardName) const QString DeckLoader::getCompleteCardName(const QString &cardName)
{ {
if (CardDatabaseManager::getInstance()) { if (CardDatabaseManager::getInstance()) {
ExactCard temp = CardDatabaseManager::query()->guessCard({cardName}); ExactCard temp = CardDatabaseManager::query()->guessCard({cardName});
@ -672,7 +677,7 @@ void DeckLoader::printDeckListNode(QTextCursor *cursor, InnerDecklistNode *node)
cursor->movePosition(QTextCursor::End); cursor->movePosition(QTextCursor::End);
} }
void DeckLoader::printDeckList(QPrinter *printer) void DeckLoader::printDeckList(QPrinter *printer, const DeckList *deckList)
{ {
QTextDocument doc; QTextDocument doc;

View file

@ -21,13 +21,6 @@ signals:
void deckLoaded(); void deckLoaded();
void loadFinished(bool success); void loadFinished(bool success);
public slots:
/**
* @brief Prints the decklist to the provided QPrinter.
* @param printer The printer to render the decklist to.
*/
void printDeckList(QPrinter *printer);
public: public:
enum FileFormat enum FileFormat
{ {
@ -84,7 +77,7 @@ public:
return getLastFileName().isEmpty() && getLastRemoteDeckId() == -1; return getLastFileName().isEmpty() && getLastRemoteDeckId() == -1;
} }
void clearSetNamesAndNumbers(); static void clearSetNamesAndNumbers(const DeckList *deckList);
static FileFormat getFormatFromName(const QString &fileName); static FileFormat getFormatFromName(const QString &fileName);
bool loadFromFile(const QString &fileName, FileFormat fmt, bool userRequest = false); bool loadFromFile(const QString &fileName, FileFormat fmt, bool userRequest = false);
@ -92,15 +85,25 @@ public:
bool loadFromRemote(const QString &nativeString, int remoteDeckId); bool loadFromRemote(const QString &nativeString, int remoteDeckId);
bool saveToFile(const QString &fileName, FileFormat fmt); bool saveToFile(const QString &fileName, FileFormat fmt);
bool updateLastLoadedTimestamp(const QString &fileName, FileFormat fmt); bool updateLastLoadedTimestamp(const QString &fileName, FileFormat fmt);
QString exportDeckToDecklist(DecklistWebsite website);
void setProviderIdToPreferredPrinting();
void resolveSetNameAndNumberToProviderID(); static QString exportDeckToDecklist(const DeckList *deckList, DecklistWebsite website);
void saveToClipboard(bool addComments = true, bool addSetNameAndNumber = true) const; static void setProviderIdToPreferredPrinting(const DeckList *deckList);
static void resolveSetNameAndNumberToProviderID(const DeckList *deckList);
static void saveToClipboard(const DeckList *deckList, bool addComments = true, bool addSetNameAndNumber = true);
static bool saveToStream_Plain(QTextStream &out,
const DeckList *deckList,
bool addComments = true,
bool addSetNameAndNumber = true);
/**
* @brief Prints the decklist to the provided QPrinter.
* @param printer The printer to render the decklist to.
* @param deckList
*/
static void printDeckList(QPrinter *printer, const DeckList *deckList);
// overload
bool saveToStream_Plain(QTextStream &out, bool addComments = true, bool addSetNameAndNumber = true) const;
bool convertToCockatriceFormat(QString fileName); bool convertToCockatriceFormat(QString fileName);
DeckList *getDeckList() DeckList *getDeckList()
@ -109,21 +112,21 @@ public:
} }
private: private:
void printDeckListNode(QTextCursor *cursor, InnerDecklistNode *node); static void printDeckListNode(QTextCursor *cursor, InnerDecklistNode *node);
static void saveToStream_DeckHeader(QTextStream &out, const DeckList *deckList);
protected: static void saveToStream_DeckZone(QTextStream &out,
void saveToStream_DeckHeader(QTextStream &out) const; const InnerDecklistNode *zoneNode,
void saveToStream_DeckZone(QTextStream &out, bool addComments = true,
const InnerDecklistNode *zoneNode, bool addSetNameAndNumber = true);
bool addComments = true, static void saveToStream_DeckZoneCards(QTextStream &out,
bool addSetNameAndNumber = true) const; const InnerDecklistNode *zoneNode,
void saveToStream_DeckZoneCards(QTextStream &out, QList<DecklistCardNode *> cards,
const InnerDecklistNode *zoneNode, bool addComments = true,
QList<DecklistCardNode *> cards, bool addSetNameAndNumber = true);
bool addComments = true,
bool addSetNameAndNumber = true) const; [[nodiscard]] static QString getCardZoneFromName(const QString &cardName, QString currentZoneName);
[[nodiscard]] QString getCardZoneFromName(QString cardName, QString currentZoneName); [[nodiscard]] static QString getCompleteCardName(const QString &cardName);
[[nodiscard]] QString getCompleteCardName(const QString &cardName) const;
}; };
#endif #endif