Skip to content

Commit ce4d191

Browse files
committed
Add signal for last Ayah reached in navigation
Introduced a lastAyahReached signal in NavigationManager and connected it to QuranInterface to handle actions when the last Ayah is reached. This enables automatic progression and play/pause toggling when the end of a range is encountered.
1 parent 86190b6 commit ce4d191

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

ui/quran_interface.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ def __init__(self, title):
6666
Globals.effects_manager = SoundEffectPlayer("Audio/sounds")
6767

6868
self.toolbar = AudioToolBar(self)
69+
self.toolbar.navigation.lastAyahReached.connect(self.on_last_ayah_reached)
6970
self.menu_bar = MenuBar(self)
7071
self.setMenuBar(self.menu_bar)
7172
self.addToolBar(self.toolbar)
@@ -659,3 +660,8 @@ def OnRandomMessages(self, event):
659660
logger.debug("Random message dialog opened.")
660661
info_dialog.exec()
661662
logger.debug("Random message dialog closed.")
663+
664+
def on_last_ayah_reached(self):
665+
logger.debug("Last Ayah reached signal received in QuranInterface.")
666+
self.OnNext()
667+
self.toolbar.toggle_play_pause()

ui/widgets/toolbar.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import time
22
from typing import Optional
33
from PyQt6.QtWidgets import QToolBar, QPushButton, QSlider, QMessageBox
4-
from PyQt6.QtCore import Qt, QThread, pyqtSignal, QTimer
4+
from PyQt6.QtCore import Qt, QThread, pyqtSignal, QTimer, QObject
55
from core_functions.quran.quran_manager import QuranManager
66
from core_functions.Reciters import AyahReciter
77
from utils.audio_player import AyahPlayer
@@ -72,8 +72,10 @@ def set_audio_url(self, url: str, send_error_signal: bool = True):
7272
self.wait()
7373

7474

75-
class NavigationManager:
75+
class NavigationManager(QObject):
76+
lastAyahReached = pyqtSignal()
7677
def __init__(self, parent, quran_manager: QuranManager):
78+
super().__init__(parent)
7779
logger.debug("Initializing NavigationManager.")
7880
self.parent = parent
7981
self.quran_manager = quran_manager
@@ -121,6 +123,7 @@ def navigate(self, direction: str) -> bool:
121123
else:
122124
self.current_ayah = self.ayah_range[self.current_surah]["max_ayah"]
123125
logger.debug("Reached the last Ayah in the page.")
126+
self.lastAyahReached.emit()
124127
return False
125128
elif direction == "previous" and self.current_ayah < self.ayah_range[self.current_surah]["min_ayah"]:
126129
if self.current_surah - 1 in self.ayah_range:

0 commit comments

Comments
 (0)