﻿B4A=true
Group=Default Group
ModulesStructureVersion=1
Type=Activity
Version=11.8
@EndOfDesignText@
#Region Module Attributes
	#FullScreen: False
	#IncludeTitle: True
#End Region

'version 1.10
Sub Process_Globals
	'Dim StringUtils1 As StringUtils

	
	Private cvs As B4XCanvas
	Private xui As XUI
	Private NameColumn As String
	Private NumberColumn As Int  'it does not like this declaration
	
End Sub

Sub Globals
	Dim lMessage As String
	Dim h() As String
	Dim xui As XUI
	'Dim cdHoneyDew As ColorDrawable
	Dim Header As Panel
	
	Dim NumberOfColumns, RowHeight, ColumnWidth As Int
	Dim HeaderColor, TableColor, FontColor, HeaderFontColor As Int
	Dim FontSize As Float

	Dim Alignment As Int
	Dim SelectedRow As Int
	Dim SelectedRowColor As Int
	Dim lblNumber As B4XView
	'Table settings
	HeaderColor = Colors.LightGray
	RowHeight = 30dip
	TableColor = Colors.White
	FontColor = Colors.Black
	HeaderFontColor = Colors.Blue
	FontSize = 10
	Alignment = Gravity.CENTER 'change to Gravity.LEFT or Gravity.RIGHT for other alignments.
	
	Private LineNo_Column_Position, OrderNo_Column_Position As Int
	
	SelectedRowColor = Colors.Yellow
	
	Private BtnExit As Button
	'Private PanelQuery As Panel
	Private SVQuery As ScrollView
	
	Private B4XTable1 As B4XTable
	Private btnPrintAll As B4XView
	Private btnPrintSelected As B4XView
	
End Sub

Sub Activity_Create(FirstTime As Boolean)

	Try
		GlobalFunctions.Popup_Query_Message = ""
		
		Log("Activity Create " & FirstTime)
		
		If FirstTime = False Then
			Return
		End If
		
		NumberOfColumns = 0
		
		If GlobalFunctions.aryMasterList.IsInitialized = False Then
			GlobalFunctions.Popup_Query_Message = "Nothing to show."
			Activity.Finish
			Return
		End If
		If GlobalFunctions.aryMasterList.Size = 0 Then
			GlobalFunctions.Popup_Query_Message = "Nothing to show."
			Activity.Finish
			Return
		End If
		
		Log("Load frmPopUpList")
		Activity.LoadLayout("frmPopUpList")
		

		NumberOfColumns = GlobalFunctions.Get_aryHM_Value ("NoOfCols")
		'ColumnWidth = SVQuery.Width / NumberOfColumns
		Log (" No Of Columns = " & NumberOfColumns & " Width = " & ColumnWidth)
'		SelectedRow = -1
		Activity.Title = GlobalFunctions.PopUp_TitleCaption
		
		
		Dim p As B4XView = xui.CreatePanel("")
		p.SetLayoutAnimated(0, 0, 0, 1dip, 1dip)
		cvs.Initialize(p)
		
		If GlobalFunctions.PopUp_TitleCaption.Contains ("ID") = False  Then
			
			btnPrintAll.Visible = False
			btnPrintSelected.Visible = False 
			
		End If
		GlobalFunctions.PopUp_TitleCaption = ""
		
		Load_Lists(False)
		
		Sleep(300)
		
		'B4XTable1.lblNumber.TextSize = 10
'	HoneyDew = Colors.ARGB(255,240,255,240)
		' white rgb(255, 255, 255)
		' white rgb(255, 255, 255)
		' brown rgb(150, 75, 0)
		' dim gray 105,105, 105
		' gray 190,190, 190
		' cool gray 140, 146, 172
		' smoke white Colors.ARGB(255, 245,245, 245)
'		Activity.Color = Colors.ARGB(255, 245,245, 245)
'		GlobalFunctions.Grid_Row_Selected = False
'		Load_Lists(True)
		
	
	Catch
		Log(LastException)
	End Try
End Sub

Sub BtnExit_Click
	
	Try
		GlobalFunctions.aryMasterList.Initialize
		SVQuery.Initialize(0)
		Header.Initialize("")
		If GlobalFunctions.Grid_Row_Selected = False Then
			GlobalFunctions.SO = ""
			GlobalFunctions.LineNo = 0
		End If
		GlobalFunctions.Clear_Query_Values
	
		Activity.Finish
		StartActivity(GlobalFunctions.passActivity)
	Catch
		Log(LastException)
	End Try
End Sub


