Skip to content
palmoni5 edited this page Jul 17, 2026 · 1 revision

מערכת ההגדרות

lib/settings/ — הגדרות האפליקציה: מנוע, מסך, שירותים נלווים.

מבנה

תיקייה תוכן
engine/ ‏SettingsBloc / Repository / State / Event
tabs/ לשוניות המסך
panels/ כרטיסי הגדרה בתוך לשוניות
dialogs/ דיאלוגים (מיקום ספרייה, סיסמה ועוד)
search/ חיפוש בתוך ההגדרות
services/ גיבוי, תיקיות מותאמות, ניקוד, פר־ספר, מצב מוגן
view/ settings_screen.dart

המנוע — engine/

  • SettingsBloc — ‏~60 אירועי Update*; כל handler שומר ב־repository ופולט copyWith. שינויים בגופן/ניקוד/פיסוק/קריאה רציפה מפעילים ניקוי הגדרות פר־ספר שהפכו מיותרות.
  • SettingsRepository — מגדיר את כל מפתחות ה־key-*. עטוף ב־SettingsWrapper (לצורך בדיקות) מעל flutter_settings_screens באחסון Hive. כותב ברירות מחדל בהפעלה ראשונה, מנהל קיצורי מקלדת (מיזוג ברירות מחדל + overrides), ושומר hash סיסמה (SHA-256) למצב המוגן.
  • SettingsState — עשרות שדות: מצב כהה / מעקב אחר מערכת ההפעלה, צבעי seed, גופנים וגדלים, רוחב טקסט מרבי, הצגת ספריות חיצוניות, ניקוד/פיסוק/קריאה רציפה כברירת מחדל, מצב מנותק, עדכונים, מיזוג ספרים אישיים לעץ, ניהול כלים מוצמדים, מצב מוגן.

מסך ההגדרות

שבע לשוניות: מראה / כתב / ספריה / כלים / קיצורים / מערכת / אודות. רספונסיבי — במובייל תפריט וחזרה, בדסקטופ sidebar‏ 210px. כולל חיפוש חוצה־לשוניות (SettingsSearchIndex) שמנווט לכרטיס ומבזיק אותו (דרך cardId של SettingsCard). עטוף ב־SaferModeGuard.

SettingsScreenController — פתיחת לשונית ספציפית מקוד (למשל מ־deep link).

שירותים חשובים

תצוגת ניקוד — nikud_display_service.dart

פונקציות טהורות: הסרת ניקוד = ‏defaultRemoveNikud && (removeNikudFromTanach || !isTanach) — בתנ"ך מסירים רק אם הופעל במפורש. כולל פונקציות שקובעות אם שינוי הגדרה מחייב טעינה מחדש של ספר פתוח.

הגדרות פר־ספר — per_book_settings_service.dart

  • קובץ JSON לכל ספר תחת per_book_settings/settings_<sha1>.json; מפתח הספר מבחין אישי/רשמי.
  • תור נעילה סדרתי פר־קובץ נגד דריסות מקביליות.
  • cleanupRedundantSettings מסיר ערכים ששווים לברירת המחדל הגלובלית — כדי שהספר יירש שינויים עתידיים.
  • מודלים: TextBookPerBookSettings (גופן, מפרשים, ניקוד/פיסוק, קריאה רציפה, רוחבי טורים בצורת הדף) ו־PdfBookPerBookSettings (זום, מפרשים, מצב פריסה).

מצב מוגן (סייפר) — safer_mode_guard.dart

SaferModeGuard עוטף מסכים מוגנים ודורש סיסמה (hash‏ SHA-256). אי אפשר להסיר סיסמה כשהמצב פעיל — יש להשבית קודם.

מיקום הספרייה — change_location_dialog.dart

דיאלוג "העבר תוכן / שנה מיקום בלבד / חזרה לברירת מחדל". ‏performLibraryMove — העברה עמידת־קריסות: סריקה ← העתקה ל־staging ← קידום ← עדכון מפתחות נתיבים ← מיפוי נתיבי טאבים פתוחים (remapBookPaths) ← סגירת DB ← פתיחת אינדקס מחדש ← מחיקת מקור אחרי restart, עם rollback מלא בכשל. שימו לב: אינדקס הטקסט שורד העברה (מפתח id), אינדקס PDF נשבר (מפתח נתיב) ומנוקה.

נתיבי נתונים — lib/core/app_paths.dart

פלטפורמה שורש הנתונים
Windows %APPDATA%\otzaria
Linux ~/.local/share/otzaria
macOS ~/Library/Application Support/otzaria
Android ‏Documents
מצב נייד ליד קובץ ה־exe

תחת השורש: backups/, ‏per_book_settings/, ‏plugins/, ‏logs/.

דפים קשורים

Clone this wiki locally