Fix restoring of column widths in main GUI

This commit is contained in:
Kovid Goyal 2010-05-10 07:59:23 -06:00
commit 31cf9f4721
3 changed files with 19 additions and 6 deletions

View File

@ -303,17 +303,24 @@ class TableView(QTableView):
self.read_settings()
def read_settings(self):
self.cw = dynamic[self.__class__.__name__+'column widths']
self.cw = dynamic[self.__class__.__name__+'column width map']
def write_settings(self):
dynamic[self.__class__.__name__+'column widths'] = \
tuple([int(self.columnWidth(i)) for i in range(self.model().columnCount(None))])
m = dynamic[self.__class__.__name__+'column width map']
if m is None:
m = {}
for i,c in enumerate(self.model().column_map):
m[c] = self.columnWidth(i)
dynamic[self.__class__.__name__+'column width map'] = m
self.cw = m
def restore_column_widths(self):
if self.cw and len(self.cw):
for i in range(len(self.cw)):
self.setColumnWidth(i, self.cw[i])
for i,c in enumerate(self.model().column_map):
if c in self.cw:
self.setColumnWidth(i, self.cw[c])
return True
return False
class FileIconProvider(QFileIconProvider):

View File

@ -1081,6 +1081,8 @@ class BooksView(TableView):
self.setItemDelegateForColumn(cm.index(colhead), self.cc_bool_delegate)
elif cc['datatype'] == 'rating':
self.setItemDelegateForColumn(cm.index(colhead), self.rating_delegate)
if not self.restore_column_widths():
self.resizeColumnsToContents()
def set_context_menu(self, edit_metadata, send_to_device, convert, view,
save, open_folder, book_details, delete, similar_menu=None):
@ -1186,7 +1188,6 @@ class BooksView(TableView):
def row_count(self):
return self._model.count()
class DeviceBooksView(BooksView):
def __init__(self, parent):

View File

@ -1018,6 +1018,8 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI):
############################################################################
### Force the library view to refresh, taking into consideration books information
def refresh_ondevice_info(self, device_connected):
# Save current column widths because we might be turning on OnDevice
self.library_view.write_settings()
self.book_on_device(None, reset=True)
self.library_view.model().set_device_connected(device_connected)
############################################################################
@ -2218,6 +2220,9 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI):
return
d = ConfigDialog(self, self.library_view.model(),
server=self.content_server)
# Save current column widths in case columns are turned on or off
self.library_view.write_settings()
d.exec_()
self.content_server = d.server
if d.result() == d.Accepted: