GUI: Sorting works

This commit is contained in:
leonarski_f committed 2025-06-21 14:04:30 +02:00
1 parent 49d57e66e4
commit 90b4207a34
1 file changed
+13 -15
+13 -15
View File
@@ -50,22 +50,23 @@ class UserSampleSpreadsheet(QAbstractTableModel):
self.current_puck = current_puck
self.__sort_col = 1
self.__sort_order = Qt.SortOrder.AscendingOrder
self._sort()
def rowCount(self, parent=None):
return len(self.samples)
return len(self.__sorted_samples)
def columnCount(self, parent=None):
return len(self.header)
def data(self, index, role=None):
if role == Qt.ItemDataRole.DisplayRole:
return get_entry(self.samples[index.row()], index.column())
return get_entry(self.__sorted_samples[index.row()], index.column())
elif role == Qt.ItemDataRole.TextAlignmentRole: # Align text to center
return Qt.AlignmentFlag.AlignCenter
elif role == Qt.ItemDataRole.BackgroundRole:
if self.samples[index.row()].db_id == self.current_sample:
if self.__sorted_samples[index.row()].db_id == self.current_sample:
return QBrush(QColor(114, 159, 207)) # darker blue
if self.samples[index.row()].puck_name == self.current_puck:
if self.__sorted_samples[index.row()].puck_name == self.current_puck:
return QBrush(QColor(216, 228, 253)) # light blue
return QBrush(QColor(255, 255, 255)) # White
return None # For other roles, return None
@@ -88,26 +89,23 @@ class UserSampleSpreadsheet(QAbstractTableModel):
self,
samples: list[SampleShortInfo]
):
current_set = set(self.samples)
new_set = set(samples)
if current_set != new_set:
if samples != self.samples:
self.beginResetModel()
self.samples = samples
self.sort_internal()
self._sort()
self.endResetModel()
def sort(self, column, order):
self.layoutAboutToBeChanged.emit()
self.__sort_order = order
self.__sort_col = column
self.sort_internal()
self._sort()
self.layoutChanged.emit()
def sort_internal(self):
def _sort(self):
if self.__sort_col == 3:
self.samples = sorted(
self.__sorted_samples = sorted(
self.samples,
key=lambda row: row.loc_str_sort(),
reverse=(
@@ -116,7 +114,7 @@ class UserSampleSpreadsheet(QAbstractTableModel):
)
else:
# Sort the samples based on the specified column and order
self.samples = sorted(
self.__sorted_samples = sorted(
self.samples,
key=lambda row: get_entry(row, self.__sort_col),
reverse=(
@@ -140,10 +138,10 @@ class UserSampleSpreadsheet(QAbstractTableModel):
l = SampleShortInfoList(s=[])
for i in set(index.row() for index in indexes):
l.s.append(self.samples[i])
l.s.append(self.__sorted_samples[i])
mime_data.setText(l.model_dump_json())
return mime_data
def get_id(self, row: int) -> SampleShortInfo:
return self.samples[row]
return self.__sorted_samples[row]