diff --git a/cockatrice/src/dialogs/dlg_settings.cpp b/cockatrice/src/dialogs/dlg_settings.cpp index 8529d4592..27986c601 100644 --- a/cockatrice/src/dialogs/dlg_settings.cpp +++ b/cockatrice/src/dialogs/dlg_settings.cpp @@ -34,6 +34,8 @@ #include #include #include +#include +#include #include #include #include @@ -181,6 +183,9 @@ GeneralSettingsPage::GeneralSettingsPage() updateReleaseChannelBox.setCurrentIndex(settings.getUpdateReleaseChannelIndex()); setLayout(mainLayout); + + connect(&SettingsCache::instance(), &SettingsCache::langChanged, this, &GeneralSettingsPage::retranslateUi); + retranslateUi(); } QStringList GeneralSettingsPage::findQmFiles() @@ -464,6 +469,9 @@ AppearanceSettingsPage::AppearanceSettingsPage() mainLayout->addStretch(); setLayout(mainLayout); + + connect(&SettingsCache::instance(), &SettingsCache::langChanged, this, &AppearanceSettingsPage::retranslateUi); + retranslateUi(); } void AppearanceSettingsPage::themeBoxChanged(int index) @@ -648,6 +656,9 @@ UserInterfaceSettingsPage::UserInterfaceSettingsPage() mainLayout->addStretch(); setLayout(mainLayout); + + connect(&SettingsCache::instance(), &SettingsCache::langChanged, this, &UserInterfaceSettingsPage::retranslateUi); + retranslateUi(); } void UserInterfaceSettingsPage::setNotificationEnabled(QT_STATE_CHANGED_T i) @@ -820,6 +831,9 @@ DeckEditorSettingsPage::DeckEditorSettingsPage() lpMainLayout->addWidget(mpSpoilerGroupBox); setLayout(lpMainLayout); + + connect(&SettingsCache::instance(), &SettingsCache::langChanged, this, &DeckEditorSettingsPage::retranslateUi); + retranslateUi(); } void DeckEditorSettingsPage::resetDownloadedURLsButtonClicked() @@ -1122,6 +1136,7 @@ MessagesSettingsPage::MessagesSettingsPage() setLayout(mainLayout); + connect(&SettingsCache::instance(), &SettingsCache::langChanged, this, &MessagesSettingsPage::retranslateUi); retranslateUi(); } @@ -1296,6 +1311,9 @@ SoundSettingsPage::SoundSettingsPage() mainLayout->addStretch(); setLayout(mainLayout); + + connect(&SettingsCache::instance(), &SettingsCache::langChanged, this, &SoundSettingsPage::retranslateUi); + retranslateUi(); } void SoundSettingsPage::themeBoxChanged(int index) @@ -1388,6 +1406,9 @@ ShortcutSettingsPage::ShortcutSettingsPage() connect(btnClearAll, SIGNAL(clicked()), this, SLOT(clearShortcuts())); connect(shortcutsTable, &ShortcutTreeView::currentItemChanged, this, &ShortcutSettingsPage::currentItemChanged); + + connect(&SettingsCache::instance(), &SettingsCache::langChanged, this, &ShortcutSettingsPage::retranslateUi); + retranslateUi(); } void ShortcutSettingsPage::currentItemChanged(const QString &key) @@ -1435,10 +1456,23 @@ void ShortcutSettingsPage::retranslateUi() searchEdit->setPlaceholderText(tr("Search by shortcut name")); } +static QScrollArea *makeScrollable(QWidget *widget) +{ + widget->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Maximum); + + auto *scrollArea = new QScrollArea; + scrollArea->setWidgetResizable(true); + scrollArea->setContentsMargins(0, 0, 0, 0); + scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + scrollArea->horizontalScrollBar()->setEnabled(false); + scrollArea->setWidget(widget); + return scrollArea; +} + DlgSettings::DlgSettings(QWidget *parent) : QDialog(parent) { auto rec = QGuiApplication::primaryScreen()->availableGeometry(); - this->setBaseSize(qMin(700, rec.width()), qMin(700, rec.height())); + this->setMinimumSize(qMin(700, rec.width()), qMin(700, rec.height())); connect(&SettingsCache::instance(), SIGNAL(langChanged()), this, SLOT(updateLanguage())); @@ -1452,8 +1486,8 @@ DlgSettings::DlgSettings(QWidget *parent) : QDialog(parent) pagesWidget = new QStackedWidget; pagesWidget->addWidget(new GeneralSettingsPage); - pagesWidget->addWidget(new AppearanceSettingsPage); - pagesWidget->addWidget(new UserInterfaceSettingsPage); + pagesWidget->addWidget(makeScrollable(new AppearanceSettingsPage)); + pagesWidget->addWidget(makeScrollable(new UserInterfaceSettingsPage)); pagesWidget->addWidget(new DeckEditorSettingsPage); pagesWidget->addWidget(new MessagesSettingsPage); pagesWidget->addWidget(new SoundSettingsPage); @@ -1475,6 +1509,7 @@ DlgSettings::DlgSettings(QWidget *parent) : QDialog(parent) mainLayout->addWidget(buttonBox); setLayout(mainLayout); + connect(&SettingsCache::instance(), &SettingsCache::langChanged, this, &DlgSettings::retranslateUi); retranslateUi(); adjustSize(); @@ -1543,13 +1578,6 @@ void DlgSettings::updateLanguage() installNewTranslator(); } -void DlgSettings::changeEvent(QEvent *event) -{ - if (event->type() == QEvent::LanguageChange) - retranslateUi(); - QDialog::changeEvent(event); -} - void DlgSettings::closeEvent(QCloseEvent *event) { bool showLoadError = true; @@ -1638,8 +1666,5 @@ void DlgSettings::retranslateUi() soundButton->setText(tr("Sound")); shortcutsButton->setText(tr("Shortcuts")); - for (int i = 0; i < pagesWidget->count(); i++) - dynamic_cast(pagesWidget->widget(i))->retranslateUi(); - contentsWidget->reset(); } diff --git a/cockatrice/src/dialogs/dlg_settings.h b/cockatrice/src/dialogs/dlg_settings.h index 7b03113c0..c608969d7 100644 --- a/cockatrice/src/dialogs/dlg_settings.h +++ b/cockatrice/src/dialogs/dlg_settings.h @@ -323,7 +323,6 @@ private: void retranslateUi(); protected: - void changeEvent(QEvent *event) override; void closeEvent(QCloseEvent *event) override; };