Implement random sort
This commit is contained in:
parent
b116f062e9
commit
609544ddd4
@ -7,6 +7,7 @@ from datetime import datetime, timedelta
|
|||||||
from enum import auto, Enum
|
from enum import auto, Enum
|
||||||
from operator import attrgetter
|
from operator import attrgetter
|
||||||
from pprint import pprint
|
from pprint import pprint
|
||||||
|
from random import shuffle
|
||||||
from typing import List, Optional
|
from typing import List, Optional
|
||||||
|
|
||||||
from PyQt6.QtCore import (
|
from PyQt6.QtCore import (
|
||||||
@ -1315,6 +1316,14 @@ class PlaylistModel(QAbstractTableModel):
|
|||||||
|
|
||||||
self.sort_by_attribute(row_numbers, "lastplayed")
|
self.sort_by_attribute(row_numbers, "lastplayed")
|
||||||
|
|
||||||
|
def sort_randomly(self, row_numbers: List[int]) -> None:
|
||||||
|
"""
|
||||||
|
Sort selected rows randomly
|
||||||
|
"""
|
||||||
|
|
||||||
|
shuffle(row_numbers)
|
||||||
|
self.move_rows(row_numbers, min(row_numbers))
|
||||||
|
|
||||||
def sort_by_title(self, row_numbers: List[int]) -> None:
|
def sort_by_title(self, row_numbers: List[int]) -> None:
|
||||||
"""
|
"""
|
||||||
Sort selected rows by title
|
Sort selected rows by title
|
||||||
@ -1603,6 +1612,9 @@ class PlaylistProxyModel(QSortFilterProxyModel):
|
|||||||
def sort_by_lastplayed(self, row_numbers: List[int]) -> None:
|
def sort_by_lastplayed(self, row_numbers: List[int]) -> None:
|
||||||
return self.source_model.sort_by_lastplayed(row_numbers)
|
return self.source_model.sort_by_lastplayed(row_numbers)
|
||||||
|
|
||||||
|
def sort_randomly(self, row_numbers: List[int]) -> None:
|
||||||
|
return self.source_model.sort_randomly(row_numbers)
|
||||||
|
|
||||||
def sort_by_title(self, row_numbers: List[int]) -> None:
|
def sort_by_title(self, row_numbers: List[int]) -> None:
|
||||||
return self.source_model.sort_by_title(row_numbers)
|
return self.source_model.sort_by_title(row_numbers)
|
||||||
|
|
||||||
|
|||||||
@ -487,6 +487,11 @@ class PlaylistTab(QTableView):
|
|||||||
lambda: proxy_model.sort_by_lastplayed(self.get_selected_rows()),
|
lambda: proxy_model.sort_by_lastplayed(self.get_selected_rows()),
|
||||||
parent_menu=sort_menu,
|
parent_menu=sort_menu,
|
||||||
)
|
)
|
||||||
|
self._add_context_menu(
|
||||||
|
"randomly",
|
||||||
|
lambda: proxy_model.sort_randomly(self.get_selected_rows()),
|
||||||
|
parent_menu=sort_menu,
|
||||||
|
)
|
||||||
|
|
||||||
# Info
|
# Info
|
||||||
if track_row:
|
if track_row:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user