Mirror sort indicators to split view header

This commit is contained in:
Kovid Goyal 2018-01-31 14:45:03 +05:30
parent 7c3b58be70
commit 8d35902d61
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -468,10 +468,21 @@ class BooksView(QTableView): # {{{
# }}} # }}}
# Sorting {{{ # Sorting {{{
def set_sort_indicator(self, logical_idx, ascending):
views = [self, self.pin_view] if self.is_library_view else [self]
for v in views:
ch = v.column_header
ch.blockSignals(True)
ch.setSortIndicator(logical_idx, Qt.AscendingOrder if ascending else Qt.DescendingOrder)
ch.blockSignals(False)
def sort_by_column_and_order(self, col, ascending): def sort_by_column_and_order(self, col, ascending):
self.column_header.blockSignals(True) self.column_header.blockSignals(True)
self.sortByColumn(col, Qt.AscendingOrder if ascending else Qt.DescendingOrder) self.sortByColumn(col, Qt.AscendingOrder if ascending else Qt.DescendingOrder)
self.column_header.blockSignals(False) self.column_header.blockSignals(False)
if self.is_library_view:
self.set_sort_indicator(col, ascending)
def user_sort_requested(self, col, order=Qt.AscendingOrder): def user_sort_requested(self, col, order=Qt.AscendingOrder):
if col >= len(self.column_map) or col < 0: if col >= len(self.column_map) or col < 0:
@ -509,9 +520,7 @@ class BooksView(QTableView): # {{{
self.sort_by_column_and_order(idx, order) self.sort_by_column_and_order(idx, order)
else: else:
self._model.sort_by_named_field(field, order, reset) self._model.sort_by_named_field(field, order, reset)
self.column_header.blockSignals(True) self.set_sort_indicator(-1, True)
self.column_header.setSortIndicator(-1, Qt.AscendingOrder)
self.column_header.blockSignals(False)
def multisort(self, fields, reset=True, only_if_different=False): def multisort(self, fields, reset=True, only_if_different=False):
if len(fields) == 0: if len(fields) == 0:
@ -534,14 +543,12 @@ class BooksView(QTableView): # {{{
self._model.sort_history = [tuple(x) for x in sh] self._model.sort_history = [tuple(x) for x in sh]
self._model.resort(reset=reset) self._model.resort(reset=reset)
col = fields[0][0] col = fields[0][0]
dir = Qt.AscendingOrder if fields[0][1] else Qt.DescendingOrder ascending = fields[0][1]
if col in self.column_map:
col = self.column_map.index(col)
self.column_header.blockSignals(True)
try: try:
self.column_header.setSortIndicator(col, dir) idx = self.column_map.index(col)
finally: except Exception:
self.column_header.blockSignals(False) idx = -1
self.set_sort_indicator(idx, ascending)
# }}} # }}}
# Ondevice column {{{ # Ondevice column {{{