diff options
author | Adriaan de Groot <groot@kde.org> | 2019-05-10 15:02:12 -0400 |
---|---|---|
committer | Adriaan de Groot <groot@kde.org> | 2019-05-10 15:02:12 -0400 |
commit | f18f9dcd14c043b95abfbd4e4319611b66aa9223 (patch) | |
tree | 218215f79ec225e5f229e64a6bf429589a77e3e6 | |
parent | 03f88b3ed6cbf9155f6f62d941e9fd165c0e3202 (diff) |
[welcome] Lookup GeoIP language and pass to language widget
- FIXES #934
- Whether this is really wanted depends on the distro, and I'm not
100% convinced the likely tags from Unicode are correct (or it'd
take a lot more data). In any case, starting Calamares in "NL"
gets me "nl_NL" as translation; presumably starting it in "BE"
will get me that as well (what about Les Wallons?)
- This also shows off that it's a real hack to have so much program
logic in the *widget* parts of each ViewStep. Longer-term,
a lot of functionality should go to the ViewStep itself, which
will then control the UI.
-rw-r--r-- | src/modules/welcome/WelcomePage.cpp | 10 | ||||
-rw-r--r-- | src/modules/welcome/WelcomePage.h | 2 | ||||
-rw-r--r-- | src/modules/welcome/WelcomeViewStep.cpp | 8 |
3 files changed, 18 insertions, 2 deletions
diff --git a/src/modules/welcome/WelcomePage.cpp b/src/modules/welcome/WelcomePage.cpp index c7d169c92..ae78aa8ff 100644 --- a/src/modules/welcome/WelcomePage.cpp +++ b/src/modules/welcome/WelcomePage.cpp @@ -257,11 +257,19 @@ WelcomePage::focusInEvent( QFocusEvent* e ) e->accept(); } -bool WelcomePage::verdict() const +bool +WelcomePage::verdict() const { return m_checkingWidget->verdict(); } +void +WelcomePage::externallySelectedLanguage( int row ) +{ + if ( ( row >= 0 ) && ( row < ui->languageWidget->count() ) ) + ui->languageWidget->setCurrentIndex( row ); +} + void LocaleTwoColumnDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const diff --git a/src/modules/welcome/WelcomePage.h b/src/modules/welcome/WelcomePage.h index 53a30d95b..f05426d38 100644 --- a/src/modules/welcome/WelcomePage.h +++ b/src/modules/welcome/WelcomePage.h @@ -46,6 +46,8 @@ public: /// @brief Results of requirements checking bool verdict() const; + /// @brief Change the language from an external source. + void externallySelectedLanguage( int row ); protected: void focusInEvent( QFocusEvent* e ) override; //choose the child widget to focus diff --git a/src/modules/welcome/WelcomeViewStep.cpp b/src/modules/welcome/WelcomeViewStep.cpp index 97b378330..e115565b7 100644 --- a/src/modules/welcome/WelcomeViewStep.cpp +++ b/src/modules/welcome/WelcomeViewStep.cpp @@ -161,5 +161,11 @@ WelcomeViewStep::setCountry( const QString& countryCode ) return; } else - cDebug() << "Would like to select" << c_l; + { + int r = CalamaresUtils::Locale::availableTranslations()->find( countryCode ); + if ( r < 0 ) + cDebug() << "Unusable country code" << countryCode << "(no suitable translation)"; + if ( ( r >= 0 ) && m_widget ) + m_widget->externallySelectedLanguage( r ); + } } |