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 datetime import datetime, timedelta
|
||||||
from enum import auto, Enum
|
from enum import auto, Enum
|
||||||
|
from operator import attrgetter
|
||||||
from typing import List, Optional
|
from typing import List, Optional
|
||||||
|
|
||||||
from PyQt6.QtCore import (
|
from PyQt6.QtCore import (
|
||||||
@ -897,35 +898,44 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
Sort selected rows by artist
|
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
|
Sort selected rows by passed attribute name where 'attribute' is a
|
||||||
"""
|
key in PlaylistRowData
|
||||||
|
|
||||||
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
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Create a subset of playlist_rows with the rows we are
|
# Create a subset of playlist_rows with the rows we are
|
||||||
# interested in
|
# interested in
|
||||||
shortlist_rows = {k: self.playlist_rows[k] for k in row_numbers}
|
shortlist_rows = {k: self.playlist_rows[k] for k in row_numbers}
|
||||||
sorted_list = [
|
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))
|
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:
|
def supportedDropActions(self) -> Qt.DropAction:
|
||||||
return Qt.DropAction.MoveAction | Qt.DropAction.CopyAction
|
return Qt.DropAction.MoveAction | Qt.DropAction.CopyAction
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user