mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-06-11 00:24:47 -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
|
|
@ -128,6 +128,7 @@ set(cockatrice_SOURCES
|
||||||
src/settings/cache_settings.cpp
|
src/settings/cache_settings.cpp
|
||||||
src/settings/shortcuts_settings.cpp
|
src/settings/shortcuts_settings.cpp
|
||||||
src/settings/shortcut_treeview.cpp
|
src/settings/shortcut_treeview.cpp
|
||||||
|
src/settings/card_override_settings.cpp
|
||||||
src/client/sound_engine.cpp
|
src/client/sound_engine.cpp
|
||||||
src/client/network/spoiler_background_updater.cpp
|
src/client/network/spoiler_background_updater.cpp
|
||||||
src/game/zones/stack_zone.cpp
|
src/game/zones/stack_zone.cpp
|
||||||
|
|
|
||||||
|
|
@ -171,6 +171,7 @@ void PrintingSelector::getAllSetsForCurrentCard()
|
||||||
} else {
|
} else {
|
||||||
setsToUse = filteredSets;
|
setsToUse = filteredSets;
|
||||||
}
|
}
|
||||||
|
setsToUse = sortToolBar->prependPinnedPrintings(setsToUse, selectedCard->getName());
|
||||||
|
|
||||||
// Defer widget creation
|
// Defer widget creation
|
||||||
currentIndex = 0;
|
currentIndex = 0;
|
||||||
|
|
@ -182,6 +183,8 @@ void PrintingSelector::getAllSetsForCurrentCard()
|
||||||
setsToUse[currentIndex], currentZone);
|
setsToUse[currentIndex], currentZone);
|
||||||
flowWidget->addWidget(cardDisplayWidget);
|
flowWidget->addWidget(cardDisplayWidget);
|
||||||
cardDisplayWidget->clampSetNameToPicture();
|
cardDisplayWidget->clampSetNameToPicture();
|
||||||
|
connect(cardDisplayWidget, &PrintingSelectorCardDisplayWidget::cardPreferenceChanged, this,
|
||||||
|
&PrintingSelector::updateDisplay);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Stop timer when done
|
// Stop timer when done
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,8 @@ PrintingSelectorCardDisplayWidget::PrintingSelectorCardDisplayWidget(QWidget *pa
|
||||||
// Create the overlay widget for the card display
|
// Create the overlay widget for the card display
|
||||||
overlayWidget = new PrintingSelectorCardOverlayWidget(this, deckEditor, deckModel, deckView, cardSizeSlider,
|
overlayWidget = new PrintingSelectorCardOverlayWidget(this, deckEditor, deckModel, deckView, cardSizeSlider,
|
||||||
rootCard, setInfoForCard);
|
rootCard, setInfoForCard);
|
||||||
|
connect(overlayWidget, &PrintingSelectorCardOverlayWidget::cardPreferenceChanged, this,
|
||||||
|
[this]() { emit cardPreferenceChanged(); });
|
||||||
|
|
||||||
// Create the widget to display the set name and collector's number
|
// Create the widget to display the set name and collector's number
|
||||||
const QString combinedSetName =
|
const QString combinedSetName =
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,9 @@ public:
|
||||||
public slots:
|
public slots:
|
||||||
void clampSetNameToPicture();
|
void clampSetNameToPicture();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void cardPreferenceChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QVBoxLayout *layout;
|
QVBoxLayout *layout;
|
||||||
SetNameAndCollectorsNumberDisplayWidget *setNameAndCollectorsNumberDisplayWidget;
|
SetNameAndCollectorsNumberDisplayWidget *setNameAndCollectorsNumberDisplayWidget;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
#include "printing_selector_card_overlay_widget.h"
|
#include "printing_selector_card_overlay_widget.h"
|
||||||
|
|
||||||
#include "../../../../game/cards/card_database_manager.h"
|
#include "../../../../game/cards/card_database_manager.h"
|
||||||
|
#include "../../../../settings/cache_settings.h"
|
||||||
#include "printing_selector_card_display_widget.h"
|
#include "printing_selector_card_display_widget.h"
|
||||||
|
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
|
|
@ -165,6 +166,28 @@ void PrintingSelectorCardOverlayWidget::leaveEvent(QEvent *event)
|
||||||
void PrintingSelectorCardOverlayWidget::customMenu(QPoint point)
|
void PrintingSelectorCardOverlayWidget::customMenu(QPoint point)
|
||||||
{
|
{
|
||||||
QMenu menu;
|
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
|
// filling out the related cards submenu
|
||||||
auto *relatedMenu = new QMenu(tr("Show Related cards"));
|
auto *relatedMenu = new QMenu(tr("Show Related cards"));
|
||||||
menu.addMenu(relatedMenu);
|
menu.addMenu(relatedMenu);
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,9 @@ protected:
|
||||||
void mousePressEvent(QMouseEvent *event) override;
|
void mousePressEvent(QMouseEvent *event) override;
|
||||||
void customMenu(QPoint point);
|
void customMenu(QPoint point);
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void cardPreferenceChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
CardInfoPictureWidget *cardInfoPicture;
|
CardInfoPictureWidget *cardInfoPicture;
|
||||||
AllZonesCardAmountWidget *allZonesCardAmountWidget;
|
AllZonesCardAmountWidget *allZonesCardAmountWidget;
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@ void PrintingSelectorCardSortingWidget::updateSortSetting()
|
||||||
* @param cardInfoPerSets The list of card sets to be sorted.
|
* @param cardInfoPerSets The list of card sets to be sorted.
|
||||||
* @return A sorted list of card sets.
|
* @return A sorted list of card sets.
|
||||||
*/
|
*/
|
||||||
QList<CardInfoPerSet> PrintingSelectorCardSortingWidget::sortSets(CardInfoPerSetMap cardInfoPerSets)
|
QList<CardInfoPerSet> PrintingSelectorCardSortingWidget::sortSets(const CardInfoPerSetMap &cardInfoPerSets)
|
||||||
{
|
{
|
||||||
QList<CardSetPtr> sortedSets;
|
QList<CardSetPtr> sortedSets;
|
||||||
|
|
||||||
|
|
@ -148,6 +148,24 @@ QList<CardInfoPerSet> PrintingSelectorCardSortingWidget::filterSets(const QList<
|
||||||
return filteredSets;
|
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.
|
* @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
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
explicit PrintingSelectorCardSortingWidget(PrintingSelector *parent);
|
explicit PrintingSelectorCardSortingWidget(PrintingSelector *parent);
|
||||||
QList<CardInfoPerSet> sortSets(CardInfoPerSetMap cardInfoPerSets);
|
QList<CardInfoPerSet> sortSets(const CardInfoPerSetMap &cardInfoPerSets);
|
||||||
static QList<CardInfoPerSet> filterSets(const QList<CardInfoPerSet> &sets, const QString &searchText);
|
QList<CardInfoPerSet> filterSets(const QList<CardInfoPerSet> &sets, const QString &searchText);
|
||||||
static QList<CardInfoPerSet> prependPrintingsInDeck(const QList<CardInfoPerSet> &sets,
|
QList<CardInfoPerSet> prependPinnedPrintings(const QList<CardInfoPerSet> &sets, const QString &cardName);
|
||||||
const CardInfoPtr &selectedCard,
|
QList<CardInfoPerSet> prependPrintingsInDeck(const QList<CardInfoPerSet> &sets,
|
||||||
DeckListModel *deckModel);
|
const CardInfoPtr &selectedCard,
|
||||||
|
DeckListModel *deckModel);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void updateSortOrder();
|
void updateSortOrder();
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
#include "cache_settings.h"
|
#include "cache_settings.h"
|
||||||
|
|
||||||
#include "../client/network/release_channel.h"
|
#include "../client/network/release_channel.h"
|
||||||
|
#include "card_override_settings.h"
|
||||||
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
@ -179,6 +180,7 @@ SettingsCache::SettingsCache()
|
||||||
layoutsSettings = new LayoutsSettings(settingsPath, this);
|
layoutsSettings = new LayoutsSettings(settingsPath, this);
|
||||||
downloadSettings = new DownloadSettings(settingsPath, this);
|
downloadSettings = new DownloadSettings(settingsPath, this);
|
||||||
recentsSettings = new RecentsSettings(settingsPath, this);
|
recentsSettings = new RecentsSettings(settingsPath, this);
|
||||||
|
cardOverrideSettings = new CardOverrideSettings(settingsPath, this);
|
||||||
|
|
||||||
if (!QFile(settingsPath + "global.ini").exists())
|
if (!QFile(settingsPath + "global.ini").exists())
|
||||||
translateLegacySettings();
|
translateLegacySettings();
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#include "../utility/macros.h"
|
#include "../utility/macros.h"
|
||||||
#include "card_database_settings.h"
|
#include "card_database_settings.h"
|
||||||
|
#include "card_override_settings.h"
|
||||||
#include "download_settings.h"
|
#include "download_settings.h"
|
||||||
#include "game_filters_settings.h"
|
#include "game_filters_settings.h"
|
||||||
#include "layouts_settings.h"
|
#include "layouts_settings.h"
|
||||||
|
|
@ -84,6 +85,7 @@ private:
|
||||||
LayoutsSettings *layoutsSettings;
|
LayoutsSettings *layoutsSettings;
|
||||||
DownloadSettings *downloadSettings;
|
DownloadSettings *downloadSettings;
|
||||||
RecentsSettings *recentsSettings;
|
RecentsSettings *recentsSettings;
|
||||||
|
CardOverrideSettings *cardOverrideSettings;
|
||||||
|
|
||||||
QByteArray mainWindowGeometry;
|
QByteArray mainWindowGeometry;
|
||||||
QByteArray tokenDialogGeometry;
|
QByteArray tokenDialogGeometry;
|
||||||
|
|
@ -604,6 +606,10 @@ public:
|
||||||
{
|
{
|
||||||
return *recentsSettings;
|
return *recentsSettings;
|
||||||
}
|
}
|
||||||
|
CardOverrideSettings &cardOverrides() const
|
||||||
|
{
|
||||||
|
return *cardOverrideSettings;
|
||||||
|
}
|
||||||
bool getIsPortableBuild() const
|
bool getIsPortableBuild() const
|
||||||
{
|
{
|
||||||
return isPortableBuild;
|
return isPortableBuild;
|
||||||
|
|
|
||||||
21
cockatrice/src/settings/card_override_settings.cpp
Normal file
21
cockatrice/src/settings/card_override_settings.cpp
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
#include "card_override_settings.h"
|
||||||
|
|
||||||
|
CardOverrideSettings::CardOverrideSettings(QString settingPath, QObject *parent)
|
||||||
|
: SettingsManager(settingPath + "cardPreferenceOverrides.ini", parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardOverrideSettings::setCardPreferenceOverride(const QString &cardName, const QString &providerId)
|
||||||
|
{
|
||||||
|
setValue(providerId, cardName, "cards");
|
||||||
|
}
|
||||||
|
|
||||||
|
void CardOverrideSettings::deleteCardPreferenceOverride(const QString &cardName)
|
||||||
|
{
|
||||||
|
deleteValue(cardName, "cards");
|
||||||
|
}
|
||||||
|
|
||||||
|
QString CardOverrideSettings::getCardPreferenceOverride(const QString &cardName)
|
||||||
|
{
|
||||||
|
return getValue(cardName, "cards").toString();
|
||||||
|
}
|
||||||
25
cockatrice/src/settings/card_override_settings.h
Normal file
25
cockatrice/src/settings/card_override_settings.h
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
#ifndef COCKATRICE_CARD_OVERRIDE_SETTINGS_H
|
||||||
|
#define COCKATRICE_CARD_OVERRIDE_SETTINGS_H
|
||||||
|
|
||||||
|
#include "settings_manager.h"
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
class CardOverrideSettings : public SettingsManager
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
friend class SettingsCache;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void setCardPreferenceOverride(const QString &cardName, const QString &providerId);
|
||||||
|
|
||||||
|
void deleteCardPreferenceOverride(const QString &cardName);
|
||||||
|
|
||||||
|
QString getCardPreferenceOverride(const QString &cardName);
|
||||||
|
|
||||||
|
private:
|
||||||
|
explicit CardOverrideSettings(QString settingPath, QObject *parent = nullptr);
|
||||||
|
CardOverrideSettings(const CardOverrideSettings & /*other*/);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // COCKATRICE_CARD_OVERRIDE_SETTINGS_H
|
||||||
|
|
@ -32,6 +32,7 @@ set(oracle_SOURCES
|
||||||
../cockatrice/src/settings/game_filters_settings.cpp
|
../cockatrice/src/settings/game_filters_settings.cpp
|
||||||
../cockatrice/src/settings/layouts_settings.cpp
|
../cockatrice/src/settings/layouts_settings.cpp
|
||||||
../cockatrice/src/settings/download_settings.cpp
|
../cockatrice/src/settings/download_settings.cpp
|
||||||
|
../cockatrice/src/settings/card_override_settings.cpp
|
||||||
../cockatrice/src/client/ui/theme_manager.cpp
|
../cockatrice/src/client/ui/theme_manager.cpp
|
||||||
../cockatrice/src/client/network/release_channel.cpp
|
../cockatrice/src/client/network/release_channel.cpp
|
||||||
${VERSION_STRING_CPP}
|
${VERSION_STRING_CPP}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue