
    |~gH                         d dl mZ d dlmZ d dlZd dlmZmZmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ  G d	 d
      Z G d d      Z G d de
e      Zy)    )Enum)gettextN)CallableAnyOptional)AppletPlugin)Adapter)GLib)StatusIconProviderc                        e Zd ZdddeddfdZy)PowerStateListenermanagerPowerManagerstatereturnNc                      y N )selfr   r   s      E/usr/lib/python3/dist-packages/blueman/plugins/applet/PowerManager.pyon_power_state_changedz)PowerStateListener.on_power_state_changed   s        )__name__
__module____qualname__boolr   r   r   r   r   r      s    n T d r   r   c                   8    e Zd Zd	dZdddedeegdf   ddfdZy)
PowerStateHandlerr   c                 6    t         j                  j                  S r   )r   StateONr   s    r   on_power_state_queryz&PowerStateHandler.on_power_state_query   s    !!$$$r   r   r   r   cbNc                      y r   r   )r   r   r   r$   s       r   on_power_state_change_requestedz1PowerStateHandler.on_power_state_change_requested   s    r   )r   PowerManager.State)r   r   r   r#   r   r   r&   r   r   r   r   r      s5    %~ d ,4dVT\,BGKr   r   c                      e Zd ZdgZdZ ed      ZdZdZ G d de	      Z
dd
ZddZedefd       Zdedd	fdZdefdZdedd	fdZ G d d      Zd dededd	fdZddZdefdZdedededd	fdZddZdee   fdZdedd	fdZy	)!r   MenuTz'Controls Bluetooth adapter power statesWalmiszgnome-power-manager-symbolicc                       e Zd ZdZdZdZy)r'         r   N)r   r   r   r!   OFF
OFF_FORCEDr   r   r   r    zPowerManager.State#   s    
r   r    r   Nc           
      x   | j                   j                  j                  j                  | dt	        d      ddt	        d      | j
                        | _        d| _        d| _        d| _	        | j                  dd	       | j                  d
