|
@@ -14,6 +14,7 @@ from core.logging_ import Logger
|
|
|
from core.models import MusicFolder, TrackTag
|
|
from core.models import MusicFolder, TrackTag
|
|
|
from core.repositories import MusicFolderRepository, TrackRepository, SessionTrackRepository, SessionRepository, \
|
|
from core.repositories import MusicFolderRepository, TrackRepository, SessionTrackRepository, SessionRepository, \
|
|
|
TrackTagRepository
|
|
TrackTagRepository
|
|
|
|
|
+from ui.qt.dlg_meta_editor import DlgMetaEditor
|
|
|
from ui.qt.dlg_playlist import DlgPlaylist
|
|
from ui.qt.dlg_playlist import DlgPlaylist
|
|
|
from ui.qt.dlg_select_playlist import DlgSelectPlaylist
|
|
from ui.qt.dlg_select_playlist import DlgSelectPlaylist
|
|
|
from ui.qt.dlg_tag_editor import DlgTagEditor
|
|
from ui.qt.dlg_tag_editor import DlgTagEditor
|
|
@@ -77,8 +78,11 @@ class MainWindow(QMainWindow):
|
|
|
self.ui.explorerLineSearch.textChanged.connect(lambda s: (s or self.explorerSearchChanged())) # when search bar is cleared
|
|
self.ui.explorerLineSearch.textChanged.connect(lambda s: (s or self.explorerSearchChanged())) # when search bar is cleared
|
|
|
self.ui.explorerBtnSearch.clicked.connect(self.explorerSearchChanged)
|
|
self.ui.explorerBtnSearch.clicked.connect(self.explorerSearchChanged)
|
|
|
|
|
|
|
|
|
|
+ self.ui.explorerTrackEdit.clicked.connect(self.showMetaEditor)
|
|
|
|
|
+
|
|
|
# self.ui.btnEditTags.clicked.connect(self.showTagsEditor)
|
|
# self.ui.btnEditTags.clicked.connect(self.showTagsEditor)
|
|
|
- self.ui.explorerTrackTagsTable.selectionChanged.connect(self.updateTrackTags)
|
|
|
|
|
|
|
+ self.ui.explorerTrackTagsTable.tagChecked.connect(self.addTrackTags)
|
|
|
|
|
+ self.ui.explorerTrackTagsTable.tagUnchecked.connect(self.removeTrackTags)
|
|
|
|
|
|
|
|
self.ui.explorerTrackMetaStack.setCurrentIndex(0)
|
|
self.ui.explorerTrackMetaStack.setCurrentIndex(0)
|
|
|
self.ui.explorerTrackNotepad.textChanged.connect(self.explorerTrackNotesChanged)
|
|
self.ui.explorerTrackNotepad.textChanged.connect(self.explorerTrackNotesChanged)
|
|
@@ -100,8 +104,8 @@ class MainWindow(QMainWindow):
|
|
|
|
|
|
|
|
self.ui.tagsTableAddButton.clicked.connect(self.addTag)
|
|
self.ui.tagsTableAddButton.clicked.connect(self.addTag)
|
|
|
self.ui.tableTagsRemoveButton.clicked.connect(self.removeTag)
|
|
self.ui.tableTagsRemoveButton.clicked.connect(self.removeTag)
|
|
|
- self.ui.settingsTagsTableWidget.populate(selectable=False)
|
|
|
|
|
-
|
|
|
|
|
|
|
+ self.ui.settingsTagsTableWidget.selectable = False
|
|
|
|
|
+ self.ui.settingsTagsTableWidget.populate()
|
|
|
self.ui.settingsTagsTableWidget.contentChanged.connect(self.ui.explorerTrackTagsTable.populate)
|
|
self.ui.settingsTagsTableWidget.contentChanged.connect(self.ui.explorerTrackTagsTable.populate)
|
|
|
|
|
|
|
|
# vlc frame
|
|
# vlc frame
|
|
@@ -148,12 +152,8 @@ class MainWindow(QMainWindow):
|
|
|
self.selected_track = track
|
|
self.selected_track = track
|
|
|
|
|
|
|
|
# track infos
|
|
# track infos
|
|
|
- self.ui.explorerLblTrackTitle.setText(track.title)
|
|
|
|
|
- self.ui.explorerLblTrackArtist.setText(track.artist)
|
|
|
|
|
- self.ui.explorerLblTrackAlbum.setText(track.album)
|
|
|
|
|
- self.ui.explorerLblTrackNumber.setText(
|
|
|
|
|
- str(track.track_num if track.track_num is not None else "")
|
|
|
|
|
- )
|
|
|
|
|
|
|
+ self.update_meta()
|
|
|
|
|
+
|
|
|
self.ui.explorerTrackNotepad.textChanged.disconnect(self.explorerTrackNotesChanged)
|
|
self.ui.explorerTrackNotepad.textChanged.disconnect(self.explorerTrackNotesChanged)
|
|
|
self.ui.explorerTrackNotepad.setHtml(track.note)
|
|
self.ui.explorerTrackNotepad.setHtml(track.note)
|
|
|
self.ui.explorerTrackNotepad.textChanged.connect(self.explorerTrackNotesChanged)
|
|
self.ui.explorerTrackNotepad.textChanged.connect(self.explorerTrackNotesChanged)
|
|
@@ -175,6 +175,22 @@ class MainWindow(QMainWindow):
|
|
|
self.ui.explorerPlaylist.viewport().repaint()
|
|
self.ui.explorerPlaylist.viewport().repaint()
|
|
|
self.ui.sessionPlaylist.viewport().repaint()
|
|
self.ui.sessionPlaylist.viewport().repaint()
|
|
|
|
|
|
|
|
|
|
+ def update_meta(self):
|
|
|
|
|
+ if self.selected_track:
|
|
|
|
|
+ title, artist, album, track_num = self.selected_track.title, \
|
|
|
|
|
+ self.selected_track.artist, \
|
|
|
|
|
+ self.selected_track.album, \
|
|
|
|
|
+ self.selected_track.track_num
|
|
|
|
|
+ else:
|
|
|
|
|
+ title, artist, album, track_num = "", "", "", ""
|
|
|
|
|
+
|
|
|
|
|
+ self.ui.explorerLblTrackTitle.setText(title)
|
|
|
|
|
+ self.ui.explorerLblTrackArtist.setText(artist)
|
|
|
|
|
+ self.ui.explorerLblTrackAlbum.setText(album)
|
|
|
|
|
+ self.ui.explorerLblTrackNumber.setText(
|
|
|
|
|
+ str(track_num if track_num is not None else "")
|
|
|
|
|
+ )
|
|
|
|
|
+
|
|
|
def populate_music_folders_table(self):
|
|
def populate_music_folders_table(self):
|
|
|
music_folders = MusicFolderRepository().get_all()
|
|
music_folders = MusicFolderRepository().get_all()
|
|
|
self.ui.settingsMusicFoldersTable.setRowCount(0)
|
|
self.ui.settingsMusicFoldersTable.setRowCount(0)
|
|
@@ -211,6 +227,13 @@ class MainWindow(QMainWindow):
|
|
|
self.ui.vlcFrame.load_track(track)
|
|
self.ui.vlcFrame.load_track(track)
|
|
|
self.ui.vlcFrame.play()
|
|
self.ui.vlcFrame.play()
|
|
|
|
|
|
|
|
|
|
+ def showMetaEditor(self):
|
|
|
|
|
+ if not self.selected_track:
|
|
|
|
|
+ return
|
|
|
|
|
+ r = DlgMetaEditor.edit(self, self.selected_track)
|
|
|
|
|
+ if r:
|
|
|
|
|
+ self.update_meta()
|
|
|
|
|
+
|
|
|
def add_music_folder(self):
|
|
def add_music_folder(self):
|
|
|
path = QFileDialog.getExistingDirectory(self, "Sélectionnez le dossier à ajouter")
|
|
path = QFileDialog.getExistingDirectory(self, "Sélectionnez le dossier à ajouter")
|
|
|
if not path:
|
|
if not path:
|
|
@@ -318,25 +341,17 @@ class MainWindow(QMainWindow):
|
|
|
# if tags:
|
|
# if tags:
|
|
|
# print(tags)
|
|
# print(tags)
|
|
|
|
|
|
|
|
- def updateTrackTags(self):
|
|
|
|
|
|
|
+ def addTrackTags(self, tag_id):
|
|
|
track_id = self.selected_track.id
|
|
track_id = self.selected_track.id
|
|
|
-
|
|
|
|
|
- new_tags = self.ui.explorerTrackTagsTable.selectedTags()
|
|
|
|
|
-
|
|
|
|
|
track_tag_repo = TrackTagRepository()
|
|
track_tag_repo = TrackTagRepository()
|
|
|
|
|
+ tt = TrackTag(track_id=track_id, tag_id=tag_id)
|
|
|
|
|
+ track_tag_repo.create(tt)
|
|
|
|
|
+ track_tag_repo.commit()
|
|
|
|
|
|
|
|
- current_track_tags = [tt.tag_id for tt in track_tag_repo.get_by("track_id", track_id)]
|
|
|
|
|
-
|
|
|
|
|
- added = [t for t in new_tags if t not in current_track_tags]
|
|
|
|
|
- removed = [t for t in current_track_tags if t not in new_tags]
|
|
|
|
|
-
|
|
|
|
|
- for tag_id in added:
|
|
|
|
|
- tt = TrackTag(track_id=track_id, tag_id=tag_id)
|
|
|
|
|
- track_tag_repo.create(tt)
|
|
|
|
|
-
|
|
|
|
|
- for tag_id in removed:
|
|
|
|
|
- track_tag_repo.query().where(TrackTag.track_id == track_id).where(TrackTag.tag_id == tag_id).delete()
|
|
|
|
|
-
|
|
|
|
|
|
|
+ def removeTrackTags(self, tag_id):
|
|
|
|
|
+ track_id = self.selected_track.id
|
|
|
|
|
+ track_tag_repo = TrackTagRepository()
|
|
|
|
|
+ track_tag_repo.query().filter(TrackTag.track_id == track_id).filter(TrackTag.tag_id == tag_id).delete()
|
|
|
track_tag_repo.commit()
|
|
track_tag_repo.commit()
|
|
|
|
|
|
|
|
def sessionNotesChanged(self):
|
|
def sessionNotesChanged(self):
|
|
@@ -344,7 +359,6 @@ class MainWindow(QMainWindow):
|
|
|
return
|
|
return
|
|
|
notes = self.ui.frameNotes.ui.sessionNotes.toHtml()
|
|
notes = self.ui.frameNotes.ui.sessionNotes.toHtml()
|
|
|
session_repo = SessionRepository()
|
|
session_repo = SessionRepository()
|
|
|
- # session = session_repo.get_by_id(self.selected_playlist.id)
|
|
|
|
|
self.selected_playlist.notes = notes
|
|
self.selected_playlist.notes = notes
|
|
|
session_repo.commit()
|
|
session_repo.commit()
|
|
|
|
|
|