mirror of
https://github.com/ankitects/anki.git
synced 2025-09-19 14:32:22 -04:00
fix replay audio again, and decouple the code from the reviewer
This commit is contained in:
parent
e838769d02
commit
10eb947402
3 changed files with 22 additions and 21 deletions
|
@ -166,6 +166,10 @@ class Card:
|
||||||
conf = self.col.decks.confForDid(self.odid or self.did)
|
conf = self.col.decks.confForDid(self.odid or self.did)
|
||||||
return conf["timer"]
|
return conf["timer"]
|
||||||
|
|
||||||
|
def replay_question_audio_on_answer_side(self) -> bool:
|
||||||
|
conf = self.col.decks.confForDid(self.odid or self.did)
|
||||||
|
return conf.get("replayq", True)
|
||||||
|
|
||||||
def timeTaken(self) -> int:
|
def timeTaken(self) -> int:
|
||||||
"Time taken to answer card, in integer MS."
|
"Time taken to answer card, in integer MS."
|
||||||
total = int((time.time() - self.timerStarted) * 1000)
|
total = int((time.time() - self.timerStarted) * 1000)
|
||||||
|
|
|
@ -21,6 +21,7 @@ from aqt.qt import (
|
||||||
QWidget,
|
QWidget,
|
||||||
qconnect,
|
qconnect,
|
||||||
)
|
)
|
||||||
|
from aqt.reviewer import replay_audio
|
||||||
from aqt.sound import av_player, play_clicked_audio
|
from aqt.sound import av_player, play_clicked_audio
|
||||||
from aqt.theme import theme_manager
|
from aqt.theme import theme_manager
|
||||||
from aqt.utils import restoreGeom, saveGeom
|
from aqt.utils import restoreGeom, saveGeom
|
||||||
|
@ -88,7 +89,10 @@ class Previewer(QDialog):
|
||||||
self.mw.progress.timer(100, self._on_close, False)
|
self.mw.progress.timer(100, self._on_close, False)
|
||||||
|
|
||||||
def _on_replay_audio(self):
|
def _on_replay_audio(self):
|
||||||
self.mw.reviewer.replayAudio(self)
|
if self._state == "question":
|
||||||
|
replay_audio(self.card(), True)
|
||||||
|
elif self._state == "answer":
|
||||||
|
replay_audio(self.card(), False)
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
self._on_close()
|
self._on_close()
|
||||||
|
|
|
@ -29,6 +29,14 @@ class ReviewerBottomBar:
|
||||||
def __init__(self, reviewer: Reviewer) -> None:
|
def __init__(self, reviewer: Reviewer) -> None:
|
||||||
self.reviewer = reviewer
|
self.reviewer = reviewer
|
||||||
|
|
||||||
|
def replay_audio(card: Card, question_side: bool) -> None:
|
||||||
|
if question_side:
|
||||||
|
av_player.play_tags(card.question_av_tags())
|
||||||
|
else:
|
||||||
|
tags = card.answer_av_tags()
|
||||||
|
if card.replay_question_audio_on_answer_side():
|
||||||
|
tags = card.question_av_tags() + tags
|
||||||
|
av_player.play_tags(tags)
|
||||||
|
|
||||||
class Reviewer:
|
class Reviewer:
|
||||||
"Manage reviews. Maintains a separate state."
|
"Manage reviews. Maintains a separate state."
|
||||||
|
@ -110,20 +118,11 @@ class Reviewer:
|
||||||
# Audio
|
# Audio
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
|
||||||
def replayAudio(self, previewer=None):
|
def replayAudio(self) -> None:
|
||||||
if previewer:
|
if self.state == "question":
|
||||||
state = previewer.state()
|
replay_audio(self.card, True)
|
||||||
c = previewer.card()
|
elif self.state == "answer":
|
||||||
else:
|
replay_audio(self.card, False)
|
||||||
state = self.state
|
|
||||||
c = self.card
|
|
||||||
if state == "question":
|
|
||||||
av_player.play_tags(c.question_av_tags())
|
|
||||||
elif state == "answer":
|
|
||||||
tags = c.answer_av_tags()
|
|
||||||
if self._replayq(c, previewer):
|
|
||||||
tags = c.question_av_tags() + tags
|
|
||||||
av_player.play_tags(tags)
|
|
||||||
|
|
||||||
# Initializing the webview
|
# Initializing the webview
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
@ -212,12 +211,6 @@ The front of this card is empty. Please run Tools>Empty Cards."""
|
||||||
def autoplay(self, card: Card) -> bool:
|
def autoplay(self, card: Card) -> bool:
|
||||||
return self.mw.col.decks.confForDid(card.odid or card.did)["autoplay"]
|
return self.mw.col.decks.confForDid(card.odid or card.did)["autoplay"]
|
||||||
|
|
||||||
def _replayq(self, card, previewer=None):
|
|
||||||
s = previewer if previewer else self
|
|
||||||
return s.mw.col.decks.confForDid(s.card().odid or s.card().did).get(
|
|
||||||
"replayq", True
|
|
||||||
)
|
|
||||||
|
|
||||||
def _drawFlag(self) -> None:
|
def _drawFlag(self) -> None:
|
||||||
self.web.eval("_drawFlag(%s);" % self.card.userFlag())
|
self.web.eval("_drawFlag(%s);" % self.card.userFlag())
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue