| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- from PyQt5 import QtWidgets
- from PyQt5.QtGui import QIcon
- from PyQt5.QtWidgets import QTreeWidgetItem
- from core import db
- from core.repositories import SessionRepository, SessionFolderRepository
- from ui.qt.dlg_playlist import DlgPlaylist
- from ui.qt.dlg_select_playlist_ui import Ui_dlgSelectPlaylist
- class DlgSelectPlaylist(QtWidgets.QDialog):
- def __init__(self, parent=None):
- super().__init__(parent)
- self.createWidgets()
- def createWidgets(self):
- self.ui = Ui_dlgSelectPlaylist()
- self.ui.setupUi(self)
- self.ui.btnAddFolder.clicked.connect(self.addFolder)
- self.ui.btnAdd.clicked.connect(self.createPlaylist)
- self.ui.btnEdit.clicked.connect(self.editSelectedPlaylist)
- self.ui.btnDuplicate.clicked.connect(self.duplicateSelectedPlaylist)
- self.ui.btnDelete.clicked.connect(self.deleteSelectedPlaylist)
- self.ui.tree.itemClicked.connect(self.playlistSelected)
- self.ui.btnSelect.clicked.connect(self.ok)
- self.ui.tree.itemDoubleClicked.connect(self.ok)
- self.ui.tree.setColumnCount(3)
- self.ui.tree.setColumnWidth(0, 54)
- self.ui.tree.hideColumn(2)
- self.populate()
- def populate(self):
- db_session = db.Session()
- session_folder_repo = SessionFolderRepository(db_session)
- session_repo = SessionRepository(db_session)
- self.ui.tree.clear()
- folders = session_folder_repo.get_all()
- folders_index = {}
- sessions = session_repo.get_all()
- self.ui.tree.setUpdatesEnabled(False)
- for folder in folders:
- item = QTreeWidgetItem(self.ui.tree)
- item.setIcon(0, QIcon(":/img/rsc/folder.png"))
- item.setText(1, folder.name)
- folders_index[folder.id] = item
- for session in sessions:
- if session.folder_id:
- parent = folders_index[session.folder_id]
- else:
- parent = self.ui.tree
- item = QTreeWidgetItem(parent)
- item.setIcon(0, QIcon(":/img/rsc/playlist.png"))
- item.setText(1, session.name)
- item.setData(2, 0, session.id)
- self.ui.tree.setUpdatesEnabled(True)
- def createPlaylist(self):
- r = DlgPlaylist.edit(self)
- if r:
- self.populate()
- def addFolder(self):
- pass
- def editSelectedPlaylist(self):
- current = self.selected_playlist()
- if not current:
- return
- r = DlgPlaylist.edit(self, current)
- if r:
- self.populate()
- def duplicateSelectedPlaylist(self):
- pass
- def deleteSelectedPlaylist(self):
- pass
- @classmethod
- def select(cls, parent):
- dlg = cls(parent)
- r = dlg.exec_()
- if r:
- return dlg.selected_playlist()
- else:
- return None
- def ok(self):
- self.done(1)
- def selected_playlist(self):
- session_id = self.ui.tree.selectionModel().selection().indexes()[2].data(2)
- if not session_id:
- return None
- return SessionRepository().get_by_id(int(session_id))
- def playlistSelected(self):
- self.ui.btnSelect.setEnabled(True)
|