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