Restore linkages between cover browser and book list

This commit is contained in:
Kovid Goyal 2010-06-10 21:06:17 -06:00
parent e355672c70
commit e3168f8a81

View File

@ -128,6 +128,7 @@ class CoverFlowMixin(object):
self.cb_splitter.insertWidget(self.cb_splitter.side_index, self.cover_flow) self.cb_splitter.insertWidget(self.cb_splitter.side_index, self.cover_flow)
if CoverFlow is not None: if CoverFlow is not None:
self.cover_flow.stop.connect(self.cb_splitter.hide_side_pane) self.cover_flow.stop.connect(self.cb_splitter.hide_side_pane)
self.cb_splitter.button.toggled.connect(self.cover_browser_toggled)
def toggle_cover_browser(self): def toggle_cover_browser(self):
cbd = getattr(self, 'cb_dialog', None) cbd = getattr(self, 'cb_dialog', None)
@ -136,7 +137,14 @@ class CoverFlowMixin(object):
else: else:
self.show_cover_browser() self.show_cover_browser()
def show_cover_browser(self): def cover_browser_toggled(self, *args):
if self.cb_splitter.button.isChecked():
self.cover_browser_shown()
else:
self.cover_browser_hidden()
def cover_browser_shown(self):
self.cover_flow.setFocus(Qt.OtherFocusReason)
if CoverFlow is not None: if CoverFlow is not None:
self.cover_flow.setCurrentSlide(self.library_view.currentIndex().row()) self.cover_flow.setCurrentSlide(self.library_view.currentIndex().row())
self.cover_flow_sync_timer.start(500) self.cover_flow_sync_timer.start(500)
@ -144,7 +152,18 @@ class CoverFlowMixin(object):
self.library_view.currentIndex()) self.library_view.currentIndex())
self.library_view.scroll_to_row(self.library_view.currentIndex().row()) self.library_view.scroll_to_row(self.library_view.currentIndex().row())
if config['separate_cover_flow']: def cover_browser_hidden(self):
if CoverFlow is not None:
self.cover_flow_sync_timer.stop()
idx = self.library_view.model().index(self.cover_flow.currentSlide(), 0)
if idx.isValid():
sm = self.library_view.selectionModel()
sm.select(idx, sm.ClearAndSelect|sm.Rows)
self.library_view.setCurrentIndex(idx)
self.library_view.scroll_to_row(idx.row())
def show_cover_browser(self):
d = QDialog(self) d = QDialog(self)
ah, aw = available_height(), available_width() ah, aw = available_height(), available_width()
d.resize(int(aw/1.5), ah-60) d.resize(int(aw/1.5), ah-60)
@ -158,20 +177,8 @@ class CoverFlowMixin(object):
self.cb_splitter.button.set_state_to_hide() self.cb_splitter.button.set_state_to_hide()
d.finished.connect(self.cb_splitter.button.set_state_to_show) d.finished.connect(self.cb_splitter.button.set_state_to_show)
self.cb_dialog = d self.cb_dialog = d
else:
self.cover_flow.setFocus(Qt.OtherFocusReason)
def hide_cover_browser(self): def hide_cover_browser(self):
if CoverFlow is not None:
self.cover_flow_sync_timer.stop()
idx = self.library_view.model().index(self.cover_flow.currentSlide(), 0)
if idx.isValid():
sm = self.library_view.selectionModel()
sm.select(idx, sm.ClearAndSelect|sm.Rows)
self.library_view.setCurrentIndex(idx)
self.library_view.scroll_to_row(idx.row())
if config['separate_cover_flow']:
cbd = getattr(self, 'cb_dialog', None) cbd = getattr(self, 'cb_dialog', None)
if cbd is not None: if cbd is not None:
cbd.accept() cbd.accept()