Fix grid view not updated immediately when marked books changed

Also fix translations for show marked books menu item.
This commit is contained in:
Kovid Goyal 2013-10-10 15:22:45 +05:30
parent a939e721d1
commit 7275d89cb5
3 changed files with 13 additions and 1 deletions

View File

@ -72,7 +72,7 @@ class MarkBooksAction(InterfaceAction):
def about_to_show_menu(self):
db = self.gui.current_db
num = len(db.data.marked_ids)
text = ngettext('Show marked book', 'Show marked books (%d)' % num, num)
text = _('Show marked book') if num == 1 else (_('Show marked books') + (' (%d)' % num))
self.show_marked_action.setText(text)
def location_selected(self, loc):

View File

@ -300,6 +300,10 @@ class AlternateViews(object):
if self.current_book_state[0] is self.current_view:
self.current_view.restore_current_book_state(self.current_book_state[1])
self.current_book_state = None
def marked_changed(self, old_marked, current_marked):
if self.current_view is not self.main_view:
self.current_view.marked_changed(old_marked, current_marked)
# }}}
# Rendering of covers {{{
@ -818,4 +822,11 @@ class GridView(QListView):
self.set_current_row(row)
self.select_rows((row,))
self.scrollTo(self.model().index(row, 0), self.PositionAtCenter)
def marked_changed(self, old_marked, current_marked):
changed = old_marked | current_marked
m = self.model()
for book_id in changed:
self.update(m.index(m.db.data.id_to_index(book_id), 0))
# }}}

View File

@ -690,6 +690,7 @@ class BooksView(QTableView): # {{{
self.alternate_views.set_database(db, stage=1)
def marked_changed(self, old_marked, current_marked):
self.alternate_views.marked_changed(old_marked, current_marked)
if bool(old_marked) == bool(current_marked):
changed = old_marked | current_marked
sections = tuple(map(self.model().db.data.id_to_index, changed))