Fix various regressions that could be triggered when using serach restrictions and/or multi-sorts and connecting a device

This commit is contained in:
Kovid Goyal 2010-09-11 11:50:45 -06:00
commit fc8bcdc6f0
2 changed files with 15 additions and 17 deletions

View File

@ -121,10 +121,8 @@ class BooksModel(QAbstractTableModel): # {{{
def set_device_connected(self, is_connected): def set_device_connected(self, is_connected):
self.device_connected = is_connected self.device_connected = is_connected
self.db.refresh_ondevice() self.db.refresh_ondevice()
self.refresh() self.refresh() # does a resort()
self.research() self.research()
if is_connected and self.sorted_on[0] == 'ondevice':
self.resort()
def set_book_on_device_func(self, func): def set_book_on_device_func(self, func):
self.book_on_device = func self.book_on_device = func
@ -249,7 +247,7 @@ class BooksModel(QAbstractTableModel): # {{{
# the search and count records for restrictions # the search and count records for restrictions
self.searched.emit(True) self.searched.emit(True)
def sort(self, col, order, reset=True): def sort(self, col, order, reset=True, update_history=True):
if not self.db: if not self.db:
return return
self.about_to_be_sorted.emit(self.db.id) self.about_to_be_sorted.emit(self.db.id)
@ -260,23 +258,23 @@ class BooksModel(QAbstractTableModel): # {{{
self.clear_caches() self.clear_caches()
self.reset() self.reset()
self.sorted_on = (label, order) self.sorted_on = (label, order)
if update_history:
self.sort_history.insert(0, self.sorted_on) self.sort_history.insert(0, self.sorted_on)
self.sorting_done.emit(self.db.index) self.sorting_done.emit(self.db.index)
def refresh(self, reset=True): def refresh(self, reset=True):
try:
col = self.column_map.index(self.sorted_on[0])
except:
col = 0
self.db.refresh(field=None) self.db.refresh(field=None)
self.sort(col, self.sorted_on[1], reset=reset) self.resort(reset=reset)
def resort(self, reset=True): def resort(self, reset=True, history=5): # Bug report needed history=4 :)
for col,ord in reversed(self.sort_history[:history]):
try: try:
col = self.column_map.index(self.sorted_on[0]) col = self.column_map.index(col)
except ValueError: except ValueError:
col = 0 col = 0
self.sort(col, self.sorted_on[1], reset=reset) self.sort(col, ord, reset=False, update_history=False)
if reset:
self.reset()
def research(self, reset=True): def research(self, reset=True):
self.search(self.last_search, reset=reset) self.search(self.last_search, reset=reset)

View File

@ -549,7 +549,7 @@ class ResultCache(SearchQueryParser):
self.sort(field, ascending) self.sort(field, ascending)
self._map_filtered = list(self._map) self._map_filtered = list(self._map)
if self.search_restriction: if self.search_restriction:
self.search('', return_matches=False, ignore_search_restriction=False) self.search('', return_matches=False)
def seriescmp(self, sidx, siidx, x, y, library_order=None): def seriescmp(self, sidx, siidx, x, y, library_order=None):
try: try: