dlg_select_playlist.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. from PyQt5 import QtWidgets
  2. from PyQt5.QtGui import QIcon
  3. from PyQt5.QtWidgets import QTreeWidgetItem
  4. from core import db
  5. from core.repositories import SessionRepository, SessionFolderRepository
  6. from ui.qt.dlg_playlist import DlgPlaylist
  7. from ui.qt.dlg_select_playlist_ui import Ui_dlgSelectPlaylist
  8. class DlgSelectPlaylist(QtWidgets.QDialog):
  9. def __init__(self, parent=None):
  10. super().__init__(parent)
  11. self.createWidgets()
  12. def createWidgets(self):
  13. self.ui = Ui_dlgSelectPlaylist()
  14. self.ui.setupUi(self)
  15. self.ui.btnAddFolder.clicked.connect(self.addFolder)
  16. self.ui.btnAdd.clicked.connect(self.createPlaylist)
  17. self.ui.btnEdit.clicked.connect(self.editSelectedPlaylist)
  18. self.ui.btnDuplicate.clicked.connect(self.duplicateSelectedPlaylist)
  19. self.ui.btnDelete.clicked.connect(self.deleteSelectedPlaylist)
  20. self.ui.tree.itemClicked.connect(self.playlistSelected)
  21. self.ui.btnSelect.clicked.connect(self.ok)
  22. self.ui.tree.setColumnCount(3)
  23. self.ui.tree.setColumnWidth(0, 54)
  24. self.ui.tree.hideColumn(2)
  25. self.populate()
  26. def populate(self):
  27. db_session = db.Session()
  28. session_folder_repo = SessionFolderRepository(db_session)
  29. session_repo = SessionRepository(db_session)
  30. self.ui.tree.clear()
  31. folders = session_folder_repo.get_all()
  32. folders_index = {}
  33. sessions = session_repo.get_all()
  34. self.ui.tree.setUpdatesEnabled(False)
  35. for folder in folders:
  36. item = QTreeWidgetItem(self.ui.tree)
  37. item.setIcon(0, QIcon(":/img/rsc/folder.png"))
  38. item.setText(1, folder.name)
  39. folders_index[folder.id] = item
  40. for session in sessions:
  41. if session.folder_id:
  42. parent = folders_index[session.folder_id]
  43. else:
  44. parent = self.ui.tree
  45. item = QTreeWidgetItem(parent)
  46. item.setIcon(0, QIcon(":/img/rsc/playlist.png"))
  47. item.setText(1, session.name)
  48. item.setData(2, 0, session.id)
  49. self.ui.tree.setUpdatesEnabled(True)
  50. def createPlaylist(self):
  51. r = DlgPlaylist.edit(self)
  52. if r:
  53. self.populate()
  54. def addFolder(self):
  55. pass
  56. def editSelectedPlaylist(self):
  57. current = self.selected_playlist()
  58. if not current:
  59. return
  60. r = DlgPlaylist.edit(self, current)
  61. if r:
  62. self.populate()
  63. def duplicateSelectedPlaylist(self):
  64. pass
  65. def deleteSelectedPlaylist(self):
  66. pass
  67. @classmethod
  68. def select(cls, parent):
  69. dlg = cls(parent)
  70. r = dlg.exec_()
  71. if r:
  72. return dlg.selected_playlist()
  73. else:
  74. return None
  75. def ok(self):
  76. self.done(1)
  77. def selected_playlist(self):
  78. session_id = self.ui.tree.selectionModel().selection().indexes()[2].data(2)
  79. if not session_id:
  80. return None
  81. return SessionRepository().get_by_id(int(session_id))
  82. def playlistSelected(self):
  83. self.ui.btnSelect.setEnabled(True)