GUI: Convert, use book_ids when possible.

This commit is contained in:
John Schember 2009-05-05 08:26:14 -04:00
parent 970430c40f
commit 3c045737da
2 changed files with 12 additions and 14 deletions

View File

@ -612,23 +612,23 @@ class DeviceGUI(object):
def sync_to_device(self, on_card, delete_from_library, def sync_to_device(self, on_card, delete_from_library,
specific_format=None, send_rows=None, do_auto_convert=True): specific_format=None, send_ids=None, do_auto_convert=True):
rows = self.library_view.selectionModel().selectedRows() if send_rows is None else send_rows ids = [self.library_view.model().id(r) for r in self.library_view.selectionModel().selectedRows()] if send_ids is None else send_ids
if not self.device_manager or not rows or len(rows) == 0: if not self.device_manager or not ids or len(ids) == 0:
return return
_files, _auto_rows = self.library_view.model().get_preferred_formats(rows, _files, _auto_ids = self.library_view.model().get_preferred_formats_from_ids(ids,
self.device_manager.device_class.settings().format_map, self.device_manager.device_class.settings().format_map,
paths=True, set_metadata=True, paths=True, set_metadata=True,
specific_format=specific_format, specific_format=specific_format,
exclude_auto=do_auto_convert) exclude_auto=do_auto_convert)
if do_auto_convert: if do_auto_convert:
rows = list(set(rows).difference(_auto_rows)) ids = list(set(ids).difference(_auto_ids))
else: else:
_auto_rows = [] _auto_ids = []
ids = iter(self.library_view.model().id(r) for r in rows) ids = iter(ids)
metadata = self.library_view.model().get_metadata(rows) metadata = self.library_view.model().get_metadata(ids, True)
for mi in metadata: for mi in metadata:
cdata = mi['cover'] cdata = mi['cover']
if cdata: if cdata:
@ -662,8 +662,8 @@ class DeviceGUI(object):
self.status_bar.showMessage(_('Sending books to device.'), 5000) self.status_bar.showMessage(_('Sending books to device.'), 5000)
auto = [] auto = []
if _auto_rows != []: if _auto_ids != []:
for row in _auto_rows: for row in _auto_ids:
if specific_format == None: if specific_format == None:
formats = [f.lower() for f in self.library_view.model().db.formats(row).split(',')] formats = [f.lower() for f in self.library_view.model().db.formats(row).split(',')]
formats = formats if formats != None else [] formats = formats if formats != None else []
@ -687,8 +687,7 @@ class DeviceGUI(object):
format = fmt format = fmt
break break
d.exec_() d.exec_()
_auto_rows = [self.library_view.model().db.id(r) for r in _auto_rows] self.auto_convert(_auto_ids, on_card, format)
self.auto_convert(_auto_rows, on_card, format)
if bad: if bad:
bad = '\n'.join('<li>%s</li>'%(i,) for i in bad) bad = '\n'.join('<li>%s</li>'%(i,) for i in bad)

View File

@ -1055,8 +1055,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI):
current = self.library_view.currentIndex() current = self.library_view.currentIndex()
self.library_view.model().current_changed(current, QModelIndex()) self.library_view.model().current_changed(current, QModelIndex())
r = self.library_view.model().index(self.library_view.model().db.row(book_id), 0) self.sync_to_device(on_card, False, specific_format=fmt, send_ids=[book_id], do_auto_convert=False)
self.sync_to_device(on_card, False, specific_format=fmt, send_rows=[r], do_auto_convert=False)
def book_converted(self, job): def book_converted(self, job):
temp_files, fmt, book_id = self.conversion_jobs.pop(job) temp_files, fmt, book_id = self.conversion_jobs.pop(job)