WIP V3: sort by each element implemented
This commit is contained in:
parent
d5871fe77f
commit
3e49ad08b9
@ -1,5 +1,6 @@
|
||||
from datetime import datetime, timedelta
|
||||
from enum import auto, Enum
|
||||
from operator import attrgetter
|
||||
from typing import List, Optional
|
||||
|
||||
from PyQt6.QtCore import (
|
||||
@ -897,35 +898,44 @@ class PlaylistModel(QAbstractTableModel):
|
||||
Sort selected rows by artist
|
||||
"""
|
||||
|
||||
pass
|
||||
self.sort_by_attribute(row_numbers, 'artist')
|
||||
|
||||
def sort_by_duration(self, row_numbers: List[int]) -> None:
|
||||
def sort_by_attribute(self, row_numbers: List[int], attr_name: str) -> None:
|
||||
"""
|
||||
Sort selected rows by duration
|
||||
"""
|
||||
|
||||
pass
|
||||
|
||||
def sort_by_lastplayed(self, row_numbers: List[int]) -> None:
|
||||
"""
|
||||
Sort selected rows by lastplayed
|
||||
"""
|
||||
|
||||
pass
|
||||
|
||||
def sort_by_title(self, row_numbers: List[int]) -> None:
|
||||
"""
|
||||
Sort selected rows by title
|
||||
Sort selected rows by passed attribute name where 'attribute' is a
|
||||
key in PlaylistRowData
|
||||
"""
|
||||
|
||||
# Create a subset of playlist_rows with the rows we are
|
||||
# interested in
|
||||
shortlist_rows = {k: self.playlist_rows[k] for k in row_numbers}
|
||||
sorted_list = [
|
||||
k for k, v in sorted(shortlist_rows.items(), key=lambda item: item[1].title)
|
||||
plr.plr_rownum for plr in
|
||||
sorted(shortlist_rows.values(), key=attrgetter(attr_name))
|
||||
]
|
||||
self.move_rows(sorted_list, min(sorted_list))
|
||||
|
||||
def sort_by_duration(self, row_numbers: List[int]) -> None:
|
||||
"""
|
||||
Sort selected rows by duration
|
||||
"""
|
||||
|
||||
self.sort_by_attribute(row_numbers, 'duration')
|
||||
|
||||
def sort_by_lastplayed(self, row_numbers: List[int]) -> None:
|
||||
"""
|
||||
Sort selected rows by lastplayed
|
||||
"""
|
||||
|
||||
self.sort_by_attribute(row_numbers, 'lastplayed')
|
||||
|
||||
def sort_by_title(self, row_numbers: List[int]) -> None:
|
||||
"""
|
||||
Sort selected rows by title
|
||||
"""
|
||||
|
||||
self.sort_by_attribute(row_numbers, 'title')
|
||||
|
||||
def supportedDropActions(self) -> Qt.DropAction:
|
||||
return Qt.DropAction.MoveAction | Qt.DropAction.CopyAction
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user