diff --git a/src/calibre/devices/usbms/books.py b/src/calibre/devices/usbms/books.py index 1ddc00729f..50756ef3ee 100644 --- a/src/calibre/devices/usbms/books.py +++ b/src/calibre/devices/usbms/books.py @@ -49,7 +49,7 @@ class Book(object): @property def db_id(self): '''The database id in the application database that this file corresponds to''' - match = re.search(r'_(\d+)$', self.rpath.rpartition('.')[0]) + match = re.search(r'_(\d+)$', self.path.rpartition('.')[0]) if match: return int(match.group(1)) diff --git a/src/calibre/gui2/library.py b/src/calibre/gui2/library.py index 90dc3eb1ea..0ee5f36a59 100644 --- a/src/calibre/gui2/library.py +++ b/src/calibre/gui2/library.py @@ -778,6 +778,12 @@ class BooksModel(QAbstractTableModel): return self.bool_blank_icon return self.bool_no_icon + def ondevice_decorator(r, idx=-1): + text = self.db.data[r][idx] + if text: + return self.bool_yes_icon + return self.bool_blank_icon + def text_type(r, mult=False, idx=-1): text = self.db.data[r][idx] if text and mult: @@ -810,7 +816,11 @@ class BooksModel(QAbstractTableModel): 'ondevice' : functools.partial(text_type, idx=self.db.FIELD_MAP['ondevice'], mult=False), } - self.dc_decorator = {} + + self.dc_decorator = { + 'ondevice':functools.partial(ondevice_decorator, + idx=self.db.FIELD_MAP['ondevice']), + } # Add the custom columns to the data converters for col in self.custom_columns: diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index 4f5e71174c..e97665909f 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -959,7 +959,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): self.status_bar.reset_info() self.location_view.setCurrentIndex(self.location_view.model().index(0)) self.eject_action.setEnabled(False) - self.refresh_ondevice_info (clear_info = True) + self.refresh_ondevice_info(clear_flags=True) def info_read(self, job): ''' @@ -1019,7 +1019,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): ############################################################################ ### Force the library view to refresh, taking into consideration books information - def refresh_ondevice_info(self, clear_flags = False): + def refresh_ondevice_info(self, clear_flags=False): self.book_on_device(None, reset=True) self.library_view.model().refresh() ############################################################################