Private Sub DrawValue(Value As Float)
cvs.ClearRect(cvs.TargetRect)
cvs.DrawCircle(cx, cy, radius, clrEmpty, False, stroke)
If myMaxMillisecs = 0 Then
mLbl.Text = "Claim BTC"
Else ' Show m:ss by scaling maxMilliseconds
Dim lblMillisecs As Long = myMaxMillisecs * (Value / 100) ' Adjust code here to round up or down to next second
mLbl.Text = ConvertTicksToTimeString(lblMillisecs)
End If
Dim startAngle = -90, sweepAngle = Value / 100 * 360 As Float
If Value < 100 Then
Dim p As B4XPath
p.InitializeArc(cx, cy, radius + stroke + 1dip, startAngle, sweepAngle)
cvs.ClipPath(p)
cvs.DrawCircle(cx, cy, radius - 0.5dip, clrFull, False, stroke + 1dip)
cvs.RemoveClip
Else
cvs.DrawCircle(cx, cy, radius - 0.5dip, clrFull, False, stroke + 1dip)
End If
cvs.Invalidate
End Sub
Sub ConvertTicksToTimeString(t As Long) As String
Dim hours, minutes, seconds As Int
hours = t / DateTime.TicksPerHour
minutes = (t Mod DateTime.TicksPerHour) / DateTime.TicksPerMinute
seconds = (t Mod DateTime.TicksPerMinute) / DateTime.TicksPerSecond
Return NumberFormat(minutes, 2, 0) & ":" & NumberFormat(seconds, 2, 0)
End Sub