|
|
@@ -4,7 +4,7 @@
|
|
|
|
|
|
@author:[author], [year]
|
|
|
"""
|
|
|
-
|
|
|
+from PyQt5 import QtWidgets
|
|
|
from path import Path
|
|
|
|
|
|
from PyQt5.QtGui import QIcon
|
|
|
@@ -57,6 +57,8 @@ class MainWindow(QMainWindow):
|
|
|
item.index = i
|
|
|
self.ui.menu.addItem(item)
|
|
|
|
|
|
+ QtWidgets.qApp.focusChanged.connect(self.focus_changed)
|
|
|
+
|
|
|
# Menu item clicked
|
|
|
self.ui.menu.itemClicked.connect(self.menu_item_selected)
|
|
|
|
|
|
@@ -64,8 +66,6 @@ class MainWindow(QMainWindow):
|
|
|
self.ui.sessionPlaylist.trackDoubleClicked.connect(self.play_playlist)
|
|
|
self.ui.sessionBtnChange.clicked.connect(self.selectPlaylist)
|
|
|
|
|
|
- self.ui.frameNotes.ui.sessionNotes.textChanged.connect(self.sessionNotesChanged)
|
|
|
-
|
|
|
self.ui.btnSessionStart.clicked.connect(self.play_playlist)
|
|
|
|
|
|
# Page 3 - explorer
|
|
|
@@ -84,7 +84,6 @@ class MainWindow(QMainWindow):
|
|
|
self.ui.explorerTrackTagsTable.tagUnchecked.connect(self.removeTrackTags)
|
|
|
|
|
|
self.ui.explorerTrackMetaStack.setCurrentIndex(0)
|
|
|
- self.ui.explorerTrackNotepad.textChanged.connect(self.explorerTrackNotesChanged)
|
|
|
self.ui.explorerTrackPlay.clicked.connect(self.explorerPlaySelected)
|
|
|
|
|
|
self.ui.btnSelectPlaylist.clicked.connect(self.selectPlaylist)
|
|
|
@@ -123,6 +122,10 @@ class MainWindow(QMainWindow):
|
|
|
playlist = playlist_repo.get_by_id(playlist_id)
|
|
|
self.loadPlaylist(playlist)
|
|
|
|
|
|
+ def focus_changed(self, old, new):
|
|
|
+ if old is self.ui.explorerTrackNotepad:
|
|
|
+ self.saveTrackNotes()
|
|
|
+
|
|
|
def menu_item_selected(self, e):
|
|
|
self.ui.stack.setCurrentIndex(e.index)
|
|
|
|
|
|
@@ -132,8 +135,11 @@ class MainWindow(QMainWindow):
|
|
|
def indexation_ended(self):
|
|
|
self.ui.statusbar.setStatusTip("Indexation terminée.")
|
|
|
|
|
|
- def refresh_explorer_tree(self):
|
|
|
- self.ui.explorerTable.populate()
|
|
|
+ def refresh_explorer_tree(self, tracks=None):
|
|
|
+ if tracks:
|
|
|
+ self.ui.explorerTable.update_tracks(tracks)
|
|
|
+ else:
|
|
|
+ self.ui.explorerTable.populate()
|
|
|
self.ui.explorerLineSearch.clear()
|
|
|
|
|
|
def newTrackSelected(self, track=None):
|
|
|
@@ -153,9 +159,7 @@ class MainWindow(QMainWindow):
|
|
|
# track infos
|
|
|
self.update_meta()
|
|
|
|
|
|
- self.ui.explorerTrackNotepad.textChanged.disconnect(self.explorerTrackNotesChanged)
|
|
|
self.ui.explorerTrackNotepad.setHtml(track.note)
|
|
|
- self.ui.explorerTrackNotepad.textChanged.connect(self.explorerTrackNotesChanged)
|
|
|
|
|
|
self.ui.explorerTrackTagsTable.populate(track)
|
|
|
|
|
|
@@ -194,10 +198,11 @@ class MainWindow(QMainWindow):
|
|
|
music_folders = MusicFolderRepository().get_all()
|
|
|
self.ui.settingsMusicFoldersTable.setRowCount(0)
|
|
|
self.ui.settingsMusicFoldersTable.setRowCount(len(music_folders))
|
|
|
+
|
|
|
music_folder_statuses = [
|
|
|
- ('Inconnu', 'status_unknown.png'),
|
|
|
- ('Valide', 'status_found.png'),
|
|
|
- ('Inaccessible', 'status_unavailable.png')
|
|
|
+ ('Inconnu', ':/img/rsc/unknown.png'),
|
|
|
+ ('Valide', ':/img/rsc/valid.png'),
|
|
|
+ ('Inaccessible', ':/img/rsc/invalid.png')
|
|
|
]
|
|
|
for i, music_folder in enumerate(music_folders):
|
|
|
self.ui.settingsMusicFoldersTable.setItem(i, 0, QTableWidgetItem(music_folder.id))
|
|
|
@@ -276,9 +281,7 @@ class MainWindow(QMainWindow):
|
|
|
self.ui.sessionLblTitle.setText(playlist.name)
|
|
|
self.ui.sessionPlaylist.populate(playlist)
|
|
|
|
|
|
- self.ui.frameNotes.ui.sessionNotes.textChanged.disconnect(self.sessionNotesChanged)
|
|
|
- self.ui.frameNotes.ui.sessionNotes.setHtml(playlist.notes)
|
|
|
- self.ui.frameNotes.ui.sessionNotes.textChanged.connect(self.sessionNotesChanged)
|
|
|
+ self.ui.frameNotes.set_playlist(playlist)
|
|
|
|
|
|
# explorer page
|
|
|
self.ui.explorerPlaylist.setEnabled(True)
|
|
|
@@ -334,12 +337,6 @@ class MainWindow(QMainWindow):
|
|
|
self.ui.explorerPlaylist.set_is_playing(None)
|
|
|
self.ui.sessionPlaylist.set_is_playing(None)
|
|
|
|
|
|
- # def showTagsEditor(self):
|
|
|
- # track = self.selected_track or None
|
|
|
- # tags = DlgTagEditor.select(track, self)
|
|
|
- # if tags:
|
|
|
- # print(tags)
|
|
|
-
|
|
|
def addTrackTags(self, tag_id):
|
|
|
track_id = self.selected_track.id
|
|
|
track_tag_repo = TrackTagRepository()
|
|
|
@@ -353,26 +350,26 @@ class MainWindow(QMainWindow):
|
|
|
track_tag_repo.query().filter(TrackTag.track_id == track_id).filter(TrackTag.tag_id == tag_id).delete()
|
|
|
track_tag_repo.commit()
|
|
|
|
|
|
- def sessionNotesChanged(self):
|
|
|
- if not self.selected_playlist:
|
|
|
- return
|
|
|
- notes = self.ui.frameNotes.ui.sessionNotes.toHtml()
|
|
|
- session_repo = SessionRepository()
|
|
|
- self.selected_playlist.notes = notes
|
|
|
- session_repo.commit()
|
|
|
-
|
|
|
- def explorerTrackNotesChanged(self):
|
|
|
+ def saveTrackNotes(self):
|
|
|
if not self.selected_track:
|
|
|
return
|
|
|
note = self.ui.explorerTrackNotepad.toHtml()
|
|
|
track_repo = TrackRepository()
|
|
|
self.selected_track.note = note
|
|
|
track_repo.commit()
|
|
|
+ print('track notes saved')
|
|
|
|
|
|
def explorerSearchChanged(self):
|
|
|
searchText = self.ui.explorerLineSearch.text()
|
|
|
self.ui.explorerTable.filterBySearchText(searchText)
|
|
|
|
|
|
+ def filesIndexed(self, tracks):
|
|
|
+ self.statusBar().showMessage(f"{len(tracks)} fichiers indexés", 3000)
|
|
|
+ self.refresh_explorer_tree(tracks)
|
|
|
+
|
|
|
+ def musicFolderStatusChanged(self, music_folder_id):
|
|
|
+ self.populate_music_folders_table()
|
|
|
+
|
|
|
def currentSettings(self):
|
|
|
volume = self.ui.vlcFrame.volume
|
|
|
playlist_id = self.selected_playlist.id if self.selected_playlist else None
|