diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp
index 9eede6b97..01fc4356d 100644
--- a/gui/mainwindow.cpp
+++ b/gui/mainwindow.cpp
@@ -436,7 +436,7 @@ void MainWindow::CheckDone()
void MainWindow::ProgramSettings()
{
- SettingsDialog dialog(mSettings, mApplications, this);
+ SettingsDialog dialog(mSettings, mApplications, mTranslation, this);
if (dialog.exec() == QDialog::Accepted)
{
dialog.SaveSettingValues();
@@ -444,6 +444,10 @@ void MainWindow::ProgramSettings()
dialog.SaveFullPath(),
dialog.SaveAllErrors(),
dialog.ShowNoErrorsMessage());
+ const int currentLang = mTranslation->GetCurrentLanguage();
+ const int newLang = mSettings->value(SETTINGS_LANGUAGE, 0).toInt();
+ if (currentLang != newLang)
+ SetLanguage(newLang);
}
}
diff --git a/gui/settings.ui b/gui/settings.ui
index ea1ba274d..ac5f19f33 100644
--- a/gui/settings.ui
+++ b/gui/settings.ui
@@ -254,6 +254,20 @@
+
+
+ Language
+
+
+ -
+
+
+ QAbstractItemView::SelectRows
+
+
+
+
+
-
diff --git a/gui/settingsdialog.cpp b/gui/settingsdialog.cpp
index 4563b2b27..71f0c34de 100644
--- a/gui/settingsdialog.cpp
+++ b/gui/settingsdialog.cpp
@@ -30,14 +30,17 @@
#include "settingsdialog.h"
#include "applicationdialog.h"
#include "applicationlist.h"
+#include "translationhandler.h"
#include "common.h"
SettingsDialog::SettingsDialog(QSettings *programSettings,
ApplicationList *list,
+ TranslationHandler *translator,
QWidget *parent) :
QDialog(parent),
mSettings(programSettings),
mApplications(list),
+ mTranslator(translator),
mTempApplications(new ApplicationList(this))
{
mUI.setupUi(this);
@@ -78,6 +81,7 @@ SettingsDialog::SettingsDialog(QSettings *programSettings,
mUI.mLblIdealThreads->setText(tr("N/A"));
LoadSettings();
+ InitTranslationsList();
}
SettingsDialog::~SettingsDialog()
@@ -85,6 +89,17 @@ SettingsDialog::~SettingsDialog()
SaveSettings();
}
+void SettingsDialog::InitTranslationsList()
+{
+ QStringList languages = mTranslator->GetNames();
+ foreach(const QString lang, languages)
+ {
+ mUI.mListLanguages->addItem(lang);
+ }
+ const int current = mTranslator->GetCurrentLanguage();
+ mUI.mListLanguages->setCurrentRow(current);
+}
+
Qt::CheckState SettingsDialog::BoolToCheckState(bool yes) const
{
if (yes)
@@ -133,6 +148,7 @@ void SettingsDialog::SaveSettingValues()
SaveCheckboxValue(mUI.mShowDebugWarnings, SETTINGS_SHOW_DEBUG_WARNINGS);
SaveCheckboxValue(mUI.mInlineSuppressions, SETTINGS_INLINE_SUPPRESSIONS);
mSettings->setValue(SETTINGS_GLOBAL_INCLUDE_PATHS, mUI.mEditIncludePaths->text());
+ mSettings->setValue(SETTINGS_LANGUAGE, mUI.mListLanguages->currentRow());
}
void SettingsDialog::SaveCheckboxValue(QCheckBox *box, const QString &name)
diff --git a/gui/settingsdialog.h b/gui/settingsdialog.h
index d97591f7c..b99b5c294 100644
--- a/gui/settingsdialog.h
+++ b/gui/settingsdialog.h
@@ -27,6 +27,7 @@
class QSettings;
class QWidget;
class ApplicationList;
+class TranslationHandler;
/// @addtogroup GUI
/// @{
@@ -41,6 +42,7 @@ class SettingsDialog : public QDialog
public:
SettingsDialog(QSettings *programSettings,
ApplicationList *list,
+ TranslationHandler *translator,
QWidget *parent = 0);
virtual ~SettingsDialog();
@@ -163,6 +165,10 @@ protected:
*/
bool CheckStateToBool(Qt::CheckState state) const;
+ /**
+ * @brief Populate the translations list.
+ */
+ void InitTranslationsList();
/**
* @brief Settings
@@ -183,6 +189,12 @@ protected:
*/
ApplicationList *mTempApplications;
+ /**
+ * @brief List of translations.
+ *
+ */
+ TranslationHandler *mTranslator;
+
/**
* @brief Dialog from UI designer
*
diff --git a/gui/translationhandler.cpp b/gui/translationhandler.cpp
index 7b9e6e46d..d6b8e9dba 100644
--- a/gui/translationhandler.cpp
+++ b/gui/translationhandler.cpp
@@ -16,12 +16,11 @@
* along with this program. If not, see .
*/
-#include "translationhandler.h"
-
#include
#include
#include
#include
+#include "translationhandler.h"
TranslationHandler::TranslationHandler(QObject *parent) :
QObject(parent),