U
    c                     @   sB   d dl mZ d dlmZ d dlZd dlmZ G dd dejZdS )    )absolute_import)GObjectN)DBusGMainLoopc                   @   s   e Zd ZdZejjdejffejjdejffejjdejejffdZ	dd Z
dd Zdd	 Zd
d Zdd Zdd Zdd ZdS )AlertWatcherzX a class that checks for alerts and reports them, like a battery
    or network warning N)network-alertbattery-alertnetwork-3g-alertc                 C   s0   t j |  tdd ttjj| _d| _d S )NT)Zset_as_default   )r   __init__r   dbusZBusZTYPE_SYSTEMbusnetwork_state)self r   A/usr/lib/python3/dist-packages/UpdateManager/Core/AlertWatcher.pyr
   .   s    
zAlertWatcher.__init__c                 C   s   zz| j dd}|jd| jdd t|d}|dd| _| | j | j dd}|jd	| j	dd | 	  | 
  W n tjjk
r   Y nX d S )
Nzorg.freedesktop.NetworkManagerz/org/freedesktop/NetworkManagerZStateChanged)Zdbus_interfaceorg.freedesktop.DBus.PropertiesStateorg.freedesktop.UPower/org/freedesktop/UPowerZChanged)r   
get_objectZconnect_to_signal_on_network_state_changedr   	InterfaceGetr   _network_alert_power_changed_update_3g_state
exceptionsZDBusException)r   obj	interfacer   r   r   check_alert_state5   s2     
zAlertWatcher.check_alert_statec                 C   s   |  | |   d S )N)r   r   r   stater   r   r   r   L   s    
z&AlertWatcher._on_network_state_changedc                 C   s2   ddl m} | }| }| }| || d S )N   )NetworkManagerHelper)Zroamr#   Z is_active_connection_gsm_or_cdmaZ(is_active_connection_gsm_or_cdma_roaming_network_3g_alert)r   r#   Znmon_3g
is_roamingr   r   r   r   P   s
    zAlertWatcher._update_3g_statec                 C   s   |  d|| d S )Nr   )emit)r   r%   r&   r   r   r   r$   W   s    zAlertWatcher._network_3g_alertc                 C   s   || _ | d| d S )Nr   )r   r'   r    r   r   r   r   Z   s    zAlertWatcher._network_alertc                 C   s6   | j dd}t|d}|dd}| d| d S )Nr   r   r   Z	OnBatteryr   )r   r   r   r   r   r'   )r   r   r   Z
on_batteryr   r   r   r   ^   s    zAlertWatcher._power_changed)__name__
__module____qualname____doc__r   ZSignalFlagsZ	RUN_FIRSTZTYPE_INTZTYPE_BOOLEANZ__gsignals__r
   r   r   r   r$   r   r   r   r   r   r   r      s.   r   )Z
__future__r   Zgi.repositoryr   r   Zdbus.mainloop.glibr   r   r   r   r   r   <module>   s   