diff options
Diffstat (limited to 'control.py')
-rw-r--r-- | control.py | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/control.py b/control.py new file mode 100644 index 0000000..30fe868 --- /dev/null +++ b/control.py @@ -0,0 +1,52 @@ +from PyQt5.QtCore import * + +import midi +import logging + +MIDI_PLAY = midi.lp_key[0][1] + +class Control: + def __init__(self, window): + self.window = window + self.player = window.player + self.playlist = window.playlist + + window.playButton.pressed.connect(self.play) + window.pauseButton.pressed.connect(self.pause) + window.songSlider.setMaximum(100000) + window.songSlider.sliderPressed.connect(self.sliderPressed) + window.songSlider.sliderReleased.connect(self.sliderReleased) + + self.timer = QTimer(window) + self.timer.setInterval(1000) + self.timer.timeout.connect(self.updateSongSlider) + + def pause(self): + self.player.pause() + + self.updateMidi() + + def play(self): + selected = self.playlist.medialist.media() + self.player.play_item(selected) + self.timer.start() + + self.updateMidi() + + def updateSongSlider(self): + position = self.player.get_media_player().get_position() * 100000 + self.window.songSlider.setValue(position) + + def sliderPressed(self): + self.timer.stop() + + def sliderReleased(self): + position = self.window.songSlider.value() / 100000.0 + logging.info(f"Setting position: {position}") + self.player.get_media_player().set_position(position) + self.timer.start() + + def updateMidi(self): + if self.window.midiEnabled: + midi.button_on(MIDI_PLAY, (midi.GREEN if self.player.is_playing() else midi.RED)) + |