#Region Activity Attributes
#FullScreen: False
#IncludeTitle: True
#End Region
Sub Process_Globals
'These global variables will be declared once when the application starts.
'These variables can be accessed from all modules.
End Sub
Sub Globals
'These global variables will be redeclared each time the activity is created.
'These variables can only be accessed from this module.
Private CLV_productos As CustomListView
Private iv_foto As B4XView
Private lb_precio As B4XView
Private xui As XUI
Private Lista_fotos_producto As CustomListView
Private et_cantidad As B4XView
Private lb_producto_nombre As B4XView
Private lb_iva As B4XView
Private lb_categoria As B4XView
End Sub
Sub Activity_Create(FirstTime As Boolean)
'Do not forget to load the layout file created with the visual designer. For example:
Activity.LoadLayout("Lista_productos")
lb_categoria.Text = Main.g_categoria
Busca_Productos(19) 'Hardcoded to ilustrate
End Sub
Sub Activity_Resume
End Sub
Sub Activity_Pause (UserClosed As Boolean)
End Sub
Sub Busca_Productos(p_categoria As Int)
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "select_productos_categoria"
cmd.Parameters = Array As Object(p_categoria)
Dim req As DBRequestManager = CreateRequest
Dim cmd As DBCommand = CreateCommand(cmd.Name, cmd.Parameters )
Wait For (req.ExecuteQuery(cmd, 0, Null)) JobDone(hj As HttpJob)
If hj.Success Then
req.HandleJobAsync(hj, "req")
Wait For (req) req_Result(resultado As DBResult)
carga_listView_productos(resultado)
Else
MsgboxAsync("Ha habido un error con la conexion","Error")
Log("ERROR: " & hj.ErrorMessage)
End If
hj.Release
End Sub
Sub carga_listView_productos(resultado As DBResult)
For i = 0 To resultado.Rows.Size - 1
Dim fila() As Object = resultado.Rows.Get(i)
Log("carga_listView_productos - (resultado.Columns.getValueAt(0))"&fila(resultado.Columns.getValueAt(0))&" "&fila(resultado.Columns.getValueAt(0)))
CLV_productos.Add(CreateListItem(fila, CLV_productos.AsView.Width, 200dip),"1")
'Sleep(450) <= I AM PRETTY SURE THIS IS WORNG
Next
End Sub
Sub CreateListItem(fila As List, Width As Int, Height As Int) As Panel
Dim p As B4XView = xui.CreatePanel("")
p.SetLayoutAnimated(0, 0, 0, Width, Height)
p.LoadLayout("producto")
lb_producto_nombre.tag = fila.get(0)
lb_producto_nombre.text = fila.get(1)
lb_precio.text = fila.get(2)
lb_iva.text =fila.get(3)
busca_fotos_producto(fila.get(0))
Return p
End Sub
Sub busca_fotos_producto(p_producto As Int)
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = "select_productos_fotos"
cmd.Parameters = Array As Object(p_producto)
Dim req As DBRequestManager = CreateRequest
Dim cmd As DBCommand = CreateCommand(cmd.Name, cmd.Parameters )
Wait For (req.ExecuteQuery(cmd, 0, Null)) JobDone(j As HttpJob)
If j.Success Then
req.HandleJobAsync(j, "req")
Wait For (req) req_Result(resultado As DBResult)
carga_listView_fotos_producto(resultado)
Else
MsgboxAsync("Ha habido un error con la conexion","Error")
Log("ERROR: " & j.ErrorMessage)
End If
j.Release
End Sub
Sub carga_listView_fotos_producto(resultado As DBResult)
For i = 0 To resultado.Rows.Size - 1
Dim fila() As Object = resultado.Rows.Get(i)
Lista_fotos_producto.Add(CreateListItemFotos(fila, Lista_fotos_producto.AsView.Width, 200dip),"1")
Next
End Sub
Sub CreateListItemFotos(fila As List, Width As Int, Height As Int) As Panel
Dim p As B4XView = xui.CreatePanel("")
p.SetLayoutAnimated(0, 0, 0, Width, Height)
p.LoadLayout("foto_producto")
Dim oBitMap As Bitmap
Dim Buffer() As Byte
Buffer = fila.Get(1) ' Image Column
If Buffer <> Null Then
Dim req As DBRequestManager = CreateRequest
oBitMap = req.BytesToImage(Buffer)
iv_foto.SetBitmap ( oBitMap)
End If
p.Height = iv_foto.Height
p.Width = iv_foto.Width
Return p
End Sub
Sub CreateRequest As DBRequestManager
Dim req As DBRequestManager
req.Initialize(Me, Main.rdcLink)
Return req
End Sub
Sub CreateCommand(Name As String, Parameters() As Object) As DBCommand
Dim cmd As DBCommand
cmd.Initialize
cmd.Name = Name
If Parameters <> Null Then cmd.Parameters = Parameters
Return cmd
End Sub