Add the ability to sort the library view by a specific named column (field). Useful for sorting by fields that are not visible.

This commit is contained in:
Charles Haley 2011-04-14 12:36:54 +01:00
parent 0cc37216b4
commit 4a2faf83d8
2 changed files with 17 additions and 0 deletions

View File

@ -314,6 +314,13 @@ class BooksModel(QAbstractTableModel): # {{{
if not isinstance(order, bool): if not isinstance(order, bool):
order = order == Qt.AscendingOrder order = order == Qt.AscendingOrder
label = self.column_map[col] label = self.column_map[col]
self._sort(label, order, reset)
def sort_by_named_column(self, field, order, reset=True):
if field in self.db.field_metadata.keys():
self._sort(field, order, reset)
def _sort(self, label, order, reset):
self.db.sort(label, order) self.db.sort(label, order)
if reset: if reset:
self.reset() self.reset()

View File

@ -236,6 +236,16 @@ class BooksView(QTableView): # {{{
sm.select(idx, sm.Select|sm.Rows) sm.select(idx, sm.Select|sm.Rows)
self.scroll_to_row(indices[0].row()) self.scroll_to_row(indices[0].row())
self.selected_ids = [] self.selected_ids = []
def sort_by_named_column(self, field, order, reset=True):
if field in self.column_map:
idx = self.column_map.index(field)
if order:
self.sortByColumn(idx, Qt.AscendingOrder)
else:
self.sortByColumn(idx, Qt.DescendingOrder)
else:
self._model.sort_by_named_column(field, order, reset)
# }}} # }}}
# Ondevice column {{{ # Ondevice column {{{