summaryrefslogtreecommitdiff
path: root/ui/qt/main_window_preferences_frame.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ui/qt/main_window_preferences_frame.cpp')
-rw-r--r--ui/qt/main_window_preferences_frame.cpp58
1 files changed, 55 insertions, 3 deletions
diff --git a/ui/qt/main_window_preferences_frame.cpp b/ui/qt/main_window_preferences_frame.cpp
index fca0479835..db4f5cabad 100644
--- a/ui/qt/main_window_preferences_frame.cpp
+++ b/ui/qt/main_window_preferences_frame.cpp
@@ -19,10 +19,15 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
+#include "wireshark_application.h"
#include "main_window_preferences_frame.h"
+#include "qt_ui_utils.h"
+
#include "ui_main_window_preferences_frame.h"
+#include "ui/language.h"
#include <epan/prefs-int.h>
+#include <wsutil/filesystem.h>
#include <QFileDialog>
#include <QDebug>
@@ -45,7 +50,6 @@ MainWindowPreferencesFrame::MainWindowPreferencesFrame(QWidget *parent) :
pref_auto_scroll_percentage_ = prefFromPrefPtr(&prefs.gui_auto_scroll_percentage);
pref_toolbar_main_style_ = prefFromPrefPtr(&prefs.gui_toolbar_main_style);
pref_toolbar_filter_style_ = prefFromPrefPtr(&prefs.gui_toolbar_filter_style);
- pref_qt_language_ = prefFromPrefPtr(&prefs.gui_qt_language);
QStyleOption style_opt;
QString indent_ss = QString(
@@ -64,6 +68,44 @@ MainWindowPreferencesFrame::MainWindowPreferencesFrame(QWidget *parent) :
ui->maxFilterLineEdit->setMaximumWidth(num_entry_width);
ui->maxRecentLineEdit->setMaximumWidth(num_entry_width);
ui->autoScrollPercentageLineEdit->setMaximumWidth(num_entry_width);
+
+ QString globalLanguagesPath(QString(get_datafile_dir()) + "/languages/");
+ QString userLanguagesPath(gchar_free_to_qstring(get_persconffile_path("languages/", FALSE)));
+
+
+
+ QStringList filenames = QDir(":/i18n/").entryList(QStringList("wireshark_*.qm"));
+ filenames += QDir(globalLanguagesPath).entryList(QStringList("wireshark_*.qm"));
+ filenames += QDir(userLanguagesPath).entryList(QStringList("wireshark_*.qm"));
+
+ for (int i = 0; i < filenames.size(); i += 1) {
+ QString locale;
+ locale = filenames[i];
+ locale.truncate(locale.lastIndexOf('.'));
+ locale.remove(0, locale.indexOf('_') + 1);
+
+ QString lang = QLocale::languageToString(QLocale(locale).language());
+ QIcon ico = QIcon();
+ if (QFile::exists(QString(":/languages/%1.svg").arg(locale)))
+ ico.addFile(QString(":/languages/%1.svg").arg(locale));
+ if (QFile::exists(globalLanguagesPath + locale + ".svg"))
+ ico.addFile(globalLanguagesPath + locale + ".svg");
+ if (QFile::exists(userLanguagesPath + locale + ".svg"))
+ ico.addFile(userLanguagesPath + locale + ".svg");
+
+ ui->languageComboBox->addItem(ico, lang, locale);
+ }
+
+ ui->languageComboBox->setItemData(0, "auto");
+ ui->languageComboBox->model()->sort(0);
+
+ for (int i = 0; i < ui->languageComboBox->count(); i += 1) {
+ if (QString(language) == ui->languageComboBox->itemData(i).toString()) {
+ ui->languageComboBox->setCurrentIndex(i);
+ break;
+ }
+ }
+
}
MainWindowPreferencesFrame::~MainWindowPreferencesFrame()
@@ -102,7 +144,14 @@ void MainWindowPreferencesFrame::updateWidgets()
ui->mainToolbarComboBox->setCurrentIndex(pref_toolbar_main_style_->stashed_val.enumval);
ui->filterToolbarComboBox->setCurrentIndex(pref_toolbar_filter_style_->stashed_val.enumval);
- ui->languageComboBox->setCurrentIndex(pref_qt_language_->stashed_val.enumval);
+
+ QStringList filenames = QDir(":/i18n/").entryList(QStringList("wireshark_*.qm"));
+ for (int i = 0; i < ui->languageComboBox->count(); i += 1) {
+ if (QString(language) == ui->languageComboBox->itemData(i).toString()) {
+ ui->languageComboBox->setCurrentIndex(i);
+ break;
+ }
+ }
}
void MainWindowPreferencesFrame::on_geometryCheckBox_toggled(bool checked)
@@ -186,7 +235,10 @@ void MainWindowPreferencesFrame::on_filterToolbarComboBox_currentIndexChanged(in
void MainWindowPreferencesFrame::on_languageComboBox_currentIndexChanged(int index)
{
- pref_qt_language_->stashed_val.enumval = index;
+ if (language)
+ delete language;
+
+ language = strdup(ui->languageComboBox->itemData(index).toString().toStdString().c_str());
}
/*