﻿B4A=true
Group=Book\matnBook
ModulesStructureVersion=1
Type=Class
Version=10.5
@EndOfDesignText@
Sub Class_Globals
 
	Private mCallBack As Object
	Private mEventName As String
 
	Private idSure As Int
    
	Private list_aye,list_Sura As List
	
	Public speedSound As Float = 1
	
	Private pphon As Phone

	Private boolSetRate As Boolean

	Private boolPBook As Boolean
 	Private startPosition1 As String
	Private sound_name2 As String

End Sub

Public Sub Initialize(Caller As Object, pEventName As String)
  	
	list_aye.Initialize
	list_Sura.Initialize
	
	boolSetRate = False
 
	mCallBack = Caller
	mEventName = pEventName
 
	CallSub3(playServiceBook,"addSub",Me,"playBook")

End Sub

Public Sub play(idSure1 As Int,aye1 As Int,startPosition As String,boolPBook1 As Boolean)

	boolPBook = boolPBook1
	idSure   = idSure1
	playSoundSot(aye1,startPosition)
	
End Sub
   
Private Sub playSoundSot(sound_name As Int,startPosition As String)
	
	Try
    
		jump(sound_name)
  
		If Not(boolPBook) Then
			If playServiceBook.playBook.IsInitialized  And playServiceBook.playBook.IsPlaying Then
				playServiceBook.playBook.Pause
			End If
		Else
			If playServiceBook.play2Book.IsInitialized  And playServiceBook.play2Book.IsPlaying Then
				playServiceBook.play2Book.Pause
			End If
		End If
     
		playServices("")
		
		If Not(boolPBook) Then
			playServiceBook.playBook.load(File.DirInternal&"/"&"abtahi/Book/"&idSure,"1.mp3")
			playServiceBook.playBook.Position = startPosition
			playServiceBook.playBook.Play
			addSpeed(speedSound)
 		Else
 			startPosition1 = startPosition
			
			CallSub2(playServiceBook,"playLoad",idSure)
			
		End If
  		
	Catch
		func.ToastERROR(func.gland(94))
		Log(LastException)
	End Try

End Sub
  
Sub play2Book_StreamReady
	playBook_StreamReady
End Sub

Sub playBook_StreamReady
	
	Log("playBook_StreamReady: "&speedSound)
	
	speedRate
	setPosition(startPosition1)
	playServiceBook.play2Book.Play
	
	If SubExists(mCallBack, mEventName & "_StreamReady") Then
		CallSub(mCallBack, mEventName & "_StreamReady")
	End If
   	

End Sub
 
Sub playBook_StreamBuffer(Percentage As Int)
	If SubExists(mCallBack, mEventName & "_StreamBuffer") Then
		CallSub2(mCallBack, mEventName & "_StreamBuffer",Percentage)
	End If
End Sub

Sub playBook_StreamError
	If SubExists(mCallBack, mEventName & "_StreamError") Then
		CallSub(mCallBack, mEventName & "_StreamError")
	End If
End Sub

Private Sub playBook_Complete
	Log("nextSure")
	
	If SubExists(mCallBack, mEventName & "_nextClick") Then
		CallSub(mCallBack, mEventName & "_nextClick")
	End If

End Sub
 
Private Sub speedRate
 	
	Try
		If pphon.SdkVersion >=23 Then
  		
			If Not(boolPBook) Then
				Dim jo As JavaObject = playServiceBook.playBook
			Else
				Dim jo As JavaObject = playServiceBook.play2Book
			End If
		
			jo = jo.GetField("mp")

			Dim PP As JavaObject = jo.RunMethod("getPlaybackParams",Null)
	 
			PP.RunMethod("setSpeed",Array(speedSound))
			jo.RunMethod("setPlaybackParams",Array(PP))
	
		End If
	
	Catch
		Log(LastException)
	End Try
	
End Sub
  
Private Sub pauseE
	
	If Not(boolPBook) Then
		If playServiceBook.playBook.IsInitialized And isPlaying Then
			playServiceBook.playBook.Pause
			boolSetRate = True
		End If
	Else
		If playServiceBook.play2Book.IsInitialized And isPlaying Then
			playServiceBook.play2Book.Pause
			boolSetRate = True
		End If
	End If

End Sub
  
Public Sub addSpeed (speedSound1 As Float)
	
	func.savePFM("speedQuran",speedSound1)

	speedSound = speedSound1
	
	Try
		pauseE
		If boolSetRate Then CallSubDelayed(Me,"playE")
	Catch
		Log(LastException)
	End Try
 
End Sub

Private Sub playE
	boolSetRate = False
	speedRate
	
	If Not(boolPBook) Then
		playServiceBook.playBook.Play
	Else
		playServiceBook.play2Book.Play
	End If

End Sub

 
Private Sub jump(jump1 As String)
	
	Dim Position As Int = jump1
	
	Position = Position -1
	
	If SubExists(mCallBack, mEventName & "_jump") Then
		CallSub2(mCallBack, mEventName & "_jump",Position)
	End If

End Sub
 
Public Sub pause
 	If Not(boolPBook) Then
		If playServiceBook.playBook.IsPlaying Then
 			playServiceBook.playBook.Pause
		End If
	Else
		If playServiceBook.play2Book.IsPlaying Then
			playServiceBook.play2Book.Pause
		End If
	End If

End Sub

Public Sub plays
	speedRate
	
	If Not(boolPBook) Then
		playServiceBook.playBook.Play
	Else
		playServiceBook.play2Book.Play
	End If
   
	playServices(sound_name2)
	
End Sub

Public Sub isPlaying As Boolean
	
	Try
		If Not(boolPBook) Then
			Return playServiceBook.playBook.IsPlaying
		Else
			Return playServiceBook.play2Book.IsPlaying
		End If
	Catch
		Log(LastException)
	End Try
	Return False


End Sub
 
Public Sub getDuration As Int
	
	If Not(boolPBook) Then
		Return playServiceBook.playBook.Duration
	Else
		Return playServiceBook.play2Book.Duration
	End If

End Sub
 
Public Sub getPosition As Int
	
	If Not(boolPBook) Then
		Return playServiceBook.playBook.Position
	Else
 		
		Dim jo As JavaObject = playServiceBook.play2Book
		Return jo.RunMethod("getPosition", Null)

	End If
End Sub
 
Public Sub setPosition (Position As Int)
	
	If Not(boolPBook) Then
		playServiceBook.playBook.Position = Position
	Else
		Dim jo As JavaObject = playServiceBook.play2Book
		jo.RunMethod("setPosition",Array As Object(Position))
	End If

End Sub

 
Public Sub close
	
	If Not(boolPBook) Then
		If playServiceBook.playBook.IsInitialized And playServiceBook.playBook.IsPlaying Then
			playServiceBook.playBook.Pause
		End If
	Else
		If playServiceBook.play2Book.IsInitialized Then
			playServiceBook.play2Book.Pause
			playServiceBook.play2Book.Stop
		End If
	End If
   	
End Sub

Public Sub playServices(sound_name As String)
	
	sound_name2 = sound_name
	
	Dim nameSure As String = func.readPFM("NameBook")
  	
 	Dim list As List
	list.Initialize
	
	list.Add(sound_name)
 	list.Add(nameSure)
	list.Add(boolPBook)
	
	CallSub2(playServiceBook,"showNotific",list)
	
End Sub

 


