From 89fa8ca0acc959e045946d66072b18511dbc7b22 Mon Sep 17 00:00:00 2001 From: Inky Date: Sat, 25 May 2019 00:15:00 +0300 Subject: [PATCH] Changed: added language support per profiles --HG-- branch : patches-from-atys --- .../ryzom_installer/src/operationdialog.cpp | 2 ++ .../client/ryzom_installer/src/profile.cpp | 4 ++- .../client/ryzom_installer/src/profile.h | 1 + .../ryzom_installer/src/profilesdialog.cpp | 26 +++++++++++++++++++ .../ryzom_installer/src/profilesdialog.h | 4 +++ 5 files changed, 36 insertions(+), 1 deletion(-) diff --git a/code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp b/code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp index fe01509ab..9017ea2d1 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/operationdialog.cpp @@ -877,6 +877,8 @@ bool COperationDialog::createDefaultProfile() profile.comments = "Default profile created by Ryzom Installer"; profile.desktopShortcut = false; profile.menuShortcut = false; + // default use locale + profile.language = config->getLanguage(); #ifdef Q_OS_WIN32 QStringList paths; diff --git a/code/ryzom/tools/client/ryzom_installer/src/profile.cpp b/code/ryzom/tools/client/ryzom_installer/src/profile.cpp index bc90bba56..e6c9aff64 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/profile.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/profile.cpp @@ -33,6 +33,7 @@ void CProfile::loadFromSettings(const QSettings &settings) executable = settings.value("executable").toString(); arguments = settings.value("arguments").toString(); comments = settings.value("comments").toString(); + language = settings.value("language").toString(); desktopShortcut = settings.value("desktop_shortcut").toBool(); menuShortcut = settings.value("menu_shortcut").toBool(); } @@ -45,6 +46,7 @@ void CProfile::saveToSettings(QSettings &settings) const settings.setValue("executable", executable); settings.setValue("arguments", arguments); settings.setValue("comments", comments); + settings.setValue("language", language); settings.setValue("desktop_shortcut", desktopShortcut); settings.setValue("menu_shortcut", menuShortcut); } @@ -175,7 +177,7 @@ bool CProfile::createClientConfig() const // create the 2 initial lines of client.cfg QString rootConfigFilenameLine = QString("RootConfigFilename = \"%1\";").arg(s.getDefaultClientConfigFullPath()); - QString languageCodeline = QString("LanguageCode = \"%1\";\n").arg(CConfigFile::getInstance()->getLanguage()); + QString languageCodeline = QString("LanguageCode = \"%1\";\n").arg(language); QString content; diff --git a/code/ryzom/tools/client/ryzom_installer/src/profile.h b/code/ryzom/tools/client/ryzom_installer/src/profile.h index 5b7f8158f..cad701643 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/profile.h +++ b/code/ryzom/tools/client/ryzom_installer/src/profile.h @@ -34,6 +34,7 @@ public: QString executable; QString arguments; QString comments; + QString language; bool desktopShortcut; bool menuShortcut; diff --git a/code/ryzom/tools/client/ryzom_installer/src/profilesdialog.cpp b/code/ryzom/tools/client/ryzom_installer/src/profilesdialog.cpp index d4d94457e..ff1f0c0bc 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/profilesdialog.cpp +++ b/code/ryzom/tools/client/ryzom_installer/src/profilesdialog.cpp @@ -108,6 +108,7 @@ void CProfilesDialog::displayProfile(int index) serverComboBox->setEnabled(enabled); argumentsEdit->setEnabled(enabled); commentsEdit->setEnabled(enabled); + langComboBox->setEnabled(enabled); if (index < 0) return; @@ -134,6 +135,7 @@ void CProfilesDialog::displayProfile(int index) directoryPathLabel->setText(profileDirectory); desktopShortcutCheckBox->setChecked(profile.desktopShortcut); menuShortcutCheckBox->setChecked(profile.menuShortcut); + langComboBox->setCurrentIndex(getIndexFromProfileLanguage(profile.language)); // disable click on button if directory doesn't exist directoryButton->setEnabled(QFile::exists(profileDirectory)); @@ -155,6 +157,7 @@ void CProfilesDialog::saveProfile(int index) profile.comments = commentsEdit->toPlainText(); profile.desktopShortcut = desktopShortcutCheckBox->isChecked(); profile.menuShortcut = menuShortcutCheckBox->isChecked(); + profile.language = getProfileLanguageFromIndex(langComboBox->currentIndex()); } void CProfilesDialog::deleteProfile(int index) @@ -216,6 +219,7 @@ void CProfilesDialog::addProfile() // set default parameters profile.id = QString::number(nextId); profile.server = server.id; + profile.language = config->getLanguage(); // locale profilesListView->setCurrentIndex(m_model->index(index, 0)); displayProfile(index); @@ -312,3 +316,25 @@ void CProfilesDialog::onProfileDirectoryClicked() QDesktopServices::openUrl(QUrl::fromLocalFile(profileDirectory)); } + +int CProfilesDialog::getIndexFromProfileLanguage(const QString &lang) const +{ + if (lang == "en") return 0; + if (lang == "fr") return 1; + if (lang == "de") return 2; + if (lang == "es") return 3; + if (lang == "ru") return 4; + + return -1; +} + +QString CProfilesDialog::getProfileLanguageFromIndex(int index) const +{ + if (index == 0) return "en"; + if (index == 1) return "fr"; + if (index == 2) return "de"; + if (index == 3) return "es"; + if (index == 4) return "ru"; + // locale + return CConfigFile::getInstance()->getLanguage(); +} diff --git a/code/ryzom/tools/client/ryzom_installer/src/profilesdialog.h b/code/ryzom/tools/client/ryzom_installer/src/profilesdialog.h index 9f364f4ae..29540a68d 100644 --- a/code/ryzom/tools/client/ryzom_installer/src/profilesdialog.h +++ b/code/ryzom/tools/client/ryzom_installer/src/profilesdialog.h @@ -54,6 +54,10 @@ private slots: void onExecutableDefaultClicked(); void onExecutableBrowseClicked(); + int getIndexFromProfileLanguage(const QString &langId) const; + + QString getProfileLanguageFromIndex(int index) const; + private: CProfilesModel *m_model; CServersModel *m_serversModel;