Commit Graph

45 Commits

Author SHA1 Message Date
Georges Basile Stavracas Neto 03ecb2dcb2 user-controls: Use GtkPopoverMenu API to set menu model
Pretty trivial replacement, since 'oars_popover' already is a
GtkPopoverMenu.
2022-07-20 19:23:12 -03:00
Georges Basile Stavracas Neto d4f219b71e user-controls: Use GtkRoot API to get toplevel
In practice, widgets that implement GtkRoot represent what
toplevel widgets used to. Use that instead.
2022-07-20 19:23:12 -03:00
Georges Basile Stavracas Neto 8c170d11a2 project: Port GdkScreen to GdkDisplay
API looks about the same, just switching to 'display'.
2022-07-20 19:23:12 -03:00
Georges Basile Stavracas Neto 6ee8b77b95 user-controls: Remove unused variable 2022-07-20 19:23:12 -03:00
Georges Basile Stavracas Neto bb0865eb23 project: Use gtk_window_present() to present windows
Instead of gtk_widget_show(). In practice, it's exactly the same,
but it'll make follow-up patches cleaner.
2022-07-20 19:23:12 -03:00
Georges Basile Stavracas Neto 8560ca0677 project: Simplify buttons
GtkButton has an 'icon-name' property that greatly simplifies
setting up buttons. GtkMenuButton has a new 'always-show-arrow'
property that also allows us to simplify some code.
2022-07-20 19:23:12 -03:00
Georges Basile Stavracas Neto 2d9b408a32 user-controls: Inherit from AdwBin
GtkBin is no more, but libadwaita has a nice 1:1 replacement which
is AdwBin.
2022-07-20 19:23:12 -03:00
Georges Basile Stavracas Neto e322d8cd98 Hdy → Adw
This simply changes namespaces. Fortunately, no further widgetry
changes will be necessary - all the widgets and APIs seem to have
an exact match in libadwaita.
2022-07-20 19:23:12 -03:00
Christopher Davis c68058f0f3 restrict-applications: Use HdyPreferencesWindow
HdyPreferencesWindow provides a neat API we can use for
windows like this.
2022-07-20 19:23:12 -03:00
Christopher Davis 358cad3a24 user-controls: Use HdyPreferencesPage and HdyActionRow API
This allows us to get styling consistent with
HdyPreferencesWindow and similar content across GNOME.

Part of a consistency push for GNOME 40
2022-07-20 19:23:12 -03:00
Georges Basile Stavracas Neto 25486a1df9 libmalcontent-ui: Port to libappstream
Depend on libappstream-dev, and include appstream.h instead of
appstream-glib.h.

We can depend on a new enough version of libappstream that all the
content rating symbols we need are available, which means that
`gs-content-rating.[ch]` can be dropped entirely.

Turns out no code changes are needed other than that.

Fixes: #51
2022-07-13 15:26:12 +01:00
Philip Withnall ec7fa2529b libmalcontent-ui: Improve keynav between listboxes
Fix using the up and down keys to change the keyboard focus between rows
between the listboxes. Previously, keynav would fail at the bottom of
the first listbox, and at the top of the second.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2021-10-07 16:22:51 +01:00
Philip Withnall 351a7811e5 Merge branch 'appstream-glib-dep' into 'master'
Bump appstream-glib dep and update content rating code

See merge request pwithnall/malcontent!100
2020-12-08 12:18:09 +00:00
Philip Withnall cd36d90091 malcontent-control: Drop ‘Restrict Application Installation for Others’
This simplifies the UI, as nobody really understood the difference
between ‘Restrict Application Installation’ and ‘Restrict Application
Installation for Others’. Now there’s just a ‘Restrict Application
Installation’ checkbox, which controls application installation in the
home and system flatpak repos.

The underlying app-filter representation in libmalcontent still supports
restricting installation to them separately, but the UI will always set
them to the same value.

There is a suggestion that we may want to support user repos again in
future iff the user has added a remote to their user repo. However,
figuring that out for other users (which is what the admin would have to
do when setting this all up) starts to get tricky with permissions for
reading other users’ home directories. Skip that for the moment — we can
reconsider adding that option in future if someone argues a case for it.

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

Fixes: #30
2020-11-15 17:31:21 +00:00
Philip Withnall cac7ba414c user-controls: Only save the app filter if it’s changed
This prevents a polkit authentication prompt popping up unexpectedly if,
for example, a non-privileged user has opened and immediately closed
malcontent-control.

Spotted by Andre Moreira Magalhaes.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2020-11-03 17:49:00 +00:00
Philip Withnall ecfb3035d5 libmalcontent-ui: Load restricted apps and OARS when loading app filter
While the label for the OARS pseudo-combobox was updated when loading a
user’s app filter, the internal state (`self->selected_age`) was not.
Similarly, the set of restricted apps wasn’t loaded until the restricted
apps dialog was opened.

This caused problems when loading a user’s parental controls and then
editing a control which *wasn’t* restricted apps or the OARS level. The
resulting app filter would be built using default values for those two
controls, overwriting and losing their previous values when it was
saved.

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2020-10-29 19:22:13 +00:00
Philip Withnall 1371e1c819 libmalcontent-ui: Bump appstream-glib dependency to ≥ 0.7.15
This allows some (but not all) of the fallback code to be dropped.
appstream-glib 0.7.17 is available on all versions of Fedora and Debian
which malcontent is packaged for:
 • https://packages.debian.org/search?suite=bullseye&searchon=names&keywords=appstream-glibhttps://src.fedoraproject.org/rpms/libappstream-glib

Signed-off-by: Philip Withnall <pwithnall@endlessos.org>
2020-10-29 15:10:00 +00:00
Matthew Leeds 15e8a74b21 tree-wide: Replace usages of whitelist/blacklist
Replace usages of the terms whitelist and blacklist with the more
inclusive and more precise terms allowlist and blocklist, which are
actually also more consistent with parts of the codebase, e.g.
mct_app_filter_is_content_type_allowed().

The only API break here is in libmalcontent/app-filter.h but the
relevant API is not used anywhere else in Endless OS beyond this repo,
nor to my knowledge in any other distribution. Also, per the README,
this project's API is not stable, so now is a good time to make this
change.
2020-06-09 15:35:21 -07:00
Philip Withnall 52399e8d58 libmalcontent-ui: Use appstream-glib code for content rating systems
If a suitably new version of appstream-glib is available, use its
implementation of content rating systems (see
https://github.com/hughsie/appstream-glib/pull/364), rather than our
forked one.

This adds a dependency on libappstream-glib, but no particular version.

Eventually, our copy of `gs-content-rating.[ch]` can be dropped.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Fixes: #7
2020-05-21 16:25:21 +01:00
Philip Withnall 2a87b85fe1 libmalcontent-ui: Add an explicit array length argument to a function
This aligns the copy of the API here with what’s being proposed in
appstream-glib (https://github.com/hughsie/appstream-glib/pull/364). In
a few commits’ time, this copy will be deprecated.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-05-21 16:03:46 +01:00
Philip Withnall 150d303d39 fixup! libmalcontent-ui: Update content rating formatting code 2020-05-21 16:02:40 +01:00
Philip Withnall 396dd3c039 libmalcontent-ui: Update content rating formatting code
This incorporates commit 7d00c4d84b2a47dd815dc88da1a82dc54800d4b6 from
gnome-software, which allows the ESRB strings to be localised.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-05-21 12:30:05 +01:00
Philip Withnall c835bcdc9a user-controls: Make whole ‘Restrict Applications’ row activatable
Previously, just the button at the end was activatable, but making the
whole row activatable makes it an easier hit target.

From a suggestion by Nick Richards
(https://www.nedrichards.com/2020/04/endless-3.8.0-beta-1-trip-report/).

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-05-01 15:20:09 +01:00
Philip Withnall 3556813c55 libmalcontent-ui: Use library i18n functions
Rather than application i18n functions and `#include`s. This ensures
that the correct translation domain is used.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-04-27 11:55:10 +01:00
Philip Withnall 28992ac7f3 user-controls: Add a fallback bus connection
This is a hack to allow `MctUserControls` to be used from `GtkBuilder`
templates, where it’s not possible to pass construct-only properties in
to the `MctUserControls` constructor. It’s not feasible to make
`MctUserControls:dbus-connection` not construct-only, because it gets
used to construct an `MctManager` which then subscribes to various
signals.

So for the cases where `MctUserControls` is used from a builder
template, the code has to connect to the system bus manually, which is
possibly (though unlikely) a blocking operation.

This fixes a critical warning when enabling parental controls in
gnome-initial-setup.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-04-07 12:52:15 +01:00
Philip Withnall f917f6e79a malcontent-control: Refactor bus initialisation
Get the system bus higher up in the application, so the same system bus
connection can be shared between different parts of the application if
needed in future.

This also means the synchronous I/O needed to connect to the bus is done
before the application UI is shown, which prevents it unnecessarily
blocking initialisation of the `MctUserControls` widget.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-03-23 14:43:22 +00:00
Philip Withnall bf0eaea612 user-controls: Update when the ActUser changes
When the user object changes one of its properties (for example, the
user’s locale might change if the administrator is editing a user in
g-c-c while viewing their parental controls in malcontent-control),
update the UI.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-03-16 12:11:45 +00:00
Philip Withnall 4698ad88a0 user-controls: Update OARS menu entries before choosing an updated one
If the user’s locale changes, we need to update the set of entries in
the OARS menu before selecting a new one and updating the label.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-03-16 12:10:11 +00:00
Philip Withnall 2cc56e1441 user-controls: Drop unused flatpak include
Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-03-02 15:58:10 +00:00
Philip Withnall 3f3e86bcbb user-controls: More minor wording tweaks
Signed-off-by: Philip Withnall <withnall@endlessm.com>

Helps: #11
2020-02-26 11:00:28 +00:00
Philip Withnall 008b75edd1 user-controls: Add a drop-down arrow next to the OARS age selector
To make it more obvious that it triggers a drop-down menu. Potentially,
this should be a `GtkComboBox` rather than reinventing the wheel using a
`GtkMenuButton` — but that’s a change for another day.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Helps: #11
2020-02-25 12:25:40 +00:00
Philip Withnall 7ad804835a user-controls: Rename OARS widget variables to be more descriptive
This doesn’t introduce any functional changes.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Helps: #11
2020-02-25 12:25:40 +00:00
Philip Withnall 5a1bfb842a user-controls: Include user display name in the description labels
This clarifies that the settings apply to that user.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Helps: #11
2020-02-25 12:25:40 +00:00
Philip Withnall 516e3936eb user-controls: Relabel ‘allow installation’ as ‘restrict installation’
This is part of a move to make all the controls restrictive, rather than
permissive.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Helps: #11
2020-02-25 12:25:40 +00:00
Philip Withnall 8e4fa643d3 user-controls: Relabel ‘allow web browsers’ as ‘restrict web browsers’
This is part of a move to make all the controls restrictive, rather than
permissive.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Helps: #11
2020-02-25 12:25:40 +00:00
Philip Withnall b9a2b7a6a7 user-controls: Add CSS to support styling switches as ‘restrictive’
This will be used in upcoming commits to mark switches as restricting
something when they’re active, rather than allowing something. Their
background will be red, rather than blue.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Helps: #11
2020-02-25 12:25:40 +00:00
Philip Withnall 67ca6806e6 user-controls: Add separators between rows
Signed-off-by: Philip Withnall <withnall@endlessm.com>

Helps: #11
2020-02-25 10:31:38 +00:00
Philip Withnall 1c033f82df user-controls: Allow widgets to be used without an `ActUser`
Allow the user controls widget to be used for user accounts which don’t
currently exist. This is necessary for using them in
gnome-initial-setup.

See the big new documentation comment at the top of the widget for
details of how the new semantics work.

This adds API, but does not break existing API.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-02-14 12:00:57 +00:00
Philip Withnall e4fbb570af user-controls: Add some missing documentation comments
The annotations in these fix some GIR warnings.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-02-06 12:52:06 +00:00
Philip Withnall 7dfd03907d user-controls: Split out app filter construction into a new method
This means that calling code can extract the app filter manually rather
than having to rely on the `MctUserControls` to save it. This will be
useful in a few commits’ time when support is added for using
`MctUserControls` for not-yet-created users.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-02-06 12:52:06 +00:00
Philip Withnall e3f923b294 user-controls: Don’t clear filter if updating it is a no-op
If `self->user == NULL`, don’t clear the app filter, as that leaves us
in a worse-off position than before.

Rename the method to make it clearer that it queries the filter from the
user.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-02-06 12:52:06 +00:00
Philip Withnall 3519ac2dc1 user-controls: Tweak the API of an internal helper function
Make it take a `MctUserControls` rather than a member of it. This
introduces no functional changes, but will make some upcoming
refactoring easier.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-02-06 12:52:06 +00:00
Philip Withnall 608444891f user-controls: Modernise GObject property code
This introduces no functional changes, but does make the code work
better with `-Wswitch-enum`.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-02-06 12:52:06 +00:00
Philip Withnall 6b45ad9f76 restrict-applications-dialog: Drop accountsservice dependency
Instead of taking an `ActUser` as a property of the
`MctRestrictApplicationsDialog`, take the display name which we would
have queried from it.

This will allow the restrict applications dialog to be used in
situations where an `ActUser` isn’t available, such as when setting the
parental controls for a yet-to-be-created user.

This breaks the `MctRestrictApplicationsDialog` API, but the previous
API hadn’t yet been released.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-02-06 12:52:06 +00:00
Philip Withnall 1f3f0a4560 libmalcontent-ui: Move widgets over from malcontent-control
They need to be re-used in gnome-initial-setup. The other widgets which
remain in malcontent-control don’t need to be used in g-i-s so can stay
where they are for now. They might move across to libmalcontent-ui later
if there’s a need for it.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-02-04 11:36:58 +00:00
Renamed from malcontent-control/user-controls.c (Browse further)