mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-11-05 17:43:23 -08:00
Fix tab retranslation (#7580)
* Retranslate all open tabs on language change * Address review: deeper Visual DB retranslation, index-based Archidekt size logic In Qt 6, setItemText() on the current item emits currentTextChanged but not currentIndexChanged, so connecting the Archidekt combos to currentTextChanged fired a search on every language change. Both combos now use currentIndexChanged, and buildSearchUrl() compares the size-logic combo by index so translated labels cannot drop sizeLogic. * Derive display mode button text in one place
This commit is contained in:
parent
f33cfcb288
commit
a4c4c67674
6 changed files with 45 additions and 62 deletions
|
|
@ -220,9 +220,9 @@ void TabArchidekt::setupFilterWidgets()
|
|||
// Advanced filters (in secondary toolbar)
|
||||
|
||||
// EDH Bracket
|
||||
auto *bracketLabel = new QLabel(tr("Bracket:"), secondaryToolbar);
|
||||
bracketLabel = new QLabel(secondaryToolbar);
|
||||
edhBracketCombo = new QComboBox(secondaryToolbar);
|
||||
edhBracketCombo->addItem(tr("Any"));
|
||||
edhBracketCombo->addItem(QString());
|
||||
edhBracketCombo->addItems({"1", "2", "3", "4", "5"});
|
||||
edhBracketCombo->setSizeAdjustPolicy(QComboBox::AdjustToContents);
|
||||
|
||||
|
|
@ -276,7 +276,6 @@ void TabArchidekt::setupFilterWidgets()
|
|||
sizeLayout->setContentsMargins(4, 4, 4, 4);
|
||||
|
||||
minDeckSizeSpin = new QSpinBox(sizeContainer);
|
||||
minDeckSizeSpin->setSpecialValueText(tr("Any"));
|
||||
minDeckSizeSpin->setRange(0, 200);
|
||||
minDeckSizeSpin->setValue(0);
|
||||
|
||||
|
|
@ -284,7 +283,8 @@ void TabArchidekt::setupFilterWidgets()
|
|||
minDeckSizeLogicCombo->addItems({"Exact", "≥", "≤"});
|
||||
minDeckSizeLogicCombo->setCurrentIndex(1);
|
||||
|
||||
sizeLayout->addWidget(new QLabel(tr("Cards:"), sizeContainer));
|
||||
cardsLabel = new QLabel(sizeContainer);
|
||||
sizeLayout->addWidget(cardsLabel);
|
||||
sizeLayout->addWidget(minDeckSizeSpin);
|
||||
sizeLayout->addWidget(minDeckSizeLogicCombo);
|
||||
|
||||
|
|
@ -341,9 +341,9 @@ void TabArchidekt::connectSignals()
|
|||
});
|
||||
|
||||
// Format filters trigger search
|
||||
connect(edhBracketCombo, &QComboBox::currentTextChanged, this, &TabArchidekt::doSearch);
|
||||
connect(edhBracketCombo, &QComboBox::currentIndexChanged, this, &TabArchidekt::doSearch);
|
||||
connect(minDeckSizeSpin, qOverload<int>(&QSpinBox::valueChanged), this, &TabArchidekt::doSearch);
|
||||
connect(minDeckSizeLogicCombo, &QComboBox::currentTextChanged, this, &TabArchidekt::doSearch);
|
||||
connect(minDeckSizeLogicCombo, &QComboBox::currentIndexChanged, this, &TabArchidekt::doSearch);
|
||||
|
||||
// Allow Enter key in text fields to trigger search
|
||||
connect(nameField, &QLineEdit::returnPressed, this, &TabArchidekt::doSearchImmediate);
|
||||
|
|
@ -393,8 +393,15 @@ void TabArchidekt::retranslateUi()
|
|||
commandersField->setPlaceholderText(tr("Commander..."));
|
||||
deckTagNameField->setPlaceholderText(tr("Tag..."));
|
||||
|
||||
bracketLabel->setText(tr("Bracket:"));
|
||||
// Index 0 is the "Any" placeholder added in setupFilterWidgets()
|
||||
edhBracketCombo->setItemText(0, tr("Any"));
|
||||
|
||||
formatButton->setButtonText(tr("Formats"));
|
||||
deckSizeButton->setButtonText(tr("Deck Size"));
|
||||
cardsLabel->setText(tr("Cards:"));
|
||||
minDeckSizeSpin->setSpecialValueText(tr("Any"));
|
||||
minDeckSizeLogicCombo->setItemText(0, tr("Exact"));
|
||||
|
||||
searchButton->setText(tr("Search"));
|
||||
|
||||
|
|
@ -484,13 +491,17 @@ QString TabArchidekt::buildSearchUrl()
|
|||
query.addQueryItem("size", QString::number(minDeckSizeSpin->value()));
|
||||
|
||||
QString logic = "GTE";
|
||||
QString selected = minDeckSizeLogicCombo->currentText();
|
||||
if (selected == "≥") {
|
||||
logic = "GTE";
|
||||
} else if (selected == "≤") {
|
||||
logic = "LTE";
|
||||
} else {
|
||||
logic = "";
|
||||
// Index order matches setupFilterWidgets(): 0 = Exact, 1 = ≥, 2 = ≤
|
||||
switch (minDeckSizeLogicCombo->currentIndex()) {
|
||||
case 1:
|
||||
logic = "GTE";
|
||||
break;
|
||||
case 2:
|
||||
logic = "LTE";
|
||||
break;
|
||||
default:
|
||||
logic = "";
|
||||
break;
|
||||
}
|
||||
|
||||
if (!logic.isEmpty()) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue