The sole purpose of a few objects was calling a static member of the
class they belonged to. This is not needed, as you can access a static
member with the <class_name>::<member_name> notation.
This patch aims at reducing the number of copies for obejcts that could
be referenced rather than copied, because they're not modified during
the computation.
Performing a dev build against the latest version of Qt failed
because of some deprecated members. They have been replaced
according to the Qt documentation.
Further, Q_OS_MACOS is now the only macro available to identify a
machine running macOS, the others are now deprecated.
See https://doc.qt.io/qt-5/qtglobal.html#Q_OS_OSX and
https://doc.qt.io/qt-5/qtglobal.html#Q_OS_MAC.
* Add source folder keeshare for sharing with corresponding define WITH_XC_KEESHARE
* Move common crypto parts to src/crypto/ssh
* Extended OpenSSHKey
* Move filewatching to own file (currently in two related classes DelayedFileWatcher and BulkFileWatcher)
* Small improvements for style and code in several classes
* Sharing is secured using RSA-Keys which are generated on demand
* Publisher signs the container using their private key
* Client can verify the signed container and choose to decline an import,
import only once or trust the publisher and automatically import all
data of this source henceforth
* Integration of settings into Group-Settings, Database-Settings and Application-Settings
* Introduced dependency QuaZip as dependency to allow combined export of
key container and the (custom format) certificate
* Create history-based merging that keeps older data in history instead of discarding or deleting it
* Extract merge logic into the Merger class
* Allows special merge behavior
* Improve handling of deletion and changes on groups
* Enable basic change tracking while merging
* Prevent unintended timestamp changes while merging
* Handle differences in timestamp precision
* Introduce comparison operators to allow for more sophisticated comparisons (ignore special properties, ...)
* Introduce Clock class to handle datetime across the app
Merge Strategies:
* Default (use inherited/fallback method)
* Duplicate (duplicate conflicting nodes, apply all deletions)
* KeepLocal (use local values, but apply all deletions)
* KeepRemote (use remote values, but apply all deletions)
* KeepNewer (merge history only)
* Synchronize (merge history, newest value stays on top, apply all deletions)
Add optional length parameter to PasswordGeneratorWidget::reset()
(default=0), which when >0 sets the legth SpinBox's value to the value
passed in. The EditEntryWidget already called reset() when the password
was known, so the current length was just added to this call (accounts
for empty passwords)
If entry edit is cancelled, return the password generator length to the
application default or last committed length if available. This is done
by calling reseting the password generator in EditEntryWidget::cancel()
when the edit page is being closed
Fixes#2180
KeepassXC tries to load the theme icon first and then falls back to the internal icon unless the check is explicitely disabled. Remove the check from most icons
Fixes#756
* Eliminate TOTP logic from GUI elements
* Consolidate TOTP functionality under the Totp namespace
* Eliminate guessing about state and encoders
* Increased test cases
* Add entry view column for TOTP [#2132]
* General code cleanup, reduction of unnecessary steps, separation of concerns
* Rename SetupTotpDialog to TotpSetupDialog for consistency
Qt 5.11 cleanes up the internal headers and so consumers could fail by
missing includes.
See: https://bugs.gentoo.org/655844
Signed-off-by: Markus Rathgeb <maggu2810@gmail.com>
Resolves#1313
What this commit does:
* Whenever the Apply button is pressed, and if the save was successful, then the Apply button is disabled.
* Each subwidget used by EditEntryWidget has now a signal called `widgetUpdated` that is emitted when the widgets' internal content changes. The EditEntryWidget subscribes to that signal to know when to enable the Apply button (by calling `entryUpdated()`).
* There are some views that are not isolated in their own widgets (`m_advancedUi`, for example) so in those cases I invoked `entryUpdated()` directly whenever I detected an update:
* some updates occur directly in a Qt widget like when editing the text of a QLineItem, so in that case I connected the widget's signals directly to the `entryUpdated()` slot.
* some updates occur in EditEntryWidget, so in those cases the invocation to `entryUpdated()` is made as soon as the change is detected (for example when the user has confirmed an action in a dialog).
A known problem: there are some situations when the Apply button will get enabled even if there are no changes, this is because the app changes the value of a field by itself so it's considered an update (for example, clicking on the "Reveal" button changes the text shown in a text field).
The solution to this can be a bit complicated: disabling temporarily the `entryUpdated()` whenever the app is going to do an action with such side-effects.
So I preferred to let the Apply button get enabled in those cases.
Introduce missing CustomData-attributes of KDBX4 format to allow
storing of plugin data for groups and entries - adopt Metadata to use
the same storage mechanism
Add simple view for CustomData as part of EditWidgetProperties
Tracking of CustomData-Modification using SIGNAL-SLOT update-mechanism
* Rename saveEntry to commitEntry to accurately capture its purpose
* Add message to user when commit is successful
* Made all inline messages in edit entry view 2 sec visibility
Add additional column 'Paperclip' to entry view table:
- add column itself
- add display role data provider
- add sort role data provider
- update total column count
Update state syncer (class DatabaseWidgetStateSync) to account for new
features:
- properly sync view state when switching tabs
- properly read/write view state from/to config
Update classes EntryModel and EntryView to consistenly name list/search
modes. Before, both classes defined list mode as 'group mode' and search
mode as 'entry list mode', which differed from naming in other classes
such as DatabaseWidget.
Add header context menu to entry view table (accessible using right
click on header), providing:
- Actions to toggle 'Hide Usernames' / 'Hide Passwords'
- Actions to toggle column visibility
- Actions to resize columns
- Action to reset view to defaults
Add additional columns 'Password', 'Notes', 'Expires', 'Created',
'Modified', 'Accessed' and 'Attachments' to entry view table:
- add columns themselves
- add display role data providers
- introduce/apply sort role
- add sort role data providers
- add settings to display usernames/passwords visible/hidden
- minor addition to EntryModel::columnCount() as advised by Qt
documentation
You now get an error when you try to save incorrect autotype statements and warnings if you have high delays or much repetiton in your statement.
Also you will now only get one warning if you want to perfom high delayed or often repeated statements.
The alignment is a bit off, however. A better option may be simply
disabling the QPlainTextEdit widget and stashing the actual notes
in another buffer somewhere.
There is a simple checkbox that allows your notes to become visible
again. This is always disabled by default, as the use case
referenced in issue #342 (and my own use case) has confidential data
in that field.
Passes all tests (YubiKey is N/A) on Ubuntu 16.04.2 with Qt 5.5.1.
Chnage to one method to set MessageWidget text passing type as
parameter.
Only messages with questions requiring user input reamin using
MessageBox dialog.
Use signal/slots to set message in MessageWidget and hide message,
signal/slots only used when required.Maybe need to change all calls to
signals/slots in the future.
* Add Standalone Password Generator. Closes#18
* Add an entropy meter for passwords. Closes#84
* Don't require password repeat when it is visible. Fixes#27
* Add unlockdialog on autotype. Fix#10
* Show default autotype sequence for existing entries
* NOTE: New entries/groups do not show the default autotype sequence
When the cursor is on most fields, you can use Return to end editing and
save, but on the Notes field Return just changes the line. This commit
adds a shortcut to the whole widget to save with Ctrl+Return, so that
saving and exiting is quick even when editing notes.