Skip to content

Commit 29d6b44

Browse files
committed
GUI: Add language selection panel to settings-dialog.
Settings-dialog is more natural place for language selection than the main menu. We also have more space and freedom there to have longer text etc to make the selection easier (menus are quite limited controls).
1 parent 226b605 commit 29d6b44

5 files changed

Lines changed: 48 additions & 3 deletions

File tree

gui/mainwindow.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -436,14 +436,18 @@ void MainWindow::CheckDone()
436436

437437
void MainWindow::ProgramSettings()
438438
{
439-
SettingsDialog dialog(mSettings, mApplications, this);
439+
SettingsDialog dialog(mSettings, mApplications, mTranslation, this);
440440
if (dialog.exec() == QDialog::Accepted)
441441
{
442442
dialog.SaveSettingValues();
443443
mUI.mResults->UpdateSettings(dialog.ShowFullPath(),
444444
dialog.SaveFullPath(),
445445
dialog.SaveAllErrors(),
446446
dialog.ShowNoErrorsMessage());
447+
const int currentLang = mTranslation->GetCurrentLanguage();
448+
const int newLang = mSettings->value(SETTINGS_LANGUAGE, 0).toInt();
449+
if (currentLang != newLang)
450+
SetLanguage(newLang);
447451
}
448452
}
449453

gui/settings.ui

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,20 @@
254254
</item>
255255
</layout>
256256
</widget>
257+
<widget class="QWidget" name="tab_4">
258+
<attribute name="title">
259+
<string>Language</string>
260+
</attribute>
261+
<layout class="QVBoxLayout" name="verticalLayout_5">
262+
<item>
263+
<widget class="QListWidget" name="mListLanguages">
264+
<property name="selectionBehavior">
265+
<enum>QAbstractItemView::SelectRows</enum>
266+
</property>
267+
</widget>
268+
</item>
269+
</layout>
270+
</widget>
257271
</widget>
258272
</item>
259273
<item>

gui/settingsdialog.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,17 @@
3030
#include "settingsdialog.h"
3131
#include "applicationdialog.h"
3232
#include "applicationlist.h"
33+
#include "translationhandler.h"
3334
#include "common.h"
3435

3536
SettingsDialog::SettingsDialog(QSettings *programSettings,
3637
ApplicationList *list,
38+
TranslationHandler *translator,
3739
QWidget *parent) :
3840
QDialog(parent),
3941
mSettings(programSettings),
4042
mApplications(list),
43+
mTranslator(translator),
4144
mTempApplications(new ApplicationList(this))
4245
{
4346
mUI.setupUi(this);
@@ -78,13 +81,25 @@ SettingsDialog::SettingsDialog(QSettings *programSettings,
7881
mUI.mLblIdealThreads->setText(tr("N/A"));
7982

8083
LoadSettings();
84+
InitTranslationsList();
8185
}
8286

8387
SettingsDialog::~SettingsDialog()
8488
{
8589
SaveSettings();
8690
}
8791

92+
void SettingsDialog::InitTranslationsList()
93+
{
94+
QStringList languages = mTranslator->GetNames();
95+
foreach(const QString lang, languages)
96+
{
97+
mUI.mListLanguages->addItem(lang);
98+
}
99+
const int current = mTranslator->GetCurrentLanguage();
100+
mUI.mListLanguages->setCurrentRow(current);
101+
}
102+
88103
Qt::CheckState SettingsDialog::BoolToCheckState(bool yes) const
89104
{
90105
if (yes)
@@ -133,6 +148,7 @@ void SettingsDialog::SaveSettingValues()
133148
SaveCheckboxValue(mUI.mShowDebugWarnings, SETTINGS_SHOW_DEBUG_WARNINGS);
134149
SaveCheckboxValue(mUI.mInlineSuppressions, SETTINGS_INLINE_SUPPRESSIONS);
135150
mSettings->setValue(SETTINGS_GLOBAL_INCLUDE_PATHS, mUI.mEditIncludePaths->text());
151+
mSettings->setValue(SETTINGS_LANGUAGE, mUI.mListLanguages->currentRow());
136152
}
137153

138154
void SettingsDialog::SaveCheckboxValue(QCheckBox *box, const QString &name)

gui/settingsdialog.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
class QSettings;
2828
class QWidget;
2929
class ApplicationList;
30+
class TranslationHandler;
3031

3132
/// @addtogroup GUI
3233
/// @{
@@ -41,6 +42,7 @@ class SettingsDialog : public QDialog
4142
public:
4243
SettingsDialog(QSettings *programSettings,
4344
ApplicationList *list,
45+
TranslationHandler *translator,
4446
QWidget *parent = 0);
4547
virtual ~SettingsDialog();
4648

@@ -163,6 +165,10 @@ protected slots:
163165
*/
164166
bool CheckStateToBool(Qt::CheckState state) const;
165167

168+
/**
169+
* @brief Populate the translations list.
170+
*/
171+
void InitTranslationsList();
166172

167173
/**
168174
* @brief Settings
@@ -183,6 +189,12 @@ protected slots:
183189
*/
184190
ApplicationList *mTempApplications;
185191

192+
/**
193+
* @brief List of translations.
194+
*
195+
*/
196+
TranslationHandler *mTranslator;
197+
186198
/**
187199
* @brief Dialog from UI designer
188200
*

gui/translationhandler.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,11 @@
1616
* along with this program. If not, see <http://www.gnu.org/licenses/>.
1717
*/
1818

19-
#include "translationhandler.h"
20-
2119
#include <QApplication>
2220
#include <QFile>
2321
#include <QDebug>
2422
#include <QLocale>
23+
#include "translationhandler.h"
2524

2625
TranslationHandler::TranslationHandler(QObject *parent) :
2726
QObject(parent),

0 commit comments

Comments
 (0)