mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Add multi-column search.
This commit is contained in:
parent
e2a6ab16a7
commit
8157ad817c
@ -310,7 +310,6 @@ class BooksModel(QAbstractTableModel): # {{{
|
||||
def sort(self, col, order, reset=True):
|
||||
if not self.db:
|
||||
return
|
||||
self.about_to_be_sorted.emit(self.db.id)
|
||||
if not isinstance(order, bool):
|
||||
order = order == Qt.AscendingOrder
|
||||
label = self.column_map[col]
|
||||
@ -321,6 +320,7 @@ class BooksModel(QAbstractTableModel): # {{{
|
||||
self._sort(field, order, reset)
|
||||
|
||||
def _sort(self, label, order, reset):
|
||||
self.about_to_be_sorted.emit(self.db.id)
|
||||
self.db.sort(label, order)
|
||||
if reset:
|
||||
self.reset()
|
||||
|
@ -246,6 +246,35 @@ class BooksView(QTableView): # {{{
|
||||
self.sortByColumn(idx, Qt.DescendingOrder)
|
||||
else:
|
||||
self._model.sort_by_named_field(field, order, reset)
|
||||
|
||||
def multisort(self, fields, reset=True, only_if_different=False):
|
||||
if len(fields) == 0:
|
||||
return
|
||||
sh = self.cleanup_sort_history(self._model.sort_history)
|
||||
if only_if_different and len(sh) >= len(fields):
|
||||
ret=True
|
||||
for i,t in enumerate(fields):
|
||||
if t[0] != sh[i][0]:
|
||||
ret = False
|
||||
break
|
||||
if ret:
|
||||
return
|
||||
|
||||
for n,d in reversed(fields):
|
||||
if n in self._model.db.field_metadata.keys():
|
||||
sh.insert(0, (n, d))
|
||||
sh = self.cleanup_sort_history(sh)
|
||||
self._model.sort_history = [tuple(x) for x in sh]
|
||||
self._model.resort(reset=reset)
|
||||
col = fields[0][0]
|
||||
dir = Qt.AscendingOrder if fields[0][1] else Qt.DescendingOrder
|
||||
if col in self.column_map:
|
||||
col = self.column_map.index(col)
|
||||
hdrs = self.horizontalHeader()
|
||||
try:
|
||||
hdrs.setSortIndicator(col, dir)
|
||||
except:
|
||||
pass
|
||||
# }}}
|
||||
|
||||
# Ondevice column {{{
|
||||
|
Loading…
x
Reference in New Issue
Block a user