diff options
author | ubbo <ubbo@34ebc366-c3a9-4b3c-9f84-69acf7962910> | 2012-01-15 18:04:37 +0000 |
---|---|---|
committer | ubbo <ubbo@34ebc366-c3a9-4b3c-9f84-69acf7962910> | 2012-01-15 18:04:37 +0000 |
commit | a959b0b945d8a01f62544bfb73f03ad6f900a38d (patch) | |
tree | 0c2ea13635b636a79bef8bc6b8c73018033047ed /main.cpp | |
parent | hint to possibly fix newer gpgme for win (diff) | |
download | gpg4usb-a959b0b945d8a01f62544bfb73f03ad6f900a38d.tar.gz gpg4usb-a959b0b945d8a01f62544bfb73f03ad6f900a38d.zip |
mainwindow reloadable, e.g. when translation changes
git-svn-id: http://cpunk.de/svn/src/gpg4usb/trunk@741 34ebc366-c3a9-4b3c-9f84-69acf7962910
Diffstat (limited to 'main.cpp')
-rw-r--r-- | main.cpp | 63 |
1 files changed, 37 insertions, 26 deletions
@@ -68,29 +68,6 @@ int main(int argc, char *argv[]) qDebug() << "gpg4usb non portable build"; #endif - QSettings::setDefaultFormat(QSettings::IniFormat); - - QSettings settings; - QString lang = settings.value("int/lang", QLocale::system().name()).toString(); - if (lang.isEmpty()) { - lang = QLocale::system().name(); - } - - //internationalize - QTranslator translator; - translator.load("ts/gpg4usb_" + lang, - appPath); - app.installTranslator(&translator); - - // make shortcuts system and language independent - QTranslator translator2; -#ifdef _WIN32 - translator2.load("ts/qt_windows_" + lang, appPath); -#else - translator2.load("ts/qt_linux_" + lang, appPath); -#endif - app.installTranslator(&translator2); - /*QLocale ql(lang); foreach(QLocale l , QLocale::matchingLocales(ql.language(), ql.script(), ql.country())) { qDebug() << "l: " << l.bcp47Name(); @@ -102,10 +79,44 @@ int main(int argc, char *argv[]) QString styleSheet = QLatin1String(file.readAll()); qApp->setStyleSheet(styleSheet); - MainWindow *window = new MainWindow(); - window->show(); - return app.exec(); + /** + * internationalisation. loop to restart mainwindow + * with changed translation when settings change. + */ + QSettings::setDefaultFormat(QSettings::IniFormat); + QSettings settings; + QTranslator translator, translator2; + int return_from_event_loop_code; + +#ifdef _WIN32 + QString qtTransPrefix = "ts/qt_windows_"; +#else + QString qtTransPrefix = "ts/qt_linux_"; +#endif + + do { + app.removeTranslator(&translator); + app.removeTranslator(&translator2); + + QString lang = settings.value("int/lang", QLocale::system().name()).toString(); + if (lang.isEmpty()) { + lang = QLocale::system().name(); + } + + translator.load("ts/gpg4usb_" + lang, appPath); + app.installTranslator(&translator); + + // make shortcuts system and language independent + translator2.load(qtTransPrefix + lang, appPath); + app.installTranslator(&translator2); + + MainWindow window; + return_from_event_loop_code = app.exec(); + + } while( return_from_event_loop_code == RESTART_CODE); + + return return_from_event_loop_code; } |