dlg_playlist.py 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. from datetime import datetime
  2. from PyQt5 import QtWidgets
  3. from core.models import Session
  4. from core.repositories import SessionRepository
  5. from ui.qt.dlg_playlist_ui import Ui_dlgPlaylist
  6. class DlgPlaylist(QtWidgets.QDialog):
  7. def __init__(self, playlist=None, parent=None):
  8. super().__init__(parent)
  9. self.playlist = playlist if playlist is not None else Session()
  10. self.date_enabled = False
  11. self.createWidgets()
  12. def createWidgets(self):
  13. self.ui = Ui_dlgPlaylist()
  14. self.ui.setupUi(self)
  15. if self.playlist.name:
  16. self.ui.lineName.setText(self.playlist.name)
  17. if self.playlist.date:
  18. self.ui.lineDate.setDateTime(self.playlist.date)
  19. self.toggleDateActivation()
  20. else:
  21. self.ui.lineDate.setDateTime(datetime.now())
  22. self.ui.textNotes.setText(self.playlist.notes or "")
  23. self.ui.chkDateEnabled.stateChanged.connect(self.toggleDateActivation)
  24. self.ui.btnSave.clicked.connect(self.save)
  25. self.ui.btnCancel.clicked.connect(self.cancel)
  26. def toggleDateActivation(self):
  27. new_state = not self.date_enabled
  28. self.ui.lineDate.setEnabled(new_state)
  29. self.ui.chkDateEnabled.setChecked(new_state)
  30. self.date_enabled = new_state
  31. @classmethod
  32. def edit(cls, parent, playlist=None):
  33. dlg = cls(playlist, parent)
  34. r = dlg.exec_()
  35. return r
  36. def cancel(self):
  37. self.done(0)
  38. def save(self):
  39. self.playlist.name = self.ui.lineName.text()
  40. self.playlist.date = self.ui.lineDate.dateTime().toPyDateTime() if self.date_enabled else None
  41. self.playlist.notes = self.ui.textNotes.toPlainText()
  42. repo = SessionRepository()
  43. if not self.playlist.id:
  44. repo.create(self.playlist)
  45. repo.commit()
  46. self.done(1)