mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-11 00:24:47 -07:00
Give deckList a signal to emit when the tags change and hook up the display widget to that. (#5497)
* Give deckList a signal to emit when the tags change and hook up the display widget to that. * Reload from file when loading a visual deck to ensure latest changes propagate to the decklist. * Eliminate loadVisualDeck and use loadDeckFromFile instead. --------- Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
parent
55b490ade0
commit
ec0caaf421
8 changed files with 23 additions and 23 deletions
|
|
@ -21,11 +21,21 @@ DeckPreviewDeckTagsDisplayWidget::DeckPreviewDeckTagsDisplayWidget(DeckPreviewWi
|
||||||
|
|
||||||
setFixedHeight(100);
|
setFixedHeight(100);
|
||||||
|
|
||||||
auto *flowWidget = new FlowWidget(this, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAsNeeded);
|
connect(deckLoader, &DeckList::deckTagsChanged, this, &DeckPreviewDeckTagsDisplayWidget::refreshTags);
|
||||||
|
|
||||||
|
flowWidget = new FlowWidget(this, Qt::ScrollBarAlwaysOff, Qt::ScrollBarAsNeeded);
|
||||||
for (const QString &tag : this->deckLoader->getTags()) {
|
for (const QString &tag : this->deckLoader->getTags()) {
|
||||||
flowWidget->addWidget(new DeckPreviewTagDisplayWidget(this, tag));
|
flowWidget->addWidget(new DeckPreviewTagDisplayWidget(this, tag));
|
||||||
}
|
}
|
||||||
flowWidget->addWidget(new DeckPreviewTagAdditionWidget(this, tr("Edit tags ...")));
|
flowWidget->addWidget(new DeckPreviewTagAdditionWidget(this, tr("Edit tags ...")));
|
||||||
layout->addWidget(flowWidget);
|
layout->addWidget(flowWidget);
|
||||||
|
}
|
||||||
|
|
||||||
|
void DeckPreviewDeckTagsDisplayWidget::refreshTags()
|
||||||
|
{
|
||||||
|
flowWidget->clearLayout();
|
||||||
|
for (const QString &tag : this->deckLoader->getTags()) {
|
||||||
|
flowWidget->addWidget(new DeckPreviewTagDisplayWidget(this, tag));
|
||||||
|
}
|
||||||
|
flowWidget->addWidget(new DeckPreviewTagAdditionWidget(this, tr("Edit tags ...")));
|
||||||
}
|
}
|
||||||
|
|
@ -13,7 +13,9 @@ class DeckPreviewDeckTagsDisplayWidget : public QWidget
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit DeckPreviewDeckTagsDisplayWidget(DeckPreviewWidget *_parent, DeckLoader *_deckLoader);
|
explicit DeckPreviewDeckTagsDisplayWidget(DeckPreviewWidget *_parent, DeckLoader *_deckLoader);
|
||||||
|
void refreshTags();
|
||||||
DeckPreviewWidget *parent;
|
DeckPreviewWidget *parent;
|
||||||
DeckLoader *deckLoader;
|
DeckLoader *deckLoader;
|
||||||
|
FlowWidget *flowWidget;
|
||||||
};
|
};
|
||||||
#endif // DECK_PREVIEW_DECK_TAGS_DISPLAY_WIDGET_H
|
#endif // DECK_PREVIEW_DECK_TAGS_DISPLAY_WIDGET_H
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,6 @@ void DeckPreviewTagAdditionWidget::mousePressEvent(QMouseEvent *event)
|
||||||
QStringList updatedTags = dialog.getActiveTags();
|
QStringList updatedTags = dialog.getActiveTags();
|
||||||
parent->deckLoader->setTags(updatedTags);
|
parent->deckLoader->setTags(updatedTags);
|
||||||
parent->deckLoader->saveToFile(parent->parent->filePath, DeckLoader::CockatriceFormat);
|
parent->deckLoader->saveToFile(parent->parent->filePath, DeckLoader::CockatriceFormat);
|
||||||
parent->parent->parent->refreshBannerCards();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,7 @@ void VisualDeckStorageWidget::deckPreviewClickedEvent(QMouseEvent *event, DeckPr
|
||||||
void VisualDeckStorageWidget::deckPreviewDoubleClickedEvent(QMouseEvent *event, DeckPreviewWidget *instance)
|
void VisualDeckStorageWidget::deckPreviewDoubleClickedEvent(QMouseEvent *event, DeckPreviewWidget *instance)
|
||||||
{
|
{
|
||||||
emit deckPreviewDoubleClicked(event, instance);
|
emit deckPreviewDoubleClicked(event, instance);
|
||||||
|
emit deckLoadRequested(instance->filePath);
|
||||||
}
|
}
|
||||||
|
|
||||||
void VisualDeckStorageWidget::refreshBannerCards()
|
void VisualDeckStorageWidget::refreshBannerCards()
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ signals:
|
||||||
void bannerCardsRefreshed();
|
void bannerCardsRefreshed();
|
||||||
void deckPreviewClicked(QMouseEvent *event, DeckPreviewWidget *instance);
|
void deckPreviewClicked(QMouseEvent *event, DeckPreviewWidget *instance);
|
||||||
void deckPreviewDoubleClicked(QMouseEvent *event, DeckPreviewWidget *instance);
|
void deckPreviewDoubleClicked(QMouseEvent *event, DeckPreviewWidget *instance);
|
||||||
|
void deckLoadRequested(QString &filePath);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QVBoxLayout *layout;
|
QVBoxLayout *layout;
|
||||||
|
|
|
||||||
|
|
@ -86,8 +86,8 @@ DeckViewContainer::DeckViewContainer(int _playerId, TabGame *parent)
|
||||||
connect(deckView, SIGNAL(sideboardPlanChanged()), this, SLOT(sideboardPlanChanged()));
|
connect(deckView, SIGNAL(sideboardPlanChanged()), this, SLOT(sideboardPlanChanged()));
|
||||||
|
|
||||||
visualDeckStorageWidget = new VisualDeckStorageWidget(this);
|
visualDeckStorageWidget = new VisualDeckStorageWidget(this);
|
||||||
connect(visualDeckStorageWidget, &VisualDeckStorageWidget::deckPreviewDoubleClicked, this,
|
connect(visualDeckStorageWidget, &VisualDeckStorageWidget::deckLoadRequested, this,
|
||||||
&DeckViewContainer::loadVisualDeck);
|
&DeckViewContainer::loadDeckFromFile);
|
||||||
|
|
||||||
deckViewLayout = new QVBoxLayout;
|
deckViewLayout = new QVBoxLayout;
|
||||||
deckViewLayout->addLayout(buttonHBox);
|
deckViewLayout->addLayout(buttonHBox);
|
||||||
|
|
@ -178,24 +178,6 @@ void DeckViewContainer::refreshShortcuts()
|
||||||
sideboardLockButton->setShortcut(shortcuts.getSingleShortcut("DeckViewContainer/sideboardLockButton"));
|
sideboardLockButton->setShortcut(shortcuts.getSingleShortcut("DeckViewContainer/sideboardLockButton"));
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeckViewContainer::loadVisualDeck(QMouseEvent *event, DeckPreviewWidget *instance)
|
|
||||||
{
|
|
||||||
Q_UNUSED(event);
|
|
||||||
QString deckString = instance->deckLoader->writeToString_Native();
|
|
||||||
|
|
||||||
if (deckString.length() > MAX_FILE_LENGTH) {
|
|
||||||
QMessageBox::critical(this, tr("Error"), tr("The selected file could not be loaded."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Command_DeckSelect cmd;
|
|
||||||
cmd.set_deck(deckString.toStdString());
|
|
||||||
PendingCommand *pend = parentGame->prepareGameCommand(cmd);
|
|
||||||
connect(pend, SIGNAL(finished(Response, CommandContainer, QVariant)), this,
|
|
||||||
SLOT(deckSelectFinished(const Response &)));
|
|
||||||
parentGame->sendGameCommand(pend, playerId);
|
|
||||||
}
|
|
||||||
|
|
||||||
void DeckViewContainer::unloadDeck()
|
void DeckViewContainer::unloadDeck()
|
||||||
{
|
{
|
||||||
switchToDeckSelectView();
|
switchToDeckSelectView();
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,6 @@ private:
|
||||||
private slots:
|
private slots:
|
||||||
void switchToDeckSelectView();
|
void switchToDeckSelectView();
|
||||||
void switchToDeckLoadedView();
|
void switchToDeckLoadedView();
|
||||||
void loadVisualDeck(QMouseEvent *event, DeckPreviewWidget *instance);
|
|
||||||
void loadLocalDeck();
|
void loadLocalDeck();
|
||||||
void loadRemoteDeck();
|
void loadRemoteDeck();
|
||||||
void unloadDeck();
|
void unloadDeck();
|
||||||
|
|
@ -77,6 +76,8 @@ public:
|
||||||
void readyAndUpdate();
|
void readyAndUpdate();
|
||||||
void setSideboardLocked(bool locked);
|
void setSideboardLocked(bool locked);
|
||||||
void setDeck(const DeckLoader &deck);
|
void setDeck(const DeckLoader &deck);
|
||||||
|
|
||||||
|
public slots:
|
||||||
void loadDeckFromFile(const QString &filePath);
|
void loadDeckFromFile(const QString &filePath);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -272,6 +272,7 @@ protected:
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void deckHashChanged();
|
void deckHashChanged();
|
||||||
|
void deckTagsChanged();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void setName(const QString &_name = QString())
|
void setName(const QString &_name = QString())
|
||||||
|
|
@ -285,14 +286,17 @@ public slots:
|
||||||
void setTags(const QStringList &_tags = QStringList())
|
void setTags(const QStringList &_tags = QStringList())
|
||||||
{
|
{
|
||||||
tags = _tags;
|
tags = _tags;
|
||||||
|
emit deckTagsChanged();
|
||||||
}
|
}
|
||||||
void addTag(const QString &_tag)
|
void addTag(const QString &_tag)
|
||||||
{
|
{
|
||||||
tags.append(_tag);
|
tags.append(_tag);
|
||||||
|
emit deckTagsChanged();
|
||||||
}
|
}
|
||||||
void clearTags()
|
void clearTags()
|
||||||
{
|
{
|
||||||
tags.clear();
|
tags.clear();
|
||||||
|
emit deckTagsChanged();
|
||||||
}
|
}
|
||||||
void setBannerCard(const QPair<QString, QString> &_bannerCard = QPair<QString, QString>())
|
void setBannerCard(const QPair<QString, QString> &_bannerCard = QPair<QString, QString>())
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue