Skip to content

Commit e64618a

Browse files
committed
made many changes.
1 parent 50cf671 commit e64618a

File tree

4 files changed

+60
-21
lines changed

4 files changed

+60
-21
lines changed

ui/dialogs/settings_dialog.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
from core_functions.Reciters import AyahReciter
2424
from utils.const import data_folder, program_english_name
2525
from utils.settings import SettingsManager
26-
from utils.audio_player import AthkarPlayer, AyahPlayer, SoundEffectPlayer
26+
from utils.audio_player import AthkarPlayer, AyahPlayer, SurahPlayer, SoundEffectPlayer
2727
from utils.Startup import StartupManager
2828

2929

@@ -103,6 +103,12 @@ def init_ui(self):
103103
self.ayah_volume.valueChanged.connect(self.OnAyahVolume)
104104
self.ayah_volume.setAccessibleName(self.ayah_volume_label.text())
105105
self.ayah_volume.setLayoutDirection(Qt.LayoutDirection.LeftToRight)
106+
self.surah_volume_label = QLabel("مستوى صوت السور")
107+
self.surah_volume = QSlider(Qt.Orientation.Horizontal)
108+
self.surah_volume.setRange(0, 100)
109+
self.surah_volume.valueChanged.connect(self.OnSurahVolume)
110+
self.surah_volume.setAccessibleName(self.surah_volume_label.text())
111+
self.surah_volume.setLayoutDirection(Qt.LayoutDirection.LeftToRight)
106112
self.athkar_volume_label = QLabel("مستوى صوت الأذكار")
107113
self.athkar_volume = QSlider(Qt.Orientation.Horizontal)
108114
self.athkar_volume.setRange(0, 100)
@@ -117,6 +123,8 @@ def init_ui(self):
117123
self.group_audio_layout.addWidget(self.volume)
118124
self.group_audio_layout.addWidget(self.ayah_volume_label)
119125
self.group_audio_layout.addWidget(self.ayah_volume)
126+
self.group_audio_layout.addWidget(self.surah_volume_label)
127+
self.group_audio_layout.addWidget(self.surah_volume)
120128
self.group_audio_layout.addWidget(self.athkar_volume_label)
121129
self.group_audio_layout.addWidget(self.athkar_volume)
122130
self.group_audio_layout.addWidget(self.sound_checkbox)
@@ -228,6 +236,11 @@ def init_ui(self):
228236
main_layout.addLayout(buttons_layout)
229237
self.setLayout(main_layout)
230238

239+
240+
def OnSurahVolume(self) -> None:
241+
for instance in SurahPlayer.instances:
242+
instance.set_volume(self.surah_volume.value())
243+
231244
def OnAyahVolume(self) -> None:
232245
for instance in AyahPlayer.instances:
233246
instance.set_volume(self.ayah_volume.value())
@@ -277,6 +290,7 @@ def save_settings(self):
277290
"speak_actions_enabled": self.speech_checkbox.isChecked(),
278291
"volume_level": self.volume.value(),
279292
"ayah_volume_level": self.ayah_volume.value(),
293+
"surah_volume_level": self.surah_volume.value(),
280294
"athkar_volume_level": self.athkar_volume.value()
281295
}
282296

@@ -328,6 +342,7 @@ def set_current_settings(self):
328342
self.volume.setValue(current_settings["audio"]["volume_level"])
329343
self.athkar_volume.setValue(current_settings["audio"]["athkar_volume_level"])
330344
self.ayah_volume.setValue(current_settings["audio"]["ayah_volume_level"])
345+
self.surah_volume.setValue(current_settings["audio"]["surah_volume_level"])
331346
self.run_in_background_checkbox.setChecked(current_settings["general"]["run_in_background_enabled"])
332347
self.turn_pages_checkbox.setChecked(current_settings["reading"]["auto_page_turn"])
333348
self.start_on_system_start_checkbox.setChecked(current_settings["general"]["auto_start_enabled"])

ui/sura_player_ui/menubar.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,27 @@ def __init__(self, parent=None):
1818
self.play_pause_action = QAction("تشغيل", self) # "Play"
1919
self.stop_action = QAction("إيقاف", self) # "Stop"
2020
self.forward_action = QAction("تقديم", self) # "Forward"
21-
self.rewind_action = QAction("إرجاع", self) # "Rewind"
21+
self.rewind_action = QAction("ترجيع", self) # "Rewind"
22+
self.replay_action = QAction("إعادة", self) # "Replay"
2223
self.up_volume_action = QAction("رفع الصوت", self)
2324
self.down_volume_action = QAction("خفض الصوت", self)
25+
self.next_surah_action = QAction("السورة التالية", self)
26+
self.previous_surah_action = QAction("السورة السابقة", self)
27+
self.next_reciter_action = QAction("القارئ التالي", self)
28+
self.previous_reciter_action = QAction("القارئ السابق", self)
2429

2530
# Add Actions to Menu
2631
player_menu.addAction(self.play_pause_action)
2732
player_menu.addAction(self.stop_action)
2833
player_menu.addAction(self.forward_action)
2934
player_menu.addAction(self.rewind_action)
35+
player_menu.addAction(self.replay_action)
3036
player_menu.addAction(self.up_volume_action)
3137
player_menu.addAction(self.down_volume_action)
38+
player_menu.addAction(self.next_surah_action)
39+
player_menu.addAction(self.previous_surah_action)
40+
player_menu.addAction(self.next_reciter_action)
41+
player_menu.addAction(self.previous_reciter_action)
3242

3343
# Create Actions for Main Menu
3444
self.close_window_action = QAction("إغلاق النافذة", self)
@@ -42,7 +52,7 @@ def __init__(self, parent=None):
4252
self.installEventFilter(self)
4353

4454
def get_player_actions(self) -> List[QAction]:
45-
return [self.play_pause_action, self.stop_action, self.forward_action, self.rewind_action, self.up_volume_action, self.down_volume_action]
55+
return [self.play_pause_action, self.stop_action, self.forward_action, self.rewind_action, self.replay_action, self.up_volume_action, self.down_volume_action, self.next_surah_action, self.previous_surah_action, self.next_reciter_action, self.previous_reciter_action]
4656

4757
def eventFilter(self, obj, event: QEvent):
4858
if obj == self:

ui/sura_player_ui/sura_player_ui.py

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -162,12 +162,17 @@ def connect_signals(self):
162162
self.menubar.forward_action.triggered.connect(self.forward)
163163
self.rewind_button.clicked.connect(self.rewind)
164164
self.menubar.rewind_action.triggered.connect(self.rewind)
165+
self.menubar.replay_action.triggered.connect(self.replay)
165166
self.volume_up_button.clicked.connect(self.increase_volume)
166167
self.menubar.up_volume_action.triggered.connect(self.increase_volume)
167168
self.volume_down_button.clicked.connect(self.decrease_volume)
168169
self.menubar.down_volume_action.triggered.connect(self.decrease_volume)
169170
self.next_surah_button.clicked.connect(self.next_surah)
170171
self.previous_surah_button.clicked.connect(self.previous_surah)
172+
self.menubar.next_surah_action.triggered.connect(self.next_surah)
173+
self.menubar.previous_surah_action.triggered.connect(self.previous_surah)
174+
self.menubar.next_reciter_action.triggered.connect(self.next_reciter)
175+
self.menubar.previous_reciter_action.triggered.connect(self.previous_reciter)
171176
self.close_button.clicked.connect(self.OnClose)
172177
self.volume_slider.valueChanged.connect(self.update_volume)
173178
self.time_slider.valueChanged.connect(self.update_time)
@@ -193,31 +198,29 @@ def disable_focus(self):
193198
for widget in widgets:
194199
widget.setFocusPolicy(Qt.FocusPolicy.NoFocus)
195200

196-
def setup_shortcuts(self, disable=False, first_time=True):
201+
def setup_shortcuts(self, disable=False,):
197202

198203
shortcuts = {
199-
self.menubar.play_pause_action: "Space",
200-
self.menubar.forward_action: "Right",
201-
self.menubar.rewind_action: "Left",
204+
self.menubar.play_pause_action: ["Space", "K"],
205+
self.menubar.forward_action: ["Right", "L"],
206+
self.menubar.rewind_action: ["Left", "J"],
207+
self.menubar.replay_action: "Home",
202208
self.menubar.up_volume_action: "Up",
203209
self.menubar.down_volume_action: "Down",
210+
self.menubar.previous_surah_action: "Ctrl+Left",
211+
self.menubar.next_surah_action: "Ctrl+Right",
212+
self.menubar.next_reciter_action: "Ctrl+Down",
213+
self.menubar.previous_reciter_action: "Ctrl+Up",
204214
self.menubar.stop_action: "S",
205-
self.close_button: "Ctrl+Q",
206-
self.next_surah_button: "Ctrl+Right",
207-
self.previous_surah_button: "Ctrl+Left",
208-
}
215+
self.menubar.close_window_action: ["Ctrl+W", "Ctrl+F4"],
216+
self.menubar.close_program_action: "Ctrl+X",
217+
}
209218

210219
for widget, key_sequence in shortcuts.items():
211-
widget.setShortcut(QKeySequence(key_sequence))
220+
key_sequence = [key_sequence] if isinstance(key_sequence, str) else key_sequence
221+
widget.setShortcuts([QKeySequence(key) for key in key_sequence])
212222

213-
shortcuts = {
214-
"Ctrl+Down": self.next_reciter,
215-
"Ctrl+Up": self.previous_reciter
216-
}
217223

218-
if first_time:
219-
for key_sequence, function in shortcuts.items():
220-
QShortcut(QKeySequence(key_sequence), self).activated.connect(function)
221224

222225
def update_current_reciter(self):
223226
reciter_id = self.reciter_combo.currentData()
@@ -236,6 +239,7 @@ def update_current_reciter(self):
236239
self.filter_manager.change_category_items(2, sura_items)
237240
self.statusBar().showMessage(f"القارئ الحالي: {self.reciter_combo.currentText()}")
238241
saved_sura = self.surah_combo.findData(self.preferences_manager.get_int("sura_number"))
242+
saved_sura = 0 if saved_sura == -1 else saved_sura
239243
self.surah_combo.setCurrentIndex(saved_sura)
240244

241245
def update_current_surah(self):
@@ -265,6 +269,10 @@ def forward(self):
265269
def rewind(self):
266270
self.player.rewind(10)
267271

272+
def replay(self):
273+
self.player.set_position(0)
274+
275+
268276
def next_surah(self):
269277
current_index = self.surah_combo.currentIndex()
270278
if current_index < self.surah_combo.count() - 1:
@@ -382,15 +390,22 @@ def OnFilteredItemsUpdated(self, widget: QComboBox, items: List[Item], selected_
382390

383391
def keyPressEvent(self, event: QKeyEvent):
384392

393+
394+
395+
385396
if self.filter_manager.handle_key_press(event):
386397
return
387-
398+
399+
if event.modifiers() & (Qt.ControlModifier | Qt.ShiftModifier | Qt.AltModifier):
400+
return
401+
388402
shortcuts = {
389403
ord("E"): lambda: UniversalSpeech.say(self.elapsed_time_label.text()),
390404
ord("R"): lambda: UniversalSpeech.say(self.remaining_time_label.text()),
391405
ord("T"): lambda: UniversalSpeech.say(self.total_time.text()),
392406
ord("C"): lambda: UniversalSpeech.say(self.reciter_combo.currentText()),
393407
ord("V"): lambda: UniversalSpeech.say(self.surah_combo.currentText()),
408+
ord("I"): lambda: UniversalSpeech.say(F"{self.surah_combo.currentText()}, {self.reciter_combo.currentText()}"),
394409
}
395410

396411
key_native = event.nativeVirtualKey()

utils/settings.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ class SettingsManager:
1010
default_settings = {
1111
"general": {
1212
"language": "Arabic",
13-
"ltr_direction": False,
1413
"run_in_background_enabled": False,
1514
"auto_start_enabled": False,
1615
"auto_save_position_enabled": False,

0 commit comments

Comments
 (0)