def play_index(self, index): """ Play the track with the specified playlist index """ Sound.stop() self.playlist.current = index self.play_pause()
def on_volume(self, widget, value): """ Set the volume of the currently playing sound """ if 0.0 > value: self.volume = 0.0 elif value > 1.0: self.volume = 1.0 else: Sound.set_volume(value) self.playing.volume_slider.value = value
def play_pause(self): """ Play or pause the currently playing track """ self.advance = True if Sound.state == "playing": self.pos, x = Sound.get_pos_length() Sound.stop() else: audio_file = self.get_current_file() if audio_file: Sound.play(audio_file, self.volume) if self.pos > 0: def set_pos(dt): Sound.seek(self.pos) self.pos = 0 Clock.schedule_once(set_pos, 0.1)
def _update_progress(self, dt): """ Update the progressbar """ if Sound.state == "playing": pos, length = Sound.get_pos_length() if length > 0: self.progress_slider.value = pos / length self.time_label.text = "{0}m {1:02d}s / {2}m {3:02d}s".format( int(pos / 60), int(pos % 60), int(length / 60), int(length % 60))
def _update_progress(self, dt): """ Update the progressbar """ if Sound.state == "playing": pos, length = Sound.get_pos_length() if length > 0: self.progress_slider.value = pos / length self.time_label.text = "{0}m {1:02d}s / {2}m {3:02d}s".format( int(pos / 60), int(pos % 60), int(length / 60), int(length % 60) )
def __init__(self, **kwargs): """ Initialize the screens and the screen manager """ self._store = JsonStore("zenplayer.json") self.playlist = PlayList(self._store) self.sm = ScreenManager() self.playing = PlayingScreen(self, name="main") self.sm.add_widget(self.playing) self.sm.current = "main" if platform not in ['ios', 'android']: self.kb_listener = ZenKeyboardListener(self) Sound.add_state_callback(self.playing.on_sound_state) Sound.add_state_callback(self._on_sound_state) super(Controller, self).__init__(**kwargs) if self._store.exists('state'): state = self._store.get("state") if "volume" in state.keys(): self.volume = state["volume"]
def get_pos_length(): return Sound.get_pos_length()
def stop(self): """ Stop any playing audio """ self.advance = False Sound.stop()
def play_previous(self): """ Play the previous track in the playlist. """ Sound.stop() self.playlist.move_previous() self.play_pause()
def play_next(self): """ Play the next track in the playlist. """ Sound.stop() self.playlist.move_next() self.play_pause()
def set_pos(dt): Sound.seek(self.pos) self.pos = 0
def set_position(value): """ Set the playing position to the specified value. """ Sound.set_position(value)