GtkStringObject and GtkStringList are perfect for adding strings to
things like an AdwComboRow. However, things like delay times are harder
to set up, as the underlying GSettings take integer values directly, and
so require mapping from strings to integers if GtkStringList would be
used.
Using an AdwEnumList is an option, but is not flexible as no new values
can be added, which is required if wanting to represent values that were
set to dconf (by the user or using older Settings version) which are not
in the enum.
To solve this, we add CcNumberObject, with a similar api to
GtkStringObject. It contains an integer value, and an (optional)
representing string and (optional) custom order. These objects are
stored in a CcNumberList which wraps a GListStore and implements
GListModel. It has convenient methods for adding values directly. The
CcNumberList is always sorted, either ascending or descending, but also
takes into account any special ordering of CcNumberObjects.
Properties of CcNumberList are set up so that "values" can be added in
.ui files with a simple array notation, and one "special-value"
CcNumberObject (with string and/or custom order) can be added in .ui
files as well.
Using CcNumberObjects/CcNumberList in an AdwComboRow is very easy, it
just requires a function that takes a CcNumberObject and returns a
string. Two example functions are provided, which assume the
CcNumberObject contains a time duration value in either seconds or
minutes.
Meson extracts them by itself and add them as dependencies for the target.
It means one less location to keep track of files, and a lot less boilerplate
around the meson files
cc-common-resources.h is used by both libwidgets and liblanguage, and
so must be generated before they build. However, Meson wasn't aware
of this dependency which resulted in a race condition during build.
Conveniently, "generates_sources_dep" already contains other generated
sources used by these two libraries, so adding cc-common-resources.h
to this list is enough to declare the dependency.
Generated sources need to be generated before files that
use them can be built.
Add a separate dependency on them, and make the various
libraries under panels/common/ depend on these sources.
This is only the bare minimum to make everything under panels/common
build. Since these widgets are used by the main window, port them
first.
CcTimeEntry was particularly hard to port. That's because GtkEntry
is a final class now. Overall, though, I'm happy with how it turned
out to be - much cleaner, less code, more obvious.
As described in #1346, GLib 2.64 includes a g_get_os_info() function,
providing access to keys from /etc/os-release. This commit replaces calls to
gnome-control-center's custom parser (in panels/common/cc-os-release.c)
with calls to this new function, and deletes the custom parser code.
Closes#1346
The "CcPermissionInfobar" widget is a more descriptive way to
communicate that some Settings panel needs authentication in order
to perform certain actions.
This widget doesn't handle the permissions (as in GPermission)
itself. It needs to be binded to an existing instance of GPermission,
and it will react to the permission's state (show when the current
user is not authorized, and hide when the user is authorized).
This is part of a big set of changes that aim to set a consistent
authentication method accross Settings panels.
See #685, #556, and #771
Drop the subtypes, and keep a single udev-based GsdDeviceManager,
which will work on both backends, and should work on all platforms
we care about (?).
Those files are no longer existent in gnome-settings-daemon, so
this module is free to do as it pleases with them, there doesn't
need to exist any synchronization anymore.
Meson is a build system focused on speed an ease of use, which
helps speeding up the software development. This patch adds meson
support along autotools.
https://bugzilla.gnome.org/show_bug.cgi?id=785414