This commit improves the Night Light code in various
ways:
* Turn it into a template class, subclass of GtkDialog,
and adapts all the code to reflect that.
* Update the code style in various places, to make it
more conformant with the documented code style.
* Reorganize the code a bit, moving functions around,
to make it more conformant with the documented order.
dialog_got_proxy_cb and dialog_got_proxy_props_cb may be called after the
instance of CcNightLightDialog has been disposed. Make sure 'self' pointer is
not dereferenced if not valid.
Fixes: https://gitlab.gnome.org/GNOME/gnome-control-center/issues/86
The night light schedule dialog stores the time as a single floating
point value, which is then converted into hours and minutes for the
time selection fields.
Previously, the minutes were calculated using the remainder of the
stored value and the hours. This caused undesired behaviour when the
hour field was set to zero, as fmod(value, 0) returns NaN. As a result,
the user was not able to set the time between 00:00 and 00:59.
This patch rewrites the time retrieval logic using modf.
https://bugzilla.gnome.org/show_bug.cgi?id=792944