From 3c045737da2f85edb05fa55074dbb31a7cd77c7a Mon Sep 17 00:00:00 2001 From: John Schember Date: Tue, 5 May 2009 08:26:14 -0400 Subject: [PATCH] GUI: Convert, use book_ids when possible. --- src/calibre/gui2/device.py | 23 +++++++++++------------ src/calibre/gui2/main.py | 3 +-- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/calibre/gui2/device.py b/src/calibre/gui2/device.py index f5b58c28d8..aa77eb6718 100644 --- a/src/calibre/gui2/device.py +++ b/src/calibre/gui2/device.py @@ -612,23 +612,23 @@ class DeviceGUI(object): def sync_to_device(self, on_card, delete_from_library, - specific_format=None, send_rows=None, do_auto_convert=True): - rows = self.library_view.selectionModel().selectedRows() if send_rows is None else send_rows - if not self.device_manager or not rows or len(rows) == 0: + specific_format=None, send_ids=None, do_auto_convert=True): + 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 ids or len(ids) == 0: 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, paths=True, set_metadata=True, specific_format=specific_format, exclude_auto=do_auto_convert) if do_auto_convert: - rows = list(set(rows).difference(_auto_rows)) + ids = list(set(ids).difference(_auto_ids)) else: - _auto_rows = [] + _auto_ids = [] - ids = iter(self.library_view.model().id(r) for r in rows) - metadata = self.library_view.model().get_metadata(rows) + ids = iter(ids) + metadata = self.library_view.model().get_metadata(ids, True) for mi in metadata: cdata = mi['cover'] if cdata: @@ -662,8 +662,8 @@ class DeviceGUI(object): self.status_bar.showMessage(_('Sending books to device.'), 5000) auto = [] - if _auto_rows != []: - for row in _auto_rows: + if _auto_ids != []: + for row in _auto_ids: if specific_format == None: formats = [f.lower() for f in self.library_view.model().db.formats(row).split(',')] formats = formats if formats != None else [] @@ -687,8 +687,7 @@ class DeviceGUI(object): format = fmt break d.exec_() - _auto_rows = [self.library_view.model().db.id(r) for r in _auto_rows] - self.auto_convert(_auto_rows, on_card, format) + self.auto_convert(_auto_ids, on_card, format) if bad: bad = '\n'.join('
  • %s
  • '%(i,) for i in bad) diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py index 22b49cdffd..8393414518 100644 --- a/src/calibre/gui2/main.py +++ b/src/calibre/gui2/main.py @@ -1055,8 +1055,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): current = self.library_view.currentIndex() 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_rows=[r], do_auto_convert=False) + self.sync_to_device(on_card, False, specific_format=fmt, send_ids=[book_id], do_auto_convert=False) def book_converted(self, job): temp_files, fmt, book_id = self.conversion_jobs.pop(job)