mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-09-29 09:22:18 -07:00
[DeckEditor] Offer .cod conversion when tagging non-.cod decks
When the user tags a deck loaded from a .txt file, prompt for conversion to the Cockatrice format (sharing the deck preview prompt) and convert the deck in place via DeckLoader::convertToCockatriceFormat, updating lastLoadInfo so the deck saves as .cod. Took 2 minutes
This commit is contained in:
parent
9f00ab6a11
commit
48a737d565
2 changed files with 28 additions and 0 deletions
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
#include "../../../client/settings/cache_settings.h"
|
#include "../../../client/settings/cache_settings.h"
|
||||||
#include "../../../client/settings/shortcuts_settings.h"
|
#include "../../../client/settings/shortcuts_settings.h"
|
||||||
|
#include "../../deck_loader/deck_loader.h"
|
||||||
|
#include "../dialogs/dlg_convert_deck_to_cod_format.h"
|
||||||
#include "../settings_page/user_interface_settings_page.h"
|
#include "../settings_page/user_interface_settings_page.h"
|
||||||
#include "../tabs/api/commander_spellbook/commander_bracket_widget.h"
|
#include "../tabs/api/commander_spellbook/commander_bracket_widget.h"
|
||||||
#include "deck_list_style_proxy.h"
|
#include "deck_list_style_proxy.h"
|
||||||
|
|
@ -176,6 +178,23 @@ void DeckEditorDeckDockWidget::createDeckDock()
|
||||||
connect(deckTagsDisplayWidget, &DeckPreviewDeckTagsDisplayWidget::tagsChanged, deckStateManager,
|
connect(deckTagsDisplayWidget, &DeckPreviewDeckTagsDisplayWidget::tagsChanged, deckStateManager,
|
||||||
&DeckStateManager::setTags);
|
&DeckStateManager::setTags);
|
||||||
|
|
||||||
|
// Local deck files in non-Cockatrice formats (e.g. .txt) can't store tags.
|
||||||
|
// Offer to convert the file to .cod before the user opens the tag dialog.
|
||||||
|
deckTagsDisplayWidget->setConversionPromptHandler([this] {
|
||||||
|
const LoadedDeck::LoadInfo &loadInfo = deckStateManager->getLastLoadInfo();
|
||||||
|
if (loadInfo.fileName.isEmpty()) {
|
||||||
|
return true; // A new, unsaved deck can hold tags in memory.
|
||||||
|
}
|
||||||
|
return promptFileConversionIfRequired(this, loadInfo.fileName, [this] {
|
||||||
|
LoadedDeck deck = deckStateManager->toLoadedDeck();
|
||||||
|
if (!DeckLoader::convertToCockatriceFormat(deck)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
deckStateManager->setLastLoadInfo(deck.lastLoadInfo);
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
activeGroupCriteriaLabel = new QLabel(this);
|
activeGroupCriteriaLabel = new QLabel(this);
|
||||||
|
|
||||||
activeGroupCriteriaComboBox = new QComboBox(this);
|
activeGroupCriteriaComboBox = new QComboBox(this);
|
||||||
|
|
|
||||||
|
|
@ -116,6 +116,15 @@ public:
|
||||||
*/
|
*/
|
||||||
void clearDeck();
|
void clearDeck();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Gets the lastLoadInfo.
|
||||||
|
* @return The lastLoadInfo
|
||||||
|
*/
|
||||||
|
const LoadedDeck::LoadInfo &getLastLoadInfo() const
|
||||||
|
{
|
||||||
|
return lastLoadInfo;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Sets the lastLoadInfo.
|
* @brief Sets the lastLoadInfo.
|
||||||
* @param loadInfo The lastLoadInfo
|
* @param loadInfo The lastLoadInfo
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue