Commit Graph

28 Commits

Author SHA1 Message Date
Jonathan White
6bce5836f9 Fix crash when switching tabs while unlocking 2020-03-07 16:52:24 -05:00
Janek Bevendorff
5d2766e016 Make the purpose of the key file field clearer.
The new unlock dialogue seems to confuse users
as to what the purpose of the key file is. This
patch changes the generic "Select file..." affordance
to the more explicit "Select key file..." and adds
a help button to the label just like the one we
already have for the hardware key. Furthermore,
it prevents the user from using the KDBX file as its
own key file (since that would never work anyway).

The change breaks existing translations on purpose
(instead of simply adjusting the en_US locale)
in order to force translators to update this string
for their languages.

Resolves #3678
2019-11-07 21:26:56 -05:00
Janek Bevendorff
5492b5c4f6
Redesign database unlock widget. (#3287)
With this change we get rid of the confusing key component checkboxes.
Now a component is either there or not (if left empty). There is
no redundant distinction between "unset" and "emtpy" anymore.
For compatibility with older databases that have "empty" passwords,
KeePassXC will ask if the user wants to retry with an empty password
if unlocking failed and the password field was left blank.

Besides these functional changes, the widget's layout has been
rearranged to be more compact, less stretched out (e.g. input fields
do not fill the full window width anymore), and more user-friendly
by providing a help tooltip for the hardware key field and accessible
descriptions for screen readers.
2019-06-22 18:00:31 +02:00
Janek Bevendorff
d612cad09a
Refactor Database and Database widgets (#2491)
The Database, DatabaseWidget, and DatabaseTabWidget classes share many responsibilities in inconsistent ways resulting in impenetrable and unmaintainable code and a diverse set of bugs and architecture restrictions. This patch reworks the architecture, responsibilities of, and dependencies between these classes.

The core changes are:

* Move loading and saving logic from widgets into the Database class
* Get rid of the DatabaseManagerStruct and move all the information contained in it into the Database
* Let database objects keep track of modifications and dirty/clean state instead of handing this to external widgets
* Move GUI interactions for loading and saving from the DatabaseTabWidget into the DatabaseWidget (resolves #2494 as a side-effect)
* Heavily clean up DatabaseTabWidget and degrade it to a slightly glorified QTabWidget
* Use QSharedPointers for all Database objects
* Remove the modifiedImmediate signal and replace it with a markAsModified() method
* Implement proper tabName() method instead of reading back titles from GUI widgets (resolves #1389 and its duplicates #2146 #855)
* Fix unwanted AES-KDF downgrade if database uses Argon2 and has CustomData
* Improve code

This patch is also the first major step towards solving issues #476 and #2322.
2018-11-22 11:47:31 +01:00
Louis-Bertrand Varin
8324d03f0a Formatting the code. 2018-03-31 16:01:30 -04:00
Janek Bevendorff
f6933a8868 Ensure that YubiKey is only polled once, even if showEvent() is called twice 2017-10-24 17:58:27 +02:00
Janek Bevendorff
aba2acb062 Use QSharedPointer 2017-10-21 14:19:00 +02:00
Louis-Bertrand Varin
0fe06b3fbb Fix double warning display for database open 2017-10-21 14:19:00 +02:00
Jonathan White
3bc8a79b9b Both slots on Yubikey are now polled for challenge/response 2017-10-09 09:39:47 -04:00
Jonathan White
df3051038e Clear database open dialog before and after merging a database (#958) 2017-09-23 11:43:29 -04:00
thez3ro
a53b111182
Update and fix copyright headers 2017-06-14 15:54:43 +02:00
Janek Bevendorff
b10cb1c83c
Show YubiKey message from MainWindow to ensure it's always shown when a challenge is generated 2017-02-24 17:27:27 +01:00
Janek Bevendorff
d6c48a5cf1
Show message when user needs to touch their YubiKey (still buggy when using multiple databases) 2017-02-24 03:25:08 +01:00
Janek Bevendorff
e93e4a9931
Allow opening of unprotected databases (but don't allow creating them) 2017-02-21 02:40:23 +01:00
Janek Bevendorff
91761a2bea
Only poll YubiKey for currently visible tab 2017-02-21 02:19:11 +01:00
Janek Bevendorff
eb23dda99b
Remember if challenge-response was used for each database and allow to re-detect Yubikeys without closing the database first 2017-02-20 22:07:01 +01:00
Kyle Manna
ba8fd25604 gui: Add YubiKey support to widgets
* Add YubiKey support to the GUI widgets.

Signed-off-by: Kyle Manna <kyle@kylemanna.com>
2017-01-08 16:31:50 -08:00
Janek Bevendorff
9261d8ae9d Force focus on password field, resolves #116 (#117)
Also remove redudant code for minimizing to tray
2016-11-26 09:37:25 -05:00
Felix Geyer
d6d92ce90a Merge branch '2.0' 2016-02-08 18:13:29 +01:00
Felix Geyer
7a017041bf Allow opening databases that have no password and keyfile.
Closes #391
2016-01-31 16:17:24 +01:00
Felix Geyer
7fa0eddc5f Make C++11 mandatory. 2015-09-12 13:55:50 +02:00
Felix Geyer
223c5a1651 Use an icon for the button that shows/masks passwords.
Closes #38

Additionally make use of the new PasswordEdit class where possible.
2014-01-12 17:13:10 +01:00
Felix Geyer
6504b6f2bd Drop Qt module name from include statements.
This is a preparation to be able to build KeePassX against Qt 5.
2013-10-03 15:18:16 +02:00
Felix Geyer
e166722026 Implement database locking.
Closes #35
2012-10-12 12:12:00 +02:00
Felix Geyer
b579eb954e Use QSaveFile to save databases. 2012-07-06 18:50:52 +02:00
Felix Geyer
d2fc4e8abd Mark DatabaseOpenWidget ctor es explicit. 2012-06-29 23:17:36 +02:00
Felix Geyer
68155e8f89 Make use of Q_NULLPTR. 2012-06-29 14:15:16 +02:00
Felix Geyer
92af92ccbe Convert DatabaseOpenDialog into a widget on DatabaseWidget. 2012-06-29 10:36:35 +02:00