Commit graph

60 commits

Author SHA1 Message Date
Felipe Borges
dfb2fa31af users: Make FileChooser inside AvatarChooser transient to main window
Depends on
https://gitlab.gnome.org/GNOME/gnome-control-center/-/merge_requests/1253

Fixes #1677
2022-03-03 17:22:38 +01:00
Felipe Borges
dc032c338d user-accounts: Explicitly initialize CcAvatarChooser
Setting the Gtk.MenuButton.popover property to a CcAvatarChooser
object doesn't initialize the CcAvatarChooser object.

Fixes #1689
2022-03-03 16:13:46 +00:00
Felipe Borges
4b21c5b056 user-accounts: Load avatar image files in "Other users" list
We were checking for the existance of an image file as avatar when
setting up the main avatar widget in the page, but the same wasn't
done for the avatars displayed in the "Other users" list. These
were AdwAvatars simply initialized to use the user initials.

Now we load the user image (if it exists) and it will fallback to
initials when an image isn't set.

Fixes #1658
2022-03-02 16:04:26 +00:00
Felipe Borges
0019b0869a user-accounts: Reinstate fingerprint dialog
The port of the Fingerprint dialog to gtk4 wasn't completed.
Now the dialog is expected to function again.
2022-02-28 15:47:42 +00:00
Felipe Borges
1f693be757 user-accounts: Reset avatar widget when changing user pages
Otherwise the same source image is going to be used for other users
that don't have their own avatar image set.
2022-02-15 13:57:55 +00:00
Felipe Borges
26cc82c754 user-accounts: Always populate other users list
We were not re-populating the list when switching panels.

Related #1631
2022-02-09 15:04:32 +00:00
Felipe Borges
7f8e90a966 user-accounts: Port to gtk4/libadwaita implementing the new design
https://gitlab.gnome.org/Teams/Design/settings-mockups/-/raw/master/users/users.png
2022-02-08 13:29:56 +00:00
Philip Withnall
d46601d590 user-accounts: Make malcontent-control optional
Hide the button to open the parental controls UI if it’s not installed.
This will allow distributions to split the dependency, making
gnome-control-center suggest (rather than require) malcontent-ui, while
still requiring libmalcontent.

In turn, this will allow malcontent-ui to be uninstalled without
requiring gnome-control-center to be uninstalled, which will satisfy
users who feel the need to uninstall it because it’s not useful to them.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2022-02-03 14:18:25 +00:00
Bastien Nocera
51500e38a8 user-accounts: Add debug when launching malcontent-control 2021-09-05 21:55:06 +00:00
Bastien Nocera
3e26f594fc user-accounts: Avoid double password prompt
Don't require a password to be typed just to be able to launch the
parental controls app which itself will ask for a password to be typed.
2021-09-05 21:55:06 +00:00
Bastien Nocera
97e858d697 user-accounts: Hide parental controls row if unavailable
Don't show the parental controls line for administrator accounts.
2021-09-05 21:55:06 +00:00
Mohammed Sadiq
179d6aeb2d user: Use content style for listboxes 2021-05-19 03:25:47 +00:00
Robert Ancell
cbb2d31a38 user-accounts: Add missing GTK_WIDGET cast
Was missing in 77df081fec
2021-02-11 16:14:47 +13:00
Philip Withnall
77df081fec user-accounts: Make dim-label behaviour better for parental controls row
This makes it behave a bit more like other rows.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>

Helps: https://gitlab.freedesktop.org/pwithnall/malcontent/-/issues/26
2021-02-01 03:46:14 +00:00
Robert Ancell
ff6aabb511 user-accounts: Use consistent whitespace 2021-01-08 15:25:07 +13:00
Robert Ancell
c690e921ca user-accounts: Use g_autoptr/g_autofree 2021-01-08 15:25:07 +13:00
Philip Withnall
2809316fd1 user-accounts: Show ‘Add User’ button when panel is locked
Rather than hiding the ‘Add User’ button when the panel is locked, show
it in an insensitive state. This gives the user a hint that in order to
add a new user, they will need to unlock the panel.

See: https://gitlab.freedesktop.org/pwithnall/malcontent/-/issues/26#note_705945

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2020-12-11 17:19:11 +00:00
Philip Withnall
a9bb55c3c4 user-accounts: Make infobar label more relevant
Highlight that the panel needs to be unlocked in order to add new users.
Currently, while the panel is locked, it’s not at all obvious how to add
new users.

In particular, this helps improve the flow from the parental controls
application, which opens g-c-c to allow new users to be added.

