mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-07-20 09:22:15 -07:00
Attempt to allow users to temporarily modify preferences (until next card DB update).
This commit is contained in:
parent
6e6824117d
commit
fafb80ea06
11 changed files with 51 additions and 24 deletions
|
|
@ -24,7 +24,7 @@ AllZonesCardAmountWidget::AllZonesCardAmountWidget(QWidget *parent,
|
||||||
QTreeView *deckView,
|
QTreeView *deckView,
|
||||||
QSlider *cardSizeSlider,
|
QSlider *cardSizeSlider,
|
||||||
CardInfoPtr rootCard,
|
CardInfoPtr rootCard,
|
||||||
CardInfoPerSet setInfoForCard)
|
CardInfoPerSet *setInfoForCard)
|
||||||
: QWidget(parent), deckEditor(deckEditor), deckModel(deckModel), deckView(deckView), cardSizeSlider(cardSizeSlider),
|
: QWidget(parent), deckEditor(deckEditor), deckModel(deckModel), deckView(deckView), cardSizeSlider(cardSizeSlider),
|
||||||
rootCard(rootCard), setInfoForCard(setInfoForCard)
|
rootCard(rootCard), setInfoForCard(setInfoForCard)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ public:
|
||||||
QTreeView *deckView,
|
QTreeView *deckView,
|
||||||
QSlider *cardSizeSlider,
|
QSlider *cardSizeSlider,
|
||||||
CardInfoPtr rootCard,
|
CardInfoPtr rootCard,
|
||||||
CardInfoPerSet setInfoForCard);
|
CardInfoPerSet *setInfoForCard);
|
||||||
int getMainboardAmount();
|
int getMainboardAmount();
|
||||||
int getSideboardAmount();
|
int getSideboardAmount();
|
||||||
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
|
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
|
||||||
|
|
@ -37,7 +37,7 @@ private:
|
||||||
QTreeView *deckView;
|
QTreeView *deckView;
|
||||||
QSlider *cardSizeSlider;
|
QSlider *cardSizeSlider;
|
||||||
CardInfoPtr rootCard;
|
CardInfoPtr rootCard;
|
||||||
CardInfoPerSet setInfoForCard;
|
CardInfoPerSet *setInfoForCard;
|
||||||
QLabel *zoneLabelMainboard;
|
QLabel *zoneLabelMainboard;
|
||||||
CardAmountWidget *buttonBoxMainboard;
|
CardAmountWidget *buttonBoxMainboard;
|
||||||
QLabel *zoneLabelSideboard;
|
QLabel *zoneLabelSideboard;
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ CardAmountWidget::CardAmountWidget(QWidget *parent,
|
||||||
QTreeView *deckView,
|
QTreeView *deckView,
|
||||||
QSlider *cardSizeSlider,
|
QSlider *cardSizeSlider,
|
||||||
CardInfoPtr &rootCard,
|
CardInfoPtr &rootCard,
|
||||||
CardInfoPerSet &setInfoForCard,
|
CardInfoPerSet *setInfoForCard,
|
||||||
const QString &zoneName)
|
const QString &zoneName)
|
||||||
: QWidget(parent), deckEditor(deckEditor), deckModel(deckModel), deckView(deckView), cardSizeSlider(cardSizeSlider),
|
: QWidget(parent), deckEditor(deckEditor), deckModel(deckModel), deckView(deckView), cardSizeSlider(cardSizeSlider),
|
||||||
rootCard(rootCard), setInfoForCard(setInfoForCard), zoneName(zoneName), hovered(false)
|
rootCard(rootCard), setInfoForCard(setInfoForCard), zoneName(zoneName), hovered(false)
|
||||||
|
|
@ -141,18 +141,18 @@ void CardAmountWidget::updateCardCount()
|
||||||
*/
|
*/
|
||||||
void CardAmountWidget::addPrinting(const QString &zone)
|
void CardAmountWidget::addPrinting(const QString &zone)
|
||||||
{
|
{
|
||||||
auto newCardIndex = deckModel->addCard(rootCard->getName(), setInfoForCard, zone);
|
auto newCardIndex = deckModel->addCard(rootCard->getName(), *setInfoForCard, zone);
|
||||||
recursiveExpand(newCardIndex);
|
recursiveExpand(newCardIndex);
|
||||||
QModelIndex find_card = deckModel->findCard(rootCard->getName(), zone);
|
QModelIndex find_card = deckModel->findCard(rootCard->getName(), zone);
|
||||||
if (find_card.isValid() && find_card != newCardIndex) {
|
if (find_card.isValid() && find_card != newCardIndex) {
|
||||||
auto amount = deckModel->data(find_card, Qt::DisplayRole);
|
auto amount = deckModel->data(find_card, Qt::DisplayRole);
|
||||||
for (int i = 0; i < amount.toInt() - 1; i++) {
|
for (int i = 0; i < amount.toInt() - 1; i++) {
|
||||||
deckModel->addCard(rootCard->getName(), setInfoForCard, zone);
|
deckModel->addCard(rootCard->getName(), *setInfoForCard, zone);
|
||||||
}
|
}
|
||||||
deckModel->removeRow(find_card.row(), find_card.parent());
|
deckModel->removeRow(find_card.row(), find_card.parent());
|
||||||
}
|
}
|
||||||
newCardIndex = deckModel->findCard(rootCard->getName(), zone, setInfoForCard.getProperty("uuid"),
|
newCardIndex = deckModel->findCard(rootCard->getName(), zone, setInfoForCard->getProperty("uuid"),
|
||||||
setInfoForCard.getProperty("num"));
|
setInfoForCard->getProperty("num"));
|
||||||
deckView->setCurrentIndex(newCardIndex);
|
deckView->setCurrentIndex(newCardIndex);
|
||||||
deckView->setFocus(Qt::FocusReason::MouseFocusReason);
|
deckView->setFocus(Qt::FocusReason::MouseFocusReason);
|
||||||
}
|
}
|
||||||
|
|
@ -233,8 +233,8 @@ void CardAmountWidget::offsetCountAtIndex(const QModelIndex &idx, int offset)
|
||||||
*/
|
*/
|
||||||
void CardAmountWidget::decrementCardHelper(const QString &zone)
|
void CardAmountWidget::decrementCardHelper(const QString &zone)
|
||||||
{
|
{
|
||||||
QModelIndex idx = deckModel->findCard(rootCard->getName(), zone, setInfoForCard.getProperty("uuid"),
|
QModelIndex idx = deckModel->findCard(rootCard->getName(), zone, setInfoForCard->getProperty("uuid"),
|
||||||
setInfoForCard.getProperty("num"));
|
setInfoForCard->getProperty("num"));
|
||||||
offsetCountAtIndex(idx, -1);
|
offsetCountAtIndex(idx, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -246,7 +246,7 @@ void CardAmountWidget::decrementCardHelper(const QString &zone)
|
||||||
*/
|
*/
|
||||||
int CardAmountWidget::countCardsInZone(const QString &deckZone)
|
int CardAmountWidget::countCardsInZone(const QString &deckZone)
|
||||||
{
|
{
|
||||||
if (setInfoForCard.getProperty("uuid").isEmpty()) {
|
if (setInfoForCard->getProperty("uuid").isEmpty()) {
|
||||||
return 0; // Cards without uuids/providerIds CANNOT match another card, they are undefined for us.
|
return 0; // Cards without uuids/providerIds CANNOT match another card, they are undefined for us.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -283,7 +283,7 @@ int CardAmountWidget::countCardsInZone(const QString &deckZone)
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int k = 0; k < currentCard->getNumber(); ++k) {
|
for (int k = 0; k < currentCard->getNumber(); ++k) {
|
||||||
if (currentCard->getCardProviderId() == setInfoForCard.getProperty("uuid")) {
|
if (currentCard->getCardProviderId() == setInfoForCard->getProperty("uuid")) {
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ public:
|
||||||
QTreeView *deckView,
|
QTreeView *deckView,
|
||||||
QSlider *cardSizeSlider,
|
QSlider *cardSizeSlider,
|
||||||
CardInfoPtr &rootCard,
|
CardInfoPtr &rootCard,
|
||||||
CardInfoPerSet &setInfoForCard,
|
CardInfoPerSet *setInfoForCard,
|
||||||
const QString &zoneName);
|
const QString &zoneName);
|
||||||
int countCardsInZone(const QString &deckZone);
|
int countCardsInZone(const QString &deckZone);
|
||||||
|
|
||||||
|
|
@ -43,7 +43,7 @@ private:
|
||||||
QTreeView *deckView;
|
QTreeView *deckView;
|
||||||
QSlider *cardSizeSlider;
|
QSlider *cardSizeSlider;
|
||||||
CardInfoPtr rootCard;
|
CardInfoPtr rootCard;
|
||||||
CardInfoPerSet setInfoForCard;
|
CardInfoPerSet *setInfoForCard;
|
||||||
QString zoneName;
|
QString zoneName;
|
||||||
QHBoxLayout *layout;
|
QHBoxLayout *layout;
|
||||||
DynamicFontSizePushButton *incrementButton;
|
DynamicFontSizePushButton *incrementButton;
|
||||||
|
|
|
||||||
|
|
@ -179,7 +179,7 @@ void PrintingSelector::getAllSetsForCurrentCard()
|
||||||
for (int i = 0; i < BATCH_SIZE && currentIndex < setsToUse.size(); ++i, ++currentIndex) {
|
for (int i = 0; i < BATCH_SIZE && currentIndex < setsToUse.size(); ++i, ++currentIndex) {
|
||||||
auto *cardDisplayWidget = new PrintingSelectorCardDisplayWidget(this, deckEditor, deckModel, deckView,
|
auto *cardDisplayWidget = new PrintingSelectorCardDisplayWidget(this, deckEditor, deckModel, deckView,
|
||||||
cardSizeWidget->getSlider(), selectedCard,
|
cardSizeWidget->getSlider(), selectedCard,
|
||||||
setsToUse[currentIndex], currentZone);
|
&setsToUse[currentIndex], currentZone);
|
||||||
flowWidget->addWidget(cardDisplayWidget);
|
flowWidget->addWidget(cardDisplayWidget);
|
||||||
cardDisplayWidget->clampSetNameToPicture();
|
cardDisplayWidget->clampSetNameToPicture();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ PrintingSelectorCardDisplayWidget::PrintingSelectorCardDisplayWidget(QWidget *pa
|
||||||
QTreeView *_deckView,
|
QTreeView *_deckView,
|
||||||
QSlider *_cardSizeSlider,
|
QSlider *_cardSizeSlider,
|
||||||
CardInfoPtr _rootCard,
|
CardInfoPtr _rootCard,
|
||||||
const CardInfoPerSet &_setInfoForCard,
|
CardInfoPerSet *_setInfoForCard,
|
||||||
QString &_currentZone)
|
QString &_currentZone)
|
||||||
: QWidget(parent), deckEditor(_deckEditor), deckModel(_deckModel), deckView(_deckView),
|
: QWidget(parent), deckEditor(_deckEditor), deckModel(_deckModel), deckView(_deckView),
|
||||||
cardSizeSlider(_cardSizeSlider), rootCard(std::move(_rootCard)), setInfoForCard(_setInfoForCard),
|
cardSizeSlider(_cardSizeSlider), rootCard(std::move(_rootCard)), setInfoForCard(_setInfoForCard),
|
||||||
|
|
@ -49,9 +49,9 @@ PrintingSelectorCardDisplayWidget::PrintingSelectorCardDisplayWidget(QWidget *pa
|
||||||
|
|
||||||
// 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 =
|
||||||
QString(setInfoForCard.getPtr()->getLongName() + " (" + setInfoForCard.getPtr()->getShortName() + ")");
|
QString(setInfoForCard->getPtr()->getLongName() + " (" + setInfoForCard->getPtr()->getShortName() + ")");
|
||||||
setNameAndCollectorsNumberDisplayWidget = new SetNameAndCollectorsNumberDisplayWidget(
|
setNameAndCollectorsNumberDisplayWidget = new SetNameAndCollectorsNumberDisplayWidget(
|
||||||
this, combinedSetName, setInfoForCard.getProperty("num"), cardSizeSlider);
|
this, combinedSetName, setInfoForCard->getProperty("num"), cardSizeSlider);
|
||||||
|
|
||||||
// Add the widgets to the layout
|
// Add the widgets to the layout
|
||||||
layout->addWidget(overlayWidget, 0, Qt::AlignHCenter);
|
layout->addWidget(overlayWidget, 0, Qt::AlignHCenter);
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ public:
|
||||||
QTreeView *_deckView,
|
QTreeView *_deckView,
|
||||||
QSlider *_cardSizeSlider,
|
QSlider *_cardSizeSlider,
|
||||||
CardInfoPtr _rootCard,
|
CardInfoPtr _rootCard,
|
||||||
const CardInfoPerSet &_setInfoForCard,
|
CardInfoPerSet *_setInfoForCard,
|
||||||
QString &_currentZone);
|
QString &_currentZone);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
|
@ -44,7 +44,7 @@ private:
|
||||||
QSlider *cardSizeSlider;
|
QSlider *cardSizeSlider;
|
||||||
CardInfoPtr rootCard;
|
CardInfoPtr rootCard;
|
||||||
CardInfoPtr setCard;
|
CardInfoPtr setCard;
|
||||||
CardInfoPerSet setInfoForCard;
|
CardInfoPerSet *setInfoForCard;
|
||||||
QString currentZone;
|
QString currentZone;
|
||||||
PrintingSelectorCardOverlayWidget *overlayWidget;
|
PrintingSelectorCardOverlayWidget *overlayWidget;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ PrintingSelectorCardOverlayWidget::PrintingSelectorCardOverlayWidget(QWidget *pa
|
||||||
QTreeView *_deckView,
|
QTreeView *_deckView,
|
||||||
QSlider *_cardSizeSlider,
|
QSlider *_cardSizeSlider,
|
||||||
CardInfoPtr _rootCard,
|
CardInfoPtr _rootCard,
|
||||||
const CardInfoPerSet &_setInfoForCard)
|
CardInfoPerSet *_setInfoForCard)
|
||||||
: QWidget(parent), deckEditor(_deckEditor), deckModel(_deckModel), deckView(_deckView),
|
: QWidget(parent), deckEditor(_deckEditor), deckModel(_deckModel), deckView(_deckView),
|
||||||
cardSizeSlider(_cardSizeSlider), rootCard(std::move(_rootCard)), setInfoForCard(_setInfoForCard)
|
cardSizeSlider(_cardSizeSlider), rootCard(std::move(_rootCard)), setInfoForCard(_setInfoForCard)
|
||||||
{
|
{
|
||||||
|
|
@ -44,7 +44,7 @@ PrintingSelectorCardOverlayWidget::PrintingSelectorCardOverlayWidget(QWidget *pa
|
||||||
cardInfoPicture->setMinimumSize(0, 0);
|
cardInfoPicture->setMinimumSize(0, 0);
|
||||||
cardInfoPicture->setScaleFactor(cardSizeSlider->value());
|
cardInfoPicture->setScaleFactor(cardSizeSlider->value());
|
||||||
setCard = CardDatabaseManager::getInstance()->getCardByNameAndProviderId(rootCard->getName(),
|
setCard = CardDatabaseManager::getInstance()->getCardByNameAndProviderId(rootCard->getName(),
|
||||||
setInfoForCard.getProperty("uuid"));
|
setInfoForCard->getProperty("uuid"));
|
||||||
cardInfoPicture->setCard(setCard);
|
cardInfoPicture->setCard(setCard);
|
||||||
mainLayout->addWidget(cardInfoPicture);
|
mainLayout->addWidget(cardInfoPicture);
|
||||||
|
|
||||||
|
|
@ -165,6 +165,24 @@ 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);
|
||||||
|
bool isPreferred = setInfoForCard->getProperty("preferred").toInt();
|
||||||
|
if (isPreferred) {
|
||||||
|
QAction *setUnpreferred = preferenceMenu->addAction("Set as not preferred");
|
||||||
|
connect(setUnpreferred, &QAction::triggered, deckEditor, [this]() {
|
||||||
|
this->setInfoForCard->setProperty("preferred", nullptr);
|
||||||
|
CardDatabaseManager::getInstance()->saveCardsToFile();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
QAction *setPreferred = preferenceMenu->addAction("Set as preferred");
|
||||||
|
connect(setPreferred, &QAction::triggered, deckEditor, [this]() {
|
||||||
|
this->setInfoForCard->setProperty("preferred", "1");
|
||||||
|
CardDatabaseManager::getInstance()->saveCardsToFile();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
// 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);
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ public:
|
||||||
QTreeView *_deckView,
|
QTreeView *_deckView,
|
||||||
QSlider *_cardSizeSlider,
|
QSlider *_cardSizeSlider,
|
||||||
CardInfoPtr _rootCard,
|
CardInfoPtr _rootCard,
|
||||||
const CardInfoPerSet &_setInfoForCard);
|
CardInfoPerSet *_setInfoForCard);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void resizeEvent(QResizeEvent *event) override;
|
void resizeEvent(QResizeEvent *event) override;
|
||||||
|
|
@ -43,7 +43,7 @@ private:
|
||||||
QSlider *cardSizeSlider;
|
QSlider *cardSizeSlider;
|
||||||
CardInfoPtr rootCard;
|
CardInfoPtr rootCard;
|
||||||
CardInfoPtr setCard;
|
CardInfoPtr setCard;
|
||||||
CardInfoPerSet setInfoForCard;
|
CardInfoPerSet *setInfoForCard;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // PRINTING_SELECTOR_CARD_OVERLAY_WIDGET_H
|
#endif // PRINTING_SELECTOR_CARD_OVERLAY_WIDGET_H
|
||||||
|
|
|
||||||
|
|
@ -814,6 +814,14 @@ void CardDatabase::notifyEnabledSetsChanged()
|
||||||
emit cardDatabaseEnabledSetsChanged();
|
emit cardDatabaseEnabledSetsChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CardDatabase::saveCardsToFile()
|
||||||
|
{
|
||||||
|
QString fileName = SettingsCache::instance().getCustomCardDatabasePath() + "/cards.xml";
|
||||||
|
|
||||||
|
availableParsers.first()->saveToFile(sets, cards, fileName);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool CardDatabase::saveCustomTokensToFile()
|
bool CardDatabase::saveCustomTokensToFile()
|
||||||
{
|
{
|
||||||
QString fileName =
|
QString fileName =
|
||||||
|
|
|
||||||
|
|
@ -491,6 +491,7 @@ public:
|
||||||
void enableAllUnknownSets();
|
void enableAllUnknownSets();
|
||||||
void markAllSetsAsKnown();
|
void markAllSetsAsKnown();
|
||||||
void notifyEnabledSetsChanged();
|
void notifyEnabledSetsChanged();
|
||||||
|
bool saveCardsToFile();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
LoadStatus loadCardDatabases();
|
LoadStatus loadCardDatabases();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue