15#include "libcockatrice/protocol/pb/move_card_to_zone.pb.h"
31class QXmlStreamReader;
32class QXmlStreamWriter;
92 bool readElement(QXmlStreamReader *xml,
const QString &childName);
99 void write(QXmlStreamWriter *xml)
const;
132 void setName(
const QString &_name = QString())
140 void setTags(
const QStringList &_tags = QStringList())
173 explicit DeckList(
const QString &nativeString);
221 return metadata.lastLoadedTimestamp;
247 void write(QXmlStreamWriter *xml)
const;
258 bool preserveMetadata,
259 const std::function<QString(
const QString &)> &cardNameNormalizer);
260 bool loadFromFile_Plain(QIODevice *device,
const std::function<QString(
const QString &)> &cardNameNormalizer);
261 bool saveToStream_Plain(QTextStream &stream,
bool prefixSideboardCards,
bool slashTappedOutSplitCards)
const;
263 saveToFile_Plain(QIODevice *device,
bool prefixSideboardCards =
true,
bool slashTappedOutSplitCards =
false)
const;
264 QString
writeToString_Plain(
bool prefixSideboardCards =
true,
bool slashTappedOutSplitCards =
false)
const;
269 void cleanList(
bool preserveMetadata =
false);
275 QList<CardRef>
getCardRefList(
const QSet<QString> &restrictToZones = {})
const;
276 QList<const DecklistCardNode *>
getCardNodes(
const QSet<QString> &restrictToZones = {})
const;
277 QList<const InnerDecklistNode *>
getZoneNodes(
const QSet<QString> &restrictToZones = {})
const;
280 DecklistCardNode *
addCard(
const QString &cardName,
281 const QString &zoneName,
283 const QString &cardSetName = QString(),
284 const QString &cardSetCollectorNumber = QString(),
285 const QString &cardProviderId = QString(),
286 const bool formatLegal =
true);
300 void forEachCard(
const std::function<
void(InnerDecklistNode *, DecklistCardNode *)> &func)
const;
bool readElement(QXmlStreamReader *xml)
Definition deck_list.cpp:184
QStringList getTags() const
Definition deck_list.h:207
DecklistNodeTree * getTree()
Gets a pointer to the underlying node tree. Note: DO NOT call this method unless the object needs to ...
Definition deck_list.h:184
void addTag(const QString &_tag)
Definition deck_list.h:144
PlaymatInfo getPlaymat() const
Definition deck_list.h:215
QList< CardRef > getCardRefList(const QSet< QString > &restrictToZones={}) const
Definition deck_list.cpp:385
bool saveToFile_Plain(QIODevice *device, bool prefixSideboardCards=true, bool slashTappedOutSplitCards=false) const
Definition deck_list.cpp:347
QMap< QString, SideboardPlan > sideboardPlans
Named sideboard plans.
Definition deck_list.h:104
void setLastLoadedTimestamp(const QString &_lastLoadedTimestamp=QString())
Definition deck_list.h:160
DeckListMemento createMemento(const QString &reason) const
Definition deck_list.cpp:464
const Metadata & getMetadata() const
Definition deck_list.h:195
void setBannerCard(const CardRef &_bannerCard={})
Definition deck_list.h:152
bool loadFromString_Native(const QString &nativeString)
Definition deck_list.cpp:266
void clearTags()
Definition deck_list.h:148
bool isEmpty() const
Definition deck_list.h:270
void refreshDeckHash()
Definition deck_list.cpp:451
void setPlaymat(const PlaymatInfo &_playmat={})
Definition deck_list.h:156
QList< const InnerDecklistNode * > getZoneNodes(const QSet< QString > &restrictToZones={}) const
Definition deck_list.cpp:401
bool saveToFile_Native(QIODevice *device) const
Definition deck_list.cpp:288
void readDeckBody(QXmlStreamReader *xml)
Reads the contents of a cockatrice_deck element into this deck.
Definition deck_list.cpp:234
bool seekToNextElement(QXmlStreamReader *xml)
Advances to the next element in the XML stream.
Definition deck_list.cpp:223
DeckList()
Construct an empty deck.
Definition deck_list.cpp:154
void setGameFormat(const QString &_gameFormat=QString())
Definition deck_list.h:164
void forEachCard(const std::function< void(InnerDecklistNode *, DecklistCardNode *)> &func) const
Apply a function to every card in the deck tree.
Definition deck_list.cpp:459
bool loadFromFile_Plain(QIODevice *device, const std::function< QString(const QString &)> &cardNameNormalizer)
Definition deck_list.cpp:320
void setCurrentSideboardPlan(const QList< MoveCard_ToZone > &plan)
Definition deck_list.cpp:179
QString getGameFormat() const
Definition deck_list.h:223
void cleanList(bool preserveMetadata=false)
Definition deck_list.cpp:366
QString writeToString_Native() const
Definition deck_list.cpp:272
QString getName() const
Definition deck_list.h:199
bool loadFromXml(QXmlStreamReader *xml)
Definition deck_list.cpp:244
const QMap< QString, SideboardPlan > & getSideboardPlans() const
Definition deck_list.h:238
QString getComments() const
Definition deck_list.h:203
void restoreMemento(const DeckListMemento &m)
Definition deck_list.cpp:469
CardRef getBannerCard() const
Definition deck_list.h:211
QString getLastLoadedTimestamp() const
Definition deck_list.h:219
Metadata metadata
Deck metadata that is stored in the deck file.
Definition deck_list.h:103
bool loadFromFile_Native(QIODevice *device)
Definition deck_list.cpp:282
QList< const DecklistCardNode * > getCardNodes(const QSet< QString > &restrictToZones={}) const
Definition deck_list.cpp:396
void write(QXmlStreamWriter *xml) const
Definition deck_list.cpp:205
QString cachedDeckHash
Cached deck hash, recalculated lazily. An empty string indicates the cache is invalid.
Definition deck_list.h:111
QString getDeckHash() const
Definition deck_list.cpp:438
int getSideboardSize() const
Definition deck_list.cpp:406
QStringList getCardList(const QSet< QString > &restrictToZones={}) const
Definition deck_list.cpp:375
QString writeToString_Plain(bool prefixSideboardCards=true, bool slashTappedOutSplitCards=false) const
Definition deck_list.cpp:353
QList< MoveCard_ToZone > getCurrentSideboardPlan() const
Definition deck_list.cpp:170
bool isBlankDeck() const
Definition deck_list.h:229
bool saveToStream_Plain(QTextStream &stream, bool prefixSideboardCards, bool slashTappedOutSplitCards) const
Definition deck_list.cpp:326
void setComments(const QString &_comments=QString())
Definition deck_list.h:136
void setTags(const QStringList &_tags=QStringList())
Definition deck_list.h:140
DecklistCardNode * addCard(const QString &cardName, const QString &zoneName, int position=-1, const QString &cardSetName=QString(), const QString &cardSetCollectorNumber=QString(), const QString &cardProviderId=QString(), const bool formatLegal=true)
Definition deck_list.cpp:418
bool loadFromStream_Plain(QTextStream &stream, bool preserveMetadata, const std::function< QString(const QString &)> &cardNameNormalizer)
Definition deck_list.cpp:308
DecklistNodeTree tree
The deck tree (zones + cards).
Definition deck_list.h:105
void setName(const QString &_name=QString())
Definition deck_list.h:132
Concrete node type representing an actual card entry in the deck.
Definition deck_list_card_node.h:52
Definition deck_list_node_tree.h:17
bool isEmpty() const
Definition deck_list_node_tree.cpp:120
Definition remote_connection_controller.h:20
Definition dlg_manage_sets.h:29
Defines the InnerDecklistNode class, which represents structural nodes (zones and groups) in the deck...
A resolved playmat (card + positioning parameters).
Definition playmat_params.h:42