10#include <QLoggingCategory>
17 class DeckLoader : public QObject
22 void loadFinished(
bool success);
39 static constexpr int NON_REMOTE_ID = -1;
41 QString fileName =
"";
42 FileFormat fileFormat = CockatriceFormat;
43 int remoteDeckId = NON_REMOTE_ID;
49 static const QStringList ACCEPTED_FILE_EXTENSIONS;
54 static const QStringList FILE_NAME_FILTERS;
64 LoadInfo lastLoadInfo;
67 DeckLoader(QObject *parent);
68 DeckLoader(QObject *parent,
DeckList *_deckList);
69 DeckLoader(
const DeckLoader &) =
delete;
70 DeckLoader &operator=(
const DeckLoader &) =
delete;
72 const LoadInfo &getLastLoadInfo()
const
77 void setLastLoadInfo(
const LoadInfo &info)
82 [[nodiscard]]
bool hasNotBeenLoaded()
const
84 return lastLoadInfo.fileName.isEmpty() && lastLoadInfo.remoteDeckId == LoadInfo::NON_REMOTE_ID;
87 static void clearSetNamesAndNumbers(
const DeckList *deckList);
88 static FileFormat getFormatFromName(
const QString &fileName);
90 bool loadFromFile(
const QString &fileName, FileFormat fmt,
bool userRequest =
false);
91 bool loadFromFileAsync(
const QString &fileName, FileFormat fmt,
bool userRequest);
92 bool loadFromRemote(
const QString &nativeString,
int remoteDeckId);
93 bool saveToFile(
const QString &fileName, FileFormat fmt);
94 bool updateLastLoadedTimestamp(
const QString &fileName, FileFormat fmt);
96 static QString exportDeckToDecklist(
const DeckList *deckList, DecklistWebsite website);
98 static void setProviderIdToPreferredPrinting(
const DeckList *deckList);
99 static void resolveSetNameAndNumberToProviderID(
const DeckList *deckList);
101 static void saveToClipboard(
const DeckList *deckList,
bool addComments =
true,
bool addSetNameAndNumber =
true);
102 static bool saveToStream_Plain(QTextStream &out,
104 bool addComments =
true,
105 bool addSetNameAndNumber =
true);
112 static void printDeckList(QPrinter *printer,
const DeckList *deckList);
114 bool convertToCockatriceFormat(QString fileName);
123 static void saveToStream_DeckHeader(QTextStream &out,
const DeckList *deckList);
125 static void saveToStream_DeckZone(QTextStream &out,
127 bool addComments =
true,
128 bool addSetNameAndNumber =
true);
129 static void saveToStream_DeckZoneCards(QTextStream &out,
131 QList<DecklistCardNode *> cards,
132 bool addComments =
true,
133 bool addSetNameAndNumber =
true);
135 [[nodiscard]]
static QString getCardZoneFromName(
const QString &cardName, QString currentZoneName);
136 [[nodiscard]]
static QString getCompleteCardName(
const QString &cardName);
Represents a complete deck, including metadata, zones, cards, and sideboard plans.
Definition deck_list.h:127
Represents a container node in the deck list hierarchy (zones and groupings).
Definition inner_deck_list_node.h:62
Q_LOGGING_CATEGORY(TappedOutInterfaceLog, "tapped_out_interface")