Skip to content

Commit 759fa02

Browse files
committed
GUI - move language change message box handling from MainWindow to SettingsWidget
1 parent 7c663da commit 759fa02

File tree

3 files changed

+37
-5
lines changed

3 files changed

+37
-5
lines changed

app/gui/qt/mainwindow.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -583,7 +583,7 @@ void MainWindow::setupWindowStructure()
583583
prefsWidget->setFeatures(QDockWidget::DockWidgetClosable);
584584

585585
settingsWidget = new SettingsWidget(server_osc_cues_port, i18n, piSettings, sonicPii18n, this);
586-
connect(settingsWidget, SIGNAL(uiLanguageChanged(QString)), this, SLOT(changeUILanguage(QString)));
586+
connect(settingsWidget, SIGNAL(restartApp()), this, SLOT(restartApp()));
587587
connect(settingsWidget, SIGNAL(volumeChanged(int)), this, SLOT(changeSystemPreAmp(int)));
588588
connect(settingsWidget, SIGNAL(mixerSettingsChanged()), this, SLOT(mixerSettingsChanged()));
589589
connect(settingsWidget, SIGNAL(midiSettingsChanged()), this, SLOT(toggleMidi()));

app/gui/qt/widgets/settingswidget.cpp

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include <QPushButton>
1717
#include <QSignalMapper>
1818
#include <QVBoxLayout>
19+
#include <QMessageBox>
1920
#include <QSize>
2021

2122
/**
@@ -538,10 +539,40 @@ void SettingsWidget::toggleScope( QWidget* qw ) {
538539
emit scopeChanged(name);
539540
}
540541

542+
// TODO: Implement real-time language switching
541543
void SettingsWidget::updateUILanguage(int index) {
542-
QString lang = available_languages[index];
543-
std::cout << "Changed language to " << lang.toUtf8().constData() << std::endl;
544-
emit uiLanguageChanged(lang);
544+
QString lang = available_languages[index];
545+
std::cout << "Changed language to " << lang.toUtf8().constData() << std::endl;
546+
if (lang != piSettings->language) {
547+
std::cout << "Current language: " << piSettings->language.toUtf8().constData() << std::endl;
548+
std::cout << "New language selected: " << lang.toUtf8().constData() << std::endl;
549+
QString old_lang = sonicPii18n->getNativeLanguageName(piSettings->language);
550+
QString new_lang = sonicPii18n->getNativeLanguageName(lang);
551+
552+
// Load new language
553+
//QString language = sonicPii18n->determineUILanguage(lang);
554+
//sonicPii18n->loadTranslations(language);
555+
//QString title_new = tr("Updated the UI language from %s to %s").arg();
556+
557+
QMessageBox msgBox(this);
558+
msgBox.setText(QString(tr("You've selected a new language: %1")).arg(new_lang));
559+
msgBox.setInformativeText(tr("Do you want to apply this language?\nApplying the new language will restart Sonic Pi."));
560+
QPushButton *restartButton = msgBox.addButton(tr("Apply and Restart"), QMessageBox::ActionRole);
561+
QPushButton *dismissButton = msgBox.addButton(tr("Cancel"), QMessageBox::RejectRole);
562+
msgBox.setDefaultButton(restartButton);
563+
msgBox.setIcon(QMessageBox::Information);
564+
msgBox.exec();
565+
566+
if (msgBox.clickedButton() == (QAbstractButton*)restartButton) {
567+
piSettings->language = lang;
568+
emit restartApp();
569+
//emit uiLanguageChanged(lang);
570+
} else if (msgBox.clickedButton() == (QAbstractButton*)dismissButton) {
571+
// Don't apply the new language settings
572+
updateSelectedUILanguage(piSettings->language);
573+
}
574+
575+
}
545576
}
546577

547578
void SettingsWidget::update_mixer_invert_stereo() {

app/gui/qt/widgets/settingswidget.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,8 @@ private slots:
7272
void autoIndentOnRun();
7373

7474
signals:
75-
void uiLanguageChanged(QString lang);
75+
void restartApp();
76+
//void uiLanguageChanged(QString lang); // TODO: Implement real-time language switching
7677
void mixerSettingsChanged();
7778
void oscSettingsChanged();
7879
void midiSettingsChanged();

0 commit comments

Comments
 (0)