Skip to content

Commit 7b1c5b7

Browse files
committed
more quran tafsir/translation, highlighting
1 parent 80839a9 commit 7b1c5b7

14 files changed

Lines changed: 19362 additions & 285 deletions

README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,10 @@ try Pause mode 2s, Hide Chapter Title, Shuffle
401401
- Mokhtasar (Mukhtasar) tafsir is an simplified commentary that was done around 2015 following the methodology of Ahl-us-Sunnah wal-Jamaa`ah and is available in the following languages:
402402
- Arabic, Assamese, Azerbaijani, Bengali, Bosnian, Chinese, English, French, Fulani, Hindi, Indonesian, Italian, Japanese, Khmer, Kurdish, Kyrgyz, Malayalam, Russian, Pashto, Persian, Serbian, Sinhalese, Spanish, Tagalog, Tamil, Telugu, Thai, Turkish, Urdu, Uyghur, Uzbek, Vietnamese
403403
- all are from https://quranenc.com except English, Russian and Urdu is https://mokhtasr.com/en
404+
- English Quran translations Hilali-Khan, Rowwad and Abdullah Hasan Yaqoub all from quranenc.com
405+
- clicking on a verse reference places it into the search input field
406+
407+
![](images/tafsir.jpg)
404408

405409
### Hadith
406410
- from https://hadeethenc.com and takes up 203 MB but worth it for all the following languages:
@@ -535,8 +539,8 @@ download and in transcribe screen point it to use this whisper-cli.exe instead o
535539
<summary>Miscellaneous</summary>
536540

537541
- Substicher is a flutter app so small in size. It appears big but isn't all that huge.
538-
- 29 MB fonts, 65 MB LUTs, 36 MB DeepFilterNet3 (denoise), 17 MB adhan, 115 MB quran index & tafsir, 203 MB hadeeth
539-
- So Mac app size is 578 MB - 465 MB (assets) = 113 MB real size of flutter app
542+
- 29 MB fonts, 65 MB LUTs, 36 MB DeepFilterNet3 (denoise), 17 MB adhan, 120 MB quran index & tafsir, 203 MB hadeeth
543+
- So Mac app size is 583 MB - 470 MB (assets) = 113 MB real size of flutter app
540544
- Never will get a light theme nor support music
541545
- Never will support cover images, choose audiobooks with covers and not to use subtitles, use kid3 app (qt free cross-platform app) for embedding a cover image
542546
- Reason is most audiobook players don't support subtitles, and ones that do, do so due to video support and having a cover image in background intefers with subtitles in most cases

images/tafsir.jpg

51.9 KB
Loading

lib/data/tafsir_hilali_khan.dart

Lines changed: 6233 additions & 0 deletions
Large diffs are not rendered by default.

lib/data/tafsir_mokhtasar.dart

Lines changed: 127 additions & 127 deletions
Large diffs are not rendered by default.

lib/data/tafsir_mokhtasar_all.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ import 'tafsir_mokhtasar_urdu.dart';
3030
import 'tafsir_mokhtasar_uyghur.dart';
3131
import 'tafsir_mokhtasar_uzbek.dart';
3232
import 'tafsir_mokhtasar_vietnamese.dart';
33+
import 'tafsir_hilali_khan.dart';
34+
import '../data/tafsir_rowwad_english.dart';
35+
import '../data/tafsir_yacob_english.dart';
3336

3437
const List<String> mokhtasarLanguages = [
3538
'English',

lib/data/tafsir_rowwad_english.dart

Lines changed: 6233 additions & 0 deletions
Large diffs are not rendered by default.

lib/data/tafsir_yacob_english.dart

Lines changed: 6233 additions & 0 deletions
Large diffs are not rendered by default.

lib/hadeeth/hadeeth_panel.dart

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -552,7 +552,7 @@ class _HadeethPanelState extends State<HadeethPanel> {
552552
children: [
553553
_detailSection(
554554
icon: Icons.format_quote,
555-
iconColor: Colors.amber,
555+
iconColor: Colors.orangeAccent,
556556
label: 'Hadith',
557557
text: entry.hadeeth,
558558
isRtl: isRtl,
@@ -567,6 +567,7 @@ class _HadeethPanelState extends State<HadeethPanel> {
567567
label: 'Explanation',
568568
text: entry.explanation,
569569
isRtl: isRtl,
570+
textColor: Colors.amber,
570571
),
571572
],
572573
if (entry.hints.isNotEmpty) ...[
@@ -577,12 +578,12 @@ class _HadeethPanelState extends State<HadeethPanel> {
577578
textDirection: textDir,
578579
children: [
579580
const Icon(Icons.tips_and_updates_outlined,
580-
color: Colors.orangeAccent, size: 14),
581+
color: Colors.deepPurpleAccent, size: 14),
581582
const SizedBox(width: 6),
582583
const Text(
583584
'Benefits',
584585
style: TextStyle(
585-
color: Colors.orangeAccent,
586+
color: Colors.deepPurpleAccent,
586587
fontSize: 12,
587588
fontWeight: FontWeight.w600,
588589
),
@@ -599,14 +600,14 @@ class _HadeethPanelState extends State<HadeethPanel> {
599600
Text(
600601
isRtl ? '• ' : '• ',
601602
style: const TextStyle(
602-
color: Colors.orangeAccent, fontSize: 13),
603+
color: Colors.deepPurpleAccent, fontSize: 13),
603604
),
604605
Expanded(
605606
child: SelectableText(
606607
h,
607608
textDirection: textDir,
608609
style: const TextStyle(
609-
color: Colors.white70,
610+
color: Colors.greenAccent,
610611
fontSize: 13,
611612
height: 1.5,
612613
),
@@ -650,6 +651,7 @@ class _HadeethPanelState extends State<HadeethPanel> {
650651
required String label,
651652
required String text,
652653
bool isRtl = false,
654+
Color textColor = Colors.white,
653655
}) {
654656
return Column(
655657
crossAxisAlignment: CrossAxisAlignment.start,
@@ -670,8 +672,8 @@ class _HadeethPanelState extends State<HadeethPanel> {
670672
SelectableText(
671673
text,
672674
textDirection: isRtl ? TextDirection.rtl : TextDirection.ltr,
673-
style: const TextStyle(
674-
color: Colors.white, fontSize: 13, height: 1.6),
675+
style: TextStyle(
676+
color: textColor, fontSize: 13, height: 1.6),
675677
),
676678
],
677679
);

lib/screens/player_screen.dart

Lines changed: 29 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7114,13 +7114,17 @@ class _PlayerScreenState extends State<PlayerScreen> with WidgetsBindingObserver
71147114
HardwareKeyboard.instance.isShiftPressed && event is KeyDownEvent) {
71157115
_copyChaptersList();
71167116
return KeyEventResult.handled;
7117-
} else if (event.logicalKey == LogicalKeyboardKey.keyC && event is KeyDownEvent) {
7118-
setState(() {
7119-
_showPanel = true;
7120-
_panelMode = PanelMode.chapters;
7121-
});
7122-
_scrollToCurrentChapter();
7123-
return KeyEventResult.handled;
7117+
} else if (event.logicalKey == LogicalKeyboardKey.keyC && event is KeyDownEvent) {
7118+
if (HardwareKeyboard.instance.isMetaPressed ||
7119+
HardwareKeyboard.instance.isControlPressed) {
7120+
return KeyEventResult.ignored;
7121+
}
7122+
setState(() {
7123+
_showPanel = true;
7124+
_panelMode = PanelMode.chapters;
7125+
});
7126+
_scrollToCurrentChapter();
7127+
return KeyEventResult.handled;
71247128
} else if (event.logicalKey == LogicalKeyboardKey.keyU &&
71257129
HardwareKeyboard.instance.isControlPressed && event is KeyDownEvent) {
71267130
_copyCurrentSubtitleInMemory();
@@ -7929,7 +7933,8 @@ class _PlayerScreenState extends State<PlayerScreen> with WidgetsBindingObserver
79297933
_panelMode == PanelMode.history ||
79307934
_panelMode == PanelMode.playlist ||
79317935
_panelMode == PanelMode.bookmarks ||
7932-
_panelMode == PanelMode.stats))
7936+
_panelMode == PanelMode.stats ||
7937+
_panelMode == PanelMode.quran))
79337938
SidePanel(
79347939
panelMode: _panelMode,
79357940
isCollapsed: _panelCollapsed,
@@ -11494,7 +11499,7 @@ class _PlayerScreenState extends State<PlayerScreen> with WidgetsBindingObserver
1149411499
return result;
1149511500
}
1149611501

11497-
Widget _buildNoAudiobook() {
11502+
Widget _buildNoAudiobook() {
1149811503
return GestureDetector(
1149911504
behavior: HitTestBehavior.opaque,
1150011505
onTap: () {
@@ -11636,6 +11641,21 @@ class _PlayerScreenState extends State<PlayerScreen> with WidgetsBindingObserver
1163611641
textStyle: const TextStyle(fontSize: 18),
1163711642
),
1163811643
),
11644+
const SizedBox(width: 16),
11645+
ElevatedButton.icon(
11646+
onPressed: () {
11647+
setState(() {
11648+
_showPanel = true;
11649+
_panelMode = PanelMode.quran;
11650+
});
11651+
},
11652+
icon: const Icon(Icons.menu_book),
11653+
label: const Text('Quran (q)'),
11654+
style: ElevatedButton.styleFrom(
11655+
padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 16),
11656+
textStyle: const TextStyle(fontSize: 18),
11657+
),
11658+
),
1163911659
],
1164011660
),
1164111661
const SizedBox(height: 16),

lib/screens/transcribe_screen.dart

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -560,14 +560,10 @@ List<String> _availableAudiobooks = [];
560560
final mdFilename = '$cleanFilename.md';
561561
final mdPath = path.join(chaptersDirectory, mdFilename);
562562

563-
print('=== MD CONVERSION: Writing to $mdPath ===');
564-
565563
await File(mdPath).writeAsString(mdContent.toString());
566564

567-
print('=== MD CONVERSION: Successfully wrote $mdFilename ===');
568565
}
569566

570-
print('=== MD CONVERSION: All done ===');
571567

572568
setState(() {
573569
_transcriptionStatus = 'Markdown conversion complete!';

0 commit comments

Comments
 (0)