Commit graph

6420 commits

Author SHA1 Message Date
Georges Basile Stavracas Neto
82cb025b69 power: Fix battery row
Add it to the actual listbox.
2020-07-07 15:59:16 -03:00
Bastien Nocera
2397d0c082 power: Use correct colour for battery level bars
Use 3 symbolic colours to paint the levels in the battery bars, with a
red "error" colour used for the lowest level of battery, an orange
"warning" colour for the pre-error level, and a green "success" colour
used for levels above that.

There's no yellow intermediate colour as this is usually too anxiety
inducing and there's no real need to press users into a "warning"
behaviour when the level will still be comfortable for a long enough
time.

Closes: #725
2020-07-06 17:27:49 +02:00
Bastien Nocera
2bf373ef9a power: Move "Automatic Suspend" row 2020-07-06 17:27:49 +02:00
Bastien Nocera
06db069048 power: Move helper functions
To prepare for moving the "Automatic Suspend" row to the
"Power Saving" section.
2020-07-06 17:27:49 +02:00
Bastien Nocera
6a65dcf693 power: Add Battery percentage preference
This matches the preferences available in a lot of other OSes, whether
desktop or mobile, and can help with identifying the state of the
battery quicker for some people, as a number might be parsed quicker
than an icon/colour combination.

Closes: #481
2020-07-06 17:27:49 +02:00
Bastien Nocera
75ec783fc5 power: Rename "Suspend and Power Button" section
To "General" to match the latest mockups.
2020-07-06 17:27:49 +02:00
Bastien Nocera
368bb94f6c power: Make mouse a device with coarse battery level
So that this aspect is tested as well.
2020-07-06 17:27:49 +02:00
Bastien Nocera
12c01e708f power: Fix runtime warnings with test features enabled
(gnome-control-center:172393): libupower-glib-WARNING **: 15:00:10.866: Property ID 'power-supply' (6) was never set
(gnome-control-center:172393): libupower-glib-WARNING **: 15:00:10.866: Property ID 'is-present' (8) was never set
(gnome-control-center:172393): libupower-glib-WARNING **: 15:00:10.866: Property ID 'battery-level' (28) was never set
(gnome-control-center:174498): libupower-glib-WARNING **: 15:04:44.859: Property ID 'time-to-full' (24) was never set
2020-07-06 17:27:49 +02:00
Bastien Nocera
af14cda496 power: Fix compilation with test features enabled 2020-07-06 17:27:49 +02:00
Robert Ancell
958a7766fd printers: Remove unused finalize methods 2020-07-02 16:20:25 +00:00
Robert Ancell
b994237acd printers: Remove unused class members 2020-07-02 16:20:25 +00:00
Robert Ancell
287aee4371 printers: Don't initialize classes members to NULL/0/FALSE
These are the default values.
2020-07-02 16:20:25 +00:00
Ian Douglas Scott
7244bd997d keyboard: unify standard_edit_box and custom_edit_box
The redundant design here seemed awkward when I was thinking about how
to implement support for displaying multiple conflicts as needed by
https://gitlab.gnome.org/GNOME/gnome-control-center/-/merge_requests/776
and https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1041.

