def update_time(self): if self.book is None: return # update book object # TODO: optimize usage by only asking from the db on track change self.book = db.Book.select().where(db.Book.id == self.book.id).get() if self.ui.titlebar.current_book and self.book.id == self.ui.titlebar.current_book.id: progress = db.get_book_progress(self.book, False) progress += (player.get_current_duration() / 1000000000) remaining = (self.duration - progress) else: progress = db.get_book_progress(self.book) remaining = db.get_book_remaining(self.book) percentage = progress / self.duration self.total_label.set_text( tools.seconds_to_human_readable(self.duration / self.speed)) if percentage > 0.005: self.remaining_text.set_visible(True) self.remaining_label.set_visible(True) self.remaining_label.set_text( tools.seconds_to_human_readable(remaining / self.speed)) else: self.remaining_text.set_visible(False) self.remaining_label.set_visible(False) self.progress_bar.set_fraction(percentage)
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()