Imports System.IO
Imports WMPLib
Public Class Form1
'قائمه ملفات صوت الايات
Dim lst_mp3aya As New List(Of String)
'قائمه ايات السوره
Dim lst_txtaya As New List(Of String)
'رقم ملف صوت الايه
Dim Murl As Integer
'عداد التكرار
Dim Repet As Integer = 1
'عدد الايات
Dim Naya As Integer
'من الاية
Dim aya_start As Integer
'الى الاية
Dim aya_fin As Integer
Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
'خط كتايه السوره
Dim privateFonts As New Drawing.Text.PrivateFontCollection
privateFonts.AddFontFile(Application.StartupPath & "\elhadi\UthmanicHafs1_Ver12.otf")
'تحديد خط الريتشبكس
RichTextBox1.Font = New Font(privateFonts.Families(0), 16, FontStyle.Regular) ' KFGQPC HAFS Uthmanic Script; 15,75pt
'توسيط النص
RichTextBox1.SelectionAlignment = HorizontalAlignment.Center
'للقراءه فقط
RichTextBox1.ReadOnly = True
ComboBox1.FlatStyle = FlatStyle.Flat
ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
Comstart.FlatStyle = FlatStyle.Flat
Comstart.DropDownStyle = ComboBoxStyle.DropDownList
ComFin.FlatStyle = FlatStyle.Flat
ComFin.DropDownStyle = ComboBoxStyle.DropDownList
'تجهيز عدد التكرار
'اقل رقم تكرار
NumericUpDown1.Minimum = 1
'اعلى رقم تكرار
NumericUpDown1.Maximum = 10
'تعطيل زر تحفيظ
Button1.Enabled = False
'تعطيل زر توقيف
Button2.Enabled = False
End Sub
'كمبو - اختر سورة من القائمة
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles ComboBox1.SelectedIndexChanged
'ايقاف مؤقت من الايه
Timerstart.Stop()
'ايقاف مؤقت الى الايه
Timerfin.Stop()
'ايقاف مشغل الصوت
AxWindowsMediaPlayer1.Ctlcontrols.stop()
'افراغ قائمه ملفات صوت الايات
lst_mp3aya.Clear()
'افراغ 'قائمه ايات السوره
lst_txtaya.Clear()
Repet = 1 'اعاده ضبط عداد التكرار
'aya = "" 'مسح الايات من الريتشبكس
'رقم السوره
Dim Nsoara = ComboBox1.SelectedIndex + 1
'تعبئه قائمه ايات السوره بالايات
For Each h In My.Computer.FileSystem.ReadAllText(Application.StartupPath & "\elhadi\" & Nsoara & ".txt").Split(vbNewLine)
lst_txtaya.Add(h.Trim)
Next
'عدد ايات السوره = عدد عناصر قائمه الايات
Naya = lst_txtaya.Count
'اظهار السوره في الريتشبكس
RichTextBox1.Text = String.Join(" ", lst_txtaya.ToArray)
'مسح تحديد خلفيه الايه
'تحديد الكل في الريتشبكس
RichTextBox1.SelectAll()
'تغيير لون خلفيه النص المحدد
RichTextBox1.SelectionBackColor = Me.BackColor
'افراغ كمبو - من الايه
Comstart.Items.Clear()
'افراغ كمبو - الى الايه
ComFin.Items.Clear()
'تعبئه الكمبو - من الايه / الى الايه
For f As Integer = 1 To lst_txtaya.Count
Comstart.Items.Add(f) 'من الايه
ComFin.Items.Add(f) 'الى الاية
Next
'تعبئه قائمه ملفات صوت ايات السوره
For Each file In IO.Directory.GetFiles(Application.StartupPath & "\elhadi\" & Nsoara)
lst_mp3aya.Add(file)
Next
'تحديد رقم اول ايه
Comstart.SelectedIndex = 0
'تحديد رقم اخر ايه
ComFin.SelectedIndex = ComFin.Items.Count - 1
'تفعيل زر تحفيظ
Button1.Enabled = True
'تفعيل زر توقيف
Button2.Enabled = True
End Sub
'كمبو - من الاية
Private Sub Comstart_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles Comstart.SelectedIndexChanged
'افراغ كمبو - الى الايه
ComFin.Items.Clear()
'تعبئه كمبو - الى الايه
For i = Comstart.SelectedIndex + 1 To Naya
ComFin.Items.Add(i)
Next
'اختيار اول عنصر
ComFin.SelectedIndex = 0
End Sub
'تحفيظ
Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
'من الايه
aya_start = Comstart.Text - 1
'رقم ملف صوت الايه = رقم من الايه
Murl = aya_start
'الى الايه
aya_fin = ComFin.Text - 1
lecture() 'قراءه الايه
End Sub
'توقيف
Private Sub Button2_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button2.Click
'ايقاف مشغل الصوت
AxWindowsMediaPlayer1.Ctlcontrols.stop()
'ايقاف مؤقت - من الايه
Timerstart.Stop()
'ايقاف مؤقت - الى الايه
Timerfin.Stop()
End Sub
'قراءه الايه
Sub lecture()
'تشغيل ملف صوت الايه
AxWindowsMediaPlayer1.URL = lst_mp3aya(Murl)
'مسح تحديد خلفيه الايه
RichTextBox1.SelectAll()
RichTextBox1.SelectionBackColor = Me.BackColor
'تحديد خلفيه الايه
Dim index = RichTextBox1.Text.LastIndexOf(lst_txtaya(Murl))
RichTextBox1.Find(lst_txtaya(Murl), index, RichTextBox1.TextLength, RichTextBoxFinds.None)
RichTextBox1.SelectionBackColor = Color.Yellow
'بدء مؤقت - الى الايه
Timerfin.Start()
End Sub
'حساب وقت صوت الايه
Sub cal()
'مده صوت الايه
Dim dur = AxWindowsMediaPlayer1.currentMedia.duration
'وضع مده مؤقت - من الايه
Timerstart.Interval = dur * 1000
'بدء مؤقت - من الايه
Timerstart.Start()
End Sub
'مؤقت بدايه التكرار
Private Sub Timerstart_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timerstart.Tick
'ايقاف مؤقت - الى الايه
Timerfin.Stop()
'اذا كانت رقم بدايه الايه = رقم نهايه الايه
If aya_start = aya_fin Then
'اذا كان عداد التكرار اقل من عداد التكرار
If Repet < NumericUpDown1.Value Then
Repet += 1 'زياده عداد التكرار
lecture() 'قراءه الايه
End If
''''''''''''''''''''''''
'اذا كانت رقم بدايه الايه اقل من رقم نهايه الايه
ElseIf aya_start < aya_fin Then
'''''''''''''''''''''''
If Murl = aya_fin Then
If Repet < NumericUpDown1.Value Then
Repet += 1 'زياده عداد التكرار
'رقم ملف صوت الايه = رقم بدايه الايه
Murl = aya_start
lecture() 'قراءه الايه
End If
Else
'زياده رقم ملف صوت الايه
Murl += 1
lecture() 'قراءه الايه
End If
''''''''''''''''''''''''''
End If
End Sub
'مؤقت نهايه التكرار
Private Sub Timerfin_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles Timerfin.Tick
cal() 'حساب وقت صوت الايه
'ايقاف مؤقت - الى الايه
Timerfin.Stop()
End Sub
End Class