dd| j                         | j                  ddd	| j                         y )Nr-   <b>Turn Bluetooth _Off</b>Tbluetooth-disabled-symbolicTurn off all adapters)textmarkup	icon_nametooltipcallbackFBluetoothStatusChangedbSetBluetoothStatus)r:    GetBluetoothStatusr   )parentPluginsr)   add_on_bluetooth_toggleditemadapter_statecurrent_staterequest_in_progress_add_dbus_signal_add_dbus_methodrequest_power_stateget_bluetooth_statusr"   s    r   on_loadzPowerManager.on_load(   s    KK'',,00qqA]?^gk;X9:;R9S:>:S:S 1 U	 "!#( 6<2FB@X@XY2BT=V=VWr   c                 b    | j                   j                  j                  j                  |        y r   )r>   r?   r)   
unregisterr"   s    r   	on_unloadzPowerManager.on_unload6   s       ++D1r   c                     | j                   S r   rE   r"   s    r   CurrentStatezPowerManager.CurrentState9   s    !!!r   r   c                 P     |r#dt         f fd}t        j                  d|       y y )Nr   c                  D     j                   j                                y)NF)rI   get_adapter_stater"   s   r   timeoutz6PowerManager.on_manager_state_changed.<locals>.timeout?   s    (()?)?)ABr   i  )r   r
   timeout_add)r   r   rU   s   `  r   on_manager_state_changedz%PowerManager.on_manager_state_changed=   s)    T  T7+ r   c                 |    | j                   j                  j                         }|D ]	  }|d   r	 y t        |      S )NPoweredF)r>   Managerget_adaptersr   )r   adaptersadapters      r   rT   zPowerManager.get_adapter_stateE   s@    ;;&&335 	G9%	 H~r   c                    	 t        j                  |       | j                  j                  j	                         }|D ]  }|j                  d|        || _        y # t        $ r t        j                  dd       Y y w xY w)NrY   zException occurredT)exc_info)	logginginfor>   rZ   r[   setrD   	Exceptionerror)r   r   r\   r]   s       r   set_adapter_statezPowerManager.set_adapter_stateL   sp    	?LL{{**779H# .Iu-. "'D 	?MM.>	?s   AA  A?>A?c                   @    e Zd ZdddefdZdeddfdZdd	Zdefd
Zy)PowerManager.Callbackr>   r   r   c                     || _         d| _        d| _        || _        d| _        t        j                  d| j                        | _        y )Nr   Fi  )	r>   num_cbcalledr   successr
   rV   rU   timer)r   r>   r   s      r   __init__zPowerManager.Callback.__init__X   s=     DKDKDKDJ DL))$=DJr   resultr   Nc                 `    | xj                   dz  c_         |rd| _        | j                          y )Nr-   T)rj   rk   check)r   rn   s     r   __call__zPowerManager.Callback.__call__`   s#    KK1K#JJLr   c                 @   | j                   | j                  k(  rt        j                  | j                         t        j                  d       | j                  j                  | j                         | j                  j                          d| j                  _        y y )Nzcallbacks doneF)rj   ri   r
   source_removerl   r`   ra   r>   re   r   update_power_staterF   r"   s    r   rp   zPowerManager.Callback.checkh   sh    {{dkk)""4::.-.--djj9..027/ *r   c                     t        j                  d       | j                  j                          d| j                  _        y)Nz)Timeout reached while setting power stateF)r`   ra   r>   rt   rF   r"   s    r   rU   zPowerManager.Callback.timeoutp   s.    LLDEKK**,.3DKK+r   r   N)r   r   r   r   rm   rq   rp   rU   r   r   r   Callbackrg   W   s9    	>> 	>$ 	>	4 	D 		8	T 	r   rw   forcec                    | j                   |k7  s|r| j                  sd| _        t        j                  d|        t        j                  | |      }t        | j                  j                  j                  t                    }|D ]  }|j                  | ||        t        |      |_        |j                          y t        j                  d       y y )NTzRequesting zAnother request in progress)rE   rF   r`   ra   r   rw   listr>   r?   get_loaded_pluginsr   r&   lenri   rp   )r   r   rx   r$   handlershandlers         r   rI   z PowerManager.request_power_statev   s    &%+++/({5'23!**47 3 3 F FGX YZ' MG;;D%LMM	
:; +0r   c                 <     j                   j                  j                  t              D cg c]  }|j	                          }}t         fd|D              xs  j                   } j                  j                  |v } j                  j                  |v xs  j                  }d}|s|r j                  j                  t        d      d        j                  j                  d        j                  j                  t        d              j                  j                  |        d}n|r j                   s j                  j                  t        d      d        j                  j                  d	        j                  j                  t        d
              j                  j                  d       d}t#        j$                  d| d| d| d j                    d| 
        j                   |k7  rt#        j$                  d|        | _         j'                  d|        j                   j                  j                  t(              D ]  }|j+                   |        d j                   j                  j-                         v r |ri j                   j                  j.                  j1                  t        d              j                   j                  j.                  j3                  d       nf j                   j                  j.                  j1                  t        d              j                   j                  j.                  j3                           j                   j                  j.                  j5                          y y y c c}w )Nc              3   P   K   | ]  }|j                   j                  k7    y wr   )r    r!   ).0xr   s     r   	<genexpr>z2PowerManager.update_power_state.<locals>.<genexpr>   s     3!tzz}}$3s   #&Tz<b>Turn Bluetooth _On</b>)r5   zbluetooth-symboliczTurn on all adaptersFr1   r2   r3   zoff z | foff z | on z | current state z | new state zSignalling r9   
StatusIconzBluetooth Enabled)delay_hidingzBluetooth Disabled)r>   r?   r{   r   r#   anyrD   r    r/   r!   rC   set_textrA   set_icon_nameset_tooltipset_sensitiverE   r`   ra   _emit_dbus_signalr   r   
get_loadedr   set_tooltip_titlequery_visibilityicon_should_change)r   pluginretsofffoffon	new_states   `      r   rt   zPowerManager.update_power_state   s   "kk11DDEVWY ++- Y Y 3d33M4;M;M7Mzz$$,ZZ]]d"8d&8&8	3IIq!<=dKII##$89II!!!$:";<II##H-I**IIq!=>tLII##$ABII!!!$;"<=II##D)ItC5fRD8I$J\J\I]]jktjuvw*LL;yk23!*D""#;YG++--@@AST ?--dI>? t{{22==??KK''22DDQGZE[\KK''22CCQUCVKK''22DDQG[E\]KK''22CCE##..AAC @ +9Ys   Nc                     | j                   S r   rP   r"   s    r   rJ   z!PowerManager.get_bluetooth_status   s    !!!r   _pathkeyvaluec                     |dk(  rZ|r2| j                   s&t        j                  d       | j                  d       | j	                         | _        | j                          y y )NrY   z;adapter powered on while in off state, turning bluetooth onT)rE   r`   warningrI   rT   rD   rt   )r   r   r   r   s       r   on_adapter_property_changedz(PowerManager.on_adapter_property_changed   sR    )T// ]^((.!%!7!7!9D##% r   c                 <    | j                  | j                          y r   )rI   rE   r"   s    r   rB   z!PowerManager.on_bluetooth_toggled   s      T%7%7!78r   c                 *    | j                         sdS d S )Nzblueman-disabled)rJ   r"   s    r   on_status_icon_query_iconz&PowerManager.on_status_icon_query_icon   s    )-)B)B)D!N$Nr   pathc                 T    t        |      }|j                  d| j                         y )N)obj_pathrY   )r	   rb   rD   )r   r   r]   s      r   on_adapter_addedzPowerManager.on_adapter_added   s     4(It112r   rv   )F)r   r   r   __depends____unloadable__rA   __description__
__author____icon__r   r    rK   rN   propertyr   rQ   rW   rT   re   rw   rI   rt   rJ   strr   r   rB   r   r   r   r   r   r   r   r      s	   (KNABOJ-H 
X2 "d " ",d ,t ,4 	?t 	? 	? >< <d <t < ,D\"d "& &3 &s &t &9O8C= O3S 3T 3r   r   )enumr   r   rA   r`   typingr   r   r   blueman.plugins.AppletPluginr   blueman.bluez.Adapterr	   gi.repositoryr
   !blueman.plugins.applet.StatusIconr   r   r   r   r   r   r   <module>r      sE        * * 5 )  @ 
 l3<!3 l3r   