diff --git a/cockatrice/src/dialogs/dlg_settings.cpp b/cockatrice/src/dialogs/dlg_settings.cpp index 6948a8e8b..008735585 100644 --- a/cockatrice/src/dialogs/dlg_settings.cpp +++ b/cockatrice/src/dialogs/dlg_settings.cpp @@ -478,8 +478,8 @@ AppearanceSettingsPage::AppearanceSettingsPage() &SettingsCache::setAutoRotateSidewaysLayoutCards); overrideAllCardArtWithPersonalPreferenceCheckBox.setChecked(settings.getOverrideAllCardArtWithPersonalPreference()); - connect(&overrideAllCardArtWithPersonalPreferenceCheckBox, &QCheckBox::QT_STATE_CHANGED, &settings, - &SettingsCache::setOverrideAllCardArtWithPersonalPreference); + connect(&overrideAllCardArtWithPersonalPreferenceCheckBox, &QCheckBox::QT_STATE_CHANGED, this, + &AppearanceSettingsPage::overrideAllCardArtWithPersonalPreferenceToggled); bumpSetsWithCardsInDeckToTopCheckBox.setChecked(settings.getBumpSetsWithCardsInDeckToTop()); connect(&bumpSetsWithCardsInDeckToTopCheckBox, &QCheckBox::QT_STATE_CHANGED, &settings, @@ -652,6 +652,45 @@ void AppearanceSettingsPage::showShortcutsChanged(QT_STATE_CHANGED_T value) qApp->setAttribute(Qt::AA_DontShowShortcutsInContextMenus, value == 0); // 0 = unchecked } +void AppearanceSettingsPage::overrideAllCardArtWithPersonalPreferenceToggled(QT_STATE_CHANGED_T value) +{ + bool enable = static_cast(value); + + QString message; + if (enable) { + message = tr("Enabling this feature will disable the use of the Printing Selector.\n\n" + "You will not be able to manage printing preferences on a per-deck basis, " + "or see printings other people have selected for their decks.\n\n" + "You will have to use the Set Manager, available through Card Database -> Manage Sets.\n\n" + "Are you sure you would like to enable this feature?"); + } else { + message = + tr("Disabling this feature will enable the Printing Selector.\n\n" + "You can now choose printings on a per-deck basis in the Deck Editor and configure which printing " + "gets added to a deck by default by pinning it in the Printing Selector.\n\n" + "You can also use the Set Manager to adjust custom sort order for printings in the Printing Selector" + " (other sort orders like alphabetical or release date are available).\n\n" + "Are you sure you would like to disable this feature?"); + } + + QMessageBox::StandardButton result = + QMessageBox::question(this, tr("Confirm Change"), message, QMessageBox::Yes | QMessageBox::No); + + if (result == QMessageBox::Yes) { + SettingsCache::instance().setOverrideAllCardArtWithPersonalPreference(value); + // Caches are now invalid. + PictureLoader::clearPixmapCache(); + PictureLoader::clearNetworkCache(); + } else { + // If user cancels, revert the checkbox/state back + QTimer::singleShot(0, this, [this, enable]() { + overrideAllCardArtWithPersonalPreferenceCheckBox.blockSignals(true); + overrideAllCardArtWithPersonalPreferenceCheckBox.setChecked(!enable); + overrideAllCardArtWithPersonalPreferenceCheckBox.blockSignals(false); + }); + } +} + /** * Updates the settings for cardViewInitialRowsMax. * Forces expanded rows max to always be >= initial rows max @@ -694,8 +733,7 @@ void AppearanceSettingsPage::retranslateUi() displayCardNamesCheckBox.setText(tr("Display card names on cards having a picture")); autoRotateSidewaysLayoutCardsCheckBox.setText(tr("Auto-Rotate cards with sideways layout")); overrideAllCardArtWithPersonalPreferenceCheckBox.setText( - tr("Override all card art with personal set preference (Pre-ProviderID change behavior) [Requires Client " - "restart]")); + tr("Override all card art with personal set preference (Pre-ProviderID change behavior)")); bumpSetsWithCardsInDeckToTopCheckBox.setText( tr("Bump sets that the deck contains cards from to the top in the printing selector")); cardScalingCheckBox.setText(tr("Scale cards on mouse over")); diff --git a/cockatrice/src/dialogs/dlg_settings.h b/cockatrice/src/dialogs/dlg_settings.h index bf8dbd2a5..c88dce8d0 100644 --- a/cockatrice/src/dialogs/dlg_settings.h +++ b/cockatrice/src/dialogs/dlg_settings.h @@ -105,6 +105,7 @@ private slots: void themeBoxChanged(int index); void openThemeLocation(); void showShortcutsChanged(QT_STATE_CHANGED_T enabled); + void overrideAllCardArtWithPersonalPreferenceToggled(QT_STATE_CHANGED_T enabled); void cardViewInitialRowsMaxChanged(int value); void cardViewExpandedRowsMaxChanged(int value); diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_editor_database_display_widget.cpp b/cockatrice/src/interface/widgets/deck_editor/deck_editor_database_display_widget.cpp index b0a9f0814..c0bf03b9f 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_editor_database_display_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_editor/deck_editor_database_display_widget.cpp @@ -203,7 +203,10 @@ void DeckEditorDatabaseDisplayWidget::databaseCustomMenu(QPoint point) QAction *addToDeck, *addToSideboard, *selectPrinting, *edhRecCommander, *edhRecCard; addToDeck = menu.addAction(tr("Add to Deck")); addToSideboard = menu.addAction(tr("Add to Sideboard")); - selectPrinting = menu.addAction(tr("Select Printing")); + if (!SettingsCache::instance().getOverrideAllCardArtWithPersonalPreference()) { + selectPrinting = menu.addAction(tr("Select Printing")); + connect(selectPrinting, &QAction::triggered, this, [this, card] { deckEditor->showPrintingSelector(); }); + } if (canBeCommander(card.getInfo())) { edhRecCommander = menu.addAction(tr("Show on EDHRec (Commander)")); connect(edhRecCommander, &QAction::triggered, this, @@ -213,7 +216,6 @@ void DeckEditorDatabaseDisplayWidget::databaseCustomMenu(QPoint point) connect(addToDeck, &QAction::triggered, this, &DeckEditorDatabaseDisplayWidget::actAddCardToMainDeck); connect(addToSideboard, &QAction::triggered, this, &DeckEditorDatabaseDisplayWidget::actAddCardToSideboard); - connect(selectPrinting, &QAction::triggered, this, [this, card] { deckEditor->showPrintingSelector(); }); connect(edhRecCard, &QAction::triggered, this, [this, card] { deckEditor->getTabSupervisor()->addEdhrecTab(card.getCardPtr()); }); diff --git a/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.cpp b/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.cpp index dc995ff17..90489b296 100644 --- a/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.cpp +++ b/cockatrice/src/interface/widgets/deck_editor/deck_editor_deck_dock_widget.cpp @@ -37,11 +37,11 @@ void DeckEditorDeckDockWidget::createDeckDock() deckView->sortByColumn(1, Qt::AscendingOrder); deckView->header()->setSectionResizeMode(QHeaderView::ResizeToContents); deckView->installEventFilter(&deckViewKeySignals); - deckView->setContextMenuPolicy(Qt::CustomContextMenu); deckView->setSelectionMode(QAbstractItemView::ExtendedSelection); connect(deckView->selectionModel(), &QItemSelectionModel::currentRowChanged, this, &DeckEditorDeckDockWidget::updateCard); connect(deckView, &QTreeView::doubleClicked, this, &DeckEditorDeckDockWidget::actSwapCard); + deckView->setContextMenuPolicy(Qt::CustomContextMenu); connect(deckView, &QTreeView::customContextMenuRequested, this, &DeckEditorDeckDockWidget::decklistCustomMenu); connect(&deckViewKeySignals, &KeySignals::onShiftS, this, &DeckEditorDeckDockWidget::actSwapCard); connect(&deckViewKeySignals, &KeySignals::onEnter, this, &DeckEditorDeckDockWidget::actIncrement); @@ -577,13 +577,14 @@ void DeckEditorDeckDockWidget::offsetCountAtIndex(const QModelIndex &idx, int of void DeckEditorDeckDockWidget::decklistCustomMenu(QPoint point) { - QMenu menu; + if (!SettingsCache::instance().getOverrideAllCardArtWithPersonalPreference()) { + QMenu menu; - QAction *selectPrinting = menu.addAction(tr("Select Printing")); + QAction *selectPrinting = menu.addAction(tr("Select Printing")); + connect(selectPrinting, &QAction::triggered, deckEditor, &AbstractTabDeckEditor::showPrintingSelector); - connect(selectPrinting, &QAction::triggered, deckEditor, &AbstractTabDeckEditor::showPrintingSelector); - - menu.exec(deckView->mapToGlobal(point)); + menu.exec(deckView->mapToGlobal(point)); + } } void DeckEditorDeckDockWidget::refreshShortcuts() diff --git a/cockatrice/src/tabs/abstract_tab_deck_editor.cpp b/cockatrice/src/tabs/abstract_tab_deck_editor.cpp index 3bd29b577..8eb7d35f7 100644 --- a/cockatrice/src/tabs/abstract_tab_deck_editor.cpp +++ b/cockatrice/src/tabs/abstract_tab_deck_editor.cpp @@ -49,6 +49,9 @@ AbstractTabDeckEditor::AbstractTabDeckEditor(TabSupervisor *_tabSupervisor) : Ta cardInfoDockWidget = new DeckEditorCardInfoDockWidget(this); filterDockWidget = new DeckEditorFilterDockWidget(this); printingSelectorDockWidget = new DeckEditorPrintingSelectorDockWidget(this); + connect(&SettingsCache::instance(), &SettingsCache::overrideAllCardArtWithPersonalPreferenceChanged, this, [this] { + printingSelectorDockWidget->setHidden(SettingsCache::instance().getOverrideAllCardArtWithPersonalPreference()); + }); connect(deckDockWidget, &DeckEditorDeckDockWidget::deckChanged, this, &AbstractTabDeckEditor::onDeckChanged); connect(deckDockWidget, &DeckEditorDeckDockWidget::deckModified, this, &AbstractTabDeckEditor::onDeckModified); diff --git a/cockatrice/src/tabs/tab_deck_editor.cpp b/cockatrice/src/tabs/tab_deck_editor.cpp index 1f56f7b7b..6d4da740d 100644 --- a/cockatrice/src/tabs/tab_deck_editor.cpp +++ b/cockatrice/src/tabs/tab_deck_editor.cpp @@ -93,6 +93,13 @@ void TabDeckEditor::createMenus() aPrintingSelectorDockFloating->setCheckable(true); connect(aPrintingSelectorDockFloating, &QAction::triggered, this, &TabDeckEditor::dockFloatingTriggered); + if (SettingsCache::instance().getOverrideAllCardArtWithPersonalPreference()) { + printingSelectorDockMenu->setEnabled(false); + } + + connect(&SettingsCache::instance(), &SettingsCache::overrideAllCardArtWithPersonalPreferenceChanged, this, + [this](bool enabled) { printingSelectorDockMenu->setEnabled(!enabled); }); + viewMenu->addSeparator(); aResetLayout = viewMenu->addAction(QString()); @@ -171,6 +178,13 @@ void TabDeckEditor::loadLayout() restoreGeometry(layouts.getDeckEditorGeometry()); } + if (SettingsCache::instance().getOverrideAllCardArtWithPersonalPreference()) { + if (!printingSelectorDockWidget->isHidden()) { + printingSelectorDockWidget->setHidden(true); + aPrintingSelectorDockVisible->setChecked(false); + } + } + aCardInfoDockVisible->setChecked(!cardInfoDockWidget->isHidden()); aFilterDockVisible->setChecked(!filterDockWidget->isHidden()); aDeckDockVisible->setChecked(!deckDockWidget->isHidden()); @@ -203,10 +217,11 @@ void TabDeckEditor::loadLayout() void TabDeckEditor::restartLayout() { + aCardInfoDockVisible->setChecked(true); aDeckDockVisible->setChecked(true); aFilterDockVisible->setChecked(true); - aPrintingSelectorDockVisible->setChecked(true); + aPrintingSelectorDockVisible->setChecked(!SettingsCache::instance().getOverrideAllCardArtWithPersonalPreference()); aCardInfoDockFloating->setChecked(false); aDeckDockFloating->setChecked(false); @@ -227,7 +242,7 @@ void TabDeckEditor::restartLayout() deckDockWidget->setVisible(true); cardInfoDockWidget->setVisible(true); filterDockWidget->setVisible(true); - printingSelectorDockWidget->setVisible(true); + printingSelectorDockWidget->setVisible(!SettingsCache::instance().getOverrideAllCardArtWithPersonalPreference()); splitDockWidget(cardInfoDockWidget, printingSelectorDockWidget, Qt::Horizontal); splitDockWidget(printingSelectorDockWidget, deckDockWidget, Qt::Horizontal); diff --git a/cockatrice/src/tabs/visual_deck_editor/tab_deck_editor_visual.cpp b/cockatrice/src/tabs/visual_deck_editor/tab_deck_editor_visual.cpp index f3ae2e293..40b07e792 100644 --- a/cockatrice/src/tabs/visual_deck_editor/tab_deck_editor_visual.cpp +++ b/cockatrice/src/tabs/visual_deck_editor/tab_deck_editor_visual.cpp @@ -126,6 +126,13 @@ void TabDeckEditorVisual::createMenus() aPrintingSelectorDockFloating->setCheckable(true); connect(aPrintingSelectorDockFloating, SIGNAL(triggered()), this, SLOT(dockFloatingTriggered())); + if (SettingsCache::instance().getOverrideAllCardArtWithPersonalPreference()) { + printingSelectorDockMenu->setEnabled(false); + } + + connect(&SettingsCache::instance(), &SettingsCache::overrideAllCardArtWithPersonalPreferenceChanged, this, + [this](bool enabled) { printingSelectorDockMenu->setEnabled(!enabled); }); + viewMenu->addSeparator(); aResetLayout = viewMenu->addAction(QString()); @@ -236,6 +243,13 @@ void TabDeckEditorVisual::loadLayout() restoreGeometry(layouts.getDeckEditorGeometry()); } + if (SettingsCache::instance().getOverrideAllCardArtWithPersonalPreference()) { + if (!printingSelectorDockWidget->isHidden()) { + printingSelectorDockWidget->setHidden(true); + aPrintingSelectorDockVisible->setChecked(false); + } + } + aCardInfoDockVisible->setChecked(!cardInfoDockWidget->isHidden()); aFilterDockVisible->setChecked(!filterDockWidget->isHidden()); aDeckDockVisible->setChecked(!deckDockWidget->isHidden()); @@ -271,7 +285,7 @@ void TabDeckEditorVisual::restartLayout() aCardInfoDockVisible->setChecked(true); aDeckDockVisible->setChecked(true); aFilterDockVisible->setChecked(false); - aPrintingSelectorDockVisible->setChecked(true); + aPrintingSelectorDockVisible->setChecked(!SettingsCache::instance().getOverrideAllCardArtWithPersonalPreference()); aCardInfoDockFloating->setChecked(false); aDeckDockFloating->setChecked(false); @@ -279,22 +293,21 @@ void TabDeckEditorVisual::restartLayout() aPrintingSelectorDockFloating->setChecked(false); setCentralWidget(centralWidget); - addDockWidget(Qt::RightDockWidgetArea, deckDockWidget); addDockWidget(Qt::RightDockWidgetArea, cardInfoDockWidget); addDockWidget(Qt::RightDockWidgetArea, filterDockWidget); addDockWidget(Qt::RightDockWidgetArea, printingSelectorDockWidget); + deckDockWidget->setVisible(true); + cardInfoDockWidget->setVisible(true); + filterDockWidget->setVisible(false); + printingSelectorDockWidget->setVisible(!SettingsCache::instance().getOverrideAllCardArtWithPersonalPreference()); + deckDockWidget->setFloating(false); cardInfoDockWidget->setFloating(false); filterDockWidget->setFloating(false); printingSelectorDockWidget->setFloating(false); - deckDockWidget->setVisible(true); - cardInfoDockWidget->setVisible(true); - filterDockWidget->setVisible(false); - printingSelectorDockWidget->setVisible(true); - splitDockWidget(cardInfoDockWidget, printingSelectorDockWidget, Qt::Vertical); splitDockWidget(cardInfoDockWidget, deckDockWidget, Qt::Horizontal); splitDockWidget(cardInfoDockWidget, filterDockWidget, Qt::Horizontal);