See: https://gitlab.freedesktop.org/pwithnall/malcontent/-/issues/26#note_705945

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2020-12-11 17:19:11 +00:00
Philip Withnall
e8d9fc565b user-accounts: Pass --user argument to select user in malcontent-control
This eases the transition from g-c-c to malcontent-control a little.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>

Helps: https://gitlab.freedesktop.org/pwithnall/malcontent/-/issues/19
2020-10-20 12:50:48 +01:00
Marco Trevisan (Treviño)
d517a092aa 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 https://gitlab.gnome.org/Teams/Design/settings-mockups/-/issues/18
2020-06-26 01:54:04 +00:00
Marco Trevisan (Treviño)
840b906efe fingerprint-manager: Add state for state updating
Add add an "updating" state to the fingerprint manager so that the UI can
adapt the widgets depending on it, as the dbus calls might be a bit slow at
times.
2020-06-26 01:54:04 +00:00
Marco Trevisan (Treviño)
e935cb9d74 fingerprint-dialog: Use fingerprint manager to notify state changes 2020-06-26 01:54:03 +00:00
Marco Trevisan (Treviño)
25079fc505 user-panel: Use fingerprint manager to track the enrollment state 2020-06-26 01:54:03 +00:00
Umang Jain
cd391b4942 user-accounts: Add a launcher for parental controls app
malcontent ships malcontent-control[1] which is the user interface
to interact with various parental-control settings. Add a launcher
as per the design mockups[2] to launch malcontent-control.

[1]: https://gitlab.freedesktop.org/pwithnall/malcontent/-/blob/master/README.md
[2]: https://gitlab.gnome.org/Teams/Design/settings-mockups/blob/master/users/users.png
2020-06-17 12:56:43 +01:00
Marco Trevisan (Treviño)
014c7d77cc user-panel: Only load the fingerprint state once
Don't load the fingerprint information all the times we update the view, but
load it during initialization only.

The fingerprint state in fact can only change because we requested it
through the dialog that we control already and that would update the
relevant widgets state anyways.

Also, given that the fingerprint settings are visible for the current user
anyway, we can track this only with a simple boolean, instead of using a set
of UIDs.
2020-05-27 10:20:48 +00:00
Marco Trevisan (Treviño)
3107279759 user-panel: Pass a cancellable to the fingerprint operations
And cancel it when changing user and on disposition
2020-05-27 10:20:48 +00:00
Marco Trevisan (Treviño)
8ace2050f7 fingerprint-dialog: Make the operations cancellable 2020-05-27 10:20:48 +00:00
Marco Trevisan (Treviño)
e12bfed744 user-panel: Don't wait for fprintd on initialization
When opening the user panel we g-c-c performs lots of sync operations that
may cause a noticeable slowdown, especially when a fingerprint device is
available, in fact set_fingerprint_label() call leads to:
  - DBus sync request of the system bus
  - fprintd dbus-activation
    + This leads to sync opening of all the devices, that might also cause
      a slowdown, depending on the devices drivers
  - Dbus sync calls to the device to get the list of enrolled fingerprints

Only after we've a reply, we update the g-c-c UI and continue the execution.

The fingerprint dialog code would need some global refactor, but to fix this
without big changes, let's just use GTask that runs a thread in wich we do
all the sync operations, and once done we finally update the widget state.
2020-05-27 10:20:48 +00:00
Marco Trevisan (Treviño)
826f83c48a user-panel: Add reference to selected user and clear on dispose
The object was wrongly unreffed (as ActUserManager has the ownership) on
user switch, so add a reference instead when assigning it to our private
ref and unref it on dispose.
2020-05-27 10:20:48 +00:00
Ondrej Holy
502583fcc5 user-accounts: Move add user button tooltip in UI file
The add user button is shown only if the panel is unlocked, but
tooltips are also set for the case when the panel is not unlocked.
Let's move the tooltip text in the UI file directly and remove
the obsolete codes.
2020-05-05 09:25:41 +00:00
Ondrej Holy
1a38a971ec user-accounts: Show add user button also if no users found
The add user button is not shown currently if no users are found
even if the panel is unlocked. Let's show the button to allow
user creation in this case.

Fixes: https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/988
2020-05-05 09:25:41 +00:00
Robert Ancell
100d3684f2 user-accounts: Connect signals with g_signal_connect_object in swapped form 2020-03-30 16:18:50 +13:00
Robert Ancell
93b14a4339 panel: Move shared GCancellable code into panel class
Make the panel class provide a cancellable that will be cancelled when the panel
is destroyed. Panel implementations can use this and not have to mangage the
cancellable themselves. Consolidate cases where panels had multiple cancellables
that were all being used for this behaviour.
2020-02-03 09:36:24 +13:00
Felipe Borges
05313d35e2 user-accounts: UI style improvements
According to the mockups at
https://gitlab.gnome.org/Teams/Design/settings-mockups/raw/master/users/users.png

