The below ProgressBar code will help to continually loop the ProgressBar until the Sub is complete its job. Hopefully this can be useful. Thank you to Erel.
Sub Process Global
Dim t1 As Timer
Dim Progress As Int = 0
End Sub
Sub Global
Private pb As ProgressBar
End Sub
Sub Process Global
Dim t1 As Timer
Dim Progress As Int = 0
End Sub
Sub Global
Private pb As ProgressBar
End Sub
B4X:
Sub EmailBtn4_Click
'ProgressBar need to be Initialize
pb.Initialize("pb")
Log(pb)
t1.Enabled = True
Log (t1)
Dim gd As GradientDrawable
gd.Initialize("TOP_BOTTOM", Array As Int(Colors.Blue, Colors.Red))
gd.CornerRadius = 3dip
'Background colour Yellow
Dim cd As ColorDrawable
cd.Initialize(Colors.Yellow, 3dip)
SetProgressDrawable(pb, gd, cd)
pb.Progress = 1
Log(pb.Progress)
'Starts the timer to do the ProgressBar Loop.
t1_tick
Activity.AddView(pb, 10dip, 10dip, 400dip, 50dip)
Log(pb)
SMTP.Initialize("mail.xxxx.com.my", 587, "email", "password", "SMTP")
'SMTP.Initialize("mail.xxxx.com.my", 587, "email", "", "SMTP")
SMTP.StartTLSMode = False
SMTP.To.Add("email1")
'SMTP.To.Add("email2")
SMTP.Subject = "Email Title "
SMTP.Body = "Message "
SMTP.AddAttachment(File.DirInternal, "file.db")
SMTP.AddAttachment(File.DirInternal, "file.CSV")
SMTP.AddAttachment(File.DirInternal, ".xls")
SMTP.Send
Log(pb)
End Sub
'This below Sub SetProgressDrawable code was given by Erel
Sub SetProgressDrawable(p As ProgressBar, drawable As Object, backgroundDrawable As Object)
Dim r As Reflector
Dim clipDrawable As Object
clipDrawable = r.CreateObject2("android.graphics.drawable.ClipDrawable", _
Array As Object(drawable, Gravity.LEFT, 1), _
Array As String("android.graphics.drawable.Drawable", "java.lang.int", "java.lang.int"))
r.Target = p
r.Target = r.RunMethod("getProgressDrawable") 'Gets the layerDrawable
r.RunMethod4("setDrawableByLayerId", _
Array As Object(16908288, backgroundDrawable), _
Array As String("java.lang.int", "android.graphics.drawable.Drawable"))
r.RunMethod4("setDrawableByLayerId", _
Array As Object(r.GetStaticField("android.R$id", "progress"), clipDrawable), _
Array As String("java.lang.int", "android.graphics.drawable.Drawable"))
End Sub
'Starts the timer to do the ProgressBar Loop. Once Send email button clicked.
Sub t1_tick
'Progress < 100. The ProgressBar lenght is 100.
If Progress< 100 Then
Progress = Progress + 1
Log (Progress)
pb.Progress = Progress
Log (pb.Progress)
Else
'To re-Set the ProgressBar to 0. sometimes it gets late to send email. Until then the
'ProgressBar will be running from 0 to 100 continually.
Progress = 0
Log (Progress)
pb.Progress = Progress
End If
Log (pb.Progress = Progress)
Log (Progress)
End Sub
Sub SMTP_MessageSent(Success As Boolean)
Log(Success)
If Success Then
ToastMessageShow("Message sent successfully", True)
Progress = 0
Else
ToastMessageShow("Error sending message", True)
Log(LastException.Message)
End If
t1.Enabled = False
Log (t1)
pb.RemoveView
Log(pb)
End Sub