﻿B4A=true
Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=12.5
@EndOfDesignText@
Sub Class_Globals
	Public DTDialog As PreferencesDialog
	Public SF As Object
	Public Options As Map
	
	Public DLGParam As Map	
	Private XUI As XUI
	Private Par As B4XView
	Private MEvent As String
	Private Page As B4XView
End Sub

Public Sub Initialize(ID As B4XView,PageName As String,Eventname As String, Parameter As Map)
	Options.Initialize
	Page = B4XPages.GetPage(PageName)
	MEvent = Eventname
	DLGParam = Parameter
	
	Select  Parameter.Get("DLGType")
		Case "Date"
			DLGParam.Put("DLGWidth",75%x)
			DLGParam.Put("DLGHeight",15%y)
		Case "Time"
			DLGParam.Put("DLGWidth",75%x)
			DLGParam.Put("DLGHeight",25%y)
		Case "DateTime"
			DLGParam.Put("DLGWidth",75%x)
			DLGParam.Put("DLGHeight",30%y)
	End Select
	
	' Default Setup
	If DLGParam.isinitialized = False Or DLGParam.Size = 2 Then
		DLGParam.Put("Theme","THEME_LIGHT")
		DLGParam.Put("InfoTitle","Help")
		DLGParam.Put("InfoDateDLG","Click on Date to open Calendar.")
		DLGParam.Put("InfoTimeDLG","Time in 24h format.")
		DLGParam.Put("InfoDateTimeDLG","Click on Date to open Calendar. Time in 24h format.")
		DLGParam.Put("TitleBarColor",Colors.blue)
		DLGParam.Put("TitleBarHeight",50dip)
		DLGParam.Put("TitleTextColor",Colors.White)
		DLGParam.Put("Top", 100dip)
		DLGParam.Put("BackgroundColor",Colors.White)
		DLGParam.Put("BodyTextColor",Colors.White)
		DLGParam.Put("BorderColor",Colors.Black)
		DLGParam.Put("BorderWidth", 2dip)
		DLGParam.Put("BorderCornerRadius",5dip)
		DLGParam.put("ItemDate", "Date:")
		DLGParam.put("ItemTimeHour", "Hour:")
		DLGParam.put("ItemTimeMinute", "Minute:")
		DLGParam.put("ItemTimeSecond", "Second:")
		DLGParam.Put("btOKString", "OK")
		DLGParam.Put("btOKWidth",20dip)
		DLGParam.Put("btOKLeft",50dip)
		DLGParam.Put("btOKColor", Colors.Blue)
		DLGParam.Put("btOKTextColor", Colors.White)
		DLGParam.Put("btCancelString", "Cancel")
		DLGParam.Put("btCancelWidth",20dip)
		DLGParam.Put("btCancelLeft",40dip)
		DLGParam.Put("btCancelColor", Colors.Blue)
		DLGParam.Put("btCancelTextColor", Colors.White)
	End If
	
	' Initialize Dialog
	DLGParam = DLGParam
	DTDialog.Initialize(ID," ", _
		DLGParam.Get("DLGWidth"),DLGParam.Get("DLGHeight"))

End Sub


public Sub showDialog
	If DTDialog.IsInitialized And DLGParam.IsInitialized Then
		
		' get local time
		Dim dt As Long = DateTime.Now - (DateTime.TimeZoneOffset * DateTime.TicksPerHour)
		' configuration
		Options.clear		
		Select DLGParam.Get("DLGType")
			Case "Date"
				DTDialog.LoadFromJson(File.ReadString(File.DirAssets, "Datepicker.json"))
				DTDialog.SetExplanation("Info",DLGParam.Get("InfoDateDLG"))
			Case "Time"
				DTDialog.LoadFromJson(File.ReadString(File.DirAssets, "Timepicker.json"))
				DTDialog.SetExplanation("Info",DLGParam.Get("InfoTimeDLG"))		
				Options.put("Hour",DateTime.GetHour(dt))
				Options.put("Minute",DateTime.GetMinute(dt))
				Options.put("Second",DateTime.GetSecond(dt))
			Case "DateTime"
				DTDialog.LoadFromJson(File.ReadString(File.DirAssets, "DateTimepicker.json"))
				DTDialog.SetExplanation("Info",DLGParam.Get("InfoDateTimeDLG"))
				Options.put("Hour",DateTime.GetHour(dt))
				Options.put("Minute",DateTime.GetMinute(dt))
				Options.put("Second",DateTime.GetSecond(dt))
		End Select	
		DTDialog.Dialog.OverlayColor = XUI.Color_Transparent
		DTDialog.Dialog.BackgroundColor = DLGParam.Get("BackgroundColor")
		DTDialog.Dialog.BorderColor = DLGParam.Get("BorderColor")
		DTDialog.Dialog.BodyTextColor=DLGParam.Get("BodyTextColor")
		DTDialog.Dialog.BorderCornersRadius = DLGParam.Get("BorderCornerRadius")
		DTDialog.Dialog.BorderWidth=DLGParam.Get("BorderWidth")
		DTDialog.Title = DLGParam.Get("DLGTitle")
		DTDialog.dialog.TitleBarColor= DLGParam.Get("TitleBarColor")
		DTDialog.dialog.TitleBarTextColor = DLGParam.get("TitleTextColor")
		If DLGParam.Get("Theme") = "THEME_LIGHT" Then
			DTDialog.Theme=DTDialog.THEME_LIGHT
		Else
			DTDialog.Theme=DTDialog.THEME_DARK
		End If
		DTDialog.Dialog.TitleBarHeight = DLGParam.Get("TitleBarHeight")
		
		Dim SF As Object = DTDialog.ShowDialog(Options,"OK","Cancel")
		
		'getButton
	
		Dim btnCancel As B4XView = DTDialog.Dialog.GetButton(XUI.DialogResponse_Cancel)
		btnCancel.Width = DLGParam.Get("btCancelWidth") + 60dip
		btnCancel.Left = DLGParam.Get("btCancelLeft") - 60dip
		btnCancel.TextColor = DLGParam.Get("btCancelTextColor")
		btnCancel.color = DLGParam.Get("btCancelColor")
		btnCancel.Text = DLGParam.Get("btCancelString")
	
		Dim btnOk As B4XView = DTDialog.Dialog.GetButton(XUI.DialogResponse_Positive)
		btnOk.Width = DLGParam.Get("btOKWidth") + 60dip
		btnOk.Left = DLGParam.Get("btOKLeft") - 60dip
		btnOk.TextColor = DLGParam.Get("btOKTextColor")
		btnOk.color = DLGParam.Get("btOKColor")
		btnOk.Text = DLGParam.Get("btOKString")
		
		Select DLGParam.Get("DLGType")
			Case "Date"
				SetItemText("Date", DLGParam.get("ItemDate"))
				SetItemText("Info", DLGParam.Get("InfoTitle"))
			Case "Time"
				SetItemText("Hour", DLGParam.get("ItemTimeHour"))
				SetItemText("Minute", DLGParam.get("ItemTimeMinute"))
				SetItemText("Second", DLGParam.get("ItemTimeSecond"))
				SetItemText("Info", DLGParam.Get("InfoTitle"))
			Case "DateTime"
				SetItemText("Date", DLGParam.get("ItemDate"))
				SetItemText("Hour", DLGParam.get("ItemTimeHour"))
				SetItemText("Minute", DLGParam.get("ItemTimeMinute"))
				SetItemText("Second", DLGParam.get("ItemTimeSecond"))
				SetItemText("Info", DLGParam.Get("InfoTitle"))
		End Select
	End If
	
	wait for (DTDialog.ShowDialog(Options,DLGParam.Get("btOKString"), _
		DLGParam.Get("btCancelString"))) Complete (Result As Int)
	
	If Result = XUI.DialogResponse_Positive Then
		Dim dialogresult As Object
		Select DLGParam.Get("DLGType")
			Case "Date"
				dialogresult = Options.Get("Date")
			Case "Time"
				Dim h As String = Options.Get("Hour")
				Dim m As String = Options.get("Minute")
				Dim s As String = Options.Get("Second")
				h = h.replace(".0","")
				m = m.replace(".0","")
				s = s.replace(".0","")
				If h.Length =1 Then h = "0" & h
				If m.length =1 Then m = "0" & m
				If s.length =1 Then s = "0" & s			
				Dim tistr As String = h & ":" & m & ":" & s
				Dim tif As String = DateTime.TimeFormat
				DateTime.TimeFormat = "HH:mm:ss"
				dialogresult = DateTime.TimeParse(tistr)
				DateTime.TimeFormat = tif
			Case "DateTime"
				Dim dttemp As String
				dttemp = DateTime.Date(Options.Get("Date"))
				Dim h As String = Options.Get("Hour")
				Dim m As String = Options.get("Minute")
				Dim s As String = Options.Get("Second")
				h = h.replace(".0","")
				m = m.replace(".0","")
				s = s.replace(".0","")
				If h.Length =1 Then h = "0" & h
				If m.length =1 Then m = "0" & m
				If s.length =1 Then s = "0" & s
				Dim tistr As String = h & ":" & m & ":" & s
				Dim tif As String = DateTime.TimeFormat
				DateTime.TimeFormat = "HH:mm:ss"
				DateTime.TimeFormat = tif
				dialogresult = DateTime.DateTimeParse(dttemp,tistr)
				DateTime.TimeFormat = tif
		End Select
		'B4XPages.MainPage.TD_DateTimePicker1_Result(Options)
		CallSub2(Page,MEvent & "_Result",dialogresult)
	End If
End Sub

' Localize Item Text and create Help Button
Private Sub SetItemText (ParamKey As String, ParamText As String)
	For i = 0 To DTDialog.CustomListView1.Size - 1
		Dim pi As B4XPrefItem = DTDialog.CustomListView1.GetValue(i)
		Log(pi.Key)
		If pi.Key = ParamKey And pi.key <> "Info" Then
			DTDialog.CustomListView1.GetPanel(i).GetView(1).text = ParamText
			Exit	
		else if pi.key = ParamKey And pi.Key = "Info" Then
			Dim temp As B4XView = _
				DTDialog.CustomListView1.GetPanel(i).GetView(1)
			temp.Text = DLGParam.Get("InfoTitle")
			temp.textColor =  DLGParam.Get("btOKTextColor")
			temp.SetColorAndBorder(DLGParam.Get("btOKColor"),2dip,Colors.Black,5dip)
			temp.SetTextAlignment("CENTER","CENTER")
			temp.Width = DTDialog.mBase.width -20dip
			temp.Left = 10dip
			Exit
		End If
	Next
End Sub
