diff --git a/cockatrice/src/carddatabase.cpp b/cockatrice/src/carddatabase.cpp index a75f150c..42e05a60 100644 --- a/cockatrice/src/carddatabase.cpp +++ b/cockatrice/src/carddatabase.cpp @@ -327,8 +327,8 @@ CardDatabase::CardDatabase(QObject *parent) : QObject(parent), loadStatus(NotLoa qRegisterMetaType("CardSetPtr"); // add new parsers here - availableParsers << new CockatriceXml3Parser; availableParsers << new CockatriceXml4Parser; + availableParsers << new CockatriceXml3Parser; for (auto &parser : availableParsers) { connect(parser, SIGNAL(addCard(CardInfoPtr)), this, SLOT(addCard(CardInfoPtr)), Qt::DirectConnection); diff --git a/cockatrice/src/carddatabasemodel.cpp b/cockatrice/src/carddatabasemodel.cpp index 6a4b4055..87f6a9fb 100644 --- a/cockatrice/src/carddatabasemodel.cpp +++ b/cockatrice/src/carddatabasemodel.cpp @@ -349,6 +349,7 @@ const QString CardDatabaseDisplayModel::sanitizeCardName(const QString &dirtyNam } return QString::fromStdWString(toReturn); } + TokenDisplayModel::TokenDisplayModel(QObject *parent) : CardDatabaseDisplayModel(parent) { } @@ -364,3 +365,19 @@ int TokenDisplayModel::rowCount(const QModelIndex &parent) const // always load all tokens at start return QSortFilterProxyModel::rowCount(parent); } + +TokenEditModel::TokenEditModel(QObject *parent) : CardDatabaseDisplayModel(parent) +{ +} + +bool TokenEditModel::filterAcceptsRow(int sourceRow, const QModelIndex & /*sourceParent*/) const +{ + CardInfoPtr info = static_cast(sourceModel())->getCard(sourceRow); + return info->getIsToken() && info->getSets().contains(CardDatabase::TOKENS_SETNAME) && rowMatchesCardName(info); +} + +int TokenEditModel::rowCount(const QModelIndex &parent) const +{ + // always load all tokens at start + return QSortFilterProxyModel::rowCount(parent); +} diff --git a/cockatrice/src/carddatabasemodel.h b/cockatrice/src/carddatabasemodel.h index a2f90118..7c993d53 100644 --- a/cockatrice/src/carddatabasemodel.h +++ b/cockatrice/src/carddatabasemodel.h @@ -140,4 +140,15 @@ protected: bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; }; +class TokenEditModel : public CardDatabaseDisplayModel +{ + Q_OBJECT +public: + explicit TokenEditModel(QObject *parent = nullptr); + int rowCount(const QModelIndex &parent = QModelIndex()) const override; + +protected: + bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; +}; + #endif diff --git a/cockatrice/src/dlg_edit_tokens.cpp b/cockatrice/src/dlg_edit_tokens.cpp index 81ce5875..9df57705 100644 --- a/cockatrice/src/dlg_edit_tokens.cpp +++ b/cockatrice/src/dlg_edit_tokens.cpp @@ -61,7 +61,7 @@ DlgEditTokens::DlgEditTokens(QWidget *parent) : QDialog(parent), currentCard(nul databaseModel = new CardDatabaseModel(db, false, this); databaseModel->setObjectName("databaseModel"); - cardDatabaseDisplayModel = new TokenDisplayModel(this); + cardDatabaseDisplayModel = new TokenEditModel(this); cardDatabaseDisplayModel->setSourceModel(databaseModel); cardDatabaseDisplayModel->setIsToken(CardDatabaseDisplayModel::ShowTrue); @@ -110,7 +110,7 @@ DlgEditTokens::DlgEditTokens(QWidget *parent) : QDialog(parent), currentCard(nul mainLayout->addWidget(buttonBox); setLayout(mainLayout); - setWindowTitle(tr("Edit tokens")); + setWindowTitle(tr("Edit custom tokens")); } void DlgEditTokens::tokenSelectionChanged(const QModelIndex ¤t, const QModelIndex & /* previous */) @@ -123,7 +123,7 @@ void DlgEditTokens::tokenSelectionChanged(const QModelIndex ¤t, const QMod currentCard.clear(); } - if (!currentCard) { + if (currentCard) { nameEdit->setText(currentCard->getName()); const QChar cardColor = currentCard->getColorChar(); colorEdit->setCurrentIndex(colorEdit->findData(cardColor, Qt::UserRole, Qt::MatchFixedString)); @@ -154,9 +154,12 @@ void DlgEditTokens::actAddToken() } } while (askAgain); - CardInfoPtr card = CardInfo::newInstance(name, "", true); + QString setName = CardDatabase::TOKENS_SETNAME; + CardInfoPerSetMap sets; + sets.insert(setName, CardInfoPerSet(databaseModel->getDatabase()->getSet(setName))); + CardInfoPtr card = CardInfo::newInstance(name, "", true, QVariantHash(), QList(), + QList(), sets, false, -1, false); card->setCardType("Token"); - card->addToSet(databaseModel->getDatabase()->getSet(CardDatabase::TOKENS_SETNAME)); databaseModel->getDatabase()->addCard(card); } diff --git a/cockatrice/src/dlg_edit_tokens.h b/cockatrice/src/dlg_edit_tokens.h index 4f3f5eaf..f576090c 100644 --- a/cockatrice/src/dlg_edit_tokens.h +++ b/cockatrice/src/dlg_edit_tokens.h @@ -6,7 +6,7 @@ class QModelIndex; class CardDatabaseModel; -class TokenDisplayModel; +class TokenEditModel; class QLabel; class QComboBox; class QLineEdit; @@ -27,7 +27,7 @@ private slots: private: CardInfoPtr currentCard; CardDatabaseModel *databaseModel; - TokenDisplayModel *cardDatabaseDisplayModel; + TokenEditModel *cardDatabaseDisplayModel; QStringList predefinedTokens; QLabel *nameLabel, *colorLabel, *ptLabel, *annotationLabel; QComboBox *colorEdit; diff --git a/cockatrice/src/shortcutssettings.h b/cockatrice/src/shortcutssettings.h index 3714d800..f59f37d5 100644 --- a/cockatrice/src/shortcutssettings.h +++ b/cockatrice/src/shortcutssettings.h @@ -171,8 +171,9 @@ private: SK(QT_TRANSLATE_NOOP("shortcutsTab", "Remove card"), parseSequenceString("-"), ShortcutGroup::Deck_Editor)}, {"TabDeckEditor/aManageSets", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Manage sets"), parseSequenceString(""), ShortcutGroup::Deck_Editor)}, - {"TabDeckEditor/aEditTokens", - SK(QT_TRANSLATE_NOOP("shortcutsTab", "Edit tokens"), parseSequenceString(""), ShortcutGroup::Deck_Editor)}, + {"TabDeckEditor/aEditTokens", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Edit custom tokens"), + parseSequenceString(""), + ShortcutGroup::Deck_Editor)}, {"TabDeckEditor/aExportDeckDecklist", SK(QT_TRANSLATE_NOOP("shortcutsTab", "Export deck"), parseSequenceString(""), ShortcutGroup::Deck_Editor)}, {"TabDeckEditor/aIncrement", diff --git a/cockatrice/src/window_main.cpp b/cockatrice/src/window_main.cpp index c366222b..c6e43cb3 100644 --- a/cockatrice/src/window_main.cpp +++ b/cockatrice/src/window_main.cpp @@ -640,7 +640,7 @@ void MainWindow::retranslateUi() aOpenCustomsetsFolder->setText(tr("Open custom sets folder")); aAddCustomSet->setText(tr("Add custom sets/cards")); aManageSets->setText(tr("&Manage sets...")); - aEditTokens->setText(tr("Edit &tokens...")); + aEditTokens->setText(tr("Edit custom &tokens...")); aAbout->setText(tr("&About Cockatrice")); aTips->setText(tr("&Tip of the Day"));