From 3cfada60a6a3f0c7d135c176aa65925ae145aa38 Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Wed, 5 Nov 2014 16:31:19 +0100 Subject: [PATCH 1/2] Prevent stale ondevice info from showing during connections by emptying the device databases on disconnect. See http://www.mobileread.com/forums/showthread.php?t=249540 --- src/calibre/gui2/device.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/calibre/gui2/device.py b/src/calibre/gui2/device.py index b1381f3eaa..1a0d0c3c33 100644 --- a/src/calibre/gui2/device.py +++ b/src/calibre/gui2/device.py @@ -1070,7 +1070,7 @@ class DeviceMixin(object): # {{{ self.device_manager.device.get_gui_name()+ _(' detected.'), 3000) self.library_view.set_device_connected(self.device_connected) - self.refresh_ondevice(reset_only=True) + self.refresh_ondevice() else: self.device_connected = None self.status_bar.device_disconnected() @@ -1079,6 +1079,10 @@ class DeviceMixin(object): # {{{ self.location_manager.update_devices() self.bars_manager.update_bars() self.library_view.set_device_connected(self.device_connected) + # Empty any device view information + self.memory_view.set_database([]) + self.card_a_view.set_database([]) + self.card_b_view.set_database([]) self.refresh_ondevice() device_signals.device_connection_changed.emit(connected) @@ -1142,15 +1146,13 @@ class DeviceMixin(object): # {{{ prints('DeviceJob: metadata_downloaded: sending metadata_available signal') device_signals.device_metadata_available.emit() - def refresh_ondevice(self, reset_only=False): + def refresh_ondevice(self): ''' Force the library view to refresh, taking into consideration new device books information ''' with self.library_view.preserve_state(): self.book_on_device(None, reset=True) - if reset_only: - return self.library_view.model().refresh_ondevice() # }}} @@ -1183,7 +1185,7 @@ class DeviceMixin(object): # {{{ self.upload_booklists(job) # We need to reset the ondevice flags in the library. Use a big hammer, # so we don't need to worry about whether some succeeded or not. - self.refresh_ondevice(reset_only=False) + self.refresh_ondevice() try: if not self.current_view().currentIndex().isValid(): From d44580fd03bc1a848c1c590cbfd84c321b4a09cd Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Thu, 6 Nov 2014 08:35:05 +0100 Subject: [PATCH 2/2] Don't take out the "reset_only" parameter --- src/calibre/gui2/device.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/device.py b/src/calibre/gui2/device.py index 1a0d0c3c33..1dfd83bb95 100644 --- a/src/calibre/gui2/device.py +++ b/src/calibre/gui2/device.py @@ -1070,7 +1070,7 @@ class DeviceMixin(object): # {{{ self.device_manager.device.get_gui_name()+ _(' detected.'), 3000) self.library_view.set_device_connected(self.device_connected) - self.refresh_ondevice() + self.refresh_ondevice(reset_only=True) else: self.device_connected = None self.status_bar.device_disconnected() @@ -1146,13 +1146,15 @@ class DeviceMixin(object): # {{{ prints('DeviceJob: metadata_downloaded: sending metadata_available signal') device_signals.device_metadata_available.emit() - def refresh_ondevice(self): + def refresh_ondevice(self, reset_only=False): ''' Force the library view to refresh, taking into consideration new device books information ''' with self.library_view.preserve_state(): self.book_on_device(None, reset=True) + if reset_only: + return self.library_view.model().refresh_ondevice() # }}}