|
|
@@ -5,32 +5,28 @@
|
|
|
@author:[author], [year]
|
|
|
"""
|
|
|
|
|
|
-from PyQt5.QtSql import QSqlDatabase
|
|
|
from path import Path
|
|
|
|
|
|
from PyQt5.QtGui import QIcon
|
|
|
from PyQt5.QtWidgets import QMainWindow, QListWidgetItem, QTableWidgetItem, QFileDialog
|
|
|
|
|
|
-from core import constants
|
|
|
from core.logging_ import Logger
|
|
|
from core.models import MusicFolder
|
|
|
-from core.repositories import MusicFolderRepository, TrackRepository
|
|
|
+from core.repositories import MusicFolderRepository, TrackRepository, SessionTrackRepository, SessionRepository
|
|
|
from ui.qt.dlg_playlist import DlgPlaylist
|
|
|
from ui.qt.dlg_select_playlist import DlgSelectPlaylist
|
|
|
from ui.qt.main_ui import Ui_mainWindow
|
|
|
+from ui.qt.widgets.explorertable import ExplorerTable
|
|
|
+from ui.qt.widgets.playlist_table import PlaylistTable
|
|
|
|
|
|
logger = Logger.get()
|
|
|
|
|
|
|
|
|
class MainWindow(QMainWindow):
|
|
|
- def __init__(self):
|
|
|
+ def __init__(self, settings=None):
|
|
|
super().__init__()
|
|
|
|
|
|
- # db
|
|
|
- # self.qdb = QSqlDatabase.addDatabase("QSQLITE")
|
|
|
- # self.qdb.setDatabaseName(constants.DB_PATH)
|
|
|
- # self.qdb.open()
|
|
|
-
|
|
|
+ self.settings = settings or {}
|
|
|
self.createWidgets()
|
|
|
|
|
|
def createWidgets(self):
|
|
|
@@ -59,7 +55,7 @@ class MainWindow(QMainWindow):
|
|
|
|
|
|
# Page 3 - explorer
|
|
|
self.ui.explorerTable.populate()
|
|
|
- self.ui.explorerTable.trackSelected.connect(self.explorer_tree_selection_changed)
|
|
|
+ self.ui.explorerTable.trackSelected.connect(self.explorer_selection_changed)
|
|
|
self.ui.explorerTable.trackDoubleClicked.connect(self.play_track)
|
|
|
self.ui.btnExplorerRefresh.clicked.connect(self.refresh_explorer_tree)
|
|
|
self.ui.explorerTrackMetaStack.setCurrentIndex(0)
|
|
|
@@ -68,6 +64,10 @@ class MainWindow(QMainWindow):
|
|
|
self.ui.btnSelectPlaylist.clicked.connect(self.selectPlaylist)
|
|
|
|
|
|
self.ui.explorerAddToPlaylist.clicked.connect(self.add_to_playlist)
|
|
|
+ self.ui.explorerRemoveFromPlaylist.clicked.connect(self.remove_from_playlist)
|
|
|
+
|
|
|
+ self.ui.explorerPlaylist.trackSelected.connect(self.explorer_selection_changed)
|
|
|
+ self.ui.explorerPlaylist.trackDoubleClicked.connect(self.play_track)
|
|
|
|
|
|
# self.ui.explorerCreatePlaylist.clicked.connect(self.createOrEditPlaylist)
|
|
|
|
|
|
@@ -77,6 +77,16 @@ class MainWindow(QMainWindow):
|
|
|
self.ui.musicFoldersRemoveButton.clicked.connect(self.remove_music_folder)
|
|
|
self.populate_music_folders_table()
|
|
|
|
|
|
+ # Apply settings
|
|
|
+ if self.settings:
|
|
|
+ self.ui.vlcFrame.set_volume(int(self.settings['volume']))
|
|
|
+
|
|
|
+ playlist_id = int(self.settings['playlist'])
|
|
|
+ if playlist_id > 0:
|
|
|
+ playlist_repo = SessionRepository()
|
|
|
+ playlist = playlist_repo.get_by_id(playlist_id)
|
|
|
+ self.loadPlaylist(playlist)
|
|
|
+
|
|
|
def menu_item_selected(self, e):
|
|
|
self.ui.stack.setCurrentIndex(e.index)
|
|
|
|
|
|
@@ -89,21 +99,35 @@ class MainWindow(QMainWindow):
|
|
|
def refresh_explorer_tree(self):
|
|
|
self.ui.explorerTable.populate()
|
|
|
|
|
|
- def explorer_tree_selection_changed(self, track):
|
|
|
- if track:
|
|
|
- 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.ui.explorerTrackMetaStack.setCurrentIndex(1)
|
|
|
- self.ui.explorerTrackPlay.setEnabled(True)
|
|
|
+ def explorer_selection_changed(self, track):
|
|
|
+ sender = self.sender()
|
|
|
+
|
|
|
+ self.ui.explorerTrackMetaStack.setCurrentIndex(0)
|
|
|
+ self.ui.explorerTrackPlay.setEnabled(False)
|
|
|
+ self.ui.explorerAddToPlaylist.setEnabled(False)
|
|
|
+ self.ui.explorerRemoveFromPlaylist.setEnabled(False)
|
|
|
+
|
|
|
+ if not track:
|
|
|
+ return
|
|
|
+
|
|
|
+ # 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.ui.explorerTrackMetaStack.setCurrentIndex(1)
|
|
|
+ self.ui.explorerTrackPlay.setEnabled(True)
|
|
|
+
|
|
|
+ if type(sender) is ExplorerTable:
|
|
|
self.ui.explorerAddToPlaylist.setEnabled(True)
|
|
|
+
|
|
|
+ elif type(sender) is PlaylistTable:
|
|
|
+ self.ui.explorerRemoveFromPlaylist.setEnabled(True)
|
|
|
+
|
|
|
else:
|
|
|
- self.ui.explorerTrackMetaStack.setCurrentIndex(0)
|
|
|
- self.ui.explorerTrackPlay.setEnabled(False)
|
|
|
- self.ui.explorerAddToPlaylist.setEnabled(False)
|
|
|
+ raise RuntimeError("Unknown sender")
|
|
|
|
|
|
def populate_music_folders_table(self):
|
|
|
music_folders = MusicFolderRepository().get_all()
|
|
|
@@ -183,14 +207,30 @@ class MainWindow(QMainWindow):
|
|
|
track_repo = TrackRepository()
|
|
|
track_repo.add_to_playlist(
|
|
|
track.id,
|
|
|
- playlist.id,
|
|
|
- order
|
|
|
+ playlist.id
|
|
|
)
|
|
|
self.ui.explorerPlaylist.populate(playlist)
|
|
|
|
|
|
+ def remove_from_playlist(self):
|
|
|
+ session_track = self.ui.explorerPlaylist.selected_session_track()
|
|
|
+ if session_track is None:
|
|
|
+ return
|
|
|
+ session_track_repo = SessionTrackRepository()
|
|
|
+ session_track_repo.delete(session_track, True)
|
|
|
+ self.ui.explorerPlaylist.populate()
|
|
|
+
|
|
|
def run(self):
|
|
|
pass
|
|
|
|
|
|
+ def currentSettings(self):
|
|
|
+ volume = self.ui.vlcFrame.volume
|
|
|
+ playlist_id = self.ui.explorerPlaylist.playlist.id
|
|
|
+
|
|
|
+ return {
|
|
|
+ "playlist": playlist_id,
|
|
|
+ "volume": volume
|
|
|
+ }
|
|
|
+
|
|
|
def __del__(self):
|
|
|
if self.qdb.isOpen():
|
|
|
self.qdb.close()
|