Exemple #1
0
    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)
Exemple #2
0
    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.")
Exemple #3
0
    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()
Exemple #4
0
    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
Exemple #5
0
    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)
Exemple #6
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
Exemple #7
0
    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()