Quick view: Show the title/author/series columns in the same order as in the main book list. Fixes #1253022 [[Enhancement] Quickview column order](https://bugs.launchpad.net/calibre/+bug/1253022)

Merge branch 'master' of https://github.com/cbhaley/calibre
This commit is contained in:
Kovid Goyal 2013-11-20 17:05:24 +05:30
commit 89abde94b5

View File

@ -77,6 +77,13 @@ class Quickview(QDialog, Ui_Quickview):
self.current_item = None self.current_item = None
self.no_valid_items = False self.no_valid_items = False
column_positions = self.view.get_state()['column_positions']
column_order = ['title', 'authors', 'series']
column_order.sort(key=lambda col: column_positions[col])
self.title_column = column_order.index('title')
self.author_column = column_order.index('authors')
self.series_column = column_order.index('series')
self.items.setSelectionMode(QAbstractItemView.SingleSelection) self.items.setSelectionMode(QAbstractItemView.SingleSelection)
self.items.currentTextChanged.connect(self.item_selected) self.items.currentTextChanged.connect(self.item_selected)
@ -85,14 +92,14 @@ class Quickview(QDialog, Ui_Quickview):
self.books_table.setSelectionMode(QAbstractItemView.SingleSelection) self.books_table.setSelectionMode(QAbstractItemView.SingleSelection)
self.books_table.setColumnCount(3) self.books_table.setColumnCount(3)
t = QTableWidgetItem(_('Title')) t = QTableWidgetItem(_('Title'))
self.books_table.setHorizontalHeaderItem(0, t) self.books_table.setHorizontalHeaderItem(self.title_column, t)
t = QTableWidgetItem(_('Authors')) t = QTableWidgetItem(_('Authors'))
self.books_table.setHorizontalHeaderItem(1, t) self.books_table.setHorizontalHeaderItem(self.author_column, t)
t = QTableWidgetItem(_('Series')) t = QTableWidgetItem(_('Series'))
self.books_table.setHorizontalHeaderItem(2, t) self.books_table.setHorizontalHeaderItem(self.series_column, t)
self.books_table_header_height = self.books_table.height() self.books_table_header_height = self.books_table.height()
self.books_table.cellDoubleClicked.connect(self.book_doubleclicked) self.books_table.cellDoubleClicked.connect(self.book_doubleclicked)
self.books_table.sortByColumn(0, Qt.AscendingOrder) self.books_table.sortByColumn(self.title_column, Qt.AscendingOrder)
# get the standard table row height. Do this here because calling # get the standard table row height. Do this here because calling
# resizeRowsToContents can word wrap long cell contents, creating # resizeRowsToContents can word wrap long cell contents, creating
@ -230,18 +237,18 @@ class Quickview(QDialog, Ui_Quickview):
a = TableItem(mi.title, mi.title_sort) a = TableItem(mi.title, mi.title_sort)
a.setData(Qt.UserRole, b) a.setData(Qt.UserRole, b)
a.setToolTip(tt) a.setToolTip(tt)
self.books_table.setItem(row, 0, a) self.books_table.setItem(row, self.title_column, a)
if b == self.current_book_id: if b == self.current_book_id:
select_item = a select_item = a
a = TableItem(' & '.join(mi.authors), mi.author_sort) a = TableItem(' & '.join(mi.authors), mi.author_sort)
a.setToolTip(tt) a.setToolTip(tt)
self.books_table.setItem(row, 1, a) self.books_table.setItem(row, self.author_column, a)
series = mi.format_field('series')[1] series = mi.format_field('series')[1]
if series is None: if series is None:
series = '' series = ''
a = TableItem(series, mi.series, mi.series_index) a = TableItem(series, mi.series, mi.series_index)
a.setToolTip(tt) a.setToolTip(tt)
self.books_table.setItem(row, 2, a) self.books_table.setItem(row, self.series_column, a)
self.books_table.setRowHeight(row, self.books_table_row_height) self.books_table.setRowHeight(row, self.books_table_row_height)
self.books_table.setSortingEnabled(True) self.books_table.setSortingEnabled(True)
@ -269,7 +276,7 @@ class Quickview(QDialog, Ui_Quickview):
def book_doubleclicked(self, row, column): def book_doubleclicked(self, row, column):
if self.no_valid_items: if self.no_valid_items:
return return
book_id = self.books_table.item(row, 0).data(Qt.UserRole).toInt()[0] book_id = self.books_table.item(row, self.title_column).data(Qt.UserRole).toInt()[0]
self.view.select_rows([book_id]) self.view.select_rows([book_id])
modifiers = int(QApplication.keyboardModifiers()) modifiers = int(QApplication.keyboardModifiers())
if modifiers in (Qt.CTRL, Qt.SHIFT): if modifiers in (Qt.CTRL, Qt.SHIFT):