From 29207d73150cf6306dedca2c591c42cef500708a Mon Sep 17 00:00:00 2001
From: Aline Gondim Santos <aline.gondimsantos@savoirfairelinux.com>
Date: Wed, 30 Nov 2022 09:57:08 -0300
Subject: [PATCH] language: reload theme and layout options

Change-Id: Id33ae495260ff1e9ea58624a440a80aab23ad6a1
GitLab: #886
---
 .../settingsview/components/ChatviewSettings.qml    | 13 +++++++++++++
 src/app/settingsview/components/SystemSettings.qml  | 12 +++++++++++-
 src/app/utilsadapter.cpp                            |  5 +++--
 src/app/utilsadapter.h                              |  1 +
 4 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/src/app/settingsview/components/ChatviewSettings.qml b/src/app/settingsview/components/ChatviewSettings.qml
index 0b635c2ed..4d385666a 100644
--- a/src/app/settingsview/components/ChatviewSettings.qml
+++ b/src/app/settingsview/components/ChatviewSettings.qml
@@ -90,6 +90,7 @@ ColumnLayout {
         tipText: JamiStrings.layout
         fontPointSize: JamiTheme.settingsFontSize
         comboModel: ListModel {
+            id: layoutModel
             Component.onCompleted: {
                 append({ textDisplay: JamiStrings.horizontalViewOpt })
                 append({ textDisplay: JamiStrings.verticalViewOpt })
@@ -106,5 +107,17 @@ ColumnLayout {
                 comboModel.get(modelIndex).textDisplay === JamiStrings.verticalViewOpt
             )
         }
+
+        Connections {
+            target: UtilsAdapter
+
+            function onChangeLanguage() {
+                var idx = outputComboBoxSetting.modelIndex
+                layoutModel.clear()
+                layoutModel.append({ textDisplay: JamiStrings.horizontalViewOpt })
+                layoutModel.append({ textDisplay: JamiStrings.verticalViewOpt })
+                outputComboBoxSetting.modelIndex = idx
+            }
+        }
     }
 }
diff --git a/src/app/settingsview/components/SystemSettings.qml b/src/app/settingsview/components/SystemSettings.qml
index 9871f730f..a1d75222a 100644
--- a/src/app/settingsview/components/SystemSettings.qml
+++ b/src/app/settingsview/components/SystemSettings.qml
@@ -76,6 +76,7 @@ ColumnLayout {
         fontPointSize: JamiTheme.settingsFontSize
 
         comboModel: ListModel {
+            id: themeModel
             Component.onCompleted: {
                 append({ textDisplay: JamiStrings.dark })
                 append({ textDisplay: JamiStrings.light })
@@ -223,13 +224,22 @@ ColumnLayout {
         }
     }
 
-
     Connections {
         target: UtilsAdapter
 
         function onChangeFontSize() {
             zoomSpinBox.valueField = Math.round(UtilsAdapter.getAppValue(Settings.BaseZoom) * 100.0)
         }
+
+        function onChangeLanguage() {
+            var idx = themeComboBoxSettings.modelIndex
+            themeModel.clear()
+            themeModel.append({ textDisplay: JamiStrings.dark })
+            themeModel.append({ textDisplay: JamiStrings.light })
+            if (UtilsAdapter.hasNativeDarkTheme())
+                themeModel.append({ textDisplay: JamiStrings.system })
+            themeComboBoxSettings.modelIndex = idx
+        }
     }
 
     SettingSpinBox {
diff --git a/src/app/utilsadapter.cpp b/src/app/utilsadapter.cpp
index bb9d4937c..f3cc9fa14 100644
--- a/src/app/utilsadapter.cpp
+++ b/src/app/utilsadapter.cpp
@@ -367,9 +367,10 @@ UtilsAdapter::setAppValue(const Settings::Key key, const QVariant& value)
     }
     settingsManager_->setValue(key, value);
     // If we change the lang preference, reload the translations
-    if (key == Settings::Key::LANG)
+    if (key == Settings::Key::LANG) {
         settingsManager_->loadTranslations();
-    else if (key == Settings::Key::BaseZoom)
+        Q_EMIT changeLanguage();
+    } else if (key == Settings::Key::BaseZoom)
         Q_EMIT changeFontSize();
     else if (key == Settings::Key::EnableExperimentalSwarm)
         Q_EMIT showExperimentalCallSwarm();
diff --git a/src/app/utilsadapter.h b/src/app/utilsadapter.h
index dd2b2ac92..cd8aae2ec 100644
--- a/src/app/utilsadapter.h
+++ b/src/app/utilsadapter.h
@@ -127,6 +127,7 @@ Q_SIGNALS:
     void chatviewPositionChanged();
     void appThemeChanged();
     void showExperimentalCallSwarm();
+    void changeLanguage();
 
 private:
     QClipboard* clipboard_;
-- 
GitLab