From 1c6230dbeb1212b093ef0a37757651c059f5b06f Mon Sep 17 00:00:00 2001 From: Martchus Date: Sat, 28 Mar 2020 23:13:34 +0100 Subject: [PATCH] Fix showing IO error in Qt Quick GUI The order of the catch handlers must be adjusted because std::ios_base::failure is derived from std::runtime_error. --- CMakeLists.txt | 2 +- quickgui/controller.cpp | 6 ++--- translations/passwordmanager_de_DE.ts | 35 +++++++++++++------------ translations/passwordmanager_en_US.ts | 37 ++++++++++++--------------- 4 files changed, 38 insertions(+), 42 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2f9ff79..761d8e4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,7 +15,7 @@ set(META_USE_QQC2 ON) set(META_ANDROID_PACKAGE_NAME "org.martchus.passwordmanager") set(META_VERSION_MAJOR 4) set(META_VERSION_MINOR 1) -set(META_VERSION_PATCH 3) +set(META_VERSION_PATCH 4) set(PNG_ICON_NO_CROP ON) # add project files diff --git a/quickgui/controller.cpp b/quickgui/controller.cpp index 62cf748..c0be439 100644 --- a/quickgui/controller.cpp +++ b/quickgui/controller.cpp @@ -142,8 +142,6 @@ void Controller::load() clearPassword(); emit fileError(tr("A crypto error occured when opening the file: ") + QString::fromLocal8Bit(e.what()), QStringLiteral("load")); } - } catch (const runtime_error &e) { - emit fileError(tr("A parsing error occured when opening the file: ") + QString::fromLocal8Bit(e.what()), QStringLiteral("load")); } catch (...) { emitFileError(tr("loading")); } @@ -226,8 +224,6 @@ void Controller::save() emit fileSaved(); } catch (const CryptoException &e) { emit fileError(tr("A crypto error occured when saving the file: ") + QString::fromLocal8Bit(e.what()), QStringLiteral("save")); - } catch (const runtime_error &e) { - emit fileError(tr("An internal error occured when saving the file: ") + QString::fromLocal8Bit(e.what()), QStringLiteral("save")); } catch (...) { emitFileError(tr("saving")); } @@ -450,6 +446,8 @@ void Controller::emitFileError(const QString &when) } catch (const std::ios_base::failure &failure) { emit fileError( tr("An IO error occured when %1 the file %2: ").arg(when, m_filePath) + QString::fromLocal8Bit(failure.what()), QStringLiteral("load")); + } catch (const runtime_error &e) { + emit fileError(tr("An error occured when %1 the file: ").arg(when) + QString::fromLocal8Bit(e.what()), QStringLiteral("save")); } catch (const exception &e) { emit fileError(tr("An unknown exception occured when %1 the file %2: ").arg(when, m_filePath) + QString::fromLocal8Bit(e.what()), QStringLiteral("load")); diff --git a/translations/passwordmanager_de_DE.ts b/translations/passwordmanager_de_DE.ts index 18dfd0e..9fc0672 100644 --- a/translations/passwordmanager_de_DE.ts +++ b/translations/passwordmanager_de_DE.ts @@ -267,43 +267,41 @@ Ein Verschlüsselungsfehler ist beim Öffnen der Datei aufgetreten: - A parsing error occured when opening the file: - Die Datei konnte nicht richtig eingelesen werden: + Die Datei konnte nicht richtig eingelesen werden: - + loading beim Laden - + creating beim Erstellen - - + + closing beim Schließen - + Unable to open file descriptor for saving the file. Fehler beim Öffnen des Dateideskriptors zum Speichern der Datei. - + A crypto error occured when saving the file: Ein Verschlüsselungsfehler ist beim Speichern der Datei aufgetreten: - An internal error occured when saving the file: - Ein interner Fehler ist beim Speichern der Datei aufgetreten: + Ein interner Fehler ist beim Speichern der Datei aufgetreten: - + saving beim Speichern @@ -312,27 +310,32 @@ beim Öffnen mittels nativem Dateideskriptors - + Canceled file selection Dateiauswahl geschlossen - + No file opened. Keine Datei geöffnet. - + An IO error occured when %1 the file %2: Ein Ein- bzw. Ausgabefehler ist %1 der Datei %2 aufgetreten: - + + An error occured when %1 the file: + Ein Fehler ist %1 der Datei aufgetreten: + + + An unknown exception occured when %1 the file %2: Eine unbekannte Ausnahme ist %1 der Datei %2 aufgetreten: - + An unknown error occured when %1 the file %2. Ein unbekannter Fehler ist %1 der Datei %2 aufgetreten. diff --git a/translations/passwordmanager_en_US.ts b/translations/passwordmanager_en_US.ts index 61a14d5..7abe564 100644 --- a/translations/passwordmanager_en_US.ts +++ b/translations/passwordmanager_en_US.ts @@ -230,67 +230,62 @@ - A parsing error occured when opening the file: - - - - loading - + creating - - + + closing - + Unable to open file descriptor for saving the file. - + A crypto error occured when saving the file: - - An internal error occured when saving the file: - - - - + saving - + Canceled file selection - + No file opened. - + An IO error occured when %1 the file %2: - + + An error occured when %1 the file: + + + + An unknown exception occured when %1 the file %2: - + An unknown error occured when %1 the file %2.