From e4b3ff069002475f31119850f378b4674a9b2151 Mon Sep 17 00:00:00 2001 From: RickyRister Date: Fri, 28 Feb 2025 21:08:54 -0800 Subject: [PATCH] implement functionality in dlg --- .../dialogs/dlg_load_deck_from_clipboard.cpp | 46 ++++++++++++++++--- .../dialogs/dlg_load_deck_from_clipboard.h | 1 + 2 files changed, 40 insertions(+), 7 deletions(-) diff --git a/cockatrice/src/dialogs/dlg_load_deck_from_clipboard.cpp b/cockatrice/src/dialogs/dlg_load_deck_from_clipboard.cpp index 47c1af242..26d9c7ab0 100644 --- a/cockatrice/src/dialogs/dlg_load_deck_from_clipboard.cpp +++ b/cockatrice/src/dialogs/dlg_load_deck_from_clipboard.cpp @@ -46,9 +46,41 @@ DlgLoadDeckFromClipboard::DlgLoadDeckFromClipboard(QWidget *parent) : QDialog(pa refreshShortcuts(); } +/** + * Loads the contents of the DeckList into a String + * @param deckList The deck to load + * @return A QString + */ +static QString deckListToString(const DeckLoader *deckList) +{ + QString buffer; + QTextStream stream(&buffer); + deckList->saveToStream_Plain(stream); + return buffer; +} + +/** + * Creates a dialogue window that already has the contents of the deck loaded into the textEdit + * + * @param deck The deck to load + * @param parent The parent widget + */ +DlgLoadDeckFromClipboard::DlgLoadDeckFromClipboard(const DeckLoader &deck, QWidget *parent) + : DlgLoadDeckFromClipboard(parent) +{ + deckList = new DeckLoader(deck); + deckList->setParent(this); + + contentsEdit->setPlainText(deckListToString(deckList)); +} + void DlgLoadDeckFromClipboard::actRefresh() { - contentsEdit->setPlainText(QApplication::clipboard()->text()); + if (deckList) { + contentsEdit->setPlainText(deckListToString(deckList)); + } else { + contentsEdit->setPlainText(QApplication::clipboard()->text()); + } } void DlgLoadDeckFromClipboard::refreshShortcuts() @@ -62,18 +94,18 @@ void DlgLoadDeckFromClipboard::actOK() QString buffer = contentsEdit->toPlainText(); QTextStream stream(&buffer); - auto *deckLoader = new DeckLoader; - deckLoader->setParent(this); + if (!deckList) { + deckList = new DeckLoader; + deckList->setParent(this); + } if (buffer.contains("")) { - if (deckLoader->loadFromString_Native(buffer)) { - deckList = deckLoader; + if (deckList->loadFromString_Native(buffer)) { accept(); } else { QMessageBox::critical(this, tr("Error"), tr("Invalid deck list.")); } - } else if (deckLoader->loadFromStream_Plain(stream)) { - deckList = deckLoader; + } else if (deckList->loadFromStream_Plain(stream)) { if (loadSetNameAndNumberCheckBox->isChecked()) { deckList->resolveSetNameAndNumberToProviderID(); } else { diff --git a/cockatrice/src/dialogs/dlg_load_deck_from_clipboard.h b/cockatrice/src/dialogs/dlg_load_deck_from_clipboard.h index 19d8cfff8..d54b1a098 100644 --- a/cockatrice/src/dialogs/dlg_load_deck_from_clipboard.h +++ b/cockatrice/src/dialogs/dlg_load_deck_from_clipboard.h @@ -24,6 +24,7 @@ private: public: explicit DlgLoadDeckFromClipboard(QWidget *parent = nullptr); + explicit DlgLoadDeckFromClipboard(const DeckLoader &deck, QWidget *parent = nullptr); /** * Gets the loaded deck. Only call this method after this dialog window has been successfully exec'd.