@@ -12,7 +12,6 @@ public class Greeter.UserCard : Greeter.BaseCard {
1212 // TODO: In Gtk4 remove this gesture and move it to MainWindow
1313 public Gtk . GestureMultiPress click_gesture { get ; private set ; }
1414
15- private Act . User act_user;
1615 private Pantheon . AccountsService greeter_act;
1716 private Pantheon . SettingsDaemon . AccountsService settings_act;
1817
@@ -23,8 +22,6 @@ public class Greeter.UserCard : Greeter.BaseCard {
2322
2423 private SelectionCheck logged_in;
2524
26- private bool needs_settings_set = false ;
27-
2825 public UserCard (LightDM .User lightdm_user ) {
2926 Object (lightdm_user: lightdm_user);
3027 }
@@ -40,38 +37,19 @@ public class Greeter.UserCard : Greeter.BaseCard {
4037 margin_end = 24 ,
4138 };
4239 username_label. get_style_context (). add_class (Granite . STYLE_CLASS_H2_LABEL );
40+ lightdm_user. bind_property (" is-locked" , username_label, " sensitive" , SYNC_CREATE | INVERT_BOOLEAN );
4341
4442 password_entry = new Greeter .PasswordEntry ();
43+ bind_property (" connecting" , password_entry, " sensitive" , INVERT_BOOLEAN );
4544
46- bind_property (
47- " connecting" ,
48- password_entry,
49- " sensitive" ,
50- INVERT_BOOLEAN
51- );
52-
53- var fingerprint_image = new Gtk .Image .from_icon_name (
54- " fingerprint-symbolic" ,
55- BUTTON
56- );
57-
58- bind_property (
59- " use-fingerprint" ,
60- fingerprint_image,
61- " no-show-all" ,
62- INVERT_BOOLEAN | SYNC_CREATE
63- );
64-
65- bind_property (
66- " use-fingerprint" ,
67- fingerprint_image,
68- " visible" ,
69- SYNC_CREATE
70- );
45+ var fingerprint_image = new Gtk .Image .from_icon_name (" fingerprint-symbolic" , BUTTON );
46+ bind_property (" use-fingerprint" , fingerprint_image, " no-show-all" , SYNC_CREATE | INVERT_BOOLEAN );
47+ bind_property (" use-fingerprint" , fingerprint_image, " visible" , SYNC_CREATE );
7148
7249 var password_session_button = new Greeter .SessionButton () {
7350 vexpand = true
7451 };
52+ lightdm_user. bind_property (" is-locked" , password_session_button, " sensitive" , SYNC_CREATE | INVERT_BOOLEAN );
7553
7654 var password_grid = new Gtk .Grid () {
7755 column_spacing = 6 ,
@@ -89,6 +67,7 @@ public class Greeter.UserCard : Greeter.BaseCard {
8967 var login_button_session_button = new Greeter .SessionButton () {
9068 vexpand = true
9169 };
70+ lightdm_user. bind_property (" is-locked" , login_button_session_button, " sensitive" , SYNC_CREATE | INVERT_BOOLEAN );
9271
9372 var login_box = new Gtk .Box (HORIZONTAL , 6 );
9473 login_box. add (login_button);
@@ -118,13 +97,7 @@ public class Greeter.UserCard : Greeter.BaseCard {
11897 transition_type = SLIDE_DOWN ,
11998 child = login_stack
12099 };
121-
122- bind_property (
123- " show-input" ,
124- form_revealer,
125- " reveal-child" ,
126- SYNC_CREATE
127- );
100+ bind_property (" show-input" , form_revealer, " reveal-child" , SYNC_CREATE );
128101
129102 main_box = new Gtk .Box (Gtk . Orientation . VERTICAL , 0 ) {
130103 margin_bottom = 48
@@ -178,13 +151,7 @@ public class Greeter.UserCard : Greeter.BaseCard {
178151
179152 child = card_overlay;
180153
181- act_user = Act . UserManager . get_default (). get_user (lightdm_user. name);
182- act_user. bind_property (" locked" , username_label, " sensitive" , INVERT_BOOLEAN );
183- act_user. bind_property (" locked" , password_session_button, " visible" , INVERT_BOOLEAN );
184- act_user. bind_property (" locked" , login_button_session_button, " visible" , INVERT_BOOLEAN );
185- act_user. notify[" is-loaded" ]. connect (on_act_user_loaded);
186-
187- on_act_user_loaded ();
154+ connect_to_dbus_interfaces ();
188155
189156 click_gesture = new Gtk .GestureMultiPress (this );
190157
@@ -263,42 +230,32 @@ public class Greeter.UserCard : Greeter.BaseCard {
263230 }
264231 }
265232
266- private void on_act_user_loaded () {
267- if (! act_user. is_loaded) {
268- return ;
269- }
270-
271- unowned string ? act_path = act_user. get_object_path ();
272- if (act_path != null ) {
273- try {
274- greeter_act = Bus . get_proxy_sync (
275- SYSTEM ,
276- " org.freedesktop.Accounts" ,
277- act_path,
278- GET_INVALIDATED_PROPERTIES
279- );
280-
281- settings_act = Bus . get_proxy_sync (
282- SYSTEM ,
283- " org.freedesktop.Accounts" ,
284- act_path,
285- GET_INVALIDATED_PROPERTIES
286- );
287-
288- is_24h = greeter_act. time_format != " 12h" ;
289- } catch (Error e) {
290- critical (e. message);
291- }
233+ private void connect_to_dbus_interfaces () {
234+ var account_path = " /org/freedesktop/Accounts/User%d " . printf ((int )lightdm_user. uid);
235+ try {
236+ greeter_act = Bus . get_proxy_sync (
237+ SYSTEM ,
238+ " org.freedesktop.Accounts" ,
239+ account_path,
240+ GET_INVALIDATED_PROPERTIES
241+ );
242+
243+ settings_act = Bus . get_proxy_sync (
244+ SYSTEM ,
245+ " org.freedesktop.Accounts" ,
246+ account_path,
247+ GET_INVALIDATED_PROPERTIES
248+ );
249+
250+ is_24h = greeter_act. time_format != " 12h" ;
251+ } catch (Error e) {
252+ critical (e. message);
292253 }
293254
294255 set_background_image ();
295256 set_check_style ();
296257
297- if (needs_settings_set) {
298- set_settings ();
299- }
300-
301- if (act_user. locked) {
258+ if (lightdm_user. is_locked) {
302259 login_stack. visible_child_name = " disabled" ;
303260 } else {
304261 if (need_password) {
@@ -331,11 +288,6 @@ public class Greeter.UserCard : Greeter.BaseCard {
331288 }
332289
333290 public void set_settings () {
334- if (! act_user. is_loaded) {
335- needs_settings_set = true ;
336- return ;
337- }
338-
339291 set_keyboard_layouts ();
340292 set_mouse_touchpad_settings ();
341293 set_interface_settings ();
@@ -402,12 +354,12 @@ public class Greeter.UserCard : Greeter.BaseCard {
402354
403355 private void set_interface_settings () {
404356 var interface_settings = new GLib .Settings (" org.gnome.desktop.interface" );
405- interface_settings. set_value (" cursor-blink" , settings_act. cursor_blink);
406- interface_settings. set_value (" cursor-blink-time" , settings_act. cursor_blink_time);
407- interface_settings. set_value (" cursor-blink-timeout" , settings_act. cursor_blink_timeout);
408- interface_settings. set_value (" cursor-size" , settings_act. cursor_size);
409- interface_settings. set_value (" locate-pointer" , settings_act. locate_pointer);
410- interface_settings. set_value (" text-scaling-factor" , settings_act. text_scaling_factor);
357+ interface_settings. set_boolean (" cursor-blink" , settings_act. cursor_blink);
358+ interface_settings. set_int (" cursor-blink-time" , settings_act. cursor_blink_time);
359+ interface_settings. set_int (" cursor-blink-timeout" , settings_act. cursor_blink_timeout);
360+ interface_settings. set_int (" cursor-size" , settings_act. cursor_size);
361+ interface_settings. set_boolean (" locate-pointer" , settings_act. locate_pointer);
362+ interface_settings. set_double (" text-scaling-factor" , settings_act. text_scaling_factor);
411363 set_or_reset_settings_key (interface_settings, " document-font-name" , settings_act. document_font_name);
412364 set_or_reset_settings_key (interface_settings, " font-name" , settings_act. font_name);
413365 set_or_reset_settings_key (interface_settings, " monospace-font-name" , settings_act. monospace_font_name);
@@ -420,46 +372,45 @@ public class Greeter.UserCard : Greeter.BaseCard {
420372 settings_daemon_settings. set_value (" last-coordinates" , coordinates);
421373
422374 settings_daemon_settings. set_enum (" prefer-dark-schedule" , settings_act. prefer_dark_schedule);
423- settings_daemon_settings. set_value (" prefer-dark-schedule-from" , settings_act. prefer_dark_schedule_from);
424- settings_daemon_settings. set_value (" prefer-dark-schedule-to" , settings_act. prefer_dark_schedule_to);
375+ settings_daemon_settings. set_double (" prefer-dark-schedule-from" , settings_act. prefer_dark_schedule_from);
376+ settings_daemon_settings. set_double (" prefer-dark-schedule-to" , settings_act. prefer_dark_schedule_to);
425377
426378 var touchscreen_settings = new GLib .Settings (" org.gnome.settings-daemon.peripherals.touchscreen" );
427379 touchscreen_settings. set_boolean (" orientation-lock" , settings_act. orientation_lock);
428380
429381 var background_settings = new GLib .Settings (" org.gnome.desktop.background" );
430- if (lightdm_user. background != null ) {
431- background_settings. set_value (" picture-uri" , lightdm_user. background);
432- } else {
433- background_settings. reset (" picture-uri" );
434- }
435-
436- background_settings. set_value (" picture-options" , settings_act. picture_options);
437- background_settings. set_value (" primary-color" , settings_act. primary_color);
382+ background_settings. set_enum (" picture-options" , settings_act. picture_options);
383+ set_or_reset_settings_key (background_settings, " picture-uri" , lightdm_user. background);
384+ set_or_reset_settings_key (background_settings, " primary-color" , settings_act. primary_color);
438385 }
439386
440387 private void set_wingpanel_settings () {
441388 var wingpanel_schema = SettingsSchemaSource . get_default (). lookup (" io.elementary.desktop.wingpanel" , true );
442- if (wingpanel_schema == null || ! wingpanel_schema. has_key (" use-transparency" )) {
443- return ;
389+ if (wingpanel_schema != null && wingpanel_schema. has_key (" use-transparency" )) {
390+ var wingpanel_settings = new GLib .Settings (" io.elementary.desktop.wingpanel" );
391+ wingpanel_settings. set_boolean (" use-transparency" , settings_act. wingpanel_use_transparency);
444392 }
445393
446- var wingpanel_settings = new GLib .Settings (" io.elementary.desktop.wingpanel" );
447- wingpanel_settings. set_value (" use-transparency" , settings_act. wingpanel_use_transparency);
394+ var wingpanel_power_schema = SettingsSchemaSource . get_default (). lookup (" io.elementary.desktop.wingpanel.power" , true );
395+ if (wingpanel_power_schema != null && wingpanel_power_schema. has_key (" show-percentage" )) {
396+ var wingpanel_power_settings = new GLib .Settings (" io.elementary.desktop.wingpanel.power" );
397+ wingpanel_power_settings. set_boolean (" show-percentage" , settings_act. wingpanel_show_percentage);
398+ }
448399 }
449400
450401 private void set_night_light_settings () {
451402 var night_light_settings = new GLib .Settings (" org.gnome.settings-daemon.plugins.color" );
452- night_light_settings. set_value (" night-light-enabled" , settings_act. night_light_enabled);
403+ night_light_settings. set_boolean (" night-light-enabled" , settings_act. night_light_enabled);
453404
454405 var latitude = new Variant .double (settings_act. last_coordinates. latitude);
455406 var longitude = new Variant .double (settings_act. last_coordinates. longitude);
456407 var coordinates = new Variant .tuple ({latitude, longitude});
457408 night_light_settings. set_value (" night-light-last-coordinates" , coordinates);
458409
459- night_light_settings. set_value (" night-light-schedule-automatic" , settings_act. night_light_schedule_automatic);
460- night_light_settings. set_value (" night-light-schedule-from" , settings_act. night_light_schedule_from);
461- night_light_settings. set_value (" night-light-schedule-to" , settings_act. night_light_schedule_to);
462- night_light_settings. set_value (" night-light-temperature" , settings_act. night_light_temperature);
410+ night_light_settings. set_boolean (" night-light-schedule-automatic" , settings_act. night_light_schedule_automatic);
411+ night_light_settings. set_double (" night-light-schedule-from" , settings_act. night_light_schedule_from);
412+ night_light_settings. set_double (" night-light-schedule-to" , settings_act. night_light_schedule_to);
413+ night_light_settings. set_uint (" night-light-temperature" , settings_act. night_light_temperature);
463414 }
464415
465416 private void set_power_settings () {
@@ -472,7 +423,7 @@ public class Greeter.UserCard : Greeter.BaseCard {
472423
473424 private void update_style () {
474425 var interface_settings = new GLib .Settings (" org.gnome.desktop.interface" );
475- interface_settings. set_value (" gtk-theme" , " io.elementary.stylesheet." + accent_to_string (settings_act. accent_color));
426+ interface_settings. set_string (" gtk-theme" , " io.elementary.stylesheet." + accent_to_string (settings_act. accent_color));
476427
477428 SettingsPortal . get_default (). prefers_color_scheme = greeter_act. prefers_color_scheme;
478429 }
0 commit comments