Compare commits
5 Commits
4c420d01ca
...
f19fc2e8c0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f19fc2e8c0 | ||
|
|
40b5fc020d | ||
|
|
98a8e20baa | ||
|
|
3cec08db85 | ||
|
|
f5b26028f5 |
@ -534,6 +534,7 @@ class RowAndTrack:
|
||||
return (
|
||||
f"<RowAndTrack(playlist_id={self.playlist_id}, "
|
||||
f"row_number={self.row_number}, "
|
||||
f"playlistrow_id={self.playlistrow_id}, "
|
||||
f"note={self.note}, track_id={self.track_id}>"
|
||||
)
|
||||
|
||||
|
||||
@ -8,7 +8,6 @@ import sys
|
||||
# PyQt imports
|
||||
|
||||
# Third party imports
|
||||
import line_profiler
|
||||
from sqlalchemy import (
|
||||
bindparam,
|
||||
delete,
|
||||
@ -564,7 +563,6 @@ class PlaylistRows(dbtables.PlaylistRowsTable):
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
@line_profiler.profile
|
||||
def update_plr_row_numbers(
|
||||
session: Session, playlist_id: int, sqla_map: List[dict[str, int]]
|
||||
) -> None:
|
||||
|
||||
@ -44,7 +44,6 @@ from PyQt6.QtWidgets import (
|
||||
)
|
||||
|
||||
# Third party imports
|
||||
import line_profiler
|
||||
import pipeclient
|
||||
from pygame import mixer
|
||||
from sqlalchemy.exc import IntegrityError
|
||||
@ -1069,8 +1068,7 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
else:
|
||||
webbrowser.get("browser").open_new_tab(url)
|
||||
|
||||
@line_profiler.profile
|
||||
def paste_rows(self, dummy_for_profiling=None) -> None:
|
||||
def paste_rows(self) -> None:
|
||||
"""
|
||||
Paste earlier cut rows.
|
||||
"""
|
||||
@ -1085,6 +1083,16 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
else:
|
||||
destination_row = self.active_proxy_model().rowCount()
|
||||
|
||||
# If we move a row to immediately under the current track, make
|
||||
# that moved row the next track
|
||||
set_next_row: Optional[int] = None
|
||||
if (
|
||||
track_sequence.current
|
||||
and track_sequence.current.playlist_id == to_playlist_model.playlist_id
|
||||
and destination_row == track_sequence.current.row_number + 1
|
||||
):
|
||||
set_next_row = destination_row
|
||||
|
||||
if (
|
||||
to_playlist_model.playlist_id
|
||||
== self.move_source_model.source_model.playlist_id
|
||||
@ -1097,6 +1105,9 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
self.active_tab().resize_rows()
|
||||
self.active_tab().clear_selection()
|
||||
|
||||
if set_next_row:
|
||||
to_playlist_model.set_next_row(set_next_row)
|
||||
|
||||
def play_next(self, position: Optional[float] = None) -> None:
|
||||
"""
|
||||
Play next track, optionally from passed position.
|
||||
|
||||
@ -26,7 +26,6 @@ from PyQt6.QtGui import (
|
||||
)
|
||||
|
||||
# Third party imports
|
||||
import line_profiler
|
||||
import obswebsocket # type: ignore
|
||||
|
||||
# import snoop # type: ignore
|
||||
@ -737,8 +736,7 @@ class PlaylistModel(QAbstractTableModel):
|
||||
self.update_track_times()
|
||||
self.invalidate_rows(row_numbers)
|
||||
|
||||
@line_profiler.profile
|
||||
def move_rows(self, from_rows: list[int], to_row_number: int, dummy_for_profiling=None) -> None:
|
||||
def move_rows(self, from_rows: list[int], to_row_number: int) -> None:
|
||||
"""
|
||||
Move the playlist rows given to to_row and below.
|
||||
"""
|
||||
@ -785,18 +783,6 @@ class PlaylistModel(QAbstractTableModel):
|
||||
if old_row != new_row:
|
||||
row_map[old_row] = new_row
|
||||
|
||||
# Check to see whether any rows in track_sequence have moved
|
||||
if track_sequence.previous and track_sequence.previous.row_number in row_map:
|
||||
track_sequence.previous.row_number = row_map[
|
||||
track_sequence.previous.row_number
|
||||
]
|
||||
if track_sequence.current and track_sequence.current.row_number in row_map:
|
||||
track_sequence.current.row_number = row_map[
|
||||
track_sequence.current.row_number
|
||||
]
|
||||
if track_sequence.next and track_sequence.next.row_number in row_map:
|
||||
track_sequence.next.row_number = row_map[track_sequence.next.row_number]
|
||||
|
||||
# For SQLAlchemy, build a list of dictionaries that map playlistrow_id to
|
||||
# new row number:
|
||||
sqla_map: list[dict[str, int]] = []
|
||||
@ -989,8 +975,7 @@ class PlaylistModel(QAbstractTableModel):
|
||||
# Update display
|
||||
self.invalidate_row(track_sequence.previous.row_number)
|
||||
|
||||
@line_profiler.profile
|
||||
def refresh_data(self, session: db.session, dummy_for_profiling=None) -> None:
|
||||
def refresh_data(self, session: db.session) -> None:
|
||||
"""Populate self.playlist_rows with playlist data"""
|
||||
|
||||
# We used to clear self.playlist_rows each time but that's
|
||||
|
||||
@ -296,6 +296,15 @@ class PlaylistTab(QTableView):
|
||||
and 0 <= max(from_rows) <= self.source_model.rowCount()
|
||||
and 0 <= to_model_row <= self.source_model.rowCount()
|
||||
):
|
||||
# If we move a row to immediately under the current track, make
|
||||
# that moved row the next track
|
||||
set_next_row: Optional[int] = None
|
||||
if (
|
||||
track_sequence.current
|
||||
and to_model_row == track_sequence.current.row_number + 1
|
||||
):
|
||||
set_next_row = to_model_row
|
||||
|
||||
self.source_model.move_rows(from_rows, to_model_row)
|
||||
|
||||
# Reset drag mode to allow row selection by dragging
|
||||
@ -307,6 +316,10 @@ class PlaylistTab(QTableView):
|
||||
# Resize rows
|
||||
self.resize_rows()
|
||||
|
||||
# Set next row if we are immediately under current row
|
||||
if set_next_row:
|
||||
self.source_model.set_next_row(set_next_row)
|
||||
|
||||
event.accept()
|
||||
|
||||
def mouseReleaseEvent(self, event):
|
||||
|
||||
Loading…
Reference in New Issue
Block a user