def __az_key_button_cb (self, widget, data): self.progress = MSDProgressWindow() self.progress.set_show_buttons(False) self.progress.show(_(u"Solicitando clave..."), _(u"Espere un momento, por favor...")) mainloop = gobject.MainLoop(is_running=True) context = mainloop.get_context() while context.pending() : context.iteration() dev = self.mcontroller.get_active_device() cover_key = "" if dev != None : odev = self.mcontroller.get_device_obj_from_path(dev) if odev.has_capability(MOBILE_MANAGER_DEVICE_STATE_INTERFACE_URI) : cover_key = odev.get_cover_key(self.__cover_key_func, self.__cover_key_error_func)
class MSDAMovilidad(MSD.MSDAction): def __init__(self, act_manager, conf, conn_manager): print "Init MSDAMovilidad" #Direccion del enlace self.link_url = "http://www.telefonicaonline.com/zonawifi" MSD.MSDAction.__init__(self, act_manager, conf, conn_manager) self.mcontroller = conn_manager.mcontroller self.security_manager = MSD.MSDSecurityManager(conf) action_dir = os.path.join(MSD.actions_data_dir , self.codename) self.az_xml = gtk.glade.XML(os.path.join(action_dir,"%s.glade" % self.codename), root="adsl_zone_window") self.adsl_zone_window = self.az_xml.get_widget("adsl_zone_window") self.az_banner_image = self.az_xml.get_widget("az_banner_image") action_dir = os.path.join(MSD.actions_data_dir , self.codename) self.az_banner_image.set_from_file(action_dir + "/movilidad_banner.png") self.az_cover_button = self.az_xml.get_widget("az_cover_button") self.az_key_button = self.az_xml.get_widget("az_key_button") self.az_close_button = self.az_xml.get_widget("az_close_button") self.adsl_zone_window.set_icon_from_file (os.path.join(action_dir, "MSDAMovilidad_16x16.png")) self.az_cover_button.connect("clicked", self.__az_cover_button_cb, None) self.cz_xml = gtk.glade.XML(os.path.join(action_dir,"%s.glade" % self.codename), root="cover_zone_window") self.cover_zone_window = self.cz_xml.get_widget("cover_zone_window") self.cz_link_button = self.cz_xml.get_widget("cz_link_button") self.cz_prov_combobox = self.cz_xml.get_widget("cz_prov_combobox") self.cz_local_combobox = self.cz_xml.get_widget("cz_local_combobox") self.cz_type_combobox = self.cz_xml.get_widget("cz_type_combobox") self.cz_hotspots_treview = self.cz_xml.get_widget("cz_hotspots_treview") self.cz_ok_button = self.cz_xml.get_widget("cz_ok_button") self.cover_zone_window.set_icon_from_file (os.path.join(action_dir, "MSDAMovilidad_16x16.png")) self.cz_link_button.connect("clicked", self.__cz_link_button_cb) self.cz_link_button.set_property("can-focus", False) self.czliststore = gtk.ListStore(str, str, str, str) self.modelfilter = self.czliststore.filter_new() self.modelfilter.set_visible_func(self.__visible_func_hotspots_treeview, None) self.cz_prov = [] self.cz_local = [] self.cz_prov_local = {} self.cz_type = [] self.cz_prov_all = "Todas las provincias" self.cz_local_all = "Todas las localidades" self.cz_type_all = "Todos los tipos" for name in ["Name"] : column = gtk.TreeViewColumn(name, gtk.CellRendererText(), markup=0) self.cz_hotspots_treview.append_column(column) self.cz_hotspots_treview.set_model(self.modelfilter) self.__init_hotspots() self.cz_prov_ls = gtk.ListStore(str) cell = gtk.CellRendererText() self.cz_prov_combobox.pack_start(cell, True) self.cz_prov_combobox.add_attribute(cell, 'text', 0) self.cz_prov_combobox.set_model(self.cz_prov_ls) self.cz_local_ls = gtk.ListStore(str) cell = gtk.CellRendererText() self.cz_local_combobox.pack_start(cell, True) self.cz_local_combobox.add_attribute(cell, 'text', 0) self.cz_local_combobox.set_model(self.cz_local_ls) self.cz_type_ls = gtk.ListStore(str) cell = gtk.CellRendererText() self.cz_type_combobox.pack_start(cell, True) self.cz_type_combobox.add_attribute(cell, 'text', 0) self.cz_type_combobox.set_model(self.cz_type_ls) self.__init_prov_combobox() self.__init_local_combobox() self.__init_type_combobox() self.modelfilter.set_visible_func(self.__visible_func_hotspots_treeview, None) self.modelfilter.refilter() self.cz_prov_cb_h = self.cz_prov_combobox.connect("changed", self.__cz_prov_combobox_changed_cb, None) self.cz_local_cb_h = self.cz_local_combobox.connect("changed", self.__cz_local_combobox_changed_cb, None) self.cz_type_cb_h = self.cz_type_combobox.connect("changed", self.__cz_type_combobox_changed_cb, None) self.az_key_button.connect("clicked", self.__az_key_button_cb, None) self.mcontroller.connect ("active-device-changed", self.__active_device_changed_cb) self.mcontroller.connect ("active-dev-card-status-changed", self.__active_device_card_status_changed_cb) def __init_hotspots(self): import csv wifi_file = os.path.join(MSD.actions_data_dir , self.codename, "wifi.csv") reader = csv.reader(file(wifi_file), delimiter=";") for row in reader : name = "<b>%s</b>\n<small>%s</small>\n<small>%s - %s - %s</small>" % (row[1], row[2], row[4], row[3], row[5]) self.czliststore.append([name, row[4], row[3],row[6]]) if row[4] not in self.cz_prov : self.cz_prov.append(row[4]) self.cz_prov_local[row[4]] = [] if row[3] not in self.cz_local : if row[3] != "" : self.cz_local.append(row[3]) tmp = self.cz_prov_local[row[4]] if row[3] not in tmp : tmp.append(row[3]) self.cz_prov_local[row[4]] = tmp if row[6] not in self.cz_type : if row[6] != "" : self.cz_type.append(row[6]) self.cz_prov.sort() self.cz_local.sort() self.cz_type.sort() for key in self.cz_prov_local.keys(): tmp = self.cz_prov_local[key] tmp.sort() self.cz_prov_local[key] = tmp def __init_prov_combobox(self): print "__init_prov" self.cz_prov_ls.append([self.cz_prov_all]) for x in self.cz_prov : self.cz_prov_ls.append([x]) self.cz_prov_combobox.set_active(0) def __init_local_combobox(self): print "__init_local" self.cz_local_ls.append([self.cz_local_all]) for x in self.cz_local : self.cz_local_ls.append([x]) self.cz_local_combobox.set_active(0) def __init_type_combobox(self): print "__init_type" self.cz_type_ls.append([self.cz_type_all]) for x in self.cz_type : self.cz_type_ls.append([x]) self.cz_type_combobox.set_active(0) def __visible_func_hotspots_treeview(self, model, iter, data): ret = [False, False, False] prov_row = model.get_value(iter, 1) local_row = model.get_value(iter, 2) type_row = model.get_value(iter, 3) prov_cbox = self.cz_prov_combobox.get_active_text() local_cbox = self.cz_local_combobox.get_active_text() type_cbox = self.cz_type_combobox.get_active_text() if prov_cbox == self.cz_prov_all : ret[0]=True else: if prov_row == prov_cbox : ret[0]=True else: ret[0]=False if local_cbox == self.cz_local_all : ret[1]=True else: if local_row == local_cbox : ret[1]=True else: ret[1]=False if type_cbox == self.cz_type_all : ret[2]=True else: if type_row == type_cbox : ret[2]=True else: ret[2]=False if ret == [True, True, True] : return True else: return False def __active_device_changed_cb(self, mcontroller, udi): dev = self.mcontroller.get_active_device() if dev == None: self.az_key_button.set_sensitive(False) else: odev = self.mcontroller.get_device_obj_from_path(dev) if odev.has_capability(MOBILE_MANAGER_DEVICE_STATE_INTERFACE_URI) : if odev.get_card_status() == CARD_STATUS_READY : self.az_key_button.set_sensitive(True) else: self.az_key_button.set_sensitive(False) else: self.az_key_button.set_sensitive(False) def __active_device_card_status_changed_cb(self, mcontroller, status): dev = self.mcontroller.get_active_device() if dev == None: self.az_key_button.set_sensitive(False) else: odev = self.mcontroller.get_device_obj_from_path(dev) if odev.has_capability(MOBILE_MANAGER_DEVICE_STATE_INTERFACE_URI) : if status == CARD_STATUS_READY : self.az_key_button.set_sensitive(True) else: self.az_key_button.set_sensitive(False) else: self.az_key_button.set_sensitive(False) def __az_key_button_cb (self, widget, data): self.progress = MSDProgressWindow() self.progress.set_show_buttons(False) self.progress.show(_(u"Solicitando clave..."), _(u"Espere un momento, por favor...")) mainloop = gobject.MainLoop(is_running=True) context = mainloop.get_context() while context.pending() : context.iteration() dev = self.mcontroller.get_active_device() cover_key = "" if dev != None : odev = self.mcontroller.get_device_obj_from_path(dev) if odev.has_capability(MOBILE_MANAGER_DEVICE_STATE_INTERFACE_URI) : cover_key = odev.get_cover_key(self.__cover_key_func, self.__cover_key_error_func) def __cover_key_func(self, response): self.progress.hide() self.progress.progress_dialog.destroy() action_dir = os.path.join(MSD.actions_data_dir , self.codename) dlg = gtk.MessageDialog(type=gtk.MESSAGE_INFO, buttons=gtk.BUTTONS_OK) dlg.set_icon_from_file (os.path.join(action_dir, "MSDAMovilidad_16x16.png")) dlg.set_title (_(u'Envío de mensaje')) dlg.set_markup("<b>Respuesta recibida:</b>") dlg.format_secondary_markup("'%s'" % response) dlg.run() dlg.destroy() def __cover_key_error_func(self, e): self.progress.hide() self.progress.progress_dialog.destroy() action_dir = os.path.join(MSD.actions_data_dir , self.codename) dlg = gtk.MessageDialog(type=gtk.MESSAGE_INFO, buttons=gtk.BUTTONS_OK) dlg.set_icon_from_file (os.path.join(action_dir, "MSDAMovilidad_16x16.png")) dlg.set_title (_(u'Envío de mensaje')) dlg.set_markup("<b>Respuesta recibida:</b>") dlg.format_secondary_markup("'%s'" % "Servicio no disponible") dlg.run() dlg.destroy() def __az_cover_button_cb (self, widget, data): self.cover_zone_window.show_all() self.cover_zone_window.run() self.cover_zone_window.hide() def __cz_prov_combobox_changed_cb(self, widget, data): print "__prov_combobox_changed" self.cz_local_combobox.handler_block(self.cz_local_cb_h) prov = self.cz_prov_combobox.get_active_text() self.cz_local_ls.clear() if prov == self.cz_prov_all : print "prov == all (%s)" % prov self.cz_local_ls.append([self.cz_local_all]) for x in self.cz_local : self.cz_local_ls.append([x]) else: print "prov != all (%s)" % prov self.cz_local_ls.append([self.cz_local_all]) for x in self.cz_prov_local[prov] : self.cz_local_ls.append([x]) self.cz_local_combobox.set_active(0) self.cz_local_combobox.handler_unblock(self.cz_local_cb_h) self.modelfilter.refilter() def __cz_local_combobox_changed_cb(self, widget, data): print "__local_combobox_changed" self.cz_prov_combobox.handler_block(self.cz_prov_cb_h) self.cz_local_combobox.handler_block(self.cz_local_cb_h) local = self.cz_local_combobox.get_active_text() prov = "" if local != self.cz_local_all : print "local != all (%s)" % local for key in self.cz_prov_local.keys(): if local in self.cz_prov_local[key] : prov = key self.cz_prov_ls.clear() self.cz_prov_ls.append([self.cz_prov_all]) i = 1 for x in self.cz_prov : self.cz_prov_ls.append([x]) if x != prov : i = i+1 else: self.cz_prov_combobox.set_active(i) else: print "local != all (%s)" % local self.cz_prov_combobox.handler_unblock(self.cz_prov_cb_h) self.cz_local_combobox.handler_unblock(self.cz_local_cb_h) self.modelfilter.refilter() def __cz_type_combobox_changed_cb(self, widget, data): self.modelfilter.refilter() def __cz_link_button_cb (self, widget): cmd = ["gnome-open", self.link_url] run = subprocess.Popen(cmd) returncode = None while(returncode is None): gobject.main_context_default ().iteration () returncode = run.poll() widget.set_property("has-focus", False) def get_default_conf (self): return {'name' : _(u"Zonas WiFi de Telefónica"), 'id' : 30, 'tooltip' : _(u"Gestiona el acceso a la Zona WiFi de tu Tarifa Banda Ancha Móvil con WiFi"), 'url' : "http://www.correomovil.movistar.es", 'help_url' : 'em_50.htm#emadslwifi', 'connection' : None, 'connection_mandatory' : False } def launch_action(self): import os self.adsl_zone_window.show_all() ret = self.adsl_zone_window.run() self.adsl_zone_window.hide() def show_all(self): MSD.MSDAction.show_all(self) self.connection_vbox.hide()