diff --git a/app/musicmuster.py b/app/musicmuster.py
index 8db848b..93d2955 100755
--- a/app/musicmuster.py
+++ b/app/musicmuster.py
@@ -1080,6 +1080,10 @@ class DbDialog(QDialog):
self.ui.searchString.textEdited.connect(self.chars_typed)
self.ui.track = None
+ if get_one_track:
+ self.ui.txtNote.hide()
+ self.ui.lblNote.hide()
+
record = Settings.get_int_settings(self.session, "dbdialog_width")
width = record.f_int or 800
record = Settings.get_int_settings(self.session, "dbdialog_height")
@@ -1100,11 +1104,14 @@ class DbDialog(QDialog):
def add_selected(self) -> None:
"""Handle Add button"""
- if not self.ui.matchList.selectedItems():
+ if (not self.ui.matchList.selectedItems() and
+ not self.ui.txtNote.text()):
return
+ track = None
item = self.ui.matchList.currentItem()
- track = item.data(Qt.UserRole)
+ if item:
+ track = item.data(Qt.UserRole)
self.add_track(track)
def add_selected_and_close(self) -> None:
@@ -1121,10 +1128,13 @@ class DbDialog(QDialog):
self.accept()
return
- self.parent().visible_playlist_tab().insert_track(self.session, track)
+ self.parent().visible_playlist_tab().insert_track(
+ self.session, track, note=self.ui.txtNote.text())
# Commit session to get correct row numbers if more tracks added
self.session.commit()
- # Select search text to make it easier for next search
+ # Clear note field and select search text to make it easier for
+ # next search
+ self.ui.txtNote.clear()
self.select_searchtext()
def chars_typed(self, s: str) -> None:
diff --git a/app/playlists.py b/app/playlists.py
index 6514a39..bff9f72 100644
--- a/app/playlists.py
+++ b/app/playlists.py
@@ -680,8 +680,8 @@ class PlaylistTab(QTableWidget):
self.save_playlist(session)
self.update_display(session, clear_selection=False)
- def insert_track(self, session: Session, track: Tracks,
- repaint: bool = True) -> None:
+ def insert_track(self, session: Session, track: Optional[Tracks],
+ note: str = None, repaint: bool = True) -> None:
"""
Insert track into playlist tab.
@@ -696,7 +696,12 @@ class PlaylistTab(QTableWidget):
# can be reset by calling PlaylistRows.fixup_rownumbers() later,
# so just fudge a row number for now.
row_number = 0
- plr = PlaylistRows(session, self.playlist_id, track.id, row_number)
+ if track:
+ track_id = track.id
+ else:
+ track_id = None
+ plr = PlaylistRows(session, self.playlist_id,
+ track_id, row_number, note)
self.insert_row(session, plr)
PlaylistRows.fixup_rownumbers(session, self.playlist_id)
if repaint:
diff --git a/app/ui/dlg_SearchDatabase.ui b/app/ui/dlg_SearchDatabase.ui
index ba48dee..c8af805 100644
--- a/app/ui/dlg_SearchDatabase.ui
+++ b/app/ui/dlg_SearchDatabase.ui
@@ -13,8 +13,8 @@
Dialog
-
- -
+
+
-
-
@@ -28,10 +28,42 @@
- -
+
-
- -
+
-
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 46
+ 16777215
+
+
+
+ &Note:
+
+
+ Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop
+
+
+ txtNote
+
+
+
+ -
+
+
+
+
+ -
-
@@ -89,8 +121,14 @@
- -
+
-
+
+
+ 0
+ 0
+
+
diff --git a/app/ui/dlg_search_database_ui.py b/app/ui/dlg_search_database_ui.py
index d82b29c..e373884 100644
--- a/app/ui/dlg_search_database_ui.py
+++ b/app/ui/dlg_search_database_ui.py
@@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
-# Form implementation generated from reading ui file 'ui/dlg_SearchDatabase.ui'
+# Form implementation generated from reading ui file 'app/ui/dlg_SearchDatabase.ui'
#
-# Created by: PyQt5 UI code generator 5.15.4
+# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again. Do not edit this file unless you know what you are doing.
@@ -15,8 +15,8 @@ class Ui_Dialog(object):
def setupUi(self, Dialog):
Dialog.setObjectName("Dialog")
Dialog.resize(584, 377)
- self.gridLayout_2 = QtWidgets.QGridLayout(Dialog)
- self.gridLayout_2.setObjectName("gridLayout_2")
+ self.verticalLayout = QtWidgets.QVBoxLayout(Dialog)
+ self.verticalLayout.setObjectName("verticalLayout")
self.gridLayout = QtWidgets.QGridLayout()
self.gridLayout.setObjectName("gridLayout")
self.label = QtWidgets.QLabel(Dialog)
@@ -25,10 +25,26 @@ class Ui_Dialog(object):
self.searchString = QtWidgets.QLineEdit(Dialog)
self.searchString.setObjectName("searchString")
self.gridLayout.addWidget(self.searchString, 0, 1, 1, 1)
- self.gridLayout_2.addLayout(self.gridLayout, 0, 0, 1, 1)
+ self.verticalLayout.addLayout(self.gridLayout)
self.matchList = QtWidgets.QListWidget(Dialog)
self.matchList.setObjectName("matchList")
- self.gridLayout_2.addWidget(self.matchList, 1, 0, 1, 1)
+ self.verticalLayout.addWidget(self.matchList)
+ self.horizontalLayout_2 = QtWidgets.QHBoxLayout()
+ self.horizontalLayout_2.setObjectName("horizontalLayout_2")
+ self.lblNote = QtWidgets.QLabel(Dialog)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.lblNote.sizePolicy().hasHeightForWidth())
+ self.lblNote.setSizePolicy(sizePolicy)
+ self.lblNote.setMaximumSize(QtCore.QSize(46, 16777215))
+ self.lblNote.setAlignment(QtCore.Qt.AlignLeading|QtCore.Qt.AlignLeft|QtCore.Qt.AlignTop)
+ self.lblNote.setObjectName("lblNote")
+ self.horizontalLayout_2.addWidget(self.lblNote)
+ self.txtNote = QtWidgets.QLineEdit(Dialog)
+ self.txtNote.setObjectName("txtNote")
+ self.horizontalLayout_2.addWidget(self.txtNote)
+ self.verticalLayout.addLayout(self.horizontalLayout_2)
self.horizontalLayout = QtWidgets.QHBoxLayout()
self.horizontalLayout.setObjectName("horizontalLayout")
self.radioTitle = QtWidgets.QRadioButton(Dialog)
@@ -50,11 +66,17 @@ class Ui_Dialog(object):
self.btnClose = QtWidgets.QPushButton(Dialog)
self.btnClose.setObjectName("btnClose")
self.horizontalLayout.addWidget(self.btnClose)
- self.gridLayout_2.addLayout(self.horizontalLayout, 2, 0, 1, 1)
+ self.verticalLayout.addLayout(self.horizontalLayout)
self.dbPath = QtWidgets.QLabel(Dialog)
+ sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Preferred)
+ sizePolicy.setHorizontalStretch(0)
+ sizePolicy.setVerticalStretch(0)
+ sizePolicy.setHeightForWidth(self.dbPath.sizePolicy().hasHeightForWidth())
+ self.dbPath.setSizePolicy(sizePolicy)
self.dbPath.setText("")
self.dbPath.setObjectName("dbPath")
- self.gridLayout_2.addWidget(self.dbPath, 3, 0, 1, 1)
+ self.verticalLayout.addWidget(self.dbPath)
+ self.lblNote.setBuddy(self.txtNote)
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
@@ -63,6 +85,7 @@ class Ui_Dialog(object):
_translate = QtCore.QCoreApplication.translate
Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
self.label.setText(_translate("Dialog", "Title:"))
+ self.lblNote.setText(_translate("Dialog", "&Note:"))
self.radioTitle.setText(_translate("Dialog", "&Title"))
self.radioArtist.setText(_translate("Dialog", "&Artist"))
self.btnAdd.setText(_translate("Dialog", "&Add"))