user-accounts: Implement new designed fingerprint dialog
Implement the new designed interface for fingerprint enrollment, so that the dialog is now based on a stack of views:
- A list of devices to choose (shown only if multiple are available)
- A gallery of enrolled prints available where manage them
- An enrollment progress view when enrolling a new finger
Move part of the logic into a new FingerprintManager
(to manage gdbus proxies
generated via gdbus-codegen) that is created when configuring the current
user and that tracks the devices states, while move most of the UI into a new
CcFingerprintDialog
that does all the operations in async way.
Due to fprintd lack of APIs, there are few features missing, compared to the final design (none is a regression):
- Identify the finger when the enroll dialog is visible
- Delete a single fingerprint
- Highlight the finger when the sensor is touched during enrollment
- Add customized labels to fingerprints
- Devices hotpluging
However most of the code has been written considering these, and so they could be easily implemented in future re-iterations once newer APIs are defined for such bits.
Closes Teams/Design/settings-mockups#18
This MR is based on !727 (merged) as that is supposed to land first in order to be cherry-picked to stable branches, but let me know if you prefer to squash those commits here to make reviewing easier.
Given that having a fingerprint device that is supported by fprintd these days isn't still too common, and to make testing of this easier, I've written a small ugly tool (fprintd-mock-runner
) that you can use to simulate fprintd events interactively so that this interface can be tested even with no devices or system daemons.
Here's some screenshots / cast of the result:
Enrollment process:
@snwh how would you do the design review?