@@ -15,7 +15,6 @@ public class Greeter.UserCard : Greeter.BaseCard {
1515 // TODO: In Gtk4 remove this gesture and move it to MainWindow
1616 public Gtk . GestureMultiPress click_gesture { get ; private set ; }
1717
18- private Act . User act_user;
1918 private Pantheon . AccountsService greeter_act;
2019 private Pantheon . SettingsDaemon . AccountsService settings_act;
2120
@@ -26,8 +25,6 @@ public class Greeter.UserCard : Greeter.BaseCard {
2625
2726 private SelectionCheck logged_in;
2827
29- private bool needs_settings_set = false ;
30-
3128 public UserCard (LightDM .User lightdm_user ) {
3229 Object (lightdm_user: lightdm_user);
3330 }
@@ -43,38 +40,19 @@ public class Greeter.UserCard : Greeter.BaseCard {
4340 margin_end = 24 ,
4441 };
4542 username_label. get_style_context (). add_class (Granite . STYLE_CLASS_H2_LABEL );
43+ lightdm_user. bind_property (" is-locked" , username_label, " sensitive" , SYNC_CREATE | INVERT_BOOLEAN );
4644
4745 password_entry = new Greeter .PasswordEntry ();
46+ bind_property (" connecting" , password_entry, " sensitive" , INVERT_BOOLEAN );
4847
49- bind_property (
50- " connecting" ,
51- password_entry,
52- " sensitive" ,
53- INVERT_BOOLEAN
54- );
55-
56- var fingerprint_image = new Gtk .Image .from_icon_name (
57- " fingerprint-symbolic" ,
58- BUTTON
59- );
60-
61- bind_property (
62- " use-fingerprint" ,
63- fingerprint_image,
64- " no-show-all" ,
65- INVERT_BOOLEAN | SYNC_CREATE
66- );
67-
68- bind_property (
69- " use-fingerprint" ,
70- fingerprint_image,
71- " visible" ,
72- SYNC_CREATE
73- );
48+ var fingerprint_image = new Gtk .Image .from_icon_name (" fingerprint-symbolic" , BUTTON );
49+ bind_property (" use-fingerprint" , fingerprint_image, " no-show-all" , SYNC_CREATE | INVERT_BOOLEAN );
50+ bind_property (" use-fingerprint" , fingerprint_image, " visible" , SYNC_CREATE );
7451
7552 var password_session_button = new Greeter .SessionButton () {
7653 vexpand = true
7754 };
55+ lightdm_user. bind_property (" is-locked" , password_session_button, " sensitive" , SYNC_CREATE | INVERT_BOOLEAN );
7856
7957 var password_grid = new Gtk .Grid () {
8058 column_spacing = 6 ,
@@ -92,6 +70,7 @@ public class Greeter.UserCard : Greeter.BaseCard {
9270 var login_button_session_button = new Greeter .SessionButton () {
9371 vexpand = true
9472 };
73+ lightdm_user. bind_property (" is-locked" , login_button_session_button, " sensitive" , SYNC_CREATE | INVERT_BOOLEAN );
9574
9675 var login_box = new Gtk .Box (HORIZONTAL , 6 );
9776 login_box. add (login_button);
@@ -121,13 +100,7 @@ public class Greeter.UserCard : Greeter.BaseCard {
121100 transition_type = SLIDE_DOWN ,
122101 child = login_stack
123102 };
124-
125- bind_property (
126- " show-input" ,
127- form_revealer,
128- " reveal-child" ,
129- SYNC_CREATE
130- );
103+ bind_property (" show-input" , form_revealer, " reveal-child" , SYNC_CREATE );
131104
132105 main_box = new Gtk .Box (Gtk . Orientation . VERTICAL , 0 ) {
133106 margin_bottom = 48
@@ -181,13 +154,7 @@ public class Greeter.UserCard : Greeter.BaseCard {
181154
182155 child = card_overlay;
183156
184- act_user = Act . UserManager . get_default (). get_user (lightdm_user. name);
185- act_user. bind_property (" locked" , username_label, " sensitive" , INVERT_BOOLEAN );
186- act_user. bind_property (" locked" , password_session_button, " visible" , INVERT_BOOLEAN );
187- act_user. bind_property (" locked" , login_button_session_button, " visible" , INVERT_BOOLEAN );
188- act_user. notify[" is-loaded" ]. connect (on_act_user_loaded);
189-
190- on_act_user_loaded ();
157+ connect_to_dbus_interfaces ();
191158
192159 card_overlay. focus. connect ((direction) = > {
193160 if (direction == LEFT ) {
@@ -278,42 +245,32 @@ public class Greeter.UserCard : Greeter.BaseCard {
278245 }
279246 }
280247
281- private void on_act_user_loaded () {
282- if (! act_user. is_loaded) {
283- return ;
284- }
285-
286- unowned string ? act_path = act_user. get_object_path ();
287- if (act_path != null ) {
288- try {
289- greeter_act = Bus . get_proxy_sync (
290- SYSTEM ,
291- " org.freedesktop.Accounts" ,
292- act_path,
293- GET_INVALIDATED_PROPERTIES
294- );
295-
296- settings_act = Bus . get_proxy_sync (
297- SYSTEM ,
298- " org.freedesktop.Accounts" ,
299- act_path,
300- GET_INVALIDATED_PROPERTIES
301- );
302-
303- is_24h = greeter_act. time_format != " 12h" ;
304- } catch (Error e) {
305- critical (e. message);
306- }
248+ private void connect_to_dbus_interfaces () {
249+ var account_path = " /org/freedesktop/Accounts/User%d " . printf ((int )lightdm_user. uid);
250+ try {
251+ greeter_act = Bus . get_proxy_sync (
252+ SYSTEM ,
253+ " org.freedesktop.Accounts" ,
254+ account_path,
255+ GET_INVALIDATED_PROPERTIES
256+ );
257+
258+ settings_act = Bus . get_proxy_sync (
259+ SYSTEM ,
260+ " org.freedesktop.Accounts" ,
261+ account_path,
262+ GET_INVALIDATED_PROPERTIES
263+ );
264+
265+ is_24h = greeter_act. time_format != " 12h" ;
266+ } catch (Error e) {
267+ critical (e. message);
307268 }
308269
309270 set_background_image ();
310271 set_check_style ();
311272
312- if (needs_settings_set) {
313- set_settings ();
314- }
315-
316- if (act_user. locked) {
273+ if (lightdm_user. is_locked) {
317274 login_stack. visible_child_name = " disabled" ;
318275 } else {
319276 if (need_password) {
@@ -346,11 +303,6 @@ public class Greeter.UserCard : Greeter.BaseCard {
346303 }
347304
348305 public void set_settings () {
349- if (! act_user. is_loaded) {
350- needs_settings_set = true ;
351- return ;
352- }
353-
354306 set_keyboard_layouts ();
355307 set_mouse_touchpad_settings ();
356308 set_interface_settings ();
0 commit comments