mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Prevent the cover browser from being refreshed and therefore using resources when it is hidden
This commit is contained in:
parent
67948df37f
commit
9a3f901ca4
@ -272,8 +272,7 @@ class AddAction(InterfaceAction):
|
||||
fmts = [pt.name]
|
||||
ids.append(db.import_book(mi, fmts))
|
||||
self.gui.library_view.model().books_added(num)
|
||||
if hasattr(self.gui, 'db_images'):
|
||||
self.gui.db_images.beginResetModel(), self.gui.db_images.endResetModel()
|
||||
self.gui.refresh_cover_browser()
|
||||
self.gui.tags_view.recount()
|
||||
if ids:
|
||||
ids.reverse()
|
||||
@ -374,8 +373,7 @@ class AddAction(InterfaceAction):
|
||||
if current_idx.isValid():
|
||||
self.gui.library_view.model().current_changed(current_idx, current_idx)
|
||||
if cover_changed:
|
||||
if self.gui.cover_flow:
|
||||
self.gui.cover_flow.dataChanged()
|
||||
self.gui.refresh_cover_browser()
|
||||
|
||||
def __add_filesystem_book(self, paths, allow_device=True):
|
||||
if isinstance(paths, basestring):
|
||||
@ -440,8 +438,7 @@ class AddAction(InterfaceAction):
|
||||
if adder.number_of_books_added > 0:
|
||||
self.gui.library_view.model().books_added(adder.number_of_books_added)
|
||||
self.gui.library_view.set_current_row(0)
|
||||
if hasattr(self.gui, 'db_images'):
|
||||
self.gui.db_images.beginResetModel(), self.gui.db_images.endResetModel()
|
||||
self.gui.refresh_cover_browser()
|
||||
self.gui.tags_view.recount()
|
||||
|
||||
if adder.merged_books:
|
||||
|
@ -333,8 +333,7 @@ class EditMetadataAction(InterfaceAction):
|
||||
m = self.gui.library_view.model()
|
||||
m.refresh_ids(list(book_ids))
|
||||
current = self.gui.library_view.currentIndex()
|
||||
if self.gui.cover_flow:
|
||||
self.gui.cover_flow.dataChanged()
|
||||
self.gui.refresh_cover_browser()
|
||||
m.current_changed(current, previous or current)
|
||||
self.gui.tags_view.recount()
|
||||
|
||||
@ -401,8 +400,7 @@ class EditMetadataAction(InterfaceAction):
|
||||
else:
|
||||
m.refresh_ids(refresh_books)
|
||||
self.gui.tags_view.recount()
|
||||
if self.gui.cover_flow:
|
||||
self.gui.cover_flow.dataChanged()
|
||||
self.gui.refresh_cover_browser()
|
||||
self.gui.library_view.select_rows(book_ids)
|
||||
|
||||
# Merge books {{{
|
||||
@ -755,8 +753,8 @@ class EditMetadataAction(InterfaceAction):
|
||||
cr = self.gui.library_view.currentIndex().row()
|
||||
self.gui.library_view.model().refresh_ids(
|
||||
list(book_ids), cr)
|
||||
if covers_changed and self.gui.cover_flow:
|
||||
self.gui.cover_flow.dataChanged()
|
||||
if covers_changed:
|
||||
self.gui.refresh_cover_browser()
|
||||
if tag_browser_changed:
|
||||
self.gui.tags_view.recount()
|
||||
|
||||
|
@ -260,8 +260,7 @@ class AutoAdder(QObject):
|
||||
gui.status_bar.show_message(_(
|
||||
'Added %(num)d book(s) automatically from %(src)s') %
|
||||
dict(num=count, src=self.worker.path), 2000)
|
||||
if hasattr(gui, 'db_images'):
|
||||
gui.db_images.beginResetModel(), gui.db_images.endResetModel()
|
||||
gui.refresh_cover_browser()
|
||||
|
||||
if needs_rescan:
|
||||
QTimer.singleShot(2000, self.dir_changed)
|
||||
|
@ -78,9 +78,10 @@ if pictureflow is not None:
|
||||
|
||||
class DatabaseImages(pictureflow.FlowImages):
|
||||
|
||||
def __init__(self, model, buffer=20):
|
||||
def __init__(self, model, is_cover_browser_visible):
|
||||
pictureflow.FlowImages.__init__(self)
|
||||
self.model = model
|
||||
self.is_cover_browser_visible = is_cover_browser_visible
|
||||
self.model.modelReset.connect(self.reset, type=Qt.QueuedConnection)
|
||||
|
||||
def count(self):
|
||||
@ -108,7 +109,8 @@ if pictureflow is not None:
|
||||
self.beginResetModel(), self.endResetModel()
|
||||
|
||||
def beginResetModel(self):
|
||||
self.dataChanged.emit()
|
||||
if self.is_cover_browser_visible():
|
||||
self.dataChanged.emit()
|
||||
|
||||
def endResetModel(self):
|
||||
pass
|
||||
@ -244,9 +246,8 @@ class CoverFlowMixin(object):
|
||||
self.cover_flow = CoverFlow(parent=self)
|
||||
self.cover_flow.currentChanged.connect(self.sync_listview_to_cf)
|
||||
self.cover_flow.context_menu_requested.connect(self.cf_context_menu_requested)
|
||||
self.library_view.selectionModel().currentRowChanged.connect(
|
||||
self.sync_cf_to_listview)
|
||||
self.db_images = DatabaseImages(self.library_view.model())
|
||||
self.library_view.selectionModel().currentRowChanged.connect(self.sync_cf_to_listview)
|
||||
self.db_images = DatabaseImages(self.library_view.model(), self.is_cover_browser_visible)
|
||||
self.cover_flow.setImages(self.db_images)
|
||||
self.cover_flow.itemActivated.connect(self.iactions['View'].view_specific_book)
|
||||
else:
|
||||
@ -254,6 +255,7 @@ class CoverFlowMixin(object):
|
||||
'<br>'+pictureflowerror)
|
||||
self.cover_flow.setWordWrap(True)
|
||||
if config['separate_cover_flow']:
|
||||
self.separate_cover_browser = True
|
||||
self.cb_splitter.button.clicked.connect(self.toggle_cover_browser)
|
||||
self.cb_splitter.button.set_state_to_show()
|
||||
self.cb_splitter.action_toggle.triggered.connect(self.toggle_cover_browser)
|
||||
@ -261,6 +263,7 @@ class CoverFlowMixin(object):
|
||||
self.cover_flow.stop.connect(self.hide_cover_browser)
|
||||
self.cover_flow.setVisible(False)
|
||||
else:
|
||||
self.separate_cover_browser = False
|
||||
self.cb_splitter.insertWidget(self.cb_splitter.side_index, self.cover_flow)
|
||||
if CoverFlow is not None:
|
||||
self.cover_flow.stop.connect(self.cb_splitter.hide_side_pane)
|
||||
@ -321,9 +324,23 @@ class CoverFlowMixin(object):
|
||||
self.cb_dialog = None
|
||||
self.cb_splitter.button.set_state_to_show()
|
||||
|
||||
def is_cover_browser_visible(self):
|
||||
try:
|
||||
if self.separate_cover_browser:
|
||||
return self.cover_flow.isVisible()
|
||||
except AttributeError:
|
||||
return False # called before init_cover_flow_mixin
|
||||
return not self.cb_splitter.is_side_index_hidden
|
||||
|
||||
def refresh_cover_browser(self):
|
||||
try:
|
||||
if self.is_cover_browser_visible() and not isinstance(self.cover_flow, QLabel):
|
||||
self.cover_flow.dataChanged()
|
||||
except AttributeError:
|
||||
pass # called before init_cover_flow_mixin
|
||||
|
||||
def sync_cf_to_listview(self, current, previous):
|
||||
if self.cover_flow_sync_flag and self.cover_flow.isVisible() and \
|
||||
self.cover_flow.currentSlide() != current.row():
|
||||
if (self.cover_flow_sync_flag and self.is_cover_browser_visible() and self.cover_flow.currentSlide() != current.row()):
|
||||
self.cover_flow.setCurrentSlide(current.row())
|
||||
self.cover_flow_sync_flag = True
|
||||
|
||||
@ -338,8 +355,7 @@ class CoverFlowMixin(object):
|
||||
def cover_flow_do_sync(self):
|
||||
self.cover_flow_sync_flag = True
|
||||
try:
|
||||
if self.cover_flow.isVisible() and self.cf_last_updated_at is not None and \
|
||||
time.time() - self.cf_last_updated_at > 0.5:
|
||||
if (self.is_cover_browser_visible() and self.cf_last_updated_at is not None and time.time() - self.cf_last_updated_at > 0.5):
|
||||
self.cf_last_updated_at = None
|
||||
row = self.cover_flow.currentSlide()
|
||||
m = self.library_view.model()
|
||||
|
@ -130,8 +130,7 @@ class BookInfo(QDialog):
|
||||
if self.current_row is not None:
|
||||
id_ = self.view.model().id(self.current_row)
|
||||
self.view.model().db.set_cover(id_, data)
|
||||
if self.gui.cover_flow:
|
||||
self.gui.cover_flow.dataChanged()
|
||||
self.gui.refresh_cover_browser()
|
||||
ci = self.view.currentIndex()
|
||||
if ci.isValid():
|
||||
self.view.model().current_changed(ci, ci)
|
||||
|
@ -528,8 +528,7 @@ class LayoutMixin(object): # {{{
|
||||
|
||||
def bd_cover_changed(self, id_, cdata):
|
||||
self.library_view.model().db.set_cover(id_, cdata)
|
||||
if self.cover_flow:
|
||||
self.cover_flow.dataChanged()
|
||||
self.refresh_cover_browser()
|
||||
|
||||
def bd_open_cover_with(self, book_id, entry):
|
||||
cpath = self.current_db.new_api.format_abspath(book_id, '__COVER_INTERNAL__')
|
||||
@ -560,8 +559,7 @@ class LayoutMixin(object): # {{{
|
||||
def bd_cover_removed(self, id_):
|
||||
self.library_view.model().db.remove_cover(id_, commit=True,
|
||||
notify=False)
|
||||
if self.cover_flow:
|
||||
self.cover_flow.dataChanged()
|
||||
self.refresh_cover_browser()
|
||||
|
||||
def bd_copy_link(self, url):
|
||||
if url:
|
||||
|
@ -470,9 +470,8 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
|
||||
self.update_font_display()
|
||||
gui.tags_view.reread_collapse_parameters()
|
||||
gui.library_view.refresh_book_details()
|
||||
if hasattr(gui.cover_flow, 'setShowReflections'):
|
||||
gui.cover_flow.setShowReflections(gprefs['cover_browser_reflections'])
|
||||
gui.cover_flow.setPreserveAspectRatio(gprefs['cb_preserve_aspect_ratio'])
|
||||
gui.cover_flow.setShowReflections(gprefs['cover_browser_reflections'])
|
||||
gui.cover_flow.setPreserveAspectRatio(gprefs['cb_preserve_aspect_ratio'])
|
||||
gui.library_view.refresh_row_sizing()
|
||||
gui.grid_view.refresh_settings()
|
||||
|
||||
|
@ -87,7 +87,7 @@ _gui = None
|
||||
def get_gui():
|
||||
return _gui
|
||||
|
||||
def add_quick_start_guide(library_view, db_images):
|
||||
def add_quick_start_guide(library_view, refresh_cover_browser=None):
|
||||
from calibre.ebooks.metadata.meta import get_metadata
|
||||
from calibre.ebooks import calibre_cover
|
||||
from calibre.utils.zipfile import safe_replace
|
||||
@ -112,8 +112,8 @@ def add_quick_start_guide(library_view, db_images):
|
||||
library_view.model().add_books([tmp.name], ['epub'], [mi])
|
||||
os.remove(tmp.name)
|
||||
library_view.model().books_added(1)
|
||||
if hasattr(db_images, 'reset'):
|
||||
db_images.reset()
|
||||
if refresh_cover_browser is not None:
|
||||
refresh_cover_browser()
|
||||
if library_view.model().rowCount(None) < 3:
|
||||
library_view.resizeColumnsToContents()
|
||||
|
||||
@ -342,7 +342,7 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{
|
||||
self.iactions['Choose Library'].count_changed)
|
||||
if not gprefs.get('quick_start_guide_added', False):
|
||||
try:
|
||||
add_quick_start_guide(self.library_view, getattr(self, 'db_images', None))
|
||||
add_quick_start_guide(self.library_view)
|
||||
except:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
Loading…
x
Reference in New Issue
Block a user