Sub Load_Lists(HeadersExist As Boolean)
	Dim NoOfRecords As Long
	Dim lNumberOfHeaderColumns As Int = NumberOfColumns
	Dim Data As List
	Dim i2 As Int
	Dim sTemp As String 
	Dim row() As String
	
	Try
		
		Log("Load_List")
		
		GlobalFunctions.FirstRecordValue = ""
		GlobalFunctions.LastRecordValue = ""
		
		LineNo_Column_Position = 0
		OrderNo_Column_Position = 0
		If HeadersExist = False  Then
			'headers.Initialize
			'headers.Add(GlobalFunctions.aryQueryHeaders)
		    
			B4XTable1.RowHeight = 30
			
			For i = 0 To lNumberOfHeaderColumns - 1
				'h(i) = GlobalFunctions.aryQueryHeaders(i)
				
				B4XTable1.AddColumn(GlobalFunctions.aryQueryHeaders(i), B4XTable1.COLUMN_TYPE_TEXT)
				
				If GlobalFunctions.aryQueryHeaders(i).ToUpperCase.Contains ("LINE") Then
					LineNo_Column_Position = i
				End If
				If GlobalFunctions.aryQueryHeaders(i).ToUpperCase.Contains ("ORDER") Then
					OrderNo_Column_Position = i
				End If
			Next
		
		End If
		
		i = 0
		
		Data.Initialize
		Data = GlobalFunctions.aryMasterList  ' local List
		NoOfRecords = Data.Size
		Log("No of Rows = " & NoOfRecords )
		If Data.Size > 0 Then
			B4XTable1.SetData(Data)
		End If
	
	Catch
		Log(LastException)
	End Try
End Sub



Sub Header_Click
	Dim l As Label
	Dim col As Int
	Try
		l = Sender
		col = l.Tag
		Activity.Title = "Header clicked: " & col
	Catch
		Log(LastException)
	End Try
End Sub


Sub B4XTable1_DataUpdated
	Dim ShouldRefresh As Boolean
	Dim tbl As B4XTable = Sender.As(B4XTable)
	
	Try
	
		Log("TableView_DataUpdated")
	
		'NOT NEEDED:  NameColumn and NumberColumn are global B4XTableColumns that we want to measure
		For Each column As B4XTableColumn In tbl.Columns
			
			Dim MaxWidth As Int
			
			For i = 0 To B4XTable1.VisibleRowIds.Size - 1
				
				Dim RowId As Long = tbl.VisibleRowIds.Get(i)
				'' NOT NEEDED    If RowId > 0 Then
				Dim pnl As B4XView = column.CellsLayouts.Get(i + 1)
				Dim lbl As B4XView = pnl.GetView(0)
				
				Dim txt As String = B4XTable1.GetRow(RowId).Get(column.Id)
		
				MaxWidth = Max(MaxWidth, cvs.MeasureText(txt, lbl.Font).Width + 10dip)

			Next
        
			'    Get Header Width
			Dim txt As String = column.Title
			If txt.Length > 1 Then
				MaxWidth = Max(MaxWidth, cvs.MeasureText(txt, lbl.Font).Width + 10dip)
				If MaxWidth > column.ComputedWidth Or MaxWidth < column.ComputedWidth - 20dip Then
					column.Width = MaxWidth
					ShouldRefresh = True
				End If
			End If
		
		
		Next
    
		If ShouldRefresh Then
			tbl.Refresh
		End If
	Catch
		Log(LastException)
	End Try
	
End Sub


Private Sub B4XTable1_CellLongClicked (ColumnId As String, RowId As Long)
	Dim sValue As String 
	Try
		sValue = B4XTable1.GetRow(RowId).Get(ColumnId)
		Log("Long")
		Log(sValue)
		If LineNo_Column_Position > 0 Then
			GlobalFunctions.LineNo = B4XTable1.GetRow(RowId).Get(LineNo_Column_Position)
		End If
		If OrderNo_Column_Position > 0 Then
			GlobalFunctions.SO = B4XTable1.GetRow(RowId).Get(OrderNo_Column_Position)
		End If
		GlobalFunctions.DC.ReturnPopUpQueryValue = sValue
		BtnExit_Click
	Catch
		Log(LastException)
	End Try
End Sub

Private Sub B4XTable1_CellClicked (ColumnId As String, RowId As Long)
	Dim sValue As String
	Try
		sValue = B4XTable1.GetRow(RowId).Get(ColumnId)
		Log("short")
		Log(sValue)
		
	Catch
		Log(LastException)
	End Try
End Sub