
    Eg                     n    d dl Z d dlmZmZmZmZ d dlZd dlZd dlm	Z	m
Z
  G d dej                        Zy)    N)GObjectCScreensaverGioGLib)utilstrackersc                   ~     e Zd ZdZdZdZdej                  j                  ddfiZ	 fdZ
d Zd	 Zd
 Zd Zd Z xZS )AccountsServiceClientz
    Singleton for working with the AccountsService, which we use
    to retrieve the user's face image and their real name.
    zorg.freedesktop.Accountsz/org/freedesktop/Accountsaccounts-readyN c                 @   t         t        |           d | _        d | _        t        d       t        j                  j                  t        j                  j                  t        j                  j                  | j                  | j                  d | j                          y )NzLoading AccountsService)superr
   __init__accountsuserprintr   AccountsServiceProxynew_for_busr   BusTypeSYSTEMDBusProxyFlagsDO_NOT_AUTO_STARTACCOUNTS_SERVICEACCOUNTS_PATHon_accounts_connected)self	__class__s    B/usr/share/cinnamon-screensaver/dbusdepot/accountsServiceClient.pyr   zAccountsServiceClient.__init__   sv    #T35	'())55ckk6H6H696H6H6Z6Z6:6K6K6:6H6H6:6:6P6P	R    c                     	 t         j                  j                  |      | _        | j                  j                  t        j                         d | j                         y # t        j
                  $ r}t        d| d       Y d }~y d }~ww xY w)Nz&Could not connect to AccountsService: Tflush)r   r   new_for_bus_finishr   r   Errorr   call_find_user_by_namer   get_user_namegot_user_proxyr   sourcereses       r   r   z+AccountsServiceClient.on_accounts_connected%   sr    	(==PPQTUDM
 	,,U-@-@-BD$J]J]^	 zz 	:1#>dK	s   $A   B3BBc                 l   	 | j                   j                  |      }t
        j                  j                  t        j                  j                  t        j                  j                  | j                  |d | j                         y # t        j                  $ r}t	        d| d       Y d }~y d }~ww xY w)Nz0Could not get AccountsService User object path: Tr!   )r   call_find_user_by_name_finishr   r$   r   r   AccountsUserProxyr   r   r   r   r   NONEr   on_user_loaded)r   r)   r*   
proxy_pathr+   s        r   r'   z$AccountsServiceClient.got_user_proxy.   s    	DDSIJ
 	&&223;;3E3E363E3E3J3J373H3H3=37373F3F	H	 zz 	DQCHPTU	s   B B3B..B3c                     	 t         j                  j                  |      | _        t        d       | j                  d       y # t        j
                  $ r}t        d| d       Y d }~Ed }~ww xY w)Nz'Could not create AccountsService.User: Tr!   zAccountsService readyr   )r   r.   r#   r   r   r$   r   emitr(   s       r   r0   z$AccountsServiceClient.on_user_loaded<   se    	M$66II#NDI 	%&		"#	 zz 	M;A3?tLL	Ms   $A A0A++A0c                 R    | j                   | j                   j                  d      S y )Nz	real-name)r   get_property)r   s    r   get_real_namez#AccountsServiceClient.get_real_nameE   s$    99 99))+66r   c                 :   t         j                  j                  t        j                         d      }t         j                  j                  |      r|S | j                  <| j                  j                  d      }t         j                  j                  |      r|S y )Nz.facez	icon-file)ospathjoinr   get_home_direxistsr   r5   )r   faceaccounts_paths      r   get_face_pathz#AccountsServiceClient.get_face_pathK   sk    ww||D--/977>>$K99  II22;?Mww~~m,((r   )__name__
__module____qualname____doc__r   r   r   SignalFlagsRUN_LAST__gsignals__r   r   r'   r0   r6   r?   __classcell__)r   s   @r   r
   r
   
   sW     22M 	7..77rBLR_H$
r   r
   )gigi.repositoryr   r   r   r   r8   timeutilr   r   Objectr
   r   r   r   <module>rM      s+    
 : : 	   KGNN Kr   