def __on_timer_changed(self, spinner): """ Start/Stop the timer depending on the current adjustment value. """ adjustment = self.timer_scale.get_adjustment() value = adjustment.get_value() if value > 0: if not self.sleep_timer or not self.sleep_timer.isAlive(): self.set_icon(True) if player.get_gst_player_state() == Gst.State.PLAYING: self.start(force=True) self.timer_label.set_visible(True) self.min_label.set_text(_("min")) else: self.set_time(value) else: self.set_icon(False) if self.sleep_timer: self.sleep_timer.stop() self.min_label.set_text(_("Off")) self.timer_label.set_visible(False) return if self.sleep_timer and not self.sleep_timer.isAlive: tools.get_glib_settings().set_int("timer", int(value)) text = str(int(value)) self.timer_label.set_text(text)
def on_close(self, widget, data=None): """ Close and dispose everything that needs to be when window is closed. """ log.info("Closing.") self.titlebar.close() self.fs_monitor.close() if self.sleep_timer.is_running(): self.sleep_timer.stop() # save current position when still playing if player.get_gst_player_state() == Gst.State.PLAYING: Track.update(position=player.get_current_duration()).where( Track.id == player.get_current_track().id).execute() player.stop() player.dispose() close_db() report.close() log.info("Closing app.") self.app.quit() log.info("App closed.")
def __on_button_press(self, eventbox, event): """ Play the selected track. """ current_track = player.get_current_track() if current_track and current_track.id == self.track.id: player.play_pause(None) if player.get_gst_player_state() == Gst.State.PLAYING: player.jump_to_ns(Track.select().where( Track.id == self.track.id).get().position) else: player.load_file( Track.select().where(Track.id == self.track.id).get()) player.play_pause(None, True) Book.update(position=self.track).where( Book.id == self.track.book.id).execute()
def __on_play_clicked(self, event): """ Play button clicked. Start/pause playback. """ track = get_track_for_playback(self.book) current_track = player.get_current_track() if current_track and current_track.book.id == self.book.id: player.play_pause(None) if player.get_gst_player_state() == Gst.State.PLAYING: player.jump_to_ns(track.position) else: player.load_file(track) player.play_pause(None, True) return True
def __stop_playback(self): """ Stops playback after gradually fading out (if enabled). """ if tools.get_glib_settings().get_boolean("sleep-timer-fadeout"): duration = tools.get_glib_settings().get_int("sleep-timer-fadeout-duration") * 20 current_vol = player.get_volume() for i in range(0, duration): player.set_volume(current_vol - (i / duration)) time.sleep(0.05) player.set_volume(current_vol) if player.get_gst_player_state() == Gst.State.PLAYING: player.play_pause(None) Gdk.threads_add_idle(GLib.PRIORITY_DEFAULT_IDLE, self.timer_scale.get_adjustment().set_value, 0.0)
def _on_play_button_press(self, widget, event): """ Play this book. """ if event.type == Gdk.EventType.BUTTON_PRESS and event.button != 1: return track = db.get_track_for_playback(self.book) current_track = player.get_current_track() if current_track and current_track.book.id == self.book.id: player.play_pause(None) if player.get_gst_player_state() == Gst.State.PLAYING: player.jump_to_ns(track.position) else: player.load_file(track) player.play_pause(None, True) return True
def __stop_playback(self): """ Stops playback after gradually fading out (if enabled). """ if self._app_settings.sleep_timer_fadeout: duration = self._app_settings.sleep_timer_fadeout_duration * 20 current_vol = player.get_volume() for i in range(0, duration): player.set_volume(max(current_vol - (i / duration), 0)) time.sleep(0.05) player.set_volume(current_vol) if player.get_gst_player_state() == Gst.State.PLAYING: Gdk.threads_add_idle(GLib.PRIORITY_HIGH, player.play_pause, None) Gdk.threads_add_idle(GLib.PRIORITY_HIGH, self.timer_scale.get_adjustment().set_value, 0.0) self.__handle_system_power_event()