mirror of
https://github.com/ankitects/anki.git
synced 2025-09-19 14:32:22 -04:00
fix sort order toggling
We're getting an enum instead of an int in Qt6 normal/reversed have been renamed to ascending/descending; no add-ons appear to be using the old versions.
This commit is contained in:
parent
a447c3eb12
commit
3843a4509e
5 changed files with 37 additions and 16 deletions
|
@ -135,8 +135,8 @@ message FindAndReplaceRequest {
|
|||
message BrowserColumns {
|
||||
enum Sorting {
|
||||
SORTING_NONE = 0;
|
||||
SORTING_NORMAL = 1;
|
||||
SORTING_REVERSED = 2;
|
||||
SORTING_ASCENDING = 1;
|
||||
SORTING_DESCENDING = 2;
|
||||
}
|
||||
enum Alignment {
|
||||
ALIGNMENT_START = 0;
|
||||
|
@ -146,6 +146,7 @@ message BrowserColumns {
|
|||
string key = 1;
|
||||
string cards_mode_label = 2;
|
||||
string notes_mode_label = 3;
|
||||
// The default sort order
|
||||
Sorting sorting = 4;
|
||||
bool uses_cell_font = 5;
|
||||
Alignment alignment = 6;
|
||||
|
|
|
@ -74,6 +74,7 @@ class ItemState(ABC):
|
|||
|
||||
@property
|
||||
def sort_backwards(self) -> bool:
|
||||
"If true, descending order."
|
||||
return self._sort_backwards
|
||||
|
||||
@sort_backwards.setter
|
||||
|
|
|
@ -377,7 +377,10 @@ class Table:
|
|||
hh.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
|
||||
self._restore_header()
|
||||
qconnect(hh.customContextMenuRequested, self._on_header_context)
|
||||
qconnect(hh.sortIndicatorChanged, self._on_sort_column_changed)
|
||||
if qtmajor == 5:
|
||||
qconnect(hh.sortIndicatorChanged, self._on_sort_column_changed_qt5)
|
||||
else:
|
||||
qconnect(hh.sortIndicatorChanged, self._on_sort_column_changed)
|
||||
qconnect(hh.sectionMoved, self._on_column_moved)
|
||||
|
||||
# Slots
|
||||
|
@ -484,23 +487,29 @@ class Table:
|
|||
if checked:
|
||||
self._scroll_to_column(self._model.len_columns() - 1)
|
||||
|
||||
def _on_sort_column_changed(self, section: int, order: int) -> None:
|
||||
def _on_sort_column_changed_qt5(self, section: int, order: int) -> None:
|
||||
self._on_sort_column_changed(
|
||||
section,
|
||||
Qt.SortOrder.AscendingOrder if not order else Qt.SortOrder.DescendingOrder,
|
||||
)
|
||||
|
||||
def _on_sort_column_changed(self, section: int, order: Qt.SortOrder) -> None:
|
||||
column = self._model.column_at_section(section)
|
||||
if column.sorting == Columns.SORTING_NONE:
|
||||
showInfo(tr.browsing_sorting_on_this_column_is_not())
|
||||
self._set_sort_indicator()
|
||||
return
|
||||
order = bool(order)
|
||||
if self._state.sort_column != column.key:
|
||||
self._state.sort_column = column.key
|
||||
# default to descending for non-text fields
|
||||
if column.sorting == Columns.SORTING_REVERSED:
|
||||
order = not order
|
||||
self._state.sort_backwards = order
|
||||
# numeric fields default to descending
|
||||
if column.sorting == Columns.SORTING_DESCENDING:
|
||||
order = Qt.SortOrder.DescendingOrder
|
||||
self._state.sort_backwards = order == Qt.SortOrder.DescendingOrder
|
||||
self.browser.search()
|
||||
else:
|
||||
if self._state.sort_backwards != order:
|
||||
self._state.sort_backwards = order
|
||||
descending = order == Qt.SortOrder.DescendingOrder
|
||||
if self._state.sort_backwards != descending:
|
||||
self._state.sort_backwards = descending
|
||||
self._reverse()
|
||||
self._set_sort_indicator()
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ impl browser_table::Column {
|
|||
key: self.to_string(),
|
||||
cards_mode_label: self.cards_mode_label(i18n),
|
||||
notes_mode_label: self.notes_mode_label(i18n),
|
||||
sorting: self.sorting() as i32,
|
||||
sorting: self.default_order() as i32,
|
||||
uses_cell_font: self.uses_cell_font(),
|
||||
alignment: self.alignment() as i32,
|
||||
cards_mode_tooltip: self.cards_mode_tooltip(i18n),
|
||||
|
|
|
@ -177,12 +177,22 @@ impl Column {
|
|||
.into()
|
||||
}
|
||||
|
||||
pub fn sorting(self) -> pb::browser_columns::Sorting {
|
||||
pub fn default_order(self) -> pb::browser_columns::Sorting {
|
||||
use pb::browser_columns::Sorting;
|
||||
match self {
|
||||
Self::Question | Self::Answer | Self::Custom => Sorting::None,
|
||||
Self::SortField => Sorting::Reversed,
|
||||
_ => Sorting::Normal,
|
||||
Column::Question | Column::Answer | Column::Custom => Sorting::None,
|
||||
Column::SortField | Column::Tags | Column::Notetype | Column::Deck => {
|
||||
Sorting::Ascending
|
||||
}
|
||||
Column::CardMod
|
||||
| Column::Cards
|
||||
| Column::Due
|
||||
| Column::Ease
|
||||
| Column::Lapses
|
||||
| Column::Interval
|
||||
| Column::NoteCreation
|
||||
| Column::NoteMod
|
||||
| Column::Reps => Sorting::Descending,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue