2222from PyQt6 .QtCore import Qt
2323from core_functions .Reciters import AyahReciter
2424from utils .const import data_folder , program_english_name
25- from utils .settings import SettingsManager
25+ from utils .settings import Config
26+
2627from utils .audio_player import bass_initializer , AthkarPlayer , AyahPlayer , SurahPlayer , SoundEffectPlayer
2728from utils .Startup import StartupManager
2829import qtawesome as qta
@@ -39,6 +40,7 @@ def __init__(self, parent):
3940 self .set_current_settings ()
4041
4142
43+
4244 def init_ui (self ):
4345 main_layout = QVBoxLayout ()
4446 taps_layout = QHBoxLayout ()
@@ -60,7 +62,6 @@ def init_ui(self):
6062 listening_item .setIcon (0 , qta .icon ("fa.headphones" ))
6163
6264
63-
6465 reading_item = QTreeWidgetItem (["القراءة" ])
6566 reading_item .setIcon (0 , qta .icon ("fa.book" ))
6667
@@ -318,62 +319,49 @@ def save_settings(self):
318319 AthkarPlayer .apply_new_sound_card (self .athkar_device_combo .currentData ())
319320 SoundEffectPlayer .apply_new_sound_card (self .volume_device_combo .currentData ())
320321
321- if SettingsManager . current_settings [ " general" ][ " auto_start_enabled" ] != self .start_on_system_start_checkbox .isChecked ():
322+ if Config . general . auto_start_enabled != self .start_on_system_start_checkbox .isChecked ():
322323 if self .start_on_system_start_checkbox .isChecked ():
323324 StartupManager .add_to_startup (program_english_name )
324325 else :
325326 StartupManager .remove_from_startup (program_english_name )
326327
327- if SettingsManager . current_settings [ " reading" ][ " font_type" ] != self .font_type_combo .currentData ():
328+ if Config . reading . font_type != self .font_type_combo .currentData ():
328329 self .parent .quran_view .setText (self .parent .quran .reload_quran (self .font_type_combo .currentData ()))
329330
330- general_settings = {
331- "run_in_background_enabled" : self .run_in_background_checkbox .isChecked (),
332- "auto_start_enabled" : self .start_on_system_start_checkbox .isChecked (),
333- "auto_save_position_enabled" : self .auto_save_position_checkbox .isChecked (),
334- "check_update_enabled" : self .update_checkbox .isChecked (),
335- "logging_enabled" : self .log_checkbox .isChecked ()
336- }
337-
338- audio_settings = {
339- "sound_effect_enabled" : self .sound_checkbox .isChecked (),
340- "start_with_basmala_enabled" : self .basmala_checkbox .isChecked (),
341- "speak_actions_enabled" : self .speech_checkbox .isChecked (),
342- "volume_level" : self .volume .value (),
343- "volume_device" : self .volume_device_combo .currentData (),
344- "ayah_volume_level" : self .ayah_volume .value (),
345- "ayah_device" : self .ayah_device_combo .currentData (),
346- "surah_volume_level" : self .surah_volume .value (),
347- "surah_device" : self .surah_device_combo .currentData (),
348- "athkar_volume_level" : self .athkar_volume .value (),
349- "athkar_device" : self .athkar_device_combo .currentData ()
350- }
351-
352- listening_settings = {
353- "reciter" : self .reciters_combo .currentData (),
354- "action_after_listening" : self .action_combo .currentData (),
355- "forward_time" : self .duration_spinbox .value (),
356- "auto_move_focus" : self .auto_move_focus_checkbox .isChecked ()
357- }
358-
359- reading_settings = {
360- "font_type" : self .font_type_combo .currentData (),
361- "auto_page_turn" : self .turn_pages_checkbox .isChecked ()
362- }
363-
364- search_settings = {
365- "ignore_tashkeel" : self .ignore_tashkeel_checkbox .isChecked (),
366- "ignore_hamza" : self .ignore_hamza_checkbox .isChecked (),
367- "match_whole_word" : self .match_whole_word_checkbox .isChecked ()
368- }
369-
370- SettingsManager .write_settings ({
371- "general" : general_settings ,
372- "audio" : audio_settings ,
373- "listening" : listening_settings ,
374- "reading" : reading_settings ,
375- "search" : search_settings
376- })
331+ # Update settings in Config
332+ Config .general .run_in_background_enabled = self .run_in_background_checkbox .isChecked ()
333+ Config .general .auto_start_enabled = self .start_on_system_start_checkbox .isChecked ()
334+ Config .general .auto_save_position_enabled = self .auto_save_position_checkbox .isChecked ()
335+ Config .general .check_update_enabled = self .update_checkbox .isChecked ()
336+ Config .general .logging_enabled = self .log_checkbox .isChecked ()
337+
338+ Config .audio .sound_effect_enabled = self .sound_checkbox .isChecked ()
339+ Config .audio .start_with_basmala_enabled = self .basmala_checkbox .isChecked ()
340+ Config .audio .speak_actions_enabled = self .speech_checkbox .isChecked ()
341+ Config .audio .volume_level = self .volume .value ()
342+ Config .audio .volume_device = self .volume_device_combo .currentData ()
343+ Config .audio .ayah_volume_level = self .ayah_volume .value ()
344+ Config .audio .ayah_device = self .ayah_device_combo .currentData ()
345+ Config .audio .surah_volume_level = self .surah_volume .value ()
346+ Config .audio .surah_device = self .surah_device_combo .currentData ()
347+ Config .audio .athkar_volume_level = self .athkar_volume .value ()
348+ Config .audio .athkar_device = self .athkar_device_combo .currentData ()
349+
350+ Config .listening .reciter = self .reciters_combo .currentData ()
351+ Config .listening .action_after_listening = self .action_combo .currentData ()
352+ Config .listening .forward_time = self .duration_spinbox .value ()
353+ Config .listening .auto_move_focus = self .auto_move_focus_checkbox .isChecked ()
354+
355+ Config .reading .font_type = self .font_type_combo .currentData ()
356+ Config .reading .auto_page_turn = self .turn_pages_checkbox .isChecked ()
357+
358+ Config .search .ignore_tashkeel = self .ignore_tashkeel_checkbox .isChecked ()
359+ Config .search .ignore_hamza = self .ignore_hamza_checkbox .isChecked ()
360+ Config .search .match_whole_word = self .match_whole_word_checkbox .isChecked ()
361+
362+ # Save settings to file
363+ Config .save_settings ()
364+
377365 self .accept ()
378366 self .deleteLater ()
379367
@@ -387,46 +375,45 @@ def OnReset(self):
387375 msg_box .exec ()
388376
389377 if msg_box .clickedButton () == yes_button :
390- SettingsManager .reset_settings ()
378+ Config .reset_settings ()
391379 self .set_current_settings ()
392380
393381 def set_current_settings (self ):
394- current_settings = SettingsManager .current_settings
395- self .sound_checkbox .setChecked (current_settings ["audio" ]["sound_effect_enabled" ])
396- self .basmala_checkbox .setChecked (current_settings ["audio" ]["start_with_basmala_enabled" ])
397- self .speech_checkbox .setChecked (current_settings ["audio" ]["speak_actions_enabled" ])
398- self .volume .setValue (current_settings ["audio" ]["volume_level" ])
399- self .athkar_volume .setValue (current_settings ["audio" ]["athkar_volume_level" ])
400- self .ayah_device_combo .setCurrentIndex (current_settings ["audio" ]["ayah_device" ])
401- self .surah_device_combo .setCurrentIndex (current_settings ["audio" ]["surah_device" ])
402- self .volume_device_combo .setCurrentIndex (current_settings ["audio" ]["volume_device" ])
403- self .athkar_device_combo .setCurrentIndex (current_settings ["audio" ]["athkar_device" ])
404- self .ayah_volume .setValue (current_settings ["audio" ]["ayah_volume_level" ])
405- self .surah_volume .setValue (current_settings ["audio" ]["surah_volume_level" ])
406- self .run_in_background_checkbox .setChecked (current_settings ["general" ]["run_in_background_enabled" ])
407- self .turn_pages_checkbox .setChecked (current_settings ["reading" ]["auto_page_turn" ])
408- self .start_on_system_start_checkbox .setChecked (current_settings ["general" ]["auto_start_enabled" ])
409- self .auto_save_position_checkbox .setChecked (current_settings ["general" ]["auto_save_position_enabled" ])
410- self .update_checkbox .setChecked (current_settings ["general" ]["check_update_enabled" ])
411- self .duration_spinbox .setValue (current_settings ["listening" ]["forward_time" ])
412- self .auto_move_focus_checkbox .setChecked (current_settings ["listening" ]["auto_move_focus" ])
413- self .log_checkbox .setChecked (current_settings ["general" ]["logging_enabled" ])
414- self .ignore_tashkeel_checkbox .setChecked (current_settings ["search" ]["ignore_tashkeel" ])
415- self .ignore_hamza_checkbox .setChecked (current_settings ["search" ]["ignore_hamza" ])
416- self .match_whole_word_checkbox .setChecked (current_settings ["search" ]["match_whole_word" ])
382+ self .sound_checkbox .setChecked (Config .audio .sound_effect_enabled )
383+ self .basmala_checkbox .setChecked (Config .audio .start_with_basmala_enabled )
384+ self .speech_checkbox .setChecked (Config .audio .speak_actions_enabled )
385+ self .volume .setValue (Config .audio .volume_level )
386+ self .athkar_volume .setValue (Config .audio .athkar_volume_level )
387+ self .ayah_device_combo .setCurrentIndex (Config .audio .ayah_device )
388+ self .surah_device_combo .setCurrentIndex (Config .audio .surah_device )
389+ self .volume_device_combo .setCurrentIndex (Config .audio .volume_device )
390+ self .athkar_device_combo .setCurrentIndex (Config .audio .athkar_device )
391+ self .ayah_volume .setValue (Config .audio .ayah_volume_level )
392+ self .surah_volume .setValue (Config .audio .surah_volume_level )
393+ self .run_in_background_checkbox .setChecked (Config .general .run_in_background_enabled )
394+ self .turn_pages_checkbox .setChecked (Config .reading .auto_page_turn )
395+ self .start_on_system_start_checkbox .setChecked (Config .general .auto_start_enabled )
396+ self .auto_save_position_checkbox .setChecked (Config .general .auto_save_position_enabled )
397+ self .update_checkbox .setChecked (Config .general .check_update_enabled )
398+ self .duration_spinbox .setValue (Config .listening .forward_time )
399+ self .auto_move_focus_checkbox .setChecked (Config .listening .auto_move_focus )
400+ self .log_checkbox .setChecked (Config .general .logging_enabled )
401+ self .ignore_tashkeel_checkbox .setChecked (Config .search .ignore_tashkeel )
402+ self .ignore_hamza_checkbox .setChecked (Config .search .ignore_hamza )
403+ self .match_whole_word_checkbox .setChecked (Config .search .match_whole_word )
417404 # Update the reciter ComboBox
418- reciter_id = current_settings [ " listening" ][ " reciter" ]
405+ reciter_id = Config . listening . reciter
419406 for index in range (self .reciters_combo .count ()):
420407 if self .reciters_combo .itemData (index ) == reciter_id :
421408 self .reciters_combo .setCurrentIndex (index )
422409 break
423410
424- stored_id = current_settings [ " listening" ][ " action_after_listening" ]
411+ stored_id = Config . listening . action_after_listening
425412 index = self .action_combo .findData (stored_id )
426413 if index != - 1 :
427414 self .action_combo .setCurrentIndex (index )
428415
429- stored_id = current_settings [ " reading" ][ " font_type" ]
416+ stored_id = Config . reading . font_type
430417 index = self .font_type_combo .findData (stored_id )
431418 if index != - 1 :
432419 self .font_type_combo .setCurrentIndex (index )
0 commit comments