Can add to playlist from db

This commit is contained in:
Keith Edmunds 2021-03-22 20:26:45 +00:00
parent a6b089a5ae
commit 87bd9577fd
3 changed files with 21 additions and 17 deletions

28
app.py
View File

@ -12,7 +12,7 @@ from tinytag import TinyTag
from main_window_ui import Ui_MainWindow
from dlg_search_database_ui import Ui_Dialog
from songdb import Tracks
from model import Tracks
class RepeatedTimer:
@ -163,14 +163,6 @@ class Window(QMainWindow, Ui_MainWindow):
def connectSignalsSlots(self):
self.fileButton.clicked.connect(self.selectFile)
self.databaseButton.clicked.connect(self.selectDatabase)
# import ipdb; ipdb.set_trace()
# self.playlist.columnResized.connect(self.playlistresize)
# self.playlist.horizontalHeader().sectionResized.connect(self.kae)
# import ipdb; ipdb.set_trace()
# self.playlist.viewport().installEventFilter(self)
# self.playlist.horizontalHeader().sectionClicked.connect(self.kae2)
# x = self.playlist.horizontalHeader()
# import ipdb; ipdb.set_trace()
def selectDatabase(self):
dlg = DbDialog(self)
@ -189,17 +181,23 @@ class Window(QMainWindow, Ui_MainWindow):
self.add_to_playlist(track)
def add_to_playlist(self, track):
"""
Add track to playlist
track is an instance of Track
"""
pl = self.playlist
row = pl.rowCount()
pl.insertRow(row)
item = QTableWidgetItem(track.title)
pl.setItem(row, 1, item)
item = QTableWidgetItem(track.artist)
pl.setItem(row, 2, item)
item = QTableWidgetItem(self.ms_to_mmss(track.length))
item = QTableWidgetItem(track.artist)
pl.setItem(row, 3, item)
item = QTableWidgetItem(self.ms_to_mmss(track.length))
pl.setItem(row, 4, item)
item = QTableWidgetItem(track.path)
pl.setItem(row, 6, item)
pl.setItem(row, 7, item)
class DbDialog(QDialog):
@ -222,7 +220,9 @@ class DbDialog(QDialog):
self.ui.listWidget.addItem(t)
def listdclick(self, entry):
print(f"clicked entry id={entry.data(Qt.UserRole)}")
track_id = entry.data(Qt.UserRole)
track = Tracks.track_from_id(track_id)
self.parent().add_to_playlist(track)
if __name__ == "__main__":

View File

@ -68,3 +68,8 @@ class Tracks(Base):
return session.query(Tracks).filter(
Tracks.title.ilike(f"%{text}%")
).all()
@staticmethod
def track_from_id(id):
return session.query(Tracks).filter(
Tracks.id == id).one()

View File

@ -208,7 +208,7 @@ border: 1px solid rgb(85, 87, 83);</string>
<bool>true</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::ContiguousSelection</enum>
<enum>QAbstractItemView::SingleSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
@ -294,7 +294,6 @@ border: 1px solid rgb(85, 87, 83);</string>
</widget>
</item>
</layout>
<zorder>layoutWidget</zorder>
<zorder>playlist</zorder>
<zorder>current_time</zorder>
<zorder>fileButton</zorder>