Refactor display type toggler and add language change handling in Vis… (#7581)

* Refactor display type toggler and add language change handling in VisualDeckDisplayOptionsWidget

* Address review: extract updateDisplayTypeButton(), document changeEvent

* Restore trailing newline in visual_deck_display_options_widget.cpp
This commit is contained in:
Neel Jogani
2026-10-24 12:04:19 +05:30
committed by GitHub
parent ab13a6748f
commit e73dd2b520
2 changed files with 34 additions and 13 deletions

View File

@@ -10,6 +10,7 @@
#include <QAbstractItemModel>
#include <QAbstractItemView>
#include <QComboBox>
#include <QEvent>
#include <QFlags>
#include <QHBoxLayout>
#include <QLabel>
@@ -110,12 +111,33 @@ void VisualDeckDisplayOptionsWidget::retranslateUi()
sortByLabel->setText(tr("Sort by:"));
sortLabel->setText(tr("Click and drag to change the sort order within the groups"));
sortCriteriaButton->setToolTip(tr("Configure how cards are sorted within their groups"));
displayTypeButton->setButtonText(tr("Toggle Layout: Overlap"));
displayTypeButton->setButtonIcon(themePixmap(QStringLiteral("icons/scales")));
updateDisplayTypeButton();
displayTypeButton->setToolTip(
tr("Change how cards are displayed within zones (i.e. overlapped or fully visible.)"));
}
void VisualDeckDisplayOptionsWidget::updateDisplayTypeButton()
{
switch (currentDisplayType) {
case DisplayType::Flat:
displayTypeButton->setButtonText(tr("Toggle Layout: Flat"));
displayTypeButton->setButtonIcon(themePixmap(QStringLiteral("icons/scroll")));
break;
case DisplayType::Overlap:
displayTypeButton->setButtonText(tr("Toggle Layout: Overlap"));
displayTypeButton->setButtonIcon(themePixmap(QStringLiteral("icons/scales")));
break;
}
}
void VisualDeckDisplayOptionsWidget::changeEvent(QEvent *event)
{
if (event->type() == QEvent::LanguageChange) {
retranslateUi();
}
QWidget::changeEvent(event);
}
void VisualDeckDisplayOptionsWidget::onSortCriteriaChange()
{
QStringList selectedCriteria;
@@ -132,17 +154,8 @@ void VisualDeckDisplayOptionsWidget::updateDisplayType()
// Toggle the display type
currentDisplayType = (currentDisplayType == DisplayType::Overlap) ? DisplayType::Flat : DisplayType::Overlap;
// Update UI and emit signal
switch (currentDisplayType) {
case DisplayType::Flat:
displayTypeButton->setButtonText(tr("Toggle Layout: Flat"));
displayTypeButton->setButtonIcon(themePixmap(QStringLiteral("icons/scroll")));
break;
case DisplayType::Overlap:
displayTypeButton->setButtonText(tr("Toggle Layout: Overlap"));
displayTypeButton->setButtonIcon(themePixmap(QStringLiteral("icons/scales")));
break;
}
// Update only the toggle button, not every string in the widget
updateDisplayTypeButton();
emit displayTypeChanged(currentDisplayType);
}

View File

@@ -11,6 +11,7 @@
class CompactPushButton;
class QComboBox;
class QEvent;
class QHBoxLayout;
class QLabel;
class QListWidget;
@@ -57,6 +58,7 @@ public slots:
* @brief Updates all UI text for retranslation/localization.
*
* Called when the application language changes.
* Also refreshes the layout toggle button text for the current display type.
*/
void retranslateUi();
void updateCompactMode(bool mode);
@@ -94,6 +96,10 @@ public:
return activeSortCriteria;
}
protected:
/** @brief Retranslates on QEvent::LanguageChange. */
void changeEvent(QEvent *event) override;
private slots:
/**
* @brief Slot triggered whenever the sort list is reordered.
@@ -110,6 +116,8 @@ private slots:
void updateDisplayType();
private:
/** @brief Updates the layout toggle button's text and icon for the current display type. */
void updateDisplayTypeButton();
/** @brief Layout for grouping and sorting UI elements. */
QHBoxLayout *groupAndSortLayout;