summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt
diff options
context:
space:
mode:
Diffstat (limited to 'rbutil/rbutilqt')
-rw-r--r--rbutil/rbutilqt/configure.cpp17
-rw-r--r--rbutil/rbutilqt/main.cpp10
-rw-r--r--rbutil/rbutilqt/rbsettings.cpp8
3 files changed, 25 insertions, 10 deletions
diff --git a/rbutil/rbutilqt/configure.cpp b/rbutil/rbutilqt/configure.cpp
index 364068f61a..4406e4aba2 100644
--- a/rbutil/rbutilqt/configure.cpp
+++ b/rbutil/rbutilqt/configure.cpp
@@ -37,7 +37,7 @@
37#include <windows.h> 37#include <windows.h>
38#endif 38#endif
39 39
40#define DEFAULT_LANG "English (C)" 40#define DEFAULT_LANG "English (en)"
41 41
42Config::Config(QWidget *parent,int index) : QDialog(parent) 42Config::Config(QWidget *parent,int index) : QDialog(parent)
43{ 43{
@@ -56,14 +56,13 @@ Config::Config(QWidget *parent,int index) : QDialog(parent)
56 QStringList langs = findLanguageFiles(); 56 QStringList langs = findLanguageFiles();
57 for(int i = 0; i < langs.size(); ++i) 57 for(int i = 0; i < langs.size(); ++i)
58 lang.insert(languageName(langs.at(i)) + tr(" (%1)").arg(langs.at(i)), langs.at(i)); 58 lang.insert(languageName(langs.at(i)) + tr(" (%1)").arg(langs.at(i)), langs.at(i));
59 lang.insert(DEFAULT_LANG, ""); 59 lang.insert(DEFAULT_LANG, "en");
60 QMap<QString, QString>::const_iterator i = lang.constBegin(); 60 QMap<QString, QString>::const_iterator i = lang.constBegin();
61 while (i != lang.constEnd()) { 61 while (i != lang.constEnd()) {
62 ui.listLanguages->addItem(i.key()); 62 ui.listLanguages->addItem(i.key());
63 i++; 63 i++;
64 } 64 }
65 ui.listLanguages->setSelectionMode(QAbstractItemView::SingleSelection); 65 ui.listLanguages->setSelectionMode(QAbstractItemView::SingleSelection);
66 connect(ui.listLanguages, SIGNAL(itemSelectionChanged()), this, SLOT(updateLanguage()));
67 ui.proxyPass->setEchoMode(QLineEdit::Password); 66 ui.proxyPass->setEchoMode(QLineEdit::Password);
68 ui.treeDevices->setAlternatingRowColors(true); 67 ui.treeDevices->setAlternatingRowColors(true);
69 ui.listLanguages->setAlternatingRowColors(true); 68 ui.listLanguages->setAlternatingRowColors(true);
@@ -109,7 +108,7 @@ void Config::accept()
109 settings->setProxyType(proxyType); 108 settings->setProxyType(proxyType);
110 109
111 // language 110 // language
112 if(settings->curLang() != language) 111 if(settings->curLang() != language && !language.isEmpty())
113 QMessageBox::information(this, tr("Language changed"), 112 QMessageBox::information(this, tr("Language changed"),
114 tr("You need to restart the application for the changed language to take effect.")); 113 tr("You need to restart the application for the changed language to take effect."));
115 settings->setLang(language); 114 settings->setLang(language);
@@ -188,13 +187,19 @@ void Config::setUserSettings()
188 b = i.key(); 187 b = i.key();
189 break; 188 break;
190 } 189 }
190 else if(settings->curLang().startsWith(i.value(), Qt::CaseInsensitive)) {
191 // check if there is a base language (en -> en_US, etc.)
192 b = i.key();
193 break;
194 }
191 i++; 195 i++;
192 } 196 }
193 a = ui.listLanguages->findItems(b, Qt::MatchExactly); 197 a = ui.listLanguages->findItems(b, Qt::MatchExactly);
194 if(a.size() <= 0)
195 a = ui.listLanguages->findItems(DEFAULT_LANG, Qt::MatchExactly);
196 if(a.size() > 0) 198 if(a.size() > 0)
197 ui.listLanguages->setCurrentItem(a.at(0)); 199 ui.listLanguages->setCurrentItem(a.at(0));
200 // don't connect before language list has been set up to prevent
201 // triggering the signal by selecting the saved language.
202 connect(ui.listLanguages, SIGNAL(itemSelectionChanged()), this, SLOT(updateLanguage()));
198 203
199 // devices tab 204 // devices tab
200 ui.mountPoint->setText(QDir::toNativeSeparators(settings->mountpoint())); 205 ui.mountPoint->setText(QDir::toNativeSeparators(settings->mountpoint()));
diff --git a/rbutil/rbutilqt/main.cpp b/rbutil/rbutilqt/main.cpp
index b8419c00a3..f1b4c8d5fd 100644
--- a/rbutil/rbutilqt/main.cpp
+++ b/rbutil/rbutilqt/main.cpp
@@ -37,12 +37,16 @@ int main( int argc, char ** argv ) {
37 user = new QSettings(absolutePath + "/RockboxUtility.ini", QSettings::IniFormat, 0); 37 user = new QSettings(absolutePath + "/RockboxUtility.ini", QSettings::IniFormat, 0);
38 else user = new QSettings(QSettings::IniFormat, QSettings::UserScope, "rockbox.org", "RockboxUtility"); 38 else user = new QSettings(QSettings::IniFormat, QSettings::UserScope, "rockbox.org", "RockboxUtility");
39 39
40 QString applang = QLocale::system().name();
40 QTranslator translator; 41 QTranslator translator;
41 // install translator 42 // install translator
42 if(!user->value("lang", "").toString().isEmpty()) { 43 if(!user->value("lang", "").toString().isEmpty()) {
43 if(!translator.load("rbutil_" + user->value("lang").toString(), absolutePath)) 44 applang = user->value("lang", "").toString();
44 translator.load("rbutil_" + user->value("lang").toString(), ":/lang"); 45 }
45 QLocale::setDefault(user->value("lang").toString()); 46 if(!applang.isEmpty()) {
47 if(!translator.load("rbutil_" + applang, absolutePath))
48 translator.load("rbutil_" + applang, ":/lang");
49 QLocale::setDefault(applang);
46 } 50 }
47 delete user; 51 delete user;
48 app.installTranslator(&translator); 52 app.installTranslator(&translator);
diff --git a/rbutil/rbutilqt/rbsettings.cpp b/rbutil/rbutilqt/rbsettings.cpp
index 38ed542ee7..d1f90ea7f6 100644
--- a/rbutil/rbutilqt/rbsettings.cpp
+++ b/rbutil/rbutilqt/rbsettings.cpp
@@ -252,7 +252,13 @@ QString RbSettings::curVoiceName()
252 252
253QString RbSettings::curLang() 253QString RbSettings::curLang()
254{ 254{
255 return userSettings->value("lang").toString(); 255 // QSettings::value only returns the default when the setting
256 // doesn't exist. Make sure to return the system language if
257 // the language in the configuration is present but empty too.
258 QString lang = userSettings->value("lang").toString();
259 if(lang.isEmpty())
260 lang = QLocale::system().name();
261 return lang;
256} 262}
257 263
258QString RbSettings::curEncoder() 264QString RbSettings::curEncoder()