Ticket #1652: 0001-3G-Connection-Info.patch

File 0001-3G-Connection-Info.patch, 6.6 KB (added by tomeu, 14 years ago)
  • extensions/deviceicon/network.py

    From e0ab59b6a5183352a327b1d24880755c3799191f Mon Sep 17 00:00:00 2001
    From: root <root@localhost.localdomain>
    Date: Thu, 14 Jan 2010 15:41:59 -0200
    Subject: [PATCH] 3G Connection Info
    
    ---
     extensions/deviceicon/network.py |   63 +++++++++++++++++++++++++++++++++++---
     src/jarabe/model/network.py      |   13 +++++---
     2 files changed, 66 insertions(+), 10 deletions(-)
    
    diff --git a/extensions/deviceicon/network.py b/extensions/deviceicon/network.py
    index 2ca6a88..8e8eb64 100644
    a b import hashlib 
    2323import socket
    2424import struct
    2525import re
    26 
     26import datetime, time
    2727import gtk
    2828import gobject
    2929import gconf
    _NM_PATH = '/org/freedesktop/NetworkManager' 
    5252_NM_DEVICE_IFACE = 'org.freedesktop.NetworkManager.Device'
    5353_NM_WIRED_IFACE = 'org.freedesktop.NetworkManager.Device.Wired'
    5454_NM_WIRELESS_IFACE = 'org.freedesktop.NetworkManager.Device.Wireless'
     55_NM_SERIAL_IFACE = 'org.freedesktop.NetworkManager.Device.Serial'
    5556_NM_OLPC_MESH_IFACE = 'org.freedesktop.NetworkManager.Device.OlpcMesh'
    5657_NM_ACCESSPOINT_IFACE = 'org.freedesktop.NetworkManager.AccessPoint'
    5758_NM_ACTIVE_CONN_IFACE = 'org.freedesktop.NetworkManager.Connection.Active'
    class GsmPalette(Palette): 
    221222    }
    222223
    223224    def __init__(self):
     225
     226        def _padded(child, xalign=0, yalign=0.5):
     227            padder = gtk.Alignment(xalign=xalign, yalign=yalign,
     228                                   xscale=1, yscale=0.33)
     229            padder.set_padding(style.DEFAULT_SPACING,
     230                               style.DEFAULT_SPACING,
     231                               style.DEFAULT_SPACING,
     232                               style.DEFAULT_SPACING)
     233            padder.add(child)
     234            return padder
     235
    224236        Palette.__init__(self, label=_('Wireless modem'))
    225237
    226238        self._current_state = None
    class GsmPalette(Palette): 
    232244
    233245        self.set_state(_GSM_STATE_NOT_READY)
    234246
     247        self._info = gtk.VBox()
     248        self._data_label = gtk.Label()
     249        self._data_label.props.xalign = 0.0
     250        self._info.pack_start(_padded(self._data_label))
     251       
     252        self._conn_time_label = gtk.Label()
     253        self._conn_time_label.props.xalign = 0.0
     254        self._info.pack_start(_padded(self._conn_time_label))
     255
     256        self._info.show_all()
     257        self.set_content(self._info)
     258
    235259    def set_state(self, state):
    236260        self._current_state = state
    237261        self._update_label_and_text()
    class GsmDeviceView(TrayIcon): 
    683707    FRAME_POSITION_RELATIVE = 303
    684708
    685709    def __init__(self, device):
     710        self.__connection_time_handler = None
     711        self.__connection_timestamp = None
     712
    686713        client = gconf.client_get_default()
    687714        color = xocolor.XoColor(client.get_string('/desktop/sugar/user/color'))
    688715
    class GsmDeviceView(TrayIcon): 
    697724                                      signal_name='StateChanged',
    698725                                      path=self._device.object_path,
    699726                                      dbus_interface=_NM_DEVICE_IFACE)
    700 
     727        self._bus.add_signal_receiver(self.__ppp_stats_changed_cb,
     728                                      signal_name='PppStats',
     729                                      path=self._device.object_path,
     730                                      dbus_interface=_NM_SERIAL_IFACE)
    701731    def create_palette(self):
    702732        palette = GsmPalette()
    703733
    class GsmDeviceView(TrayIcon): 
    770800
    771801        if state is network.DEVICE_STATE_ACTIVATED:
    772802            gsm_state = _GSM_STATE_CONNECTED
    773 
    774         elif state is network.DEVICE_STATE_DISCONNECTED:
     803            connection = network.find_gsm_connection()
     804            if (connection <> None):
     805                connection.set_connected()
     806                self.__connection_timestamp =  time.time() - connection.get_settings().connection.timestamp
     807                self.__connection_time_handler = gobject.timeout_add(1000, self.connection_timecount_cb)
     808                self.__ppp_stats_changed_cb(0, 0)
     809                self.connection_timecount_cb()               
     810                self._palette._info.show_all()
     811        else:
     812            self.__connection_timestamp = 0
     813            if (self.__connection_time_handler <> None):
     814                gobject.source_remove(self.__connection_time_handler)
     815            self._palette._info.hide_all()
     816        if state is network.DEVICE_STATE_DISCONNECTED:
    775817            gsm_state = _GSM_STATE_DISCONNECTED
    776818
    777819        elif state in [network.DEVICE_STATE_UNMANAGED,
    class GsmDeviceView(TrayIcon): 
    792834                                         signal_name='StateChanged',
    793835                                         path=self._device.object_path,
    794836                                         dbus_interface=_NM_DEVICE_IFACE)
    795 
     837       
     838    def __ppp_stats_changed_cb(self, in_bytes, out_bytes):
     839        in_bytes = in_bytes / 1024
     840        out_bytes = out_bytes / 1024
     841        self._palette ._data_label.set_text("Data sent {0} kb / received {1} kb".format(out_bytes ,in_bytes))
     842
     843    def connection_timecount_cb(self):
     844        self.__connection_timestamp = self.__connection_timestamp + 1
     845        connection_time = datetime.datetime.fromtimestamp(self.__connection_timestamp)
     846        self._palette._conn_time_label.set_text("Connection time " + connection_time.strftime('%H : %M : %S'))
     847        return True
     848   
    796849class WirelessDeviceObserver(object):
    797850    def __init__(self, device, tray, device_type):
    798851        self._device = device
  • src/jarabe/model/network.py

    diff --git a/src/jarabe/model/network.py b/src/jarabe/model/network.py
    index 696dc91..00db4e7 100644
    a b class NMSettingsConnection(dbus.service.Object): 
    350350        self._secrets = secrets
    351351
    352352    def set_connected(self):
    353         if not self._settings.connection.autoconnect:
    354             self._settings.connection.autoconnect = True
    355             self._settings.connection.timestamp = int(time.time())
    356             if self._settings.connection.type == NM_CONNECTION_TYPE_802_11_WIRELESS:
    357                 self.save()
     353        if self._settings.connection.type == NM_CONNECTION_TYPE_GSM:
     354             self._settings.connection.timestamp = int(time.time())
     355        else:
     356            if not self._settings.connection.autoconnect:
     357                self._settings.connection.autoconnect = True
     358                self._settings.connection.timestamp = int(time.time())
     359                if self._settings.connection.type == NM_CONNECTION_TYPE_802_11_WIRELESS:
     360                    self.save()
    358361
    359362    def set_secrets(self, secrets):
    360363        self._secrets = secrets