Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/GetIABooksActivity.py
diff options
context:
space:
mode:
authorSayamindu Dasgupta <sayamindu@gmail.com>2009-11-25 23:44:43 (GMT)
committer Sayamindu Dasgupta <sayamindu@gmail.com>2009-11-25 23:44:43 (GMT)
commitb790fe22551ea0e1e23cdf1c47b39ef9af1ee5c5 (patch)
treee0b9be43de0f9363bdd7cdc078ef711e9c604e75 /GetIABooksActivity.py
parent0b814c24bc007940a6d4588aea981d3531d29994 (diff)
Implement support for resultsets returned in multiple pages
Diffstat (limited to 'GetIABooksActivity.py')
-rwxr-xr-xGetIABooksActivity.py31
1 files changed, 26 insertions, 5 deletions
diff --git a/GetIABooksActivity.py b/GetIABooksActivity.py
index 0ffaebf..4a08207 100755
--- a/GetIABooksActivity.py
+++ b/GetIABooksActivity.py
@@ -247,6 +247,8 @@ class GetIABooksActivity(activity.Activity):
self.list_scroller = gtk.ScrolledWindow(hadjustment=None, vadjustment=None)
self.list_scroller.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+ vadjustment = self.list_scroller.get_vadjustment()
+ vadjustment.connect('value-changed', self.__vadjustment_value_changed_cb)
self.list_scroller.add(self.listview)
self.progressbar = gtk.ProgressBar() #TODO: Add a way to cancel download
@@ -268,6 +270,9 @@ class GetIABooksActivity(activity.Activity):
def can_close(self):
self._lang_code_handler.close()
+ if self.queryresults is not None:
+ self.queryresults.cancel()
+ self.queryresults = None
return True
def selection_cb(self, widget):
@@ -328,16 +333,16 @@ class GetIABooksActivity(activity.Activity):
textbuffer = self.textview.get_buffer()
textbuffer.set_text(_('Performing lookup, please wait...'))
- self.queryresults.connect('completed', self.__query_completed_cb)
+ self.queryresults.connect('updated', self.__query_updated_cb)
- def __query_completed_cb(self, query):
+ def __query_updated_cb(self, query, midway):
self.listview.populate(self.queryresults)
textbuffer = self.textview.get_buffer()
- if len(self.queryresults) > 0:
- textbuffer.set_text('')
- else:
+ if len(self.queryresults) == 0:
textbuffer.set_text(_('Sorry, no books could be found.'))
+ elif not midway:
+ textbuffer.set_text('')
def __source_changed_cb(self, widget):
search_terms = self._books_toolbar.get_search_terms()
@@ -346,6 +351,22 @@ class GetIABooksActivity(activity.Activity):
else:
self.find_books(search_terms)
+ def __vadjustment_value_changed_cb(self, vadjustment):
+
+ if not self.queryresults.is_ready():
+ return
+ try:
+ # Use various tricks to update resultset as user scrolls down
+ if ((vadjustment.props.upper - vadjustment.props.lower) > 1000 \
+ and (vadjustment.props.upper - vadjustment.props.value - \
+ vadjustment.props.page_size)/(vadjustment.props.upper - \
+ vadjustment.props.lower) < 0.3) or ((vadjustment.props.upper \
+ - vadjustment.props.value - vadjustment.props.page_size) < 200):
+ if self.queryresults.has_next():
+ self.queryresults.update_with_next()
+ finally:
+ return
+
def get_book(self):
self._books_toolbar.enable_button(False)
self.progressbar.show()