Implement "Overwrite attachment" confirmation dialog.

This commit is contained in:
Patrick Sean Klein 2021-10-24 17:20:04 +02:00 committed by Jonathan White
parent 55f2bd41aa
commit 20db504c3a
3 changed files with 42 additions and 17 deletions

View File

@ -3533,6 +3533,15 @@ Do you want to save the changes to your database?</source>
Error: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Confirm Overwrite Attachment</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Attachment &quot;%1&quot; already exists.
Would you like to overwrite the existing attachment?</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>EntryAttributesModel</name>

View File

@ -152,7 +152,7 @@ void EntryAttachmentsWidget::insertAttachments()
if (filenames.isEmpty()) {
return;
}
const auto confirmedFileNames = confirmLargeAttachments(filenames);
const auto confirmedFileNames = confirmAttachmentSelection(filenames);
if (confirmedFileNames.isEmpty()) {
return;
}
@ -342,28 +342,44 @@ bool EntryAttachmentsWidget::insertAttachments(const QStringList& filenames, QSt
return errors.isEmpty();
}
QStringList EntryAttachmentsWidget::confirmLargeAttachments(const QStringList& filenames)
QStringList EntryAttachmentsWidget::confirmAttachmentSelection(const QStringList& filenames)
{
const QString confirmation(tr("%1 is a big file (%2 MB).\nYour database may get very large and reduce "
"performance.\n\nAre you sure to add this file?"));
QStringList confirmedFileNames;
for (const auto& file : filenames) {
QFileInfo fileInfo(file);
double size = fileInfo.size() / (1024.0 * 1024.0);
// Ask for confirmation before adding files over 5 MB in size
if (size > 5.0) {
auto fileName = fileInfo.fileName();
const QFileInfo fileInfo(file);
auto fileName = fileInfo.fileName();
// Ask for confirmation if overwriting an existing attachment
if (m_entryAttachments->hasKey(fileName)) {
auto result = MessageBox::question(this,
tr("Confirm Attachment"),
confirmation.arg(fileName, QString::number(size, 'f', 1)),
MessageBox::Yes | MessageBox::No,
tr("Confirm Overwrite Attachment"),
tr("Attachment \"%1\" already exists. \n"
"Would you like to overwrite the existing attachment?")
.arg(fileName),
MessageBox::Overwrite | MessageBox::No,
MessageBox::No);
if (result == MessageBox::Yes) {
confirmedFileNames << file;
if (result == MessageBox::No) {
continue;
}
} else {
confirmedFileNames << file;
}
// Ask for confirmation before adding files over 5 MB in size
double size = fileInfo.size() / (1024.0 * 1024.0);
if (size > 5.0) {
auto result =
MessageBox::question(this,
tr("Confirm Attachment"),
tr("%1 is a big file (%2 MB).\nYour database may get very large and reduce "
"performance.\n\nAre you sure to add this file?")
.arg(fileName, QString::number(size, 'f', 1)),
MessageBox::Yes | MessageBox::No,
MessageBox::No);
if (result == MessageBox::No) {
continue;
}
}
confirmedFileNames << file;
}
return confirmedFileNames;

View File

@ -69,7 +69,7 @@ private slots:
private:
bool insertAttachments(const QStringList& fileNames, QString& errorMessage);
QStringList confirmLargeAttachments(const QStringList& filenames);
QStringList confirmAttachmentSelection(const QStringList& filenames);
bool eventFilter(QObject* watched, QEvent* event) override;