Skip to content

Commit 282bb0c

Browse files
Enabled the ability to turn pages automatically.
1 parent 1030c56 commit 282bb0c

File tree

4 files changed

+34
-16
lines changed

4 files changed

+34
-16
lines changed

core_functions/quran_class.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import sqlite3
2222
from core_functions.ayah_data import AyahData
23+
from utils.settings import SettingsManager
2324

2425

2526
class QuranConst:
@@ -45,7 +46,7 @@ def get_category_label(cls, category_number: int) -> str:
4546
class quran_mgr:
4647
def __init__(self):
4748
self.show_ayah_number = True
48-
self.aya_to_line = False
49+
self.aya_to_line = True
4950
self.current_pos = 1
5051
self.max_pos = 604
5152
self.type = 0
@@ -246,7 +247,7 @@ def get_text(self):
246247
if not self.data_list:
247248
return ""
248249

249-
text = ""
250+
text = "" if self.current_pos == 1 else "\n"
250251
current_position = 0
251252
ayah_data = AyahData()
252253

@@ -275,7 +276,9 @@ def get_text(self):
275276
last_position = current_position - 1
276277
ayah_data.insert(ayah[1], ayah[3], ayah[4], first_position, last_position)
277278

278-
text = text.strip("\n")
279+
if not SettingsManager.current_settings["reading"]["auto_page_turn"] or self.current_pos == self.max_pos:
280+
text = text.strip("\n")
281+
279282
self.text = text
280283
self.ayah_data = ayah_data
281284

ui/quran_interface.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@ def __init__(self, title):
4646
self.setGeometry(100, 100, 800, 600)
4747
self.quran = quran_mgr()
4848
self.quran.load_quran(os.path.join("database", "quran", "quran.DB"))
49-
self.quran.aya_to_line = True
5049
self.user_data_manager = UserDataManager(user_db_path)
5150
Globals.effects_manager = SoundEffectPlayer("Audio/sounds")
5251

@@ -135,8 +134,12 @@ def set_text(self):
135134
self.set_focus_to_ayah(ayah_number)
136135

137136
def set_focus_to_ayah(self, ayah_number: int):
138-
# set the Cursor to ayah_position in the text
139-
text_position = self.quran.ayah_data.get_position(ayah_number)
137+
"""set the Cursor to ayah_position in the text"""
138+
if ayah_number == -1:
139+
text_position = len(self.quran_view.toPlainText())
140+
else:
141+
text_position = self.quran.ayah_data.get_position(ayah_number)
142+
140143
cursor = QTextCursor(self.quran_view.document())
141144
cursor.setPosition(text_position)
142145
self.quran_view.setTextCursor(cursor)
@@ -155,6 +158,8 @@ def OnBack(self):
155158
Globals.effects_manager.play("previous")
156159
if self.quran.current_pos == 1:
157160
self.quran_view.setFocus()
161+
if SettingsManager.current_settings["reading"]["auto_page_turn"]:
162+
self.set_focus_to_ayah(-1)
158163

159164
def set_text_ctrl_label(self):
160165

ui/widgets/qText_edit.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from PyQt6.QtCore import QEvent, Qt, QLocale
33
from PyQt6.QtGui import QKeyEvent
44
from PyQt6.QtWidgets import QTextEdit
5+
from utils.settings import SettingsManager
56

67

78
class ReadOnlyTextEdit(QTextEdit):
@@ -42,8 +43,9 @@ def keyPressEvent(self, e):
4243
super().keyPressEvent(e)
4344
self.set_ctrl()
4445

45-
#Disable temporarily
46-
return
46+
if not SettingsManager.current_settings["reading"]["auto_page_turn"]:
47+
return
48+
4749
current_line = self.textCursor().block().blockNumber()
4850
total_lines = self.document().blockCount()
4951

utils/settings.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,17 @@ class SettingsManager:
3434
"ignore_hamza": True,
3535
"match_whole_word": False,
3636
},
37+
"reading": {
38+
"font_type": "normal",
39+
"auto_page_turn": False,
40+
},
3741
"preferences": {
3842
"theme": "default"
3943
}
40-
}
44+
}
4145

4246
@classmethod
43-
def write_settings(cls, new_settings:dict, is_reading:bool=False) -> None:
47+
def write_settings(cls, new_settings: dict, is_reading: bool = False) -> None:
4448
try:
4549
cls.config.read_dict(new_settings)
4650
with open(cls.path, "w", encoding='utf-8') as config_file:
@@ -63,16 +67,21 @@ def read_settings(cls) -> dict:
6367
for setting, default_value in cls.default_settings[section].items():
6468
try:
6569
if isinstance(default_value, bool):
66-
current_settings[section][setting] = cls.config.getboolean(section, setting)
70+
current_settings[section][setting] = cls.config.getboolean(
71+
section, setting)
6772
elif isinstance(default_value, int):
68-
current_settings[section][setting] = cls.config.getint(section, setting)
73+
current_settings[section][setting] = cls.config.getint(
74+
section, setting)
6975
elif isinstance(default_value, float):
70-
current_settings[section][setting] = cls.config.getfloat(section, setting)
76+
current_settings[section][setting] = cls.config.getfloat(
77+
section, setting)
7178
else:
72-
current_settings[section][setting] = cls.config.get(section, setting)
79+
current_settings[section][setting] = cls.config.get(
80+
section, setting)
7381
except Exception as e:
7482
print(e)
75-
cls.write_settings({section: {setting: default_value}}, is_reading=True)
83+
cls.write_settings(
84+
{section: {setting: default_value}}, is_reading=True)
7685
current_settings[section][setting] = default_value
7786

7887
return current_settings
@@ -87,4 +96,3 @@ def current_settings(cls) -> dict:
8796
if not hasattr(cls, "_current_settings"):
8897
cls._current_settings = cls.read_settings()
8998
return cls._current_settings
90-

0 commit comments

Comments
 (0)