GUI: Sorting is persistent over DB updates
Build and Publish / build (push) Successful in 22s

This commit is contained in:
2025-06-20 16:44:12 +02:00
parent d083a1f4e0
commit 9dcd322ddd
+17 -7
View File
@@ -48,6 +48,8 @@ class UserSampleSpreadsheet(QAbstractTableModel):
]
self.current_sample = current_sample
self.current_puck = current_puck
self.__sort_col = 1
self.__sort_order = Qt.SortOrder.AscendingOrder
def rowCount(self, parent=None):
return len(self.samples)
@@ -86,34 +88,42 @@ class UserSampleSpreadsheet(QAbstractTableModel):
self,
samples: list[SampleShortInfo]
):
if self.samples != samples:
current_set = set(self.samples)
new_set = set(samples)
if current_set != new_set:
self.beginResetModel()
self.samples = samples
self.sort_internal()
self.endResetModel()
def sort(self, column, order):
self.layoutAboutToBeChanged.emit()
self.__sort_order = order
self.__sort_col = column
self.sort_internal()
self.layoutChanged.emit()
if column == 3:
def sort_internal(self):
if self.__sort_col == 3:
self.samples = sorted(
self.samples,
key=lambda row: row.loc_str_sort(),
reverse=(
order == Qt.SortOrder.DescendingOrder
self.__sort_order == Qt.SortOrder.DescendingOrder
), # Reverse for descending order
)
else:
# Sort the samples based on the specified column and order
self.samples = sorted(
self.samples,
key=lambda row: get_entry(row, column),
key=lambda row: get_entry(row, self.__sort_col),
reverse=(
order == Qt.SortOrder.DescendingOrder
self.__sort_order == Qt.SortOrder.DescendingOrder
), # Reverse for descending order
)
# Notify views that the model layout has changed
self.layoutChanged.emit()
def flags(self, index):
default_flags = super().flags(index)