From 358a06367dffb5e709bd1fe68218cf6684734468 Mon Sep 17 00:00:00 2001
From: Romain Bignon
Date: Sat, 10 Jul 2010 13:36:15 +0200
Subject: [PATCH] use QtDo to fetch the accounts status
---
weboob/applications/qhavesex/status.py | 59 +++++++++++++++-----------
1 file changed, 34 insertions(+), 25 deletions(-)
diff --git a/weboob/applications/qhavesex/status.py b/weboob/applications/qhavesex/status.py
index 27333aa3..3fe0013a 100644
--- a/weboob/applications/qhavesex/status.py
+++ b/weboob/applications/qhavesex/status.py
@@ -21,14 +21,16 @@ from PyQt4.QtGui import QWidget, QHBoxLayout, QVBoxLayout, QFrame, QLabel, QImag
from PyQt4.QtCore import SIGNAL, QTimer
from weboob.capabilities.dating import StatusField
+from weboob.tools.application.qt import QtDo
class Account(QFrame):
- def __init__(self, backend, parent=None):
+ def __init__(self, weboob, backend, parent=None):
QFrame.__init__(self, parent)
self.setFrameShape(QFrame.StyledPanel)
self.setFrameShadow(QFrame.Raised)
+ self.weboob = weboob
self.backend = backend
self.setLayout(QVBoxLayout())
@@ -60,32 +62,39 @@ class Account(QFrame):
self.updateStats()
def updateStats(self):
- with self.backend:
- body = u''
- in_p = False
- for field in self.backend.get_status():
- if field.flags & StatusField.FIELD_HTML:
- value = field.value.replace('&', '&').replace('<', '<').replace('>', '>')
- else:
- value = '%s' % field.value
+ self.process = QtDo(self.weboob, self.updateStats_cb)
+ self.process.body = u''
+ self.process.in_p = False
+ self.process.do_backends(self.backend, 'get_status')
- if field.flags & StatusField.FIELD_TEXT:
- if in_p:
- body += '
'
- body += '%s
' % value
- in_p = False
- else:
- if not in_p:
- body += ""
- in_p = True
- else:
- body += "
"
+ def updateStats_cb(self, backend, field):
+ if not field:
+ if self.process.in_p:
+ self.process.body += u"
"
- body += '%s: %s' % (field.label, field.value)
- if in_p:
- body += ""
+ self.body.setText(self.process.body)
- self.body.setText(body)
+ self.process = None
+ return
+
+ if field.flags & StatusField.FIELD_HTML:
+ value = field.value.replace('&', '&').replace('<', '<').replace('>', '>')
+ else:
+ value = u'%s' % field.value
+
+ if field.flags & StatusField.FIELD_TEXT:
+ if self.process.in_p:
+ self.process.body += u''
+ self.process.body += u'%s
' % value
+ self.process.in_p = False
+ else:
+ if not self.process.in_p:
+ self.process.body += u""
+ self.process.in_p = True
+ else:
+ self.process.body += u"
"
+
+ self.process.body += u'%s: %s' % (field.label, field.value)
class AccountsStatus(QWidget):
def __init__(self, weboob, parent=None):
@@ -96,7 +105,7 @@ class AccountsStatus(QWidget):
self.setLayout(QVBoxLayout())
for backend in self.weboob.iter_backends():
- account = Account(backend)
+ account = Account(weboob, backend)
self.layout().addWidget(account)
self.layout().addStretch()