From 87bd9577fde1b4c398d52ca5d6166182316d98b0 Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Mon, 22 Mar 2021 20:26:45 +0000 Subject: [PATCH] Can add to playlist from db --- app.py | 28 ++++++++++++++-------------- model.py | 7 ++++++- ui/main_window.ui | 3 +-- 3 files changed, 21 insertions(+), 17 deletions(-) diff --git a/app.py b/app.py index 83fbc06..cfb571f 100755 --- a/app.py +++ b/app.py @@ -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__": diff --git a/model.py b/model.py index 1ffaa3a..d7e9a2c 100644 --- a/model.py +++ b/model.py @@ -66,5 +66,10 @@ class Tracks(Base): @staticmethod def search_titles(text): return session.query(Tracks).filter( - Tracks.title.ilike(f"%{text}%") + Tracks.title.ilike(f"%{text}%") ).all() + + @staticmethod + def track_from_id(id): + return session.query(Tracks).filter( + Tracks.id == id).one() diff --git a/ui/main_window.ui b/ui/main_window.ui index 7c77d49..15ee168 100644 --- a/ui/main_window.ui +++ b/ui/main_window.ui @@ -208,7 +208,7 @@ border: 1px solid rgb(85, 87, 83); true - QAbstractItemView::ContiguousSelection + QAbstractItemView::SingleSelection QAbstractItemView::SelectRows @@ -294,7 +294,6 @@ border: 1px solid rgb(85, 87, 83); - layoutWidget playlist current_time fileButton