mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-09-23 01:55:10 -07:00
[DeckEditor] Use CommanderSpellbook.com to estimate bracket if format is 'commander' (#6415)
* [DeckEditor] Use CommanderSpellbook.com to estimate bracket if format is 'commander' Took 2 minutes Took 16 minutes * Convert json data holder to structs, rename variables, extract widget - Extract bracket estimation UI from DeckEditorDeckDockWidget into a new CommanderBracketWidget - Move CommanderSpellbook integration settings from CardsDisplaySettings to DeckEditorSettings (matching the settings refactor on master) - Rename CommanderSpellbook integration variables to drop the redundant 'DeckEditor' prefix Took 4 minutes # Commit time for manual adjustment: # Took 6 minutes # Commit time for manual adjustment: # Took 8 minutes --------- Co-authored-by: Lukas Brübach <Bruebach.Lukas@bdosecurity.de>
This commit is contained in:
parent
e9eab328a4
commit
827e44a4d3
35 changed files with 1642 additions and 8 deletions
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include "../../../client/settings/cache_settings.h"
|
||||
#include "../interface/widgets/tabs/tab_supervisor.h"
|
||||
#include "../tabs/api/commander_spellbook/commander_spellbook_bracket_explainer.h"
|
||||
|
||||
#include <QGridLayout>
|
||||
#include <libcockatrice/settings/cards_display_settings.h>
|
||||
|
|
@ -161,6 +162,57 @@ UserInterfaceSettingsPage::UserInterfaceSettingsPage()
|
|||
connect(&defaultDeckEditorTypeSelector, QOverload<int>::of(&QComboBox::currentIndexChanged),
|
||||
&SettingsCache::instance().deckEditor(), &DeckEditorSettings::setDefaultDeckEditorType);
|
||||
|
||||
commanderSpellbookIntegrationUseOfficialBracketNamesExplainer.setText("?");
|
||||
commanderSpellbookIntegrationUseOfficialBracketNamesExplainer.setAutoRaise(true);
|
||||
commanderSpellbookIntegrationUseOfficialBracketNamesExplainer.setEnabled(false);
|
||||
|
||||
// Add items with userData = internal enum
|
||||
commanderSpellbookIntegrationEnabledSelector.addItem(tr("Disabled"),
|
||||
commanderSpellbookIntegrationEnabledIndexDisabled);
|
||||
commanderSpellbookIntegrationEnabledSelector.addItem(tr("Enabled"),
|
||||
commanderSpellbookIntegrationEnabledIndexEnabled);
|
||||
commanderSpellbookIntegrationEnabledSelector.addItem(tr("Automatic"),
|
||||
commanderSpellbookIntegrationEnabledIndexAutomatic);
|
||||
|
||||
int storedMode = SettingsCache::instance().deckEditor().getCommanderSpellbookIntegrationEnabled();
|
||||
for (int i = 0; i < commanderSpellbookIntegrationEnabledSelector.count(); ++i) {
|
||||
if (commanderSpellbookIntegrationEnabledSelector.itemData(i).toInt() == storedMode) {
|
||||
commanderSpellbookIntegrationEnabledSelector.setCurrentIndex(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
connect(&commanderSpellbookIntegrationEnabledSelector, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
|
||||
[this](int index) {
|
||||
int mode = commanderSpellbookIntegrationEnabledSelector.itemData(index).toInt();
|
||||
SettingsCache::instance().deckEditor().setCommanderSpellbookIntegrationEnabled(mode);
|
||||
updateCommanderSpellbookUiState();
|
||||
});
|
||||
|
||||
commanderSpellbookIntegrationBracketNamingSelector.addItem(
|
||||
tr("CommanderSpellbook bracket names")); // index 0 = false
|
||||
commanderSpellbookIntegrationBracketNamingSelector.addItem(
|
||||
tr("Official Commander bracket names (approximate)")); // index 1 = true
|
||||
|
||||
commanderSpellbookIntegrationBracketNamingSelector.setCurrentIndex(
|
||||
SettingsCache::instance().deckEditor().getCommanderSpellbookIntegrationUseOfficialBracketNames() ? 1 : 0);
|
||||
|
||||
connect(&commanderSpellbookIntegrationBracketNamingSelector, QOverload<int>::of(&QComboBox::currentIndexChanged),
|
||||
&SettingsCache::instance(), [](int index) {
|
||||
SettingsCache::instance().deckEditor().setCommanderSpellbookIntegrationUseOfficialBracketNames(index ==
|
||||
1);
|
||||
});
|
||||
|
||||
updateCommanderSpellbookUiState();
|
||||
|
||||
auto *labelLayout = new QHBoxLayout;
|
||||
labelLayout->setContentsMargins(0, 0, 0, 0);
|
||||
labelLayout->addWidget(&commanderSpellbookIntegrationUseOfficialBracketNamesLabel);
|
||||
labelLayout->addWidget(&commanderSpellbookIntegrationUseOfficialBracketNamesExplainer);
|
||||
|
||||
auto *labelWidget = new QWidget;
|
||||
labelWidget->setLayout(labelLayout);
|
||||
|
||||
auto *deckEditorGrid = new QGridLayout;
|
||||
deckEditorGrid->addWidget(&openDeckInNewTabCheckBox, 0, 0);
|
||||
deckEditorGrid->addWidget(&visualDeckStorageInGameCheckBox, 1, 0);
|
||||
|
|
@ -169,6 +221,10 @@ UserInterfaceSettingsPage::UserInterfaceSettingsPage()
|
|||
deckEditorGrid->addWidget(&visualDeckStoragePromptForConversionSelector, 3, 1);
|
||||
deckEditorGrid->addWidget(&defaultDeckEditorTypeLabel, 4, 0);
|
||||
deckEditorGrid->addWidget(&defaultDeckEditorTypeSelector, 4, 1);
|
||||
deckEditorGrid->addWidget(&commanderSpellbookIntegrationEnabledLabel, 5, 0);
|
||||
deckEditorGrid->addWidget(&commanderSpellbookIntegrationEnabledSelector, 5, 1);
|
||||
deckEditorGrid->addWidget(labelWidget, 6, 0);
|
||||
deckEditorGrid->addWidget(&commanderSpellbookIntegrationBracketNamingSelector, 6, 1);
|
||||
|
||||
deckEditorGroupBox = new QGroupBox;
|
||||
deckEditorGroupBox->setLayout(deckEditorGrid);
|
||||
|
|
@ -212,6 +268,27 @@ void UserInterfaceSettingsPage::setNotificationEnabled(QT_STATE_CHANGED_T i)
|
|||
}
|
||||
}
|
||||
|
||||
void UserInterfaceSettingsPage::updateCommanderSpellbookUiState()
|
||||
{
|
||||
const int mode = SettingsCache::instance().deckEditor().getCommanderSpellbookIntegrationEnabled();
|
||||
|
||||
const bool enabled = mode != commanderSpellbookIntegrationEnabledIndexDisabled &&
|
||||
mode != commanderSpellbookIntegrationEnabledIndexUnprompted;
|
||||
|
||||
commanderSpellbookIntegrationBracketNamingSelector.setEnabled(enabled);
|
||||
commanderSpellbookIntegrationUseOfficialBracketNamesExplainer.setEnabled(enabled);
|
||||
commanderSpellbookIntegrationUseOfficialBracketNamesLabel.setVisible(enabled);
|
||||
commanderSpellbookIntegrationUseOfficialBracketNamesExplainer.setVisible(enabled);
|
||||
commanderSpellbookIntegrationBracketNamingSelector.setVisible(enabled);
|
||||
|
||||
if (enabled) {
|
||||
// Sync selector with the current stored bool
|
||||
const bool useOfficial =
|
||||
SettingsCache::instance().deckEditor().getCommanderSpellbookIntegrationUseOfficialBracketNames();
|
||||
commanderSpellbookIntegrationBracketNamingSelector.setCurrentIndex(useOfficial ? 1 : 0);
|
||||
}
|
||||
}
|
||||
|
||||
void UserInterfaceSettingsPage::retranslateUi()
|
||||
{
|
||||
generalGroupBox->setTitle(tr("General interface settings"));
|
||||
|
|
@ -249,6 +326,22 @@ void UserInterfaceSettingsPage::retranslateUi()
|
|||
defaultDeckEditorTypeLabel.setText(tr("Default deck editor type"));
|
||||
defaultDeckEditorTypeSelector.setItemText(TabSupervisor::ClassicDeckEditor, tr("Classic Deck Editor"));
|
||||
defaultDeckEditorTypeSelector.setItemText(TabSupervisor::VisualDeckEditor, tr("Visual Deck Editor"));
|
||||
|
||||
commanderSpellbookIntegrationEnabledLabel.setText(
|
||||
tr("CommanderSpellbook integration to estimate commander bracket"));
|
||||
commanderSpellbookIntegrationEnabledSelector.setItemText(commanderSpellbookIntegrationEnabledIndexDisabled,
|
||||
tr("Disabled"));
|
||||
commanderSpellbookIntegrationEnabledSelector.setItemText(commanderSpellbookIntegrationEnabledIndexEnabled,
|
||||
tr("Enabled"));
|
||||
commanderSpellbookIntegrationEnabledSelector.setItemText(commanderSpellbookIntegrationEnabledIndexAutomatic,
|
||||
tr("Automatic"));
|
||||
commanderSpellbookIntegrationUseOfficialBracketNamesLabel.setText(tr("Bracket naming"));
|
||||
commanderSpellbookIntegrationBracketNamingSelector.setItemText(
|
||||
0, CommanderBracketNames::CommanderSpellbookBracketNames);
|
||||
commanderSpellbookIntegrationBracketNamingSelector.setItemText(
|
||||
1, CommanderBracketNames::OfficialCommanderBracketNames);
|
||||
|
||||
commanderSpellbookIntegrationUseOfficialBracketNamesExplainer.setToolTip(CommanderBracketNames::Explainer);
|
||||
replayGroupBox->setTitle(tr("Replay settings"));
|
||||
rewindBufferingMsLabel.setText(tr("Buffer time for backwards skip via shortcut:"));
|
||||
rewindBufferingMsBox.setSuffix(" ms");
|
||||
|
|
|
|||
|
|
@ -8,6 +8,8 @@
|
|||
#include <QGroupBox>
|
||||
#include <QLabel>
|
||||
#include <QSpinBox>
|
||||
#include <QToolButton>
|
||||
#include <libcockatrice/settings/cards_display_settings.h>
|
||||
#include <libcockatrice/utility/macros.h>
|
||||
|
||||
class UserInterfaceSettingsPage : public AbstractSettingsPage
|
||||
|
|
@ -15,6 +17,7 @@ class UserInterfaceSettingsPage : public AbstractSettingsPage
|
|||
Q_OBJECT
|
||||
private slots:
|
||||
void setNotificationEnabled(QT_STATE_CHANGED_T);
|
||||
void updateCommanderSpellbookUiState();
|
||||
|
||||
private:
|
||||
QCheckBox notificationsEnabledCheckBox;
|
||||
|
|
@ -39,6 +42,11 @@ private:
|
|||
QCheckBox visualDeckStorageSelectionAnimationCheckBox;
|
||||
QLabel defaultDeckEditorTypeLabel;
|
||||
QComboBox defaultDeckEditorTypeSelector;
|
||||
QLabel commanderSpellbookIntegrationEnabledLabel;
|
||||
QComboBox commanderSpellbookIntegrationEnabledSelector;
|
||||
QLabel commanderSpellbookIntegrationUseOfficialBracketNamesLabel;
|
||||
QToolButton commanderSpellbookIntegrationUseOfficialBracketNamesExplainer;
|
||||
QComboBox commanderSpellbookIntegrationBracketNamingSelector;
|
||||
QLabel rewindBufferingMsLabel;
|
||||
QSpinBox rewindBufferingMsBox;
|
||||
QGroupBox *generalGroupBox;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue