refactor saveDeckToClipboard in AbstractTabDeckEditor (#5671)

* refactor saveDeckToClipboard in AbstractTabDeckEditor

* make deckloader functions const

* use const

* move method into DeckLoader
This commit is contained in:
RickyRister 2025-03-01 06:21:31 -08:00 committed by GitHub
parent 58a2b7ff39
commit 2a9599eed8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 29 additions and 41 deletions

View file

@ -391,38 +391,22 @@ void AbstractTabDeckEditor::actLoadDeckFromClipboard()
void AbstractTabDeckEditor::actSaveDeckToClipboard() void AbstractTabDeckEditor::actSaveDeckToClipboard()
{ {
QString buffer; getDeckList()->saveToClipboard(true, true);
QTextStream stream(&buffer);
getDeckList()->saveToStream_Plain(stream);
QApplication::clipboard()->setText(buffer, QClipboard::Clipboard);
QApplication::clipboard()->setText(buffer, QClipboard::Selection);
} }
void AbstractTabDeckEditor::actSaveDeckToClipboardNoSetNameAndNumber() void AbstractTabDeckEditor::actSaveDeckToClipboardNoSetNameAndNumber()
{ {
QString buffer; getDeckList()->saveToClipboard(true, false);
QTextStream stream(&buffer);
getDeckList()->saveToStream_Plain(stream, true, false);
QApplication::clipboard()->setText(buffer, QClipboard::Clipboard);
QApplication::clipboard()->setText(buffer, QClipboard::Selection);
} }
void AbstractTabDeckEditor::actSaveDeckToClipboardRaw() void AbstractTabDeckEditor::actSaveDeckToClipboardRaw()
{ {
QString buffer; getDeckList()->saveToClipboard(false, true);
QTextStream stream(&buffer);
getDeckList()->saveToStream_Plain(stream, false);
QApplication::clipboard()->setText(buffer, QClipboard::Clipboard);
QApplication::clipboard()->setText(buffer, QClipboard::Selection);
} }
void AbstractTabDeckEditor::actSaveDeckToClipboardRawNoSetNameAndNumber() void AbstractTabDeckEditor::actSaveDeckToClipboardRawNoSetNameAndNumber()
{ {
QString buffer; getDeckList()->saveToClipboard(false, false);
QTextStream stream(&buffer);
getDeckList()->saveToStream_Plain(stream, false, false);
QApplication::clipboard()->setText(buffer, QClipboard::Clipboard);
QApplication::clipboard()->setText(buffer, QClipboard::Selection);
} }
void AbstractTabDeckEditor::actPrintDeck() void AbstractTabDeckEditor::actPrintDeck()

View file

@ -278,15 +278,6 @@ void DeckPreviewWidget::imageDoubleClickedEvent(QMouseEvent *event, DeckPreviewC
emit deckLoadRequested(filePath); emit deckLoadRequested(filePath);
} }
static void saveDeckToClipboard(DeckLoader *deckLoader, bool addComments, bool addSetNameAndNumber)
{
QString buffer;
QTextStream stream(&buffer);
deckLoader->saveToStream_Plain(stream, addComments, addSetNameAndNumber);
QApplication::clipboard()->setText(buffer, QClipboard::Clipboard);
QApplication::clipboard()->setText(buffer, QClipboard::Selection);
}
QMenu *DeckPreviewWidget::createRightClickMenu() QMenu *DeckPreviewWidget::createRightClickMenu()
{ {
auto *menu = new QMenu(this); auto *menu = new QMenu(this);
@ -303,13 +294,13 @@ QMenu *DeckPreviewWidget::createRightClickMenu()
auto saveToClipboardMenu = menu->addMenu(tr("Save Deck to Clipboard")); auto saveToClipboardMenu = menu->addMenu(tr("Save Deck to Clipboard"));
connect(saveToClipboardMenu->addAction(tr("Annotated")), &QAction::triggered, this, connect(saveToClipboardMenu->addAction(tr("Annotated")), &QAction::triggered, this,
[this] { saveDeckToClipboard(deckLoader, true, true); }); [this] { deckLoader->saveToClipboard(true, true); });
connect(saveToClipboardMenu->addAction(tr("Annotated (No set name or number)")), &QAction::triggered, this, connect(saveToClipboardMenu->addAction(tr("Annotated (No set name or number)")), &QAction::triggered, this,
[this] { saveDeckToClipboard(deckLoader, true, false); }); [this] { deckLoader->saveToClipboard(true, false); });
connect(saveToClipboardMenu->addAction(tr("Not Annotated")), &QAction::triggered, this, connect(saveToClipboardMenu->addAction(tr("Not Annotated")), &QAction::triggered, this,
[this] { saveDeckToClipboard(deckLoader, false, true); }); [this] { deckLoader->saveToClipboard(false, true); });
connect(saveToClipboardMenu->addAction(tr("Not Annotated (No set name or number)")), &QAction::triggered, this, connect(saveToClipboardMenu->addAction(tr("Not Annotated (No set name or number)")), &QAction::triggered, this,
[this] { saveDeckToClipboard(deckLoader, false, false); }); [this] { deckLoader->saveToClipboard(false, false); });
return menu; return menu;
} }

View file

@ -5,6 +5,8 @@
#include "../main.h" #include "../main.h"
#include "decklist.h" #include "decklist.h"
#include <QApplication>
#include <QClipboard>
#include <QDebug> #include <QDebug>
#include <QDir> #include <QDir>
#include <QFile> #include <QFile>
@ -372,7 +374,16 @@ DeckLoader::FileFormat DeckLoader::getFormatFromName(const QString &fileName)
return PlainTextFormat; return PlainTextFormat;
} }
bool DeckLoader::saveToStream_Plain(QTextStream &out, bool addComments, bool addSetNameAndNumber) void DeckLoader::saveToClipboard(bool addComments, bool addSetNameAndNumber) const
{
QString buffer;
QTextStream stream(&buffer);
saveToStream_Plain(stream, addComments, addSetNameAndNumber);
QApplication::clipboard()->setText(buffer, QClipboard::Clipboard);
QApplication::clipboard()->setText(buffer, QClipboard::Selection);
}
bool DeckLoader::saveToStream_Plain(QTextStream &out, bool addComments, bool addSetNameAndNumber) const
{ {
if (addComments) { if (addComments) {
saveToStream_DeckHeader(out); saveToStream_DeckHeader(out);
@ -391,7 +402,7 @@ bool DeckLoader::saveToStream_Plain(QTextStream &out, bool addComments, bool add
return true; return true;
} }
void DeckLoader::saveToStream_DeckHeader(QTextStream &out) void DeckLoader::saveToStream_DeckHeader(QTextStream &out) const
{ {
if (!getName().isEmpty()) { if (!getName().isEmpty()) {
out << "// " << getName() << "\n\n"; out << "// " << getName() << "\n\n";
@ -409,7 +420,7 @@ void DeckLoader::saveToStream_DeckHeader(QTextStream &out)
void DeckLoader::saveToStream_DeckZone(QTextStream &out, void DeckLoader::saveToStream_DeckZone(QTextStream &out,
const InnerDecklistNode *zoneNode, const InnerDecklistNode *zoneNode,
bool addComments, bool addComments,
bool addSetNameAndNumber) bool addSetNameAndNumber) const
{ {
// 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;
@ -457,7 +468,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) bool addSetNameAndNumber) const
{ {
// 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) {

View file

@ -62,21 +62,23 @@ public:
void resolveSetNameAndNumberToProviderID(); void resolveSetNameAndNumberToProviderID();
void saveToClipboard(bool addComments = true, bool addSetNameAndNumber = true) const;
// overload // overload
bool saveToStream_Plain(QTextStream &out, bool addComments = true, bool addSetNameAndNumber = true); bool saveToStream_Plain(QTextStream &out, bool addComments = true, bool addSetNameAndNumber = true) const;
bool convertToCockatriceFormat(QString fileName); bool convertToCockatriceFormat(QString fileName);
protected: protected:
void saveToStream_DeckHeader(QTextStream &out); void saveToStream_DeckHeader(QTextStream &out) const;
void saveToStream_DeckZone(QTextStream &out, void saveToStream_DeckZone(QTextStream &out,
const InnerDecklistNode *zoneNode, const InnerDecklistNode *zoneNode,
bool addComments = true, bool addComments = true,
bool addSetNameAndNumber = true); bool addSetNameAndNumber = true) const;
void saveToStream_DeckZoneCards(QTextStream &out, void saveToStream_DeckZoneCards(QTextStream &out,
const InnerDecklistNode *zoneNode, const InnerDecklistNode *zoneNode,
QList<DecklistCardNode *> cards, QList<DecklistCardNode *> cards,
bool addComments = true, bool addComments = true,
bool addSetNameAndNumber = true); bool addSetNameAndNumber = true) const;
[[nodiscard]] QString getCardZoneFromName(QString cardName, QString currentZoneName) override; [[nodiscard]] QString getCardZoneFromName(QString cardName, QString currentZoneName) override;
[[nodiscard]] QString getCompleteCardName(const QString &cardName) const override; [[nodiscard]] QString getCompleteCardName(const QString &cardName) const override;
}; };