Fixes #771
2020-01-30 08:04:09 +00:00
Felipe Borges
43b41cb1fa user-accounts: Make the full_name_entry and editable widget
According to the mockups at
https://gitlab.gnome.org/Teams/Design/settings-mockups/blob/master/users/users.png

Fixes #771
2020-01-30 08:04:09 +00:00
Felipe Borges
3576133654 user-accounts: Use CcPermissionInfobar to lock/unlock the panel
This moves the GtkLockButton out of the headerbar and starts to
consume the CcPermissionInfobar API to lock/unlock the panel.

See #771
2020-01-06 14:43:11 +00:00
Philip Withnall
9f018a2d62 user-accounts: Use a more specific GtkSettings object
Otherwise we might potentially be using the GtkSettings for the wrong
screen, which might make a difference if one screen has animations
enabled but another doesn’t.

(This is an edge case I spotted while reading the code, but not one that
I’ve experienced practically.)

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2019-12-11 14:23:39 +00:00
Robert Ancell
cb6241f540 user-accounts: Replace GtkStack child names with widget references
The child names are easier to break if widgets are changed - this can't be
detected by the compiler.
2019-12-10 09:54:27 +00:00
Ting-Wei Lan
d28d317332 user-accounts: Escape the name of the user for markup
On FreeBSD, the default full name of a user is 'User &'. The '&'
character included in the name is expected to be replaced with the login
name when it is displayed on the user interface. However, it seems that
AccountsService doesn't know it. It just returns 'User &' to the caller,
and it causes the markup to be broken in the user panel.
2019-09-10 23:32:49 +00:00
Michael Catanzaro
a22da99aaf Replace unsafe setlocale() use with uselocale()
setlocale() is not threadsafe except when used only to query the locale
without changing it. Let's use uselocale() instead, which changes the
locale only on the calling thread. Much better.
2019-07-03 17:15:33 -05:00
Georges Basile Stavracas Neto
75f150d5a2 shell: Add position to cc_shell_embed_widget_in_header()
So we can control where the widget should be added to. The
main window only supports left and right positions.

https://gitlab.gnome.org/GNOME/gnome-control-center/issues/528
2019-05-21 12:59:36 -03:00
Ondrej Holy
f5f67823db user-accounts: Present the default avatar in the avatar popover
Currently, it is not possible to unset a custom avatar, respective it
is not possible to set the default one. Let's present the default
avatar in the avatar popover as suggested in the mockup:
https://wiki.gnome.org/Design/OS/AvatarChooser

Fixes: GNOME/gnome-control-center#62
2019-05-16 14:50:45 +00:00
Georges Basile Stavracas Neto
cd0954be34 user-accounts: Ellipsize real name label
In the User Accounts panel's carousel, longer real names
push the window geometry to super wide levels -- even with
the 255-char limitation in place.

Fix that by ellipsizing the real name label.
2019-02-13 15:06:53 +00:00
Ondrej Holy
587238867e user-accounts: Fix crashes when dialog is canceled
Changes from !373 causes crashes when "Add User" dialog is canceled.
Check return value and generate user avatar only if valid user is
returned to fix the crashes.
2019-02-08 09:45:35 +01:00
Felipe Borges
02c288ab6f user-accounts: Generate a default avatar for new users
When a user is created, we generate an avatar with their initials.

See https://gitlab.gnome.org/GNOME/Initiatives/issues/6
2019-02-06 11:53:56 +00:00
Robert Ancell
b40b0a4d05 user-accounts: Rename um-utils.[ch] to user-utils.[ch]
Um is a naming hangover from before this was part of g-c-c.
2018-11-14 10:10:15 +13:00
Robert Ancell
288ef61515 user-accounts: Move non-shared function
The would_demote_only_admin function is only used in CcUserPanel
2018-11-14 10:10:15 +13:00
Robert Ancell
feaa29bfc0 user-accounts: Rename UmRealmManager to CcRealmManager
Um is a naming hangover from before this was part of g-c-c.
2018-11-14 10:10:14 +13:00
Robert Ancell
eb7bbae2cd user-accounts: Rename UmPhotoDialog to CcAvatarChooser
Um is a naming hangover from before this was part of g-c-c.
2018-11-14 10:06:15 +13:00
Robert Ancell
262baed6a1 user-accounts: Rename UmCarousel to CcCarousel
Um is a naming hangover from before this was part of g-c-c.
2018-11-14 10:06:15 +13:00