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 main_window_ui import Ui_MainWindow
from dlg_search_database_ui import Ui_Dialog from dlg_search_database_ui import Ui_Dialog
from songdb import Tracks from model import Tracks
class RepeatedTimer: class RepeatedTimer:
@ -163,14 +163,6 @@ class Window(QMainWindow, Ui_MainWindow):
def connectSignalsSlots(self): def connectSignalsSlots(self):
self.fileButton.clicked.connect(self.selectFile) self.fileButton.clicked.connect(self.selectFile)
self.databaseButton.clicked.connect(self.selectDatabase) 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): def selectDatabase(self):
dlg = DbDialog(self) dlg = DbDialog(self)
@ -189,17 +181,23 @@ class Window(QMainWindow, Ui_MainWindow):
self.add_to_playlist(track) self.add_to_playlist(track)
def add_to_playlist(self, track): def add_to_playlist(self, track):
"""
Add track to playlist
track is an instance of Track
"""
pl = self.playlist pl = self.playlist
row = pl.rowCount() row = pl.rowCount()
pl.insertRow(row) pl.insertRow(row)
item = QTableWidgetItem(track.title) item = QTableWidgetItem(track.title)
pl.setItem(row, 1, item)
item = QTableWidgetItem(track.artist)
pl.setItem(row, 2, item) pl.setItem(row, 2, item)
item = QTableWidgetItem(self.ms_to_mmss(track.length)) item = QTableWidgetItem(track.artist)
pl.setItem(row, 3, item) pl.setItem(row, 3, item)
item = QTableWidgetItem(self.ms_to_mmss(track.length))
pl.setItem(row, 4, item)
item = QTableWidgetItem(track.path) item = QTableWidgetItem(track.path)
pl.setItem(row, 6, item) pl.setItem(row, 7, item)
class DbDialog(QDialog): class DbDialog(QDialog):
@ -222,7 +220,9 @@ class DbDialog(QDialog):
self.ui.listWidget.addItem(t) self.ui.listWidget.addItem(t)
def listdclick(self, entry): 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__": if __name__ == "__main__":

View File

@ -68,3 +68,8 @@ class Tracks(Base):
return session.query(Tracks).filter( return session.query(Tracks).filter(
Tracks.title.ilike(f"%{text}%") Tracks.title.ilike(f"%{text}%")
).all() ).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> <bool>true</bool>
</property> </property>
<property name="selectionMode"> <property name="selectionMode">
<enum>QAbstractItemView::ContiguousSelection</enum> <enum>QAbstractItemView::SingleSelection</enum>
</property> </property>
<property name="selectionBehavior"> <property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum> <enum>QAbstractItemView::SelectRows</enum>
@ -294,7 +294,6 @@ border: 1px solid rgb(85, 87, 83);</string>
</widget> </widget>
</item> </item>
</layout> </layout>
<zorder>layoutWidget</zorder>
<zorder>playlist</zorder> <zorder>playlist</zorder>
<zorder>current_time</zorder> <zorder>current_time</zorder>
<zorder>fileButton</zorder> <zorder>fileButton</zorder>