'Class module
'Nome classe: B4XTimeTemplate
Sub Class_Globals
Private xui As XUI
Public mBase As B4XView
Private pnlMain As B4XView
Private lblTitle As Label
Private cmbHours As B4XComboBox
Private cmbMinutes As B4XComboBox
Private cmbSeconds As B4XComboBox
Private cmbMilliseconds As B4XComboBox
Public IncludeMilliseconds As Boolean = False
Public Hour As Int
Public Minute As Int
Public Second As Int
Public Millisecond As Int
End Sub
Public Sub Initialize
End Sub
Public Sub GetPanel (Dialog As B4XDialog) As B4XView
If mBase.IsInitialized = False Then
mBase = xui.CreatePanel("")
mBase.SetLayoutAnimated(0, 0, 0, 420dip, 180dip)
pnlMain = xui.CreatePanel("")
pnlMain.SetLayoutAnimated(0, 0, 0, mBase.Width, mBase.Height)
mBase.AddView(pnlMain, 0, 0, mBase.Width, mBase.Height)
CreateControls
End If
Return mBase
End Sub
Private Sub CreateControls
Dim LeftPos As Int = 10dip
Dim TopPos As Int = 20dip
Dim ComboWidth As Int = 80dip
Dim ComboHeight As Int = 40dip
Dim SpaceX As Int = 10dip
lblTitle.Initialize("")
lblTitle.Text = "Seleziona orario"
lblTitle.TextSize = 18
pnlMain.AddView(lblTitle, LeftPos, 5dip, 300dip, 25dip)
cmbHours.Initialize("cmbHours")
pnlMain.AddView(cmbHours.mBase, LeftPos, TopPos + 30dip, ComboWidth, ComboHeight)
cmbMinutes.Initialize("cmbMinutes")
pnlMain.AddView(cmbMinutes.mBase, LeftPos + ComboWidth + SpaceX, TopPos + 30dip, ComboWidth, ComboHeight)
cmbSeconds.Initialize("cmbSeconds")
pnlMain.AddView(cmbSeconds.mBase, LeftPos + (ComboWidth + SpaceX) * 2, TopPos + 30dip, ComboWidth, ComboHeight)
If IncludeMilliseconds Then
cmbMilliseconds.Initialize("cmbMilliseconds")
pnlMain.AddView( _
cmbMilliseconds.mBase, _
LeftPos + (ComboWidth + SpaceX) * 3, _
TopPos + 30dip, _
ComboWidth + 20dip, _
ComboHeight _
)
End If
FillCombos
End Sub
Private Sub FillCombos
Dim i As Int
cmbHours.Clear
For i = 0 To 23
cmbHours.Add( NumberFormat2(i, 2, 0, 0, False) )
Next
cmbMinutes.Clear
For i = 0 To 59
cmbMinutes.Add( NumberFormat2(i, 2, 0, 0, False) )
Next
cmbSeconds.Clear
For i = 0 To 59
cmbSeconds.Add( NumberFormat2(i, 2, 0, 0, False) )
Next
If IncludeMilliseconds Then
cmbMilliseconds.Clear
For i = 0 To 999
cmbMilliseconds.Add( _
NumberFormat2(i, 3, 0, 0, False) _
)
Next
End If
cmbHours.SelectedIndex = Hour
cmbMinutes.SelectedIndex = Minute
cmbSeconds.SelectedIndex = Second
If IncludeMilliseconds Then
cmbMilliseconds.SelectedIndex = Millisecond
End If
End Sub
Public Sub Show(Dialog As B4XDialog) As ResumableSub
Wait For ( _
Dialog.ShowTemplate(Me, "OK", "", "ANNULLA") _
) Complete (Result As Int)
If Result = xui.DialogResponse_Positive Then
Hour = cmbHours.SelectedIndex
Minute = cmbMinutes.SelectedIndex
Second = cmbSeconds.SelectedIndex
If IncludeMilliseconds Then
Millisecond = cmbMilliseconds.SelectedIndex
Else
Millisecond = 0
End If
End If
Return Result
End Sub
Public Sub GetTimeString As String
Dim S As String
S = _
NumberFormat2(Hour, 2, 0, 0, False) & ":" & _
NumberFormat2(Minute, 2, 0, 0, False) & ":" & _
NumberFormat2(Second, 2, 0, 0, False)
If IncludeMilliseconds Then
S = S & "." & _
NumberFormat2(Millisecond, 3, 0, 0, False)
End If
Return S
End Sub