mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
When ejecting a device from the OS fails, do not think that the device
is still connected when performing various GUI actions, such as deleting books.
This commit is contained in:
parent
d8fef25259
commit
ab2b4d4abc
@ -19,7 +19,7 @@ from calibre.utils.recycle_bin import can_recycle
|
|||||||
|
|
||||||
single_shot = partial(QTimer.singleShot, 10)
|
single_shot = partial(QTimer.singleShot, 10)
|
||||||
|
|
||||||
class MultiDeleter(QObject): # {{{
|
class MultiDeleter(QObject): # {{{
|
||||||
|
|
||||||
def __init__(self, gui, ids, callback):
|
def __init__(self, gui, ids, callback):
|
||||||
from calibre.gui2.dialogs.progress import ProgressDialog
|
from calibre.gui2.dialogs.progress import ProgressDialog
|
||||||
@ -256,7 +256,7 @@ class DeleteAction(InterfaceAction):
|
|||||||
self.gui.tags_view.recount()
|
self.gui.tags_view.recount()
|
||||||
|
|
||||||
def remove_matching_books_from_device(self, *args):
|
def remove_matching_books_from_device(self, *args):
|
||||||
if not self.gui.device_manager.is_device_connected:
|
if not self.gui.device_manager.is_device_present:
|
||||||
d = error_dialog(self.gui, _('Cannot delete books'),
|
d = error_dialog(self.gui, _('Cannot delete books'),
|
||||||
_('No device is connected'))
|
_('No device is connected'))
|
||||||
d.exec_()
|
d.exec_()
|
||||||
@ -264,7 +264,7 @@ class DeleteAction(InterfaceAction):
|
|||||||
ids = self._get_selected_ids()
|
ids = self._get_selected_ids()
|
||||||
if not ids:
|
if not ids:
|
||||||
#_get_selected_ids shows a dialog box if nothing is selected, so we
|
#_get_selected_ids shows a dialog box if nothing is selected, so we
|
||||||
#do not need to show one here
|
# do not need to show one here
|
||||||
return
|
return
|
||||||
to_delete = {}
|
to_delete = {}
|
||||||
some_to_delete = False
|
some_to_delete = False
|
||||||
@ -305,7 +305,6 @@ class DeleteAction(InterfaceAction):
|
|||||||
self.gui.library_view.model().current_changed(self.gui.library_view.currentIndex(),
|
self.gui.library_view.model().current_changed(self.gui.library_view.currentIndex(),
|
||||||
self.gui.library_view.currentIndex())
|
self.gui.library_view.currentIndex())
|
||||||
|
|
||||||
|
|
||||||
def library_ids_deleted(self, ids_deleted, current_row=None):
|
def library_ids_deleted(self, ids_deleted, current_row=None):
|
||||||
view = self.gui.library_view
|
view = self.gui.library_view
|
||||||
for v in (self.gui.memory_view, self.gui.card_a_view, self.gui.card_b_view):
|
for v in (self.gui.memory_view, self.gui.card_a_view, self.gui.card_b_view):
|
||||||
@ -332,7 +331,7 @@ class DeleteAction(InterfaceAction):
|
|||||||
def do_library_delete(self, to_delete_ids):
|
def do_library_delete(self, to_delete_ids):
|
||||||
view = self.gui.current_view()
|
view = self.gui.current_view()
|
||||||
# Ask the user if they want to delete the book from the library or device if it is in both.
|
# Ask the user if they want to delete the book from the library or device if it is in both.
|
||||||
if self.gui.device_manager.is_device_connected:
|
if self.gui.device_manager.is_device_present:
|
||||||
on_device = False
|
on_device = False
|
||||||
on_device_ids = self._get_selected_ids()
|
on_device_ids = self._get_selected_ids()
|
||||||
for id in on_device_ids:
|
for id in on_device_ids:
|
||||||
|
@ -166,6 +166,10 @@ class DeviceManager(Thread): # {{{
|
|||||||
def is_device_connected(self):
|
def is_device_connected(self):
|
||||||
return self.connected_device is not None
|
return self.connected_device is not None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def is_device_present(self):
|
||||||
|
return self.connected_device is not None and self.connected_device not in self.ejected_devices
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def device(self):
|
def device(self):
|
||||||
return self.connected_device
|
return self.connected_device
|
||||||
|
@ -318,7 +318,7 @@ def generate_catalog(parent, dbspec, ids, device_manager, db): # {{{
|
|||||||
# Profile the connected device
|
# Profile the connected device
|
||||||
# Parallel initialization in calibre.library.cli:command_catalog()
|
# Parallel initialization in calibre.library.cli:command_catalog()
|
||||||
connected_device = {
|
connected_device = {
|
||||||
'is_device_connected': device_manager.is_device_connected,
|
'is_device_connected': device_manager.is_device_present,
|
||||||
'kind': device_manager.connected_device_kind,
|
'kind': device_manager.connected_device_kind,
|
||||||
'name': None,
|
'name': None,
|
||||||
'save_template': None,
|
'save_template': None,
|
||||||
@ -326,7 +326,7 @@ def generate_catalog(parent, dbspec, ids, device_manager, db): # {{{
|
|||||||
'storage': None
|
'storage': None
|
||||||
}
|
}
|
||||||
|
|
||||||
if device_manager.is_device_connected:
|
if device_manager.is_device_present:
|
||||||
device = device_manager.device
|
device = device_manager.device
|
||||||
connected_device['name'] = device.get_gui_name()
|
connected_device['name'] = device.get_gui_name()
|
||||||
try:
|
try:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user