18#include <QtCore/QXmlStreamReader>
19#include <libcockatrice/protocol/pb/move_card_to_zone.pb.h>
59 const QList<MoveCard_ToZone> &_moveList = QList<MoveCard_ToZone>());
72 void write(QXmlStreamWriter *xml);
81 [[nodiscard]]
const QList<MoveCard_ToZone> &
getMoveList()
const
87 void setMoveList(
const QList<MoveCard_ToZone> &_moveList);
159 return currentZoneName;
182 void setName(
const QString &_name = QString())
190 void setTags(
const QStringList &_tags = QStringList())
222 explicit DeckList(
const QString &nativeString);
267 void write(QXmlStreamWriter *xml)
const;
279 bool saveToStream_Plain(QTextStream &stream,
bool prefixSideboardCards,
bool slashTappedOutSplitCards);
280 bool saveToFile_Plain(QIODevice *device,
bool prefixSideboardCards =
true,
bool slashTappedOutSplitCards =
false);
281 QString
writeToString_Plain(
bool prefixSideboardCards =
true,
bool slashTappedOutSplitCards =
false);
286 void cleanList(
bool preserveMetadata =
false);
293 QList<DecklistCardNode *>
getCardNodes(
const QStringList &restrictToZones = QStringList())
const;
300 const QString &zoneName,
302 const QString &cardSetName = QString(),
303 const QString &cardSetCollectorNumber = QString(),
304 const QString &cardProviderId = QString());
Base class for all nodes in the deck list tree.
Definition abstract_deck_list_node.h:73
Core in-memory container for card and set data.
Definition card_database.h:29
Definition deck_list_memento.h:6
bool readElement(QXmlStreamReader *xml)
Definition deck_list.cpp:120
QMap< QString, SideboardPlan * > sideboardPlans
Named sideboard plans.
Definition deck_list.h:135
static void getCardListHelper(InnerDecklistNode *node, QSet< QString > &result)
Definition deck_list.cpp:514
InnerDecklistNode * getRoot() const
Definition deck_list.h:295
QStringList getTags() const
Definition deck_list.h:235
void addTag(const QString &_tag)
Definition deck_list.h:195
void setLastLoadedTimestamp(const QString &_lastLoadedTimestamp=QString())
Definition deck_list.h:209
DeckListMemento createMemento(const QString &reason) const
Definition deck_list.cpp:726
void setBannerCard(const CardRef &_bannerCard={})
Definition deck_list.h:205
QList< MoveCard_ToZone > getCurrentSideboardPlan()
Definition deck_list.cpp:100
bool loadFromString_Native(const QString &nativeString)
Definition deck_list.cpp:219
void clearTags()
Definition deck_list.h:200
bool isEmpty() const
Definition deck_list.h:287
InnerDecklistNode * root
Root of the deck tree (zones + cards).
Definition deck_list.h:136
QList< CardRef > getCardRefList() const
Definition deck_list.cpp:547
void refreshDeckHash()
Definition deck_list.cpp:704
QString comments
Free-form comments or notes.
Definition deck_list.h:131
const QMap< QString, SideboardPlan * > & getSideboardPlans() const
Definition deck_list.h:258
QStringList getCardList() const
Definition deck_list.cpp:540
DeckList()
Construct an empty deck.
Definition deck_list.cpp:80
CardRef bannerCard
Optional representative card for the deck.
Definition deck_list.h:132
DeckList(const DeckList &)=delete
Delete copy constructor.
QString name
User-defined deck name.
Definition deck_list.h:130
void forEachCard(const std::function< void(InnerDecklistNode *, DecklistCardNode *)> &func) const
Apply a function to every card in the deck tree.
Definition deck_list.cpp:713
InnerDecklistNode * getZoneObjFromName(const QString &zoneName)
Definition deck_list.cpp:449
bool saveToFile_Native(QIODevice *device)
Definition deck_list.cpp:241
void setCurrentSideboardPlan(const QList< MoveCard_ToZone > &plan)
Definition deck_list.cpp:109
void cleanList(bool preserveMetadata=false)
Definition deck_list.cpp:503
QString writeToString_Native() const
Definition deck_list.cpp:225
QString getName() const
Definition deck_list.h:227
bool loadFromXml(QXmlStreamReader *xml)
Definition deck_list.cpp:191
QString getComments() const
Definition deck_list.h:231
bool saveToFile_Plain(QIODevice *device, bool prefixSideboardCards=true, bool slashTappedOutSplitCards=false)
Definition deck_list.cpp:484
void restoreMemento(const DeckListMemento &m)
Definition deck_list.cpp:731
void deckHashChanged()
Emitted when the deck hash changes.
CardRef getBannerCard() const
Definition deck_list.h:239
QString getLastLoadedTimestamp() const
Definition deck_list.h:243
bool deleteNode(AbstractDecklistNode *node, InnerDecklistNode *rootNode=nullptr)
Definition deck_list.cpp:613
bool loadFromFile_Native(QIODevice *device)
Definition deck_list.cpp:235
static void getCardRefListHelper(InnerDecklistNode *item, QList< CardRef > &result)
Definition deck_list.cpp:527
bool saveToStream_Plain(QTextStream &stream, bool prefixSideboardCards, bool slashTappedOutSplitCards)
Definition deck_list.cpp:467
QStringList tags
User-defined tags for deck classification.
Definition deck_list.h:134
QList< DecklistCardNode * > getCardNodes(const QStringList &restrictToZones=QStringList()) const
Definition deck_list.cpp:554
void write(QXmlStreamWriter *xml) const
Definition deck_list.cpp:158
QString cachedDeckHash
Cached deck hash, recalculated lazily. An empty string indicates the cache is invalid.
Definition deck_list.h:142
QString getDeckHash() const
Definition deck_list.cpp:691
int getSideboardSize() const
Definition deck_list.cpp:577
bool loadFromFile_Plain(QIODevice *device)
Definition deck_list.cpp:461
virtual QString getCompleteCardName(const QString &cardName) const
Produce the complete display name of a card. Override in subclasses to add set suffixes or annotation...
Definition deck_list.h:168
bool isBlankDeck() const
Definition deck_list.h:249
QString writeToString_Plain(bool prefixSideboardCards=true, bool slashTappedOutSplitCards=false)
Definition deck_list.cpp:490
QString lastLoadedTimestamp
Timestamp string of last load.
Definition deck_list.h:133
bool loadFromStream_Plain(QTextStream &stream, bool preserveMetadata)
Definition deck_list.cpp:260
DecklistCardNode * addCard(const QString &cardName, const QString &zoneName, int position, const QString &cardSetName=QString(), const QString &cardSetCollectorNumber=QString(), const QString &cardProviderId=QString())
Definition deck_list.cpp:594
void setComments(const QString &_comments=QString())
Definition deck_list.h:186
void setTags(const QStringList &_tags=QStringList())
Definition deck_list.h:190
~DeckList() override
Definition deck_list.cpp:91
DeckList & operator=(const DeckList &)=delete
void deckTagsChanged()
Emitted when the deck tags are modified.
virtual QString getCardZoneFromName(const QString, QString currentZoneName)
Map a card name to its zone. Override in subclasses for format-specific logic.
Definition deck_list.h:157
void setName(const QString &_name=QString())
Definition deck_list.h:182
Concrete node type representing an actual card entry in the deck.
Definition deck_list_card_node.h:48
Represents a container node in the deck list hierarchy (zones and groupings).
Definition inner_deck_list_node.h:62
const QList< MoveCard_ToZone > & getMoveList() const
Definition deck_list.h:81
void write(QXmlStreamWriter *xml)
Write this SideboardPlan to XML.
Definition deck_list.cpp:66
QString name
Human-readable name of this plan.
Definition deck_list.h:49
QList< MoveCard_ToZone > moveList
List of move instructions for this plan.
Definition deck_list.h:50
void setMoveList(const QList< MoveCard_ToZone > &_moveList)
Replace the move list with a new one.
Definition deck_list.cpp:29
SideboardPlan(const QString &_name=QString(), const QList< MoveCard_ToZone > &_moveList=QList< MoveCard_ToZone >())
Construct a new SideboardPlan.
Definition deck_list.cpp:24
bool readElement(QXmlStreamReader *xml)
Read a SideboardPlan from an XML stream.
Definition deck_list.cpp:34
QString getName() const
Definition deck_list.h:75
Defines the InnerDecklistNode class, which represents structural nodes (zones and groups) in the deck...