mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Use the cache for the rest of the calls to get_metadata.
This commit is contained in:
parent
cfae562f75
commit
1237db4c87
@ -173,10 +173,12 @@ class BooksModel(QAbstractTableModel): # {{{
|
|||||||
|
|
||||||
|
|
||||||
def refresh_ids(self, ids, current_row=-1):
|
def refresh_ids(self, ids, current_row=-1):
|
||||||
self.mi_cache = {}
|
|
||||||
rows = self.db.refresh_ids(ids)
|
rows = self.db.refresh_ids(ids)
|
||||||
if rows:
|
if rows:
|
||||||
self.refresh_rows(rows, current_row=current_row)
|
self.refresh_rows(rows, current_row=current_row)
|
||||||
|
else:
|
||||||
|
self.mi_cache = {}
|
||||||
|
|
||||||
|
|
||||||
def refresh_rows(self, rows, current_row=-1):
|
def refresh_rows(self, rows, current_row=-1):
|
||||||
self.mi_cache = {}
|
self.mi_cache = {}
|
||||||
@ -367,8 +369,20 @@ class BooksModel(QAbstractTableModel): # {{{
|
|||||||
def count(self):
|
def count(self):
|
||||||
return self.rowCount(None)
|
return self.rowCount(None)
|
||||||
|
|
||||||
|
def get_and_cache_metadata(self, idx, index_is_id = False, get_cover=False,
|
||||||
|
get_user_categories=True):
|
||||||
|
if not index_is_id:
|
||||||
|
idx = self.db.id(idx)
|
||||||
|
if idx in self.mi_cache:
|
||||||
|
mi = self.mi_cache[idx]
|
||||||
|
else:
|
||||||
|
mi = self.db.get_metadata(idx, index_is_id=True, get_cover=get_cover,
|
||||||
|
get_user_categories=get_user_categories)
|
||||||
|
self.mi_cache[idx] = mi
|
||||||
|
return mi
|
||||||
|
|
||||||
def get_book_display_info(self, idx):
|
def get_book_display_info(self, idx):
|
||||||
mi = self.db.get_metadata(idx)
|
mi = self.get_and_cache_metadata(idx)
|
||||||
mi.size = mi.book_size
|
mi.size = mi.book_size
|
||||||
mi.cover_data = ('jpg', self.cover(idx))
|
mi.cover_data = ('jpg', self.cover(idx))
|
||||||
mi.id = self.db.id(idx)
|
mi.id = self.db.id(idx)
|
||||||
@ -395,7 +409,7 @@ class BooksModel(QAbstractTableModel): # {{{
|
|||||||
def metadata_for(self, ids):
|
def metadata_for(self, ids):
|
||||||
ans = []
|
ans = []
|
||||||
for id in ids:
|
for id in ids:
|
||||||
mi = self.db.get_metadata(id, index_is_id=True, get_cover=True)
|
mi = self.get_and_cache_metadata(id, index_is_id=True, get_cover=True)
|
||||||
ans.append(mi)
|
ans.append(mi)
|
||||||
return ans
|
return ans
|
||||||
|
|
||||||
@ -404,7 +418,7 @@ class BooksModel(QAbstractTableModel): # {{{
|
|||||||
if not rows_are_ids:
|
if not rows_are_ids:
|
||||||
rows = [self.db.id(row.row()) for row in rows]
|
rows = [self.db.id(row.row()) for row in rows]
|
||||||
for id in rows:
|
for id in rows:
|
||||||
mi = self.db.get_metadata(id, index_is_id=True)
|
mi = self.get_and_cache_metadata(id, index_is_id=True)
|
||||||
_full_metadata.append(mi)
|
_full_metadata.append(mi)
|
||||||
au = authors_to_string(mi.authors if mi.authors else [_('Unknown')])
|
au = authors_to_string(mi.authors if mi.authors else [_('Unknown')])
|
||||||
tags = mi.tags if mi.tags else []
|
tags = mi.tags if mi.tags else []
|
||||||
@ -460,7 +474,8 @@ class BooksModel(QAbstractTableModel): # {{{
|
|||||||
pt.seek(0)
|
pt.seek(0)
|
||||||
if set_metadata:
|
if set_metadata:
|
||||||
try:
|
try:
|
||||||
_set_metadata(pt, self.db.get_metadata(id, get_cover=True, index_is_id=True),
|
_set_metadata(pt, self.get_and_cache_metadata(id,
|
||||||
|
get_cover=True, index_is_id=True),
|
||||||
format)
|
format)
|
||||||
except:
|
except:
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
@ -505,7 +520,7 @@ class BooksModel(QAbstractTableModel): # {{{
|
|||||||
pt.flush()
|
pt.flush()
|
||||||
pt.seek(0)
|
pt.seek(0)
|
||||||
if set_metadata:
|
if set_metadata:
|
||||||
_set_metadata(pt, self.db.get_metadata(row, get_cover=True),
|
_set_metadata(pt, self.get_and_cache_metadata(row, get_cover=True),
|
||||||
format)
|
format)
|
||||||
pt.close() if paths else pt.seek(0)
|
pt.close() if paths else pt.seek(0)
|
||||||
ans.append(pt)
|
ans.append(pt)
|
||||||
@ -726,12 +741,8 @@ class BooksModel(QAbstractTableModel): # {{{
|
|||||||
elif role == Qt.ForegroundRole:
|
elif role == Qt.ForegroundRole:
|
||||||
key = self.column_map[col]
|
key = self.column_map[col]
|
||||||
if key in self.column_color_map:
|
if key in self.column_color_map:
|
||||||
id_ = self.id(index)
|
mi = self.get_and_cache_metadata(index.row(),
|
||||||
if id_ in self.mi_cache:
|
get_user_categories=False)
|
||||||
mi = self.mi_cache[id_]
|
|
||||||
else:
|
|
||||||
mi = self.db.get_metadata(self.id(index), index_is_id=True)
|
|
||||||
self.mi_cache[id_] = mi
|
|
||||||
fmt = self.column_color_map[key]
|
fmt = self.column_color_map[key]
|
||||||
try:
|
try:
|
||||||
color = composite_formatter.safe_format(fmt, mi, '', mi)
|
color = composite_formatter.safe_format(fmt, mi, '', mi)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user