This should be more maintainable.
2020-07-01 10:38:30 -07:00
Robert Ancell
99c9186fd8 printers: Fix crash on close
It was calling g_free on an object and a warning trying to set a NULL object.
2020-06-30 10:12:55 +00:00
Jamison Lofthouse
f103ca3d04 Disconnect wifi device changed callback 2020-06-30 03:56:31 +00:00
Jamison Lofthouse
a2e494f418 Clean up wifi panel widgets in correct order 2020-06-30 03:56:31 +00:00
Jamison Lofthouse
f4d2eeb7f7 Add wifi device change callback
Add any wifi devices that have become managed or remove ones that have
become unmanaged. Since a device could have been added or removed
previously, we also have to handle multiple calls to add or remove a
device.
2020-06-30 03:56:31 +00:00
Jamison Lofthouse
6c63c3980e Split wifi device handling conditions 2020-06-30 03:56:31 +00:00
Jamison Lofthouse
0e26087a01 Split device removed into separate functions 2020-06-30 03:56:31 +00:00
Ian Douglas Scott
34883c0c33 keyboard: fix seat grabbing when setting custom shortcut
The callback `edit_custom_shortcut_button_toggled_cb()` was unused,
presumably a relic of an earlier UI design.
2020-06-29 15:25:27 -07:00
Ian Douglas Scott
0a50d2b7ec keyboard: remove CcKeyboardItem.model
No longer set without `shortcuts_model`. This wasn't being used anyway.
2020-06-29 00:19:54 +00:00
Ian Douglas Scott
44959e0049 keyboard: remove some dead code 2020-06-29 00:19:54 +00:00
Ian Douglas Scott
f5ec024035 keyboard: remove shortcuts_model
This appears to be largely vestigial code from a time when a GtkTreeView
was used here. It is very confusing, because someone reading the code
expects this to be critical to what's displayed on the screen, but it
isn't.

If I understand correctly, the only place this was still useful for
something was in `cc_keyboard_manager_remove_custom_shortcut()`, to check
that the CcKeyboardItem is valid. If I understand, this is a sanity
check that should never fail, so this seems unnecessary, and I've
removed it.

If that check is actually important, it would be better to have a
`GHashTable` of custom shortcuts, which should be simpler and clearer.

`sections_store` should similarly be removed/replaced. It seems to only
be needed in `add_shortcuts()`. But that seems like it can't just be
removed, so I haven't changed that yet.
2020-06-29 00:19:54 +00:00
Marco Trevisan (Treviño)
29add4ed51 fingerprint-dialog: Wiggle the enroll status label on retry events
When a retry event happens we need to wiggle the label, unfortunately we
can't just use translate operations via CSS so we need to simulate it using
padding.

Also we have to manually reset the retry class once the animation is done
otherwise gtk won't re-animate again once the class is added (in the same
paint cycle).
2020-06-26 01:54:04 +00: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)
d5f6d8e965 fingerprint-manager: Add a getter for the user 2020-06-26 01:54:04 +00:00
Marco Trevisan (Treviño)
811d3584b6 fingerprint-manager: Cleanup devices cache when fprintd stops 2020-06-26 01:54:04 +00:00
Marco Trevisan (Treviño)
e155b95da6 fingerprint-manager: Add ability to cache devices 2020-06-26 01:54:03 +00:00
Marco Trevisan (Treviño)
d8c119db2d fingerprint-manager: Add completion callback to update state 2020-06-26 01:54:03 +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
Marco Trevisan (Treviño)
9d1038db1f user-accounts: Add fingerprint manager
This is a wrapper to read the state of the fingerprint devices and to check
asynchronously whether we have them and if they have enrolled prints we can
use to log-in.
2020-06-26 01:54:03 +00:00
Marek Kasik
dfbe1faea2 printers: Update GtkListBox of printers consecutively
Goal of this commit is to not overwhelm UI when a lot of printers is added
to CUPS. You can reproduce this situation when you add e.g. 30 printers using
lpadmin. Th UI stops to respond for some time.

To do so, the printer entries are not deleted every time there is a request
for updating of the list of printers but only new printer entries are added
and printer entries of deleted printers are removed. Other printer
entries are just updated by new method pp_printer_entry_update().
Which, by the way, is almost whole taken from pp_printer_entry_new().

This needed to add sort function for the list of printer entries. It sorts
printers according to their names not taking case into account.

In the similar manner, the filter function was extended to not show printers
which are being deleted. This needs a list of names of deleted printers
which we keep until they are really deleted.
One important thing here is the "reference" object which points to the panel
itself via its "self" key. We pass this object to the pp_printer_delete_async()'s
callback so it knows whether it can remove the printer's name from the list
of deleted printers (once the panel is being destroyed it clears the key itself).
2020-06-22 11:57:57 +00:00
Robert Ancell
d9ea45354e sound: Stop non-interactive profile changes from triggering changed events
Fixes https://gitlab.gnome.org/GNOME/gnome-control-center/-/issues/1033
2020-06-17 19:29:57 +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
Umang Jain
dbf1b0dafb applications: Integrate with malcontent's restrictions
malcontent[1] is  parental(or admin) controlled interface which
can restrict a application's visibility and interactivity for a
standard user. Hence, if the current uid has any restrictions
on its installed applications, filter them out from the applications
panel.

Make the malcontent support enable or disable by setting it up as
a build-time meson option.

[1]: https://gitlab.freedesktop.org/pwithnall/malcontent/
2020-06-17 12:56:43 +01:00
Mohammed Sadiq
7683a09ff7 datetime: Use the new time editor 2020-06-15 04:55:39 +00:00
Mohammed Sadiq
63243d886a Add time editor widget 2020-06-15 04:55:39 +00:00
lenke182
5c5b46ddd2 Revert "applications: snap-row: Shorten permission text to prevent button overflow (2)"
This reverts commit a4f42995c75c3d0a35aa7a0dfbc7d0d6bc3090ab
2020-06-15 04:48:16 +00:00
Marek Kasik
fb3e693ddf printers: Clear GSource id when printer removal finishes
Remove GSource used for real deletion of a printer when
the "Undo" notification was dismissed.
Also set the timout id of the notitification to 0 when triggered.
Replace cancel_notification_timeout() with one line.

The issue fixed here could be reproduced this way:
1) Open Printers panel
2) Remove a printer
3) Press back button to go to overview
4) Wait 10 seconds
5) Return to the printers panel
6) Close gnome-control-center

Result:
Critical warning on removal of non-existing GSource
2020-06-08 09:34:27 +00:00
Marek Kasik
cdb4727690 printers: Do not crash due to wrong argument
Callback for handling of "notification-dismiss-button" got its
parameters swapped. This resulted in crash when user closed
notification about deleted printer.
This commit converts the on_notification_dismissed() function
to accept swapped arguments as was probably intended.
2020-06-03 18:02:50 +02:00
Ludovico de Nittis
520ca91fe8 lock: Add USB protection entry
In the screen lock tab we add a "Forbid new USB devices" entry with a
switch to enable or disable said protection.

The actual USB protection is handled by gnome-settings-daemon and
USBGuard.

We use the "Available" property of gnome-settings-daemon to check
if we are able to offer the USB protection (i.e. USBGuard is
installed with the minimum required version ecc..).
If the host doesn't met the requirements we hide the USB
protetion row entirely.

Given the fact that the always on protection benefits are very slim we
decided to give just an on/off switch that by default controls the
"with lock screen" protection level.
2020-05-28 10:01:24 +02:00
Marco Trevisan (Treviño)
3c158afa5e fingerprint-dialog: Disconnect signals and reset stages on enroll-restart
This happens if going to the previous page when enrolling a finger
2020-05-27 10:20:48 +00:00
Marco Trevisan (Treviño)
6bbbd8d04e fingerprint-dialog: Don't limit the number of maximum enroll stages
There are devices with more than 10 enroll stages we should handle, so
instead of hardcoding a grid of images, let's just build this dynamically
using a flowbox
2020-05-27 10:20:48 +00:00
Marco Trevisan (Treviño)
97965e1619 fingerprint-dialog: Don't use sync calls for deleting fingerprints
Don't make the UI to block while deleting the saved prints (that might take
some time, especially for devices with internal storage) but just use a task
with a thread that:
 - Mark the fingerprint row as unsenstive
 - Calls the method to delete prints
 - In the same thread, calls the method to fetch the updated informations
 - Returns in set_fingerprint_row_cb where we update the UI again

Again this would be nicer to be done just using async calls but this is
something to do in some bigger refactor.
2020-05-27 10:20:48 +00: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