' add this to a new class module. I've used cDurationDialog
'Class module
Sub Class_Globals
Private theDialog As CustomDialog
Private p_hours As Int
Private p_minutes As Int
Private p_seconds As Int
Private pnlContainer As Panel
'Private lbHours As Label
'Private lbMinutes As Label
'Private lbSeconds As Label
Private txtHours As EditText
Private txtMinutes As EditText
Private txtSeconds As EditText
Private bttHoursP As Button
Private bttHoursM As Button
Private bttMinutesP As Button
Private bttMinutesM As Button
Private bttSecondsP As Button
Private bttSecondsM As Button
Dim lbRealPreparationInterval As Label
Dim lbRealPreparationIntervalValue As Label
End Sub
'Initializes the object. You can add parameters to this method if needed.
Public Sub Initialize
DrawPanel
End Sub
' Does all the internal job to visualize the dialog
Private Sub DrawPanel()
' initialize the labels
'lbHours.Initialize("")
'lbHours.Text = "Ore: "
'lbMinutes.Initialize("")
'lbMinutes.Text = "Minuti: "
'lbSeconds.Initialize("")
'lbSeconds.Text = "Secondi: "
' initialize the edittexts
txtHours.Initialize("")
txtHours.TextSize=35
txtHours.Gravity=1
txtHours.InputType = txtHours.INPUT_TYPE_PHONE
txtMinutes.Initialize("")
txtMinutes.TextSize=txtHours.TextSize
txtMinutes.Gravity=1
txtMinutes.InputType = txtMinutes.INPUT_TYPE_PHONE
txtSeconds.Initialize("")
txtSeconds.TextSize=txtHours.TextSize
txtSeconds.Gravity=1
txtSeconds.InputType = txtMinutes.INPUT_TYPE_PHONE
'initialize the buttin
bttHoursP.Initialize("bttHoursP")
bttHoursP.Text = "+"
bttHoursP.TextSize = 20
bttHoursP.Typeface = Typeface.DEFAULT_BOLD
bttHoursM.Initialize("bttHoursM")
bttHoursM.Text = "-"
bttHoursM.TextSize = bttHoursP.TextSize
bttHoursM.Typeface = bttHoursP.Typeface
bttMinutesP.Initialize("bttMinutesP")
bttMinutesP.Text = "+"
bttMinutesP.TextSize = bttHoursP.TextSize
bttMinutesP.Typeface = bttHoursP.Typeface
bttMinutesM.Initialize("bttMinutesM")
bttMinutesM.Text = "-"
bttMinutesM.TextSize = bttHoursP.TextSize
bttMinutesM.Typeface = bttHoursP.Typeface
bttSecondsP.Initialize("bttSecondsP")
bttSecondsP.Text = "+"
bttSecondsP.TextSize = bttHoursP.TextSize
bttSecondsP.Typeface = bttHoursP.Typeface
bttSecondsM.Initialize("bttSecondsM")
bttSecondsM.Text = "-"
bttSecondsM.TextSize = bttHoursP.TextSize
bttSecondsM.Typeface = bttHoursP.Typeface
' initialize the container
pnlContainer.Initialize("")
' add the labels to the container
'pnlContainer.AddView(lbHours, 5dip, 0, 70dip, 50dip)
'pnlContainer.AddView(lbMinutes, 5dip, lbHours.Top + lbHours.Height + 5dip, 70dip, 50dip)
'pnlContainer.AddView(lbSeconds, 5dip, lbMinutes.Top + lbHours.Height + 5dip, 70dip, 50dip)
pnlContainer.AddView(txtHours, 30dip, 70dip, 80dip, 70dip)
pnlContainer.AddView(txtMinutes, txtHours.Left + txtHours.Width + 10dip , txtHours.Top, txtHours.Width, txtHours.Height)
pnlContainer.AddView(txtSeconds, txtMinutes.Left + txtMinutes.Width + 10dip, txtHours.Top, txtHours.Width, txtHours.Height)
pnlContainer.AddView(bttHoursP, txtHours.Left + 10dip, txtHours.Top - 50dip, 60dip, 40dip)
pnlContainer.AddView(bttHoursM, txtHours.Left + 10dip, txtHours.Top + txtHours.Height + 10dip, bttHoursP.Width, bttHoursP.Height)
pnlContainer.AddView(bttMinutesP, txtMinutes.Left + 10dip, txtHours.Top - 50dip, 60dip, 40dip)
pnlContainer.AddView(bttMinutesM, txtMinutes.Left + 10dip, txtHours.Top + txtHours.Height + 10dip, bttHoursP.Width, bttHoursP.Height)
pnlContainer.AddView(bttSecondsP, txtSeconds.Left + 10dip, txtHours.Top - 50dip, 60dip, 40dip)
pnlContainer.AddView(bttSecondsM, txtSeconds.Left + 10dip, txtHours.Top + txtHours.Height + 10dip, bttHoursP.Width, bttHoursP.Height)
' add the container to the dialog
theDialog.AddView(pnlContainer, 0, 0, 300dip, 200dip)
End Sub
' shows the dialog
#Region "Show Method"
Public Sub Show(Title As String, Positive As String, Cancel As String, Negative As String, icon As Bitmap)
DrawPanel
txtHours.Text = p_hours
txtMinutes.Text = p_minutes
txtSeconds.Text = p_seconds
theDialog.Show(Title, Positive, Cancel, Negative, Null)
p_hours = txtHours.Text
p_minutes = txtMinutes.text
End Sub
Public Sub ShowSet(Title As String, Positive As String, Cancel As String, Negative As String, icon As Bitmap, Hours As Int, _
Minutes As Int, Seconds As Int)
DrawPanel
SetDuration(Hours, Minutes,Seconds)
theDialog.Show(Title, Positive, Cancel, Negative, Null)
p_hours = txtHours.Text
p_minutes = txtMinutes.text
p_seconds = txtSeconds.Text
End Sub
Public Sub ShowSetSec(Title As String, Positive As String, Cancel As String, Negative As String, icon As Bitmap, Seconds As Int)
DrawPanel
SetSeconds(Seconds)
theDialog.Show(Title, Positive, Cancel, Negative, Null)
p_hours = txtHours.Text
p_minutes = txtMinutes.text
p_seconds = txtSeconds.Text
End Sub
#End Region
#Region "Button Event"
Sub bttHoursM_Click
If p_hours>0 Then
p_hours = p_hours - 1
txtHours.Text = p_hours
End If
End Sub
Sub bttHoursP_Click
p_hours = p_hours + 1
txtHours.Text = p_hours
End Sub
Sub bttMinutesM_Click
If p_minutes>0 Then
p_minutes = p_minutes - 1
txtMinutes.Text = p_minutes
End If
End Sub
Sub bttMinutesP_Click
p_minutes = p_minutes + 1
txtMinutes.Text = p_minutes
End Sub
Sub bttSecondsM_Click
If p_seconds>0 Then
p_seconds = p_seconds - 1
txtSeconds.Text = p_seconds
End If
End Sub
Sub bttSecondsP_Click
p_seconds = p_seconds + 1
txtSeconds.Text = p_seconds
End Sub
#End Region
#Region "Get Method"
' returns the hours value
Public Sub GetHours() As Int
Return p_hours
End Sub
' returns the minutes value
Public Sub GetMinutes() As Int
Return p_minutes
End Sub
' returns the minutes value
Public Sub GetSeconds() As Int
Return p_seconds
End Sub
' returns everything as minutes. Suitable for storing in DB, etc...
Public Sub GetAllAsSeconds()
Return GetHours * 3600 + GetMinutes * 60 + GetSeconds
End Sub
' returns the stringified representation of the duration
Public Sub GetFullString()
Return NumberFormat(GetHours,2,0) & ":" & NumberFormat(GetMinutes,2,0) & ":" & NumberFormat(GetSeconds,2,0)
End Sub
#End Region
#Region "Set Method"
' sets the duration as hours, minutes
Public Sub SetDuration(hours As Int, minutes As Int, seconds As Int)
Try
p_hours = hours
Catch
p_hours = 0
End Try
Try
p_minutes = minutes
Catch
p_minutes = 0
End Try
Try
p_seconds = seconds
Catch
p_seconds = 0
End Try
txtHours.Text = p_hours
txtMinutes.Text = p_minutes
txtSeconds.Text = p_seconds
End Sub
' sets the hours of the dialog
Public Sub SetHours(hours As Int)
p_hours = hours
End Sub
' sets the minutes of the dialog
Public Sub SetMinutes(minutes As Int)
p_minutes = minutes
End Sub
' sets the seconds of the dialog
Public Sub SetSeconds(seconds As Int)
p_minutes = seconds
End Sub
' sets everything as minutes. Suitable when loading from DB. The dialog correctly calculates the hours and the remaining
' is shown as minutes.
Public Sub SetAllAsSeconds(Seconds As Int)
p_hours = Seconds / 3600
p_minutes = (Seconds/60 - p_hours*60) '(Seconds - p_hours*3600) / 60
p_seconds = Seconds Mod 60
End Sub
#End Region
' Wraps Andrew's Dialogs library .Response Property
Public Sub Response()
Return theDialog.Response
End Sub
' Wraps Andrew's Dialogs library .Version Property
Public Sub Version()
Return theDialog.Version
End Sub