Facility to add notes when inserting tracks

This commit is contained in:
Keith Edmunds 2022-10-02 14:05:25 +01:00
parent 11090b57ad
commit 2d62fb993f
4 changed files with 96 additions and 20 deletions

View File

@ -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:

View File

@ -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:

View File

@ -13,8 +13,8 @@
<property name="windowTitle">
<string>Dialog</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<layout class="QGridLayout" name="gridLayout">
<item row="0" column="0">
<widget class="QLabel" name="label">
@ -28,10 +28,42 @@
</item>
</layout>
</item>
<item row="1" column="0">
<item>
<widget class="QListWidget" name="matchList"/>
</item>
<item row="2" column="0">
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="lblNote">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>46</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string>&amp;Note:</string>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
<property name="buddy">
<cstring>txtNote</cstring>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="txtNote"/>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="QRadioButton" name="radioTitle">
@ -89,8 +121,14 @@
</item>
</layout>
</item>
<item row="3" column="0">
<item>
<widget class="QLabel" name="dbPath">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string/>
</property>

View File

@ -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"))