Fix move selected tracks
This commit is contained in:
parent
ebfdf98612
commit
976eb91e30
@ -6,7 +6,7 @@ import sys
|
||||
import urllib.parse
|
||||
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
from datetime import datetime
|
||||
from log import DEBUG, EXCEPTION
|
||||
from typing import Callable, Dict, List, Optional, Tuple
|
||||
|
||||
@ -32,7 +32,6 @@ from config import Config
|
||||
from models import (Base, Playdates, Playlists, PlaylistTracks,
|
||||
Settings, Tracks)
|
||||
from playlists import PlaylistTab
|
||||
from utilities import create_track_from_file
|
||||
from sqlalchemy.orm.exc import DetachedInstanceError
|
||||
from ui.dlg_search_database_ui import Ui_Dialog
|
||||
from ui.dlg_SelectPlaylist_ui import Ui_dlgSelectPlaylist
|
||||
@ -407,20 +406,25 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
visible_tab = self.visible_playlist_tab()
|
||||
visible_tab_id = visible_tab.playlist_id
|
||||
|
||||
playlists = [p for p in Playlists.get_all(session)
|
||||
if p.id != visible_tab_id]
|
||||
source_playlist = None
|
||||
playlists = []
|
||||
for playlist in Playlists.get_all(session):
|
||||
if playlist.id == visible_tab_id:
|
||||
source_playlist = playlist
|
||||
else:
|
||||
playlists.append(playlist)
|
||||
|
||||
# Get destination playlist id
|
||||
dlg = SelectPlaylistDialog(self, playlists=playlists,
|
||||
session=session)
|
||||
dlg.exec()
|
||||
if not dlg.plid:
|
||||
if not dlg.playlist:
|
||||
return
|
||||
destination_playlist = dlg.playlist
|
||||
|
||||
# Update database for both source and destination playlists
|
||||
rows = visible_tab.get_selected_rows()
|
||||
for row in rows:
|
||||
PlaylistTracks.move_track(
|
||||
session, visible_tab.playlist_id, row, dlg.plid
|
||||
)
|
||||
source_playlist.move_track(session, rows, destination_playlist)
|
||||
|
||||
# Update destination playlist_tab if visible (if not visible, it
|
||||
# will be re-populated when it is opened)
|
||||
@ -429,13 +433,16 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
# Non-playlist tabs won't have a 'playlist_id' attribute
|
||||
if not hasattr(self.tabPlaylist.widget(tab), 'playlist_id'):
|
||||
continue
|
||||
if self.tabPlaylist.widget(tab).playlist_id == dlg.plid:
|
||||
if self.tabPlaylist.widget(tab).playlist_id == dlg.playlist.id:
|
||||
destination_visible_playlist_tab = (
|
||||
self.tabPlaylist.widget(tab))
|
||||
break
|
||||
|
||||
if destination_visible_playlist_tab:
|
||||
destination_visible_playlist_tab.populate(session, dlg.plid)
|
||||
# We need to commit to database for populate to work
|
||||
session.commit()
|
||||
destination_visible_playlist_tab.populate(
|
||||
session, dlg.playlist.id)
|
||||
|
||||
# Update source playlist
|
||||
self.visible_playlist_tab().remove_rows(rows)
|
||||
@ -964,10 +971,15 @@ class SelectPlaylistDialog(QDialog):
|
||||
height = record.f_int or 600
|
||||
self.resize(width, height)
|
||||
|
||||
for (plid, plname) in [(a.id, a.name) for a in playlists]:
|
||||
# for (plid, plname) in [(a.id, a.name) for a in playlists]:
|
||||
# p = QListWidgetItem()
|
||||
# p.setText(plname)
|
||||
# p.setData(Qt.UserRole, plid)
|
||||
# self.ui.lstPlaylists.addItem(p)
|
||||
for playlist in playlists:
|
||||
p = QListWidgetItem()
|
||||
p.setText(plname)
|
||||
p.setData(Qt.UserRole, plid)
|
||||
p.setText(playlist.name)
|
||||
p.setData(Qt.UserRole, playlist)
|
||||
self.ui.lstPlaylists.addItem(p)
|
||||
|
||||
def __del__(self): # review
|
||||
@ -982,13 +994,13 @@ class SelectPlaylistDialog(QDialog):
|
||||
record.update(self.session, {'f_int': self.width()})
|
||||
|
||||
def list_doubleclick(self, entry): # review
|
||||
self.plid = entry.data(Qt.UserRole)
|
||||
self.playlist = entry.data(Qt.UserRole)
|
||||
self.accept()
|
||||
|
||||
def open(self): # review
|
||||
if self.ui.lstPlaylists.selectedItems():
|
||||
item = self.ui.lstPlaylists.currentItem()
|
||||
self.plid = item.data(Qt.UserRole)
|
||||
self.playlist = item.data(Qt.UserRole)
|
||||
self.accept()
|
||||
|
||||
|
||||
|
||||
@ -34,7 +34,7 @@ from models import (
|
||||
)
|
||||
from dbconfig import Session
|
||||
|
||||
start_time_re = re.compile(r"@\d\d:\d\d\:\d\d")
|
||||
start_time_re = re.compile(r"@\d\d:\d\d:\d\d")
|
||||
|
||||
|
||||
class RowMeta:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user