Mercurial > hg > sonic-visualiser
diff main/PreferencesDialog.cpp @ 677:bfd68cc71a25 imaf_enc
Merge from default branch, fix build
author | Chris Cannam |
---|---|
date | Thu, 05 Dec 2013 10:57:51 +0000 |
parents | ba338234c001 17fe7e0c23a1 |
children | 5e6e1e074080 |
line wrap: on
line diff
--- a/main/PreferencesDialog.cpp Thu Dec 05 10:11:17 2013 +0000 +++ b/main/PreferencesDialog.cpp Thu Dec 05 10:57:51 2013 +0000 @@ -142,7 +142,7 @@ QString targetName = settings.value("audio-target", "").toString(); settings.endGroup(); - for (int i = 0; i < devices.size(); ++i) { + for (int i = 0; i < (int)devices.size(); ++i) { audioDevice->addItem(AudioTargetFactory::getInstance() ->getCallbackTargetDescription(devices[i])); if (targetName == devices[i]) audioDevice->setCurrentIndex(i); @@ -191,7 +191,7 @@ connect(showSplash, SIGNAL(stateChanged(int)), this, SLOT(showSplashChanged(int))); -#ifndef Q_WS_MAC +#ifndef Q_OS_MAC QComboBox *bgMode = new QComboBox; int bg = prefs->getPropertyRangeAndValue("Background Mode", &min, &max, &deflt); @@ -205,6 +205,41 @@ this, SLOT(backgroundModeChanged(int))); #endif + settings.beginGroup("Preferences"); + QString userLocale = settings.value("locale", "").toString(); + m_currentLocale = userLocale; + settings.endGroup(); + + QComboBox *locale = new QComboBox; + QStringList localeFiles = QDir(":i18n").entryList(QStringList() << "*.qm"); + locale->addItem(tr("Follow system locale")); + m_locales.push_back(""); + if (userLocale == "") { + locale->setCurrentIndex(0); + } + foreach (QString f, localeFiles) { + QString f0 = f; + f.replace("sonic-visualiser_", "").replace(".qm", ""); + if (f == f0) { // our expectations about filename format were not met + cerr << "INFO: Unexpected filename " << f << " in i18n resource directory" << endl; + } else { + m_locales.push_back(f); + QString displayText; + // Add new translations here + if (f == "ru") displayText = tr("Russian"); + else if (f == "en_GB") displayText = tr("British English"); + else if (f == "en_US") displayText = tr("American English"); + else if (f == "cs_CZ") displayText = tr("Czech"); + else displayText = f; + locale->addItem(QString("%1 [%2]").arg(displayText).arg(f)); + if (userLocale == f) { + locale->setCurrentIndex(locale->count() - 1); + } + } + } + connect(locale, SIGNAL(currentIndexChanged(int)), + this, SLOT(localeChanged(int))); + QSpinBox *fontSize = new QSpinBox; int fs = prefs->getPropertyRangeAndValue("View Font Size", &min, &max, &deflt); @@ -239,6 +274,10 @@ int row = 0; + subgrid->addWidget(new QLabel(tr("%1:").arg(tr("User interface language"))), + row, 0); + subgrid->addWidget(locale, row++, 1, 1, 1); + subgrid->addWidget(new QLabel(tr("%1:").arg(prefs->getPropertyLabel ("Temporary Directory Root"))), row, 0); @@ -276,7 +315,7 @@ row, 0); subgrid->addWidget(propertyLayout, row++, 1, 1, 2); -#ifndef Q_WS_MAC +#ifndef Q_OS_MAC subgrid->addWidget(new QLabel(tr("%1:").arg(prefs->getPropertyLabel ("Background Mode"))), row, 0); @@ -484,6 +523,14 @@ } void +PreferencesDialog::localeChanged(int i) +{ + m_currentLocale = m_locales[i]; + m_applyButton->setEnabled(true); + m_changesOnRestart = true; +} + +void PreferencesDialog::tempDirRootChanged(QString r) { m_tempDirRoot = r; @@ -564,6 +611,10 @@ settings.setValue("sessiontemplate", m_currentTemplate); settings.endGroup(); + settings.beginGroup("Preferences"); + settings.setValue("locale", m_currentLocale); + settings.endGroup(); + m_applyButton->setEnabled(false); if (m_changesOnRestart) {