diff options
-rw-r--r-- | main.cpp | 63 | ||||
-rw-r--r-- | mainwindow.cpp | 11 | ||||
-rw-r--r-- | mainwindow.h | 1 | ||||
-rw-r--r-- | wizard.cpp | 17 | ||||
-rw-r--r-- | wizard.h | 2 |
5 files changed, 68 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; } diff --git a/mainwindow.cpp b/mainwindow.cpp index e247d19..1813bdc 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -873,6 +873,9 @@ void MainWindow::fileDecrypt() void MainWindow::openSettingsDialog() { + + QString preLang = settings.value("int/lang").toString(); + new SettingsDialog(this); // Iconsize QSize iconSize = settings.value("toolbar/iconsize", QSize(32, 32)).toSize(); @@ -888,6 +891,14 @@ void MainWindow::openSettingsDialog() closeAttachmentDock(); } + // restart mainwindow if langugage changed + if(preLang != settings.value("int/lang").toString()) { + if(edit->maybeSaveAnyTab()) { + saveSettings(); + qApp->exit(RESTART_CODE); + } + } + } void MainWindow::cleanDoubleLinebreaks() diff --git a/mainwindow.h b/mainwindow.h index 692c0e2..5c972e3 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -56,6 +56,7 @@ class QApplication; class QDockWidget; QT_END_NAMESPACE +const int RESTART_CODE = 1000; /** * @brief @@ -27,6 +27,7 @@ Wizard::Wizard(GpgME::GpgContext *ctx, KeyMgmt *keyMgmt, QWidget *parent) { mCtx=ctx; mKeyMgmt=keyMgmt; + mParent=parent; IntroPage *introPage = new IntroPage(); KeyGenPage *keyGenPage = new KeyGenPage(mCtx); ImportPage *importPage = new ImportPage(mCtx,mKeyMgmt); @@ -186,6 +187,8 @@ bool ImportPage::importKeysFromGpg4usb() return false; } + importConfFromGpg4usb(dir); + QFile secRing(dir+"/keydb/secring.gpg"); QFile pubRing(dir+"/keydb/pubring.gpg"); @@ -213,9 +216,23 @@ bool ImportPage::importKeysFromGpg4usb() QByteArray inBuffer = secRing.readAll(); mKeyMgmt->importKeys(inBuffer); } + + qApp->exit(); return true; } +bool ImportPage::importConfFromGpg4usb(QString dir) { + QString path = dir+"/conf/gpg4usb.ini"; + qDebug() << "import old conf from: " << path; + QSettings oldconf(path, QSettings::IniFormat, this); + QSettings actualConf; + foreach(QString key, oldconf.allKeys()) { + qDebug() << key << ": " << oldconf.value(key); + actualConf.setValue(key, oldconf.value(key)); + } + +} + bool ImportPage::importKeysFromGnupg() { // first get gnupghomedir and check, if it exists @@ -42,6 +42,7 @@ public: private: GpgME::GpgContext *mCtx; KeyMgmt *mKeyMgmt; + QWidget *mParent; }; class IntroPage : public QWizardPage @@ -87,6 +88,7 @@ private slots: */ bool importKeysFromGnupg(); bool importKeysFromGpg4usb(); + bool importConfFromGpg4usb(QString dir); private: KeyMgmt *mKeyMgmt; |