From 5f2fe8fc54ac25ee37c58a61c571a2b1f41e7d3a Mon Sep 17 00:00:00 2001 From: Charles Haley <> Date: Sun, 9 May 2010 22:39:50 +0100 Subject: [PATCH] Make ondevice column appear and disappear when device is connected or disconnected --- src/calibre/gui2/library.py | 12 +++++++++++- src/calibre/gui2/ui.py | 9 +++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/calibre/gui2/library.py b/src/calibre/gui2/library.py index 90dc3eb1ea..ef0070a91c 100644 --- a/src/calibre/gui2/library.py +++ b/src/calibre/gui2/library.py @@ -339,6 +339,7 @@ class BooksModel(QAbstractTableModel): self.bool_yes_icon = QIcon(I('ok.svg')) self.bool_no_icon = QIcon(I('list_remove.svg')) self.bool_blank_icon = QIcon(I('blank.svg')) + self.device_connected = False def is_custom_column(self, cc_label): return cc_label in self.custom_columns @@ -353,7 +354,10 @@ class BooksModel(QAbstractTableModel): self.headers = {} self.column_map = [] for col in cmap: # take out any columns no longer in the db - if col in self.orig_headers or col in self.custom_columns: + if col == 'ondevice': + if self.device_connected: + self.column_map.append(col) + elif col in self.orig_headers or col in self.custom_columns: self.column_map.append(col) for col in self.column_map: if col in self.orig_headers: @@ -364,6 +368,12 @@ class BooksModel(QAbstractTableModel): self.reset() self.emit(SIGNAL('columns_sorted()')) + def set_device_connected(self, is_connected): + self.device_connected = is_connected + self.read_config() + self.refresh(reset=True) + self.database_changed.emit(self.db) + def set_book_on_device_func(self, func): self.book_on_device = func diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index 4f5e71174c..3ac93064c8 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -947,6 +947,7 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): self.device_manager.device) self.location_view.model().device_connected(self.device_manager.device) self.eject_action.setEnabled(True) + self.refresh_ondevice_info (device_connected = True) else: self.save_device_view_settings() self.device_connected = False @@ -959,7 +960,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 (device_connected = False) def info_read(self, job): ''' @@ -1015,13 +1016,13 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI): view.verticalHeader().setDefaultSectionSize(height) self.sync_news() self.sync_catalogs() - self.refresh_ondevice_info() + self.refresh_ondevice_info(device_connected = True) ############################################################################ ### Force the library view to refresh, taking into consideration books information - def refresh_ondevice_info(self, clear_flags = False): + def refresh_ondevice_info(self, device_connected): self.book_on_device(None, reset=True) - self.library_view.model().refresh() + self.library_view.model().set_device_connected(device_connected) ############################################################################ ######################### Fetch annotations ################################