diff --git a/weboob/applications/qflatboob/main_window.py b/weboob/applications/qflatboob/main_window.py
index 122e0906..be540203 100644
--- a/weboob/applications/qflatboob/main_window.py
+++ b/weboob/applications/qflatboob/main_window.py
@@ -52,7 +52,7 @@ class MainWindow(QtMainWindow):
self.connect(self.ui.editQueryButton, SIGNAL('clicked()'), self.editQuery)
self.connect(self.ui.removeQueryButton, SIGNAL('clicked()'), self.removeQuery)
self.connect(self.ui.bookmarksButton, SIGNAL('clicked()'), self.displayBookmarks)
- self.connect(self.ui.housingsList, SIGNAL('itemClicked(QListWidgetItem*)'), self.housingSelected)
+ self.connect(self.ui.housingsList, SIGNAL('currentItemChanged(QListWidgetItem*, QListWidgetItem*)'), self.housingSelected)
self.connect(self.ui.previousButton, SIGNAL('clicked()'), self.previousClicked)
self.connect(self.ui.nextButton, SIGNAL('clicked()'), self.nextClicked)
self.connect(self.ui.bookmark, SIGNAL('stateChanged(int)'), self.bookmarkChanged)
@@ -66,6 +66,10 @@ class MainWindow(QtMainWindow):
if len(self.config.get('queries')) == 0:
self.addQuery()
+ def closeEvent(self, event):
+ self.setHousing(None)
+ QtMainWindow.closeEvent(self, event)
+
def backendsConfig(self):
bckndcfg = BackendCfg(self.weboob, (ICapHousing,), self)
if bckndcfg.run():
@@ -183,6 +187,21 @@ class MainWindow(QtMainWindow):
self.process_bookmarks[id] = QtDo(self.weboob, self.addHousing)
self.process_bookmarks[id].do('get_housing', _id, backends=backend_name)
+ def setHousingItemAttrs(self, item):
+ housing = item.data(Qt.UserRole).toPyObject()
+
+ text = u'
%s
' % housing.title
+ text += u'%s — %sm² — %s%s (%s)' % (housing.date.strftime('%Y-%m-%d') if housing.date else 'Unknown',
+ housing.area, housing.cost, housing.currency, housing.backend)
+ text += u'
%s' % housing.text
+ text += u'
%s' % self.storage.get('notes', housing.fullid, default='')
+ item.setText(text)
+
+ if housing.fullid in self.storage.get('bookmarks'):
+ item.setBackground(QBrush(QColor(255, 224, 219)))
+ elif not housing.fullid in self.storage.get('read'):
+ item.setBackground(QBrush(QColor(219, 224, 255)))
+
def addHousing(self, backend, housing):
if not backend:
self.ui.queriesList.setEnabled(True)
@@ -191,14 +210,8 @@ class MainWindow(QtMainWindow):
return
item = QListWidgetItem()
- item.setText(u'%s
%s — %sm² — %s%s (%s)
%s' % (housing.title, housing.date.strftime('%Y-%m-%d') if housing.date else 'Unknown',
- housing.area, housing.cost, housing.currency, housing.backend, housing.text))
item.setData(Qt.UserRole, housing)
-
- if housing.fullid in self.storage.get('bookmarks'):
- item.setBackground(QBrush(QColor(255, 224, 219)))
- elif not housing.fullid in self.storage.get('read'):
- item.setBackground(QBrush(QColor(219, 224, 255)))
+ self.setHousingItemAttrs(item)
if housing.photos is NotLoaded:
process = QtDo(self.weboob, lambda b, c: self.setPhoto(c, item))
@@ -216,7 +229,7 @@ class MainWindow(QtMainWindow):
if housing.fullid in self.process_bookmarks:
self.process_bookmarks.pop(housing.fullid)
- def housingSelected(self, item):
+ def housingSelected(self, item, prev):
housing = item.data(Qt.UserRole).toPyObject()
self.ui.queriesFrame.setEnabled(False)
@@ -228,6 +241,9 @@ class MainWindow(QtMainWindow):
self.setHousing(housing)
+ if prev:
+ self.setHousingItemAttrs(prev)
+
self.process = QtDo(self.weboob, self.gotHousing)
self.process.do('fillobj', housing, backends=housing.backend)
@@ -257,8 +273,15 @@ class MainWindow(QtMainWindow):
def setHousing(self, housing, nottext='Loading...'):
+ if self.housing is not None:
+ self.saveNotes()
+
self.housing = housing
+ if self.housing is None:
+ self.ui.housingFrame.hide()
+ return
+
self.ui.housingFrame.show()
self.display_photo()
@@ -278,6 +301,8 @@ class MainWindow(QtMainWindow):
else:
self.ui.descriptionEdit.setText(nottext)
+ self.ui.notesEdit.setText(self.storage.get('notes', housing.fullid, default=''))
+
while self.ui.detailsFrame.layout().count() > 0:
child = self.ui.detailsFrame.layout().takeAt(0)
child.widget().hide()
@@ -306,6 +331,12 @@ class MainWindow(QtMainWindow):
self.storage.set('bookmarks', list(bookmarks))
self.storage.save()
+ def saveNotes(self):
+ if not self.housing:
+ return
+ self.storage.set('notes', self.housing.fullid, unicode(self.ui.notesEdit.toPlainText()))
+ self.storage.save()
+
def previousClicked(self):
if not self.housing.photos or len(self.housing.photos) == 0:
return
diff --git a/weboob/applications/qflatboob/qflatboob.py b/weboob/applications/qflatboob/qflatboob.py
index f5d8e1ca..045f2a1f 100644
--- a/weboob/applications/qflatboob/qflatboob.py
+++ b/weboob/applications/qflatboob/qflatboob.py
@@ -31,7 +31,7 @@ class QFlatBoob(QtApplication):
DESCRIPTION = 'Qt application to find housings.'
CAPS = ICapHousing
CONFIG = {'queries': {}}
- STORAGE = {'bookmarks': [], 'read': []}
+ STORAGE = {'bookmarks': [], 'read': [], 'notes': {}}
def main(self, argv):
self.load_backends(ICapHousing)
diff --git a/weboob/applications/qflatboob/ui/main_window.ui b/weboob/applications/qflatboob/ui/main_window.ui
index 8679158d..c8f1d2b5 100644
--- a/weboob/applications/qflatboob/ui/main_window.ui
+++ b/weboob/applications/qflatboob/ui/main_window.ui
@@ -70,6 +70,9 @@
0
+
+ QAbstractItemView::NoEditTriggers
+
128
@@ -106,7 +109,7 @@
-
-
+
Qt::Vertical
@@ -406,17 +409,36 @@
-
+
Qt::Horizontal
-
-
-
- 0
- 50
-
+
+
+ Qt::Vertical
+
+
+
+ 0
+ 50
+
+
+
+ true
+
+
+
+
+
+ 0
+ 0
+
+
+
+ false
+
+
@@ -473,6 +495,18 @@
+
+ addQueryButton
+ queriesList
+ editQueryButton
+ removeQueryButton
+ housingsList
+ bookmarksButton
+ bookmark
+ previousButton
+ nextButton
+ descriptionEdit
+
diff --git a/weboob/applications/qflatboob/ui/query.ui b/weboob/applications/qflatboob/ui/query.ui
index 49869b19..7d4420f8 100644
--- a/weboob/applications/qflatboob/ui/query.ui
+++ b/weboob/applications/qflatboob/ui/query.ui
@@ -261,6 +261,18 @@
+
+ nameEdit
+ cityEdit
+ resultsList
+ citiesList
+ nbRooms
+ areaMin
+ areaMax
+ costMin
+ costMax
+ buttonBox
+