mirror of
				https://github.com/keepassxreboot/keepassxc.git
				synced 2025-10-30 22:19:15 -04:00 
			
		
		
		
	Implement "Overwrite attachment" confirmation dialog.
This commit is contained in:
		
							parent
							
								
									55f2bd41aa
								
							
						
					
					
						commit
						20db504c3a
					
				
					 3 changed files with 42 additions and 17 deletions
				
			
		|  | @ -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 "%1" already exists.  | ||||
| Would you like to overwrite the existing attachment?</source> | ||||
|         <translation type="unfinished"></translation> | ||||
|     </message> | ||||
| </context> | ||||
| <context> | ||||
|     <name>EntryAttributesModel</name> | ||||
|  |  | |||
|  | @ -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; | ||||
|  |  | |||
|  | @ -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; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Patrick Sean Klein
						Patrick Sean Klein