diff --git a/cockatrice/src/client/tabs/abstract_tab_deck_editor.cpp b/cockatrice/src/client/tabs/abstract_tab_deck_editor.cpp index fdcbd372f..23b6124be 100644 --- a/cockatrice/src/client/tabs/abstract_tab_deck_editor.cpp +++ b/cockatrice/src/client/tabs/abstract_tab_deck_editor.cpp @@ -391,38 +391,22 @@ void AbstractTabDeckEditor::actLoadDeckFromClipboard() void AbstractTabDeckEditor::actSaveDeckToClipboard() { - QString buffer; - QTextStream stream(&buffer); - getDeckList()->saveToStream_Plain(stream); - QApplication::clipboard()->setText(buffer, QClipboard::Clipboard); - QApplication::clipboard()->setText(buffer, QClipboard::Selection); + getDeckList()->saveToClipboard(true, true); } void AbstractTabDeckEditor::actSaveDeckToClipboardNoSetNameAndNumber() { - QString buffer; - QTextStream stream(&buffer); - getDeckList()->saveToStream_Plain(stream, true, false); - QApplication::clipboard()->setText(buffer, QClipboard::Clipboard); - QApplication::clipboard()->setText(buffer, QClipboard::Selection); + getDeckList()->saveToClipboard(true, false); } void AbstractTabDeckEditor::actSaveDeckToClipboardRaw() { - QString buffer; - QTextStream stream(&buffer); - getDeckList()->saveToStream_Plain(stream, false); - QApplication::clipboard()->setText(buffer, QClipboard::Clipboard); - QApplication::clipboard()->setText(buffer, QClipboard::Selection); + getDeckList()->saveToClipboard(false, true); } void AbstractTabDeckEditor::actSaveDeckToClipboardRawNoSetNameAndNumber() { - QString buffer; - QTextStream stream(&buffer); - getDeckList()->saveToStream_Plain(stream, false, false); - QApplication::clipboard()->setText(buffer, QClipboard::Clipboard); - QApplication::clipboard()->setText(buffer, QClipboard::Selection); + getDeckList()->saveToClipboard(false, false); } void AbstractTabDeckEditor::actPrintDeck() diff --git a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_widget.cpp b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_widget.cpp index 542dfa7a4..2a714efa9 100644 --- a/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_widget.cpp +++ b/cockatrice/src/client/ui/widgets/visual_deck_storage/deck_preview/deck_preview_widget.cpp @@ -278,15 +278,6 @@ void DeckPreviewWidget::imageDoubleClickedEvent(QMouseEvent *event, DeckPreviewC 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() { auto *menu = new QMenu(this); @@ -303,13 +294,13 @@ QMenu *DeckPreviewWidget::createRightClickMenu() auto saveToClipboardMenu = menu->addMenu(tr("Save Deck to Clipboard")); 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, - [this] { saveDeckToClipboard(deckLoader, true, false); }); + [this] { deckLoader->saveToClipboard(true, false); }); 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, - [this] { saveDeckToClipboard(deckLoader, false, false); }); + [this] { deckLoader->saveToClipboard(false, false); }); return menu; } diff --git a/cockatrice/src/deck/deck_loader.cpp b/cockatrice/src/deck/deck_loader.cpp index 5249f1bba..697905d0e 100644 --- a/cockatrice/src/deck/deck_loader.cpp +++ b/cockatrice/src/deck/deck_loader.cpp @@ -5,6 +5,8 @@ #include "../main.h" #include "decklist.h" +#include +#include #include #include #include @@ -372,7 +374,16 @@ DeckLoader::FileFormat DeckLoader::getFormatFromName(const QString &fileName) 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) { saveToStream_DeckHeader(out); @@ -391,7 +402,7 @@ bool DeckLoader::saveToStream_Plain(QTextStream &out, bool addComments, bool add return true; } -void DeckLoader::saveToStream_DeckHeader(QTextStream &out) +void DeckLoader::saveToStream_DeckHeader(QTextStream &out) const { if (!getName().isEmpty()) { out << "// " << getName() << "\n\n"; @@ -409,7 +420,7 @@ void DeckLoader::saveToStream_DeckHeader(QTextStream &out) void DeckLoader::saveToStream_DeckZone(QTextStream &out, const InnerDecklistNode *zoneNode, bool addComments, - bool addSetNameAndNumber) + bool addSetNameAndNumber) const { // group cards by card type and count the subtotals QMultiMap cardsByType; @@ -457,7 +468,7 @@ void DeckLoader::saveToStream_DeckZoneCards(QTextStream &out, const InnerDecklistNode *zoneNode, QList cards, bool addComments, - bool addSetNameAndNumber) + bool addSetNameAndNumber) const { // QMultiMap sorts values in reverse order for (int i = cards.size() - 1; i >= 0; --i) { diff --git a/cockatrice/src/deck/deck_loader.h b/cockatrice/src/deck/deck_loader.h index 8a219b0c6..5867f38ef 100644 --- a/cockatrice/src/deck/deck_loader.h +++ b/cockatrice/src/deck/deck_loader.h @@ -62,21 +62,23 @@ public: void resolveSetNameAndNumberToProviderID(); + void saveToClipboard(bool addComments = true, bool addSetNameAndNumber = true) const; + // 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); protected: - void saveToStream_DeckHeader(QTextStream &out); + void saveToStream_DeckHeader(QTextStream &out) const; void saveToStream_DeckZone(QTextStream &out, const InnerDecklistNode *zoneNode, bool addComments = true, - bool addSetNameAndNumber = true); + bool addSetNameAndNumber = true) const; void saveToStream_DeckZoneCards(QTextStream &out, const InnerDecklistNode *zoneNode, QList cards, bool addComments = true, - bool addSetNameAndNumber = true); + bool addSetNameAndNumber = true) const; [[nodiscard]] QString getCardZoneFromName(QString cardName, QString currentZoneName) override; [[nodiscard]] QString getCompleteCardName(const QString &cardName) const override; };