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 __sleep_timer_fired(self): """ The sleep timer gets called every second. Here we do the countdown stuff aswell as stop the playback / suspend the machine. """ self.current_timer_time = self.current_timer_time - 1 adjustment = self.timer_spinner.get_adjustment() adjustment.set_value(int(self.current_timer_time / 60) + 1) if self.current_timer_time < 1: self.timer_switch.set_active(False) if player.get_gst_player_state() == Gst.State.PLAYING: player.play_pause(None) self.sleep_timer.stop()
def __timer_switch_changed(self, sender, widget): """ Start/Stop the sleep timer object. """ if self.timer_switch.get_active(): self.timer_image.set_from_icon_name("timer-on-symbolic", Gtk.IconSize.BUTTON) if player.get_gst_player_state() == Gst.State.PLAYING: self.__start_sleep_timer() else: self.timer_image.set_from_icon_name("timer-off-symbolic", Gtk.IconSize.BUTTON) if self.sleep_timer is not None: self.sleep_timer.stop()
def __on_play_clicked(self, event): """ """ 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 on_close(self, widget, data=None): """ Close and dispose everything that needs to be when window is closed. """ self.titlebar.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: db.Track.update(position=player.get_current_duration()).where( db.Track.id == player.get_current_track().id).execute() player.stop() player.dispose()
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(db.Track.select().where( db.Track.id == self.track.id).get().position) else: player.load_file(db.Track.select().where(db.Track.id == self.track.id).get()) player.play_pause(None, True) db.Book.update(position=self.track).where( db.Book.id == self.track.book.id).execute()
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 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)