use QtDo to fetch the accounts status

This commit is contained in:
Romain Bignon 2010-07-10 13:36:15 +02:00
commit 358a06367d

View file

@ -21,14 +21,16 @@ from PyQt4.QtGui import QWidget, QHBoxLayout, QVBoxLayout, QFrame, QLabel, QImag
from PyQt4.QtCore import SIGNAL, QTimer from PyQt4.QtCore import SIGNAL, QTimer
from weboob.capabilities.dating import StatusField from weboob.capabilities.dating import StatusField
from weboob.tools.application.qt import QtDo
class Account(QFrame): class Account(QFrame):
def __init__(self, backend, parent=None): def __init__(self, weboob, backend, parent=None):
QFrame.__init__(self, parent) QFrame.__init__(self, parent)
self.setFrameShape(QFrame.StyledPanel) self.setFrameShape(QFrame.StyledPanel)
self.setFrameShadow(QFrame.Raised) self.setFrameShadow(QFrame.Raised)
self.weboob = weboob
self.backend = backend self.backend = backend
self.setLayout(QVBoxLayout()) self.setLayout(QVBoxLayout())
@ -60,32 +62,39 @@ class Account(QFrame):
self.updateStats() self.updateStats()
def updateStats(self): def updateStats(self):
with self.backend: self.process = QtDo(self.weboob, self.updateStats_cb)
body = u'' self.process.body = u''
in_p = False self.process.in_p = False
for field in self.backend.get_status(): self.process.do_backends(self.backend, 'get_status')
def updateStats_cb(self, backend, field):
if not field:
if self.process.in_p:
self.process.body += u"</p>"
self.body.setText(self.process.body)
self.process = None
return
if field.flags & StatusField.FIELD_HTML: if field.flags & StatusField.FIELD_HTML:
value = field.value.replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;') value = field.value.replace('&', '&amp;').replace('<', '&lt;').replace('>', '&gt;')
else: else:
value = '%s' % field.value value = u'%s' % field.value
if field.flags & StatusField.FIELD_TEXT: if field.flags & StatusField.FIELD_TEXT:
if in_p: if self.process.in_p:
body += '</p>' self.process.body += u'</p>'
body += '<p>%s</p>' % value self.process.body += u'<p>%s</p>' % value
in_p = False self.process.in_p = False
else: else:
if not in_p: if not self.process.in_p:
body += "<p>" self.process.body += u"<p>"
in_p = True self.process.in_p = True
else: else:
body += "<br />" self.process.body += u"<br />"
body += '<b>%s</b>: %s' % (field.label, field.value) self.process.body += u'<b>%s</b>: %s' % (field.label, field.value)
if in_p:
body += "</p>"
self.body.setText(body)
class AccountsStatus(QWidget): class AccountsStatus(QWidget):
def __init__(self, weboob, parent=None): def __init__(self, weboob, parent=None):
@ -96,7 +105,7 @@ class AccountsStatus(QWidget):
self.setLayout(QVBoxLayout()) self.setLayout(QVBoxLayout())
for backend in self.weboob.iter_backends(): for backend in self.weboob.iter_backends():
account = Account(backend) account = Account(weboob, backend)
self.layout().addWidget(account) self.layout().addWidget(account)
self.layout().addStretch() self.layout().addStretch()