From 2dd2555a63a3098359e5a9873b748619b20b98ef Mon Sep 17 00:00:00 2001
From: Philipp David <pd@3b.pm>
Date: Thu, 13 Jan 2022 09:41:51 +0100
Subject: Update selected language automatically

---
 launcher/ui/widgets/LanguageSelectionWidget.cpp | 11 +++++++++++
 launcher/ui/widgets/LanguageSelectionWidget.h   |  2 ++
 2 files changed, 13 insertions(+)

(limited to 'launcher/ui')

diff --git a/launcher/ui/widgets/LanguageSelectionWidget.cpp b/launcher/ui/widgets/LanguageSelectionWidget.cpp
index cf70c7b4..964d2b7c 100644
--- a/launcher/ui/widgets/LanguageSelectionWidget.cpp
+++ b/launcher/ui/widgets/LanguageSelectionWidget.cpp
@@ -6,6 +6,7 @@
 #include <QLabel>
 #include "Application.h"
 #include "translations/TranslationsModel.h"
+#include "settings/Setting.h"
 
 LanguageSelectionWidget::LanguageSelectionWidget(QWidget *parent) :
     QWidget(parent)
@@ -37,6 +38,9 @@ LanguageSelectionWidget::LanguageSelectionWidget(QWidget *parent) :
     languageView->header()->setSectionResizeMode(0, QHeaderView::Stretch);
     connect(languageView->selectionModel(), &QItemSelectionModel::currentRowChanged, this, &LanguageSelectionWidget::languageRowChanged);
     verticalLayout->setContentsMargins(0,0,0,0);
+
+    auto language_setting = APPLICATION->settings()->getSetting("Language");
+    connect(language_setting.get(), &Setting::SettingChanged, this, &LanguageSelectionWidget::languageSettingChanged);
 }
 
 QString LanguageSelectionWidget::getSelectedLanguageKey() const
@@ -64,3 +68,10 @@ void LanguageSelectionWidget::languageRowChanged(const QModelIndex& current, con
     translations->selectLanguage(key);
     translations->updateLanguage(key);
 }
+
+void LanguageSelectionWidget::languageSettingChanged(const Setting &, const QVariant)
+{
+    auto translations = APPLICATION->translations();
+    auto index = translations->selectedIndex();
+    languageView->setCurrentIndex(index);
+}
diff --git a/launcher/ui/widgets/LanguageSelectionWidget.h b/launcher/ui/widgets/LanguageSelectionWidget.h
index e65936db..4a88924c 100644
--- a/launcher/ui/widgets/LanguageSelectionWidget.h
+++ b/launcher/ui/widgets/LanguageSelectionWidget.h
@@ -20,6 +20,7 @@
 class QVBoxLayout;
 class QTreeView;
 class QLabel;
+class Setting;
 
 class LanguageSelectionWidget: public QWidget
 {
@@ -33,6 +34,7 @@ public:
 
 protected slots:
     void languageRowChanged(const QModelIndex &current, const QModelIndex &previous);
+    void languageSettingChanged(const Setting &, const QVariant);
 
 private:
     QVBoxLayout *verticalLayout = nullptr;
-- 
cgit