dlg_select_playlist.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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.itemDoubleClicked.connect(self.ok)
  23. self.ui.tree.setColumnCount(3)
  24. self.ui.tree.setColumnWidth(0, 54)
  25. self.ui.tree.hideColumn(2)
  26. self.populate()
  27. def populate(self):
  28. db_session = db.Session()
  29. session_folder_repo = SessionFolderRepository(db_session)
  30. session_repo = SessionRepository(db_session)
  31. self.ui.tree.clear()
  32. folders = session_folder_repo.get_all()
  33. folders_index = {}
  34. sessions = session_repo.get_all()
  35. self.ui.tree.setUpdatesEnabled(False)
  36. for folder in folders:
  37. item = QTreeWidgetItem(self.ui.tree)
  38. item.setIcon(0, QIcon(":/img/rsc/folder.png"))
  39. item.setText(1, folder.name)
  40. folders_index[folder.id] = item
  41. for session in sessions:
  42. if session.folder_id:
  43. parent = folders_index[session.folder_id]
  44. else:
  45. parent = self.ui.tree
  46. item = QTreeWidgetItem(parent)
  47. item.setIcon(0, QIcon(":/img/rsc/playlist.png"))
  48. item.setText(1, session.name)
  49. item.setData(2, 0, session.id)
  50. self.ui.tree.setUpdatesEnabled(True)
  51. def createPlaylist(self):
  52. r = DlgPlaylist.edit(self)
  53. if r:
  54. self.populate()
  55. def addFolder(self):
  56. pass
  57. def editSelectedPlaylist(self):
  58. current = self.selected_playlist()
  59. if not current:
  60. return
  61. r = DlgPlaylist.edit(self, current)
  62. if r:
  63. self.populate()
  64. def duplicateSelectedPlaylist(self):
  65. pass
  66. def deleteSelectedPlaylist(self):
  67. pass
  68. @classmethod
  69. def select(cls, parent):
  70. dlg = cls(parent)
  71. r = dlg.exec_()
  72. if r:
  73. return dlg.selected_playlist()
  74. else:
  75. return None
  76. def ok(self):
  77. self.done(1)
  78. def selected_playlist(self):
  79. session_id = self.ui.tree.selectionModel().selection().indexes()[2].data(2)
  80. if not session_id:
  81. return None
  82. return SessionRepository().get_by_id(int(session_id))
  83. def playlistSelected(self):
  84. self.ui.btnSelect.setEnabled(True)