From a959b0b945d8a01f62544bfb73f03ad6f900a38d Mon Sep 17 00:00:00 2001 From: ubbo Date: Sun, 15 Jan 2012 18:04:37 +0000 Subject: mainwindow reloadable, e.g. when translation changes git-svn-id: http://cpunk.de/svn/src/gpg4usb/trunk@741 34ebc366-c3a9-4b3c-9f84-69acf7962910 --- main.cpp | 63 +++++++++++++++++++++++++++++++++++++-------------------------- 1 file changed, 37 insertions(+), 26 deletions(-) (limited to 'main.cpp') diff --git a/main.cpp b/main.cpp index 6321e02..d170967 100644 --- a/main.cpp +++ b/main.cpp @@ -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; } -- cgit v1.2.3