Token dialog fixes (#3711)

* Token dialog fixes

* clangify

* edit custom tokens

* Fix in-game token dialog
This commit is contained in:
ctrlaltca 2019-05-09 09:37:27 +02:00 committed by GitHub
parent 3830c85ce6
commit 6c21855f98
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 43 additions and 11 deletions

View file

@ -327,8 +327,8 @@ CardDatabase::CardDatabase(QObject *parent) : QObject(parent), loadStatus(NotLoa
qRegisterMetaType<CardInfoPtr>("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);

View file

@ -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<CardDatabaseModel *>(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);
}

View file

@ -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

View file

@ -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 &current, const QModelIndex & /* previous */)
@ -123,7 +123,7 @@ void DlgEditTokens::tokenSelectionChanged(const QModelIndex &current, 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<CardRelation *>(),
QList<CardRelation *>(), sets, false, -1, false);
card->setCardType("Token");
card->addToSet(databaseModel->getDatabase()->getSet(CardDatabase::TOKENS_SETNAME));
databaseModel->getDatabase()->addCard(card);
}

View file

@ -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;

View file

@ -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",

View file

@ -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"));