From 85ed0e0f7000d32aed3558c02bd4e108c8c9ca6b Mon Sep 17 00:00:00 2001 From: Stefan Forstenlechner Date: Wed, 19 Jun 2024 13:59:55 +0200 Subject: [PATCH] Add error message from opening database --- share/translations/keepassxc_en.ts | 2 +- src/gui/remote/DatabaseSettingsWidgetRemote.cpp | 17 +++++++++-------- src/gui/remote/DatabaseSettingsWidgetRemote.h | 2 +- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/share/translations/keepassxc_en.ts b/share/translations/keepassxc_en.ts index 9c2a6f9f8..fd45487f5 100644 --- a/share/translations/keepassxc_en.ts +++ b/share/translations/keepassxc_en.ts @@ -2446,7 +2446,7 @@ The command has to exit. In case of `sftp` as last command `exit` has to be sent - Download finished, but file failed KeePass header check. File is not a KeePass file or it's an unsupported version + Downloaded file is not a KeePass file or it's an unsupported version: %1 diff --git a/src/gui/remote/DatabaseSettingsWidgetRemote.cpp b/src/gui/remote/DatabaseSettingsWidgetRemote.cpp index 31a019d3c..583b3cbca 100644 --- a/src/gui/remote/DatabaseSettingsWidgetRemote.cpp +++ b/src/gui/remote/DatabaseSettingsWidgetRemote.cpp @@ -187,12 +187,12 @@ void DatabaseSettingsWidgetRemote::testDownload() params->downloadInput = m_ui->inputForDownload->toPlainText(); params->downloadTimeoutMsec = m_ui->downloadTimeoutSec->value() * 1000; - QScopedPointer remoteHandler(new RemoteHandler(this)); if (params->downloadCommand.isEmpty()) { m_ui->messageWidget->showMessage(tr("Download command cannot be empty."), MessageWidget::Warning); return; } + QScopedPointer remoteHandler(new RemoteHandler(this)); RemoteHandler::RemoteResult result = remoteHandler->download(params); if (!result.success) { m_ui->messageWidget->showMessage(tr("Download failed with error: %1").arg(result.errorMessage), @@ -206,19 +206,20 @@ void DatabaseSettingsWidgetRemote::testDownload() return; } - if (!hasValidPublicHeaders(result.filePath)) { - m_ui->messageWidget->showMessage(tr("Download finished, but file failed KeePass header check. File is not a " - "KeePass file or it's an unsupported version"), - MessageWidget::Error); + QString error; + if (!hasValidPublicHeader(result.filePath, &error)) { + m_ui->messageWidget->showMessage( + tr("Downloaded file is not a KeePass file or it's an unsupported version: %1").arg(error), + MessageWidget::Error); return; } m_ui->messageWidget->showMessage(tr("Download successful."), MessageWidget::Positive); } -bool DatabaseSettingsWidgetRemote::hasValidPublicHeaders(QString& filePath) { +bool DatabaseSettingsWidgetRemote::hasValidPublicHeader(QString& filePath, QString* error) +{ // Read public headers - QString error; QScopedPointer db(new Database()); - return db->open(filePath, nullptr, &error); + return db->open(filePath, nullptr, error); } diff --git a/src/gui/remote/DatabaseSettingsWidgetRemote.h b/src/gui/remote/DatabaseSettingsWidgetRemote.h index 44a27fd5a..8c5893f4f 100644 --- a/src/gui/remote/DatabaseSettingsWidgetRemote.h +++ b/src/gui/remote/DatabaseSettingsWidgetRemote.h @@ -56,7 +56,7 @@ private: QListWidgetItem* findItemByName(const QString& name); void clearFields(); - bool hasValidPublicHeaders(QString& filePath); + bool hasValidPublicHeader(QString& filePath, QString* error); QScopedPointer m_remoteSettings; const QScopedPointer m_ui;