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 c907e697a..b3977bf44 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 @@ -5,6 +5,7 @@ #include "../../cards/deck_preview_card_picture_widget.h" #include "deck_preview_deck_tags_display_widget.h" +#include #include #include #include @@ -273,6 +274,15 @@ 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); @@ -280,5 +290,18 @@ QMenu *DeckPreviewWidget::createRightClickMenu() auto loadDeckAction = menu->addAction(tr("Load Deck")); connect(loadDeckAction, &QAction::triggered, this, [this] { emit deckLoadRequested(filePath); }); + menu->addSeparator(); + + auto saveToClipboardMenu = menu->addMenu(tr("Save Deck to Clipboard")); + + connect(saveToClipboardMenu->addAction(tr("Annotated")), &QAction::triggered, this, + [this] { saveDeckToClipboard(deckLoader, true, true); }); + connect(saveToClipboardMenu->addAction(tr("Annotated (No set name or number)")), &QAction::triggered, this, + [this] { saveDeckToClipboard(deckLoader, true, false); }); + connect(saveToClipboardMenu->addAction(tr("Not Annotated")), &QAction::triggered, this, + [this] { saveDeckToClipboard(deckLoader, false, true); }); + connect(saveToClipboardMenu->addAction(tr("Not Annotated (No set name or number)")), &QAction::triggered, this, + [this] { saveDeckToClipboard(deckLoader, false, false); }); + return menu; }