mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-11 08:34:52 -07:00
Support Picking Select Art per Card Basis (#5329)
This commit is contained in:
parent
024bef7ded
commit
c7ca55ceb5
13 changed files with 115 additions and 6 deletions
|
|
@ -171,6 +171,7 @@ void PrintingSelector::getAllSetsForCurrentCard()
|
|||
} else {
|
||||
setsToUse = filteredSets;
|
||||
}
|
||||
setsToUse = sortToolBar->prependPinnedPrintings(setsToUse, selectedCard->getName());
|
||||
|
||||
// Defer widget creation
|
||||
currentIndex = 0;
|
||||
|
|
@ -182,6 +183,8 @@ void PrintingSelector::getAllSetsForCurrentCard()
|
|||
setsToUse[currentIndex], currentZone);
|
||||
flowWidget->addWidget(cardDisplayWidget);
|
||||
cardDisplayWidget->clampSetNameToPicture();
|
||||
connect(cardDisplayWidget, &PrintingSelectorCardDisplayWidget::cardPreferenceChanged, this,
|
||||
&PrintingSelector::updateDisplay);
|
||||
}
|
||||
|
||||
// Stop timer when done
|
||||
|
|
|
|||
|
|
@ -46,6 +46,8 @@ PrintingSelectorCardDisplayWidget::PrintingSelectorCardDisplayWidget(QWidget *pa
|
|||
// Create the overlay widget for the card display
|
||||
overlayWidget = new PrintingSelectorCardOverlayWidget(this, deckEditor, deckModel, deckView, cardSizeSlider,
|
||||
rootCard, setInfoForCard);
|
||||
connect(overlayWidget, &PrintingSelectorCardOverlayWidget::cardPreferenceChanged, this,
|
||||
[this]() { emit cardPreferenceChanged(); });
|
||||
|
||||
// Create the widget to display the set name and collector's number
|
||||
const QString combinedSetName =
|
||||
|
|
|
|||
|
|
@ -35,6 +35,9 @@ public:
|
|||
public slots:
|
||||
void clampSetNameToPicture();
|
||||
|
||||
signals:
|
||||
void cardPreferenceChanged();
|
||||
|
||||
private:
|
||||
QVBoxLayout *layout;
|
||||
SetNameAndCollectorsNumberDisplayWidget *setNameAndCollectorsNumberDisplayWidget;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
#include "printing_selector_card_overlay_widget.h"
|
||||
|
||||
#include "../../../../game/cards/card_database_manager.h"
|
||||
#include "../../../../settings/cache_settings.h"
|
||||
#include "printing_selector_card_display_widget.h"
|
||||
|
||||
#include <QMenu>
|
||||
|
|
@ -165,6 +166,28 @@ void PrintingSelectorCardOverlayWidget::leaveEvent(QEvent *event)
|
|||
void PrintingSelectorCardOverlayWidget::customMenu(QPoint point)
|
||||
{
|
||||
QMenu menu;
|
||||
|
||||
auto *preferenceMenu = new QMenu(tr("Preference"));
|
||||
menu.addMenu(preferenceMenu);
|
||||
|
||||
const auto &preferredProviderId =
|
||||
SettingsCache::instance().cardOverrides().getCardPreferenceOverride(rootCard->getName());
|
||||
const auto &cardProviderId = setInfoForCard.getProperty("uuid");
|
||||
|
||||
if (preferredProviderId.isEmpty() || preferredProviderId != cardProviderId) {
|
||||
auto *pinAction = preferenceMenu->addAction(tr("Pin Printing"));
|
||||
connect(pinAction, &QAction::triggered, this, [this, cardProviderId]() {
|
||||
SettingsCache::instance().cardOverrides().setCardPreferenceOverride(rootCard->getName(), cardProviderId);
|
||||
emit cardPreferenceChanged();
|
||||
});
|
||||
} else {
|
||||
auto *unpinAction = preferenceMenu->addAction(tr("Unpin Printing"));
|
||||
connect(unpinAction, &QAction::triggered, this, [this, cardProviderId]() {
|
||||
SettingsCache::instance().cardOverrides().deleteCardPreferenceOverride(rootCard->getName());
|
||||
emit cardPreferenceChanged();
|
||||
});
|
||||
}
|
||||
|
||||
// filling out the related cards submenu
|
||||
auto *relatedMenu = new QMenu(tr("Show Related cards"));
|
||||
menu.addMenu(relatedMenu);
|
||||
|
|
|
|||
|
|
@ -34,6 +34,9 @@ protected:
|
|||
void mousePressEvent(QMouseEvent *event) override;
|
||||
void customMenu(QPoint point);
|
||||
|
||||
signals:
|
||||
void cardPreferenceChanged();
|
||||
|
||||
private:
|
||||
CardInfoPictureWidget *cardInfoPicture;
|
||||
AllZonesCardAmountWidget *allZonesCardAmountWidget;
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ void PrintingSelectorCardSortingWidget::updateSortSetting()
|
|||
* @param cardInfoPerSets The list of card sets to be sorted.
|
||||
* @return A sorted list of card sets.
|
||||
*/
|
||||
QList<CardInfoPerSet> PrintingSelectorCardSortingWidget::sortSets(CardInfoPerSetMap cardInfoPerSets)
|
||||
QList<CardInfoPerSet> PrintingSelectorCardSortingWidget::sortSets(const CardInfoPerSetMap &cardInfoPerSets)
|
||||
{
|
||||
QList<CardSetPtr> sortedSets;
|
||||
|
||||
|
|
@ -148,6 +148,24 @@ QList<CardInfoPerSet> PrintingSelectorCardSortingWidget::filterSets(const QList<
|
|||
return filteredSets;
|
||||
}
|
||||
|
||||
QList<CardInfoPerSet> PrintingSelectorCardSortingWidget::prependPinnedPrintings(const QList<CardInfoPerSet> &sets,
|
||||
const QString &cardName)
|
||||
{
|
||||
auto setsToUse = sets;
|
||||
const auto &cardProviderId = SettingsCache::instance().cardOverrides().getCardPreferenceOverride(cardName);
|
||||
if (!cardProviderId.isEmpty()) {
|
||||
for (int i = 0; i < setsToUse.size(); ++i) {
|
||||
const auto &card = setsToUse[i];
|
||||
if (card.getProperty("uuid") == cardProviderId) {
|
||||
setsToUse.move(i, 0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return setsToUse;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Prepend card printings that are contained in the deck to the list of card sets.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -12,11 +12,12 @@ class PrintingSelectorCardSortingWidget : public QWidget
|
|||
Q_OBJECT
|
||||
public:
|
||||
explicit PrintingSelectorCardSortingWidget(PrintingSelector *parent);
|
||||
QList<CardInfoPerSet> sortSets(CardInfoPerSetMap cardInfoPerSets);
|
||||
static QList<CardInfoPerSet> filterSets(const QList<CardInfoPerSet> &sets, const QString &searchText);
|
||||
static QList<CardInfoPerSet> prependPrintingsInDeck(const QList<CardInfoPerSet> &sets,
|
||||
const CardInfoPtr &selectedCard,
|
||||
DeckListModel *deckModel);
|
||||
QList<CardInfoPerSet> sortSets(const CardInfoPerSetMap &cardInfoPerSets);
|
||||
QList<CardInfoPerSet> filterSets(const QList<CardInfoPerSet> &sets, const QString &searchText);
|
||||
QList<CardInfoPerSet> prependPinnedPrintings(const QList<CardInfoPerSet> &sets, const QString &cardName);
|
||||
QList<CardInfoPerSet> prependPrintingsInDeck(const QList<CardInfoPerSet> &sets,
|
||||
const CardInfoPtr &selectedCard,
|
||||
DeckListModel *deckModel);
|
||||
|
||||
public slots:
|
||||
void updateSortOrder();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue