Implement 'Save Database Backup' option

Add an option in the 'Database' menu to save a backup of the current database.

Add unit test for saving database copy

* Open a test database, mark it as modified, and save a copy
* Fail if the copy is not a valid database
* Fail if the original database is saved
* Fail if the original database is no longer marked as modified
This commit is contained in:
Andrew Meyer 2020-05-08 23:48:03 -04:00 committed by Jonathan White
parent 2237cf0188
commit 45848c3f61
12 changed files with 167 additions and 59 deletions

113
COPYING
View file

@ -124,66 +124,67 @@ Copyright: 2003-2004, David Vignoni <david@icon-king.com>
License: LGPL-2.1
Comment: from Nuvola icon theme
Files: share/icons/application/scalable/categories/preferences-other.svg
share/icons/application/scalable/apps/keepassxc-dark.svg
share/icons/application/scalable/apps/preferences-system-network-sharing.svg
share/icons/application/scalable/apps/utilities-terminal.svg
share/icons/application/scalable/apps/keepassxc-locked.svg
share/icons/application/scalable/apps/keepassxc-unlocked.svg
share/icons/application/scalable/apps/keepassxc.svg
share/icons/application/scalable/apps/freedesktop.svg
share/icons/application/scalable/apps/internet-web-browser.svg
share/icons/application/scalable/apps/preferences-desktop-icons.svg
share/icons/application/scalable/status/dialog-information.svg
share/icons/application/scalable/status/dialog-warning.svg
share/icons/application/scalable/status/dialog-error.svg
share/icons/application/scalable/status/security-high.svg
share/icons/application/scalable/mimetypes/application-x-keepassxc.svg
share/icons/application/scalable/actions/document-close.svg
share/icons/application/scalable/actions/application-exit.svg
share/icons/application/scalable/actions/database-change-key.svg
share/icons/application/scalable/actions/group-new.svg
share/icons/application/scalable/actions/document-properties.svg
share/icons/application/scalable/actions/group-empty-trash.svg
share/icons/application/scalable/actions/statistics.svg
share/icons/application/scalable/actions/edit-clear-locationbar-ltr.svg
share/icons/application/scalable/actions/entry-delete.svg
share/icons/application/scalable/actions/entry-clone.svg
share/icons/application/scalable/actions/entry-edit.svg
share/icons/application/scalable/actions/password-generator.svg
share/icons/application/scalable/actions/dialog-ok.svg
share/icons/application/scalable/actions/chronometer.svg
share/icons/application/scalable/actions/document-new.svg
share/icons/application/scalable/actions/view-history.svg
share/icons/application/scalable/actions/group-delete.svg
share/icons/application/scalable/actions/dialog-close.svg
share/icons/application/scalable/actions/group-edit.svg
share/icons/application/scalable/actions/document-save.svg
share/icons/application/scalable/actions/password-show-on.svg
share/icons/application/scalable/actions/message-close.svg
share/icons/application/scalable/actions/entry-new.svg
share/icons/application/scalable/actions/url-copy.svg
share/icons/application/scalable/actions/username-copy.svg
Files: share/icons/application/scalable/actions/application-exit.svg
share/icons/application/scalable/actions/auto-type.svg
share/icons/application/scalable/actions/password-show-off.svg
share/icons/application/scalable/actions/paperclip.svg
share/icons/application/scalable/actions/configure.svg
share/icons/application/scalable/actions/database-lock.svg
share/icons/application/scalable/actions/password-copy.svg
share/icons/application/scalable/actions/system-help.svg
share/icons/application/scalable/actions/help-about.svg
share/icons/application/scalable/actions/system-search.svg
share/icons/application/scalable/actions/key-enter.svg
share/icons/application/scalable/actions/document-edit.svg
share/icons/application/scalable/actions/edit-clear-locationbar-rtl.svg
share/icons/application/scalable/actions/password-generate.svg
share/icons/application/scalable/actions/favicon-download.svg
share/icons/application/scalable/actions/document-open.svg
share/icons/application/scalable/actions/document-save-as.svg
share/icons/application/scalable/actions/refresh.svg
share/icons/application/scalable/actions/chronometer.svg
share/icons/application/scalable/actions/clipboard-text.svg
share/icons/application/scalable/actions/configure.svg
share/icons/application/scalable/actions/database-change-key.svg
share/icons/application/scalable/actions/database-lock.svg
share/icons/application/scalable/actions/dialog-close.svg
share/icons/application/scalable/actions/dialog-ok.svg
share/icons/application/scalable/actions/document-close.svg
share/icons/application/scalable/actions/document-edit.svg
share/icons/application/scalable/actions/document-new.svg
share/icons/application/scalable/actions/document-open.svg
share/icons/application/scalable/actions/document-properties.svg
share/icons/application/scalable/actions/document-save.svg
share/icons/application/scalable/actions/document-save-as.svg
share/icons/application/scalable/actions/document-save-copy.svg
share/icons/application/scalable/actions/edit-clear-locationbar-ltr.svg
share/icons/application/scalable/actions/edit-clear-locationbar-rtl.svg
share/icons/application/scalable/actions/entry-clone.svg
share/icons/application/scalable/actions/entry-delete.svg
share/icons/application/scalable/actions/entry-edit.svg
share/icons/application/scalable/actions/entry-new.svg
share/icons/application/scalable/actions/favicon-download.svg
share/icons/application/scalable/actions/group-delete.svg
share/icons/application/scalable/actions/group-edit.svg
share/icons/application/scalable/actions/group-empty-trash.svg
share/icons/application/scalable/actions/group-new.svg
share/icons/application/scalable/actions/help-about.svg
share/icons/application/scalable/actions/key-enter.svg
share/icons/application/scalable/actions/message-close.svg
share/icons/application/scalable/actions/paperclip.svg
share/icons/application/scalable/actions/password-copy.svg
share/icons/application/scalable/actions/password-generate.svg
share/icons/application/scalable/actions/password-generator.svg
share/icons/application/scalable/actions/password-show-off.svg
share/icons/application/scalable/actions/password-show-on.svg
share/icons/application/scalable/actions/refresh.svg
share/icons/application/scalable/actions/reports.svg
share/icons/application/scalable/actions/reports-exclude.svg
share/icons/application/scalable/actions/statistics.svg
share/icons/application/scalable/actions/system-help.svg
share/icons/application/scalable/actions/system-search.svg
share/icons/application/scalable/actions/url-copy.svg
share/icons/application/scalable/actions/username-copy.svg
share/icons/application/scalable/actions/view-history.svg
share/icons/application/scalable/apps/freedesktop.svg
share/icons/application/scalable/apps/internet-web-browser.svg
share/icons/application/scalable/apps/keepassxc.svg
share/icons/application/scalable/apps/keepassxc-dark.svg
share/icons/application/scalable/apps/keepassxc-locked.svg
share/icons/application/scalable/apps/keepassxc-unlocked.svg
share/icons/application/scalable/apps/preferences-desktop-icons.svg
share/icons/application/scalable/apps/preferences-system-network-sharing.svg
share/icons/application/scalable/apps/utilities-terminal.svg
share/icons/application/scalable/categories/preferences-other.svg
share/icons/application/scalable/mimetypes/application-x-keepassxc.svg
share/icons/application/scalable/status/dialog-error.svg
share/icons/application/scalable/status/dialog-information.svg
share/icons/application/scalable/status/dialog-warning.svg
share/icons/application/scalable/status/security-high.svg
Copyright: 2019 Austin Andrews <http://templarian.com/>
License: SIL OPEN FONT LICENSE Version 1.1
Comment: Taken from Material Design icon set (https://github.com/templarian/MaterialDesign/)