summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdriaan de Groot <groot@kde.org>2019-05-10 15:02:12 -0400
committerAdriaan de Groot <groot@kde.org>2019-05-10 15:02:12 -0400
commitf18f9dcd14c043b95abfbd4e4319611b66aa9223 (patch)
tree218215f79ec225e5f229e64a6bf429589a77e3e6
parent03f88b3ed6cbf9155f6f62d941e9fd165c0e3202 (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.cpp10
-rw-r--r--src/modules/welcome/WelcomePage.h2
-rw-r--r--src/modules/welcome/WelcomeViewStep.cpp8
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 );
+ }
}