From a28300ac42503e49b984d885072ed50b583667e0 Mon Sep 17 00:00:00 2001 From: RickyRister <42636155+RickyRister@users.noreply.github.com> Date: Sat, 15 Feb 2025 20:18:47 -0800 Subject: [PATCH] add "save deck to clipboard" to VDS right click menu (#5625) --- .../deck_preview/deck_preview_widget.cpp | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) 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; }