def workersStart(self): self.browser=Browser() anonuser = { 0: lambda m: "S"+m, 1: lambda m: "D"+m, 2: lambda m: "U"+m, 3: lambda m: "V"+m }[self.handler.usertype.currentIndex()](self.handler.matricola.text()) self.auth=Runner(self.nmhandler,self.handler.personCode.text(), self.handler.personCodePwd.text(),anonuser,self.handler.certificatepassword.text(),self.handler.progress_status,self.handler.progress_statusbar) self.connect(self.auth,SIGNAL("finished()"),self,SLOT("downloadDone()")) self.connect(self.auth,SIGNAL("statusChanged(int,QString)"),self,SLOT("updateProgress(int,QString)")) self.connect(self.auth,SIGNAL("error(QString)"),self,SLOT("errorShow(QString)")) self.auth.start()
class PoliWifiLinux(QObject): '''Base class''' def __init__(self): QObject.__init__(self) self.window = Wizard() self.handler = interface.Ui_poliwifi() self.handler.setupUi(self.window) self.window.setOption(QtGui.QWizard.NoBackButtonOnStartPage,True) self.openssid="polimi" self.openconn=None self.polimiconnected=False self.auth=None self.downloader=None self.browser=None self.downloaderror=False def show(self): '''Shows GUI. Initializes NM''' self.handler.polimi_status.setVisible(False) self.handler.polimi_statusbar.setVisible(False) self.nmhandler=nm.NetworkManagerClient() if self.nmhandler.wireless["state"]==8: self.nmhandler.wireless.Disconnect() self.openap=None if self.nmhandler.wireless!=None: self.openap=self.nmhandler.findAPbyName(self.openssid) #TODO if not self.openap: self.window.goto_finish=True self.handler.aperror.setText(self.tr("<b><font color='red'>Polimi AP is not in range. Are you under wifi coverage?<b></font>")) self.handler.aperror.setVisible(True) QObject.connect(self.window,SIGNAL("currentIdChanged(int)"),self,SLOT("pageChanged(int)")) self.connect(self.handler.pleaseconnect,SIGNAL("clicked()"),self,SLOT("connectClosed()")) self.window.show() def pageChanged(self,id): '''Called when page in the Wizard is changed''' self.handler.polimi_statusbar.setVisible(False) if id==1 and not self.polimiconnected: self.handler.polimi_status.setVisible(True) self.handler.polimi_statusbar.setVisible(True) self.window.button(Wizard.NextButton).setVisible(False) self.window.button(Wizard.BackButton).setVisible(False) self.connectToOpenAp() elif id==3: self.window.button(Wizard.NextButton).setVisible(False) self.window.button(Wizard.BackButton).setVisible(False) self.handler.deownload_complete.setVisible(False) self.workersStart() def connectToOpenAp(self): '''Connects to "polimi"''' for conn in self.nmhandler.applet.ListConnections(): cs=conn.GetSettings() if ("802-11-wireless" in cs) and cs["802-11-wireless"]["ssid"]=="polimi": self.openconn=cs if not self.openconn: c=settings.WiFi(self.openssid) c["connection"]["autoconnect"]=False self.nmhandler.applet.AddConnection(c.ConMap()) self.nmhandler.applet.connect_to_signal("NewConnection", self.connectToOpenAp_helper,"org.freedesktop.NetworkManagerSettings") else: self.connectToOpenAp_helper() def connectToOpenAp_helper(self,*args,**kwargs): '''Helper function''' if not self.nmhandler.connectTo(self.openssid): self.handler.polimi_status.setText(self.tr("<b><font color='red'>Cannot connect to Polimi AP<b></font>")) self.handler.polimi_statusbar.setVisible(False) self.window.goto_finish=True self.nmhandler.wireless.connect_to_signal("StateChanged", self.connectionStateChanged,"org.freedesktop.NetworkManager.Device") def connectionStateChanged(self,newstate,oldstate,reason): '''When connection changes''' if newstate==8: self.handler.polimi_status.setText(self.tr("<b><font color='green'>Connection established</font></b>")) self.handler.polimi_statusbar.setVisible(False) self.window.button(Wizard.NextButton).setVisible(True) self.polimiconnected=True if self.window.currentId()==4: self.handler.pleaseconnect.setText(self.tr("Connected")) def workersStart(self): self.browser=Browser() anonuser = { 0: lambda m: "S"+m, 1: lambda m: "D"+m, 2: lambda m: "U"+m, 3: lambda m: "V"+m }[self.handler.usertype.currentIndex()](self.handler.matricola.text()) self.auth=Runner(self.nmhandler,self.handler.personCode.text(), self.handler.personCodePwd.text(),anonuser,self.handler.certificatepassword.text(),self.handler.progress_status,self.handler.progress_statusbar) self.connect(self.auth,SIGNAL("finished()"),self,SLOT("downloadDone()")) self.connect(self.auth,SIGNAL("statusChanged(int,QString)"),self,SLOT("updateProgress(int,QString)")) self.connect(self.auth,SIGNAL("error(QString)"),self,SLOT("errorShow(QString)")) self.auth.start() def downloadDone(self): if not self.downloaderror: self.handler.deownload_complete.setVisible(True) self.window.button(Wizard.NextButton).setVisible(True) def updateProgress(self,num,text): self.handler.progress_status.setText(text) self.handler.progress_statusbar.setValue(num) def errorShow(self,errorstr): self.handler.deownload_complete.setVisible(True) self.handler.deownload_complete.setText("<b><font color='red'>"+errorstr+"</font></b>") self.downloaderror=True def connectClosed(self): self.handler.pleaseconnect.setText(self.tr("Connecting...")) self.handler.pleaseconnect.setEnabled(False) self.nmhandler.connectTo(CLOSED_AP)