Fix edit deck in clipboard clearing values (#5732)

* Fix edit deck in clipboard clearing values

* fix build failures
This commit is contained in:
RickyRister 2025-03-16 16:30:12 -07:00 committed by GitHub
parent 4d8a124822
commit 0d2061365c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 26 additions and 12 deletions

View file

@ -80,7 +80,7 @@ bool AbstractDlgDeckTextEdit::loadIntoDeck(DeckLoader *deckLoader) const
QTextStream stream(&buffer); QTextStream stream(&buffer);
if (deckLoader->loadFromStream_Plain(stream)) { if (deckLoader->loadFromStream_Plain(stream, true)) {
if (loadSetNameAndNumberCheckBox->isChecked()) { if (loadSetNameAndNumberCheckBox->isChecked()) {
deckLoader->resolveSetNameAndNumberToProviderID(); deckLoader->resolveSetNameAndNumberToProviderID();
} else { } else {

View file

@ -548,7 +548,14 @@ bool DeckList::saveToFile_Native(QIODevice *device)
return true; return true;
} }
bool DeckList::loadFromStream_Plain(QTextStream &in) /**
* Clears the decklist and loads in a new deck from text
*
* @param in The text to load
* @param preserveMetadata If true, don't clear the existing metadata
* @return False if the input was empty, true otherwise.
*/
bool DeckList::loadFromStream_Plain(QTextStream &in, bool preserveMetadata)
{ {
const QRegularExpression reCardLine(R"(^\s*[\w\[\(\{].*$)", QRegularExpression::UseUnicodePropertiesOption); const QRegularExpression reCardLine(R"(^\s*[\w\[\(\{].*$)", QRegularExpression::UseUnicodePropertiesOption);
const QRegularExpression reEmpty("^\\s*$"); const QRegularExpression reEmpty("^\\s*$");
@ -577,7 +584,7 @@ bool DeckList::loadFromStream_Plain(QTextStream &in)
{QRegularExpression("æ"), QString("ae")}, {QRegularExpression("æ"), QString("ae")},
{QRegularExpression(" ?[|/]+ ?"), QString(" // ")}}; {QRegularExpression(" ?[|/]+ ?"), QString(" // ")}};
cleanList(); cleanList(preserveMetadata);
auto inputs = in.readAll().trimmed().split('\n'); auto inputs = in.readAll().trimmed().split('\n');
auto max_line = inputs.size(); auto max_line = inputs.size();
@ -752,7 +759,7 @@ InnerDecklistNode *DeckList::getZoneObjFromName(const QString &zoneName)
bool DeckList::loadFromFile_Plain(QIODevice *device) bool DeckList::loadFromFile_Plain(QIODevice *device)
{ {
QTextStream in(device); QTextStream in(device);
return loadFromStream_Plain(in); return loadFromStream_Plain(in, false);
} }
struct WriteToStream struct WriteToStream
@ -801,12 +808,19 @@ QString DeckList::writeToString_Plain(bool prefixSideboardCards, bool slashTappe
return result; return result;
} }
void DeckList::cleanList() /**
* Clears all cards and other data from the decklist
*
* @param preserveMetadata If true, only clear the cards
*/
void DeckList::cleanList(bool preserveMetadata)
{ {
root->clearTree(); root->clearTree();
setName(); if (!preserveMetadata) {
setComments(); setName();
setTags(); setComments();
setTags();
}
refreshDeckHash(); refreshDeckHash();
} }

View file

@ -351,13 +351,13 @@ public:
QString writeToString_Native(); QString writeToString_Native();
bool loadFromFile_Native(QIODevice *device); bool loadFromFile_Native(QIODevice *device);
bool saveToFile_Native(QIODevice *device); bool saveToFile_Native(QIODevice *device);
bool loadFromStream_Plain(QTextStream &stream); bool loadFromStream_Plain(QTextStream &stream, bool preserveMetadata);
bool loadFromFile_Plain(QIODevice *device); bool loadFromFile_Plain(QIODevice *device);
bool saveToStream_Plain(QTextStream &stream, bool prefixSideboardCards, bool slashTappedOutSplitCards); bool saveToStream_Plain(QTextStream &stream, bool prefixSideboardCards, bool slashTappedOutSplitCards);
bool saveToFile_Plain(QIODevice *device, bool prefixSideboardCards = true, bool slashTappedOutSplitCards = false); bool saveToFile_Plain(QIODevice *device, bool prefixSideboardCards = true, bool slashTappedOutSplitCards = false);
QString writeToString_Plain(bool prefixSideboardCards = true, bool slashTappedOutSplitCards = false); QString writeToString_Plain(bool prefixSideboardCards = true, bool slashTappedOutSplitCards = false);
void cleanList(); void cleanList(bool preserveMetadata = false);
bool isEmpty() const bool isEmpty() const
{ {
return root->isEmpty() && name.isEmpty() && comments.isEmpty() && sideboardPlans.isEmpty(); return root->isEmpty() && name.isEmpty() && comments.isEmpty() && sideboardPlans.isEmpty();

View file

@ -18,7 +18,7 @@ void testEmpty(const QString &clipboard)
QString cp(clipboard); QString cp(clipboard);
DeckList deckList; DeckList deckList;
QTextStream stream(&cp); // text stream requires local copy QTextStream stream(&cp); // text stream requires local copy
deckList.loadFromStream_Plain(stream); deckList.loadFromStream_Plain(stream, false);
ASSERT_TRUE(deckList.getCardList().isEmpty()); ASSERT_TRUE(deckList.getCardList().isEmpty());
} }
@ -28,7 +28,7 @@ void testDeck(const QString &clipboard, const Result &result)
QString cp(clipboard); QString cp(clipboard);
DeckList deckList; DeckList deckList;
QTextStream stream(&cp); // text stream requires local copy QTextStream stream(&cp); // text stream requires local copy
deckList.loadFromStream_Plain(stream); deckList.loadFromStream_Plain(stream, false);
ASSERT_EQ(result.name, deckList.getName().toStdString()); ASSERT_EQ(result.name, deckList.getName().toStdString());
ASSERT_EQ(result.comments, deckList.getComments().toStdString()); ASSERT_EQ(result.comments, deckList.getComments().toStdString());