Commit inicial de Java
24
B4J/C_Principal.bas
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
B4J=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=10
|
||||||
|
@EndOfDesignText@
|
||||||
|
Sub Class_Globals
|
||||||
|
Private Root As B4XView 'ignore
|
||||||
|
Private xui As XUI 'ignore
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'You can add more parameters here.
|
||||||
|
Public Sub Initialize As Object
|
||||||
|
Return Me
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'This event will be called once, before the page becomes visible.
|
||||||
|
Private Sub B4XPage_Created (Root1 As B4XView)
|
||||||
|
Root = Root1
|
||||||
|
'load the layout to Root
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||||
272
B4J/DBRequestManager.bas
Normal file
@@ -0,0 +1,272 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=6.8
|
||||||
|
@EndOfDesignText@
|
||||||
|
'Class module
|
||||||
|
' Requiere RandomAccessFile, CompressStrings, ByteConverter y OkhttpUtils2
|
||||||
|
Sub Class_Globals
|
||||||
|
Private mTarget As Object
|
||||||
|
Type DBResult (Tag As Object, Columns As Map, Rows As List)
|
||||||
|
Type DBCommand (Name As String, Parameters() As Object)
|
||||||
|
Private link As String
|
||||||
|
Private bc As ByteConverter
|
||||||
|
Private T_NULL = 0, T_STRING = 1, T_SHORT = 2, T_INT = 3, T_LONG = 4, T_FLOAT = 5 _
|
||||||
|
,T_DOUBLE = 6, T_BOOLEAN = 7, T_BLOB = 8 As Byte
|
||||||
|
Private VERSION As Float = 0.9
|
||||||
|
Private tempArray(1) As Object
|
||||||
|
Dim jobTagAnterior As String = "" 'Mod por CHV - 211109
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Target - The module that handles JobDone (usually Me).
|
||||||
|
'ConnectorLink - URL of the Java server.
|
||||||
|
Public Sub Initialize (Target As Object, ConnectorLink As String)
|
||||||
|
mTarget = Target
|
||||||
|
link = ConnectorLink
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Sends a query request.
|
||||||
|
'Command - Query name and parameters.
|
||||||
|
'Limit - Maximum rows to return or 0 for no limit.
|
||||||
|
'Tag - An object that will be returned in the result.
|
||||||
|
'Timeout - The http request timeout in ms, or 0 if default (30 secs)
|
||||||
|
Public Sub ExecuteQuery(Command As DBCommand, Limit As Int, Tag As Object, Timeout As Int) 'Mod por CHV, agregué el parametro Timeout - 211229
|
||||||
|
Dim j As HttpJob
|
||||||
|
Dim ms As OutputStream
|
||||||
|
Dim out2 As OutputStream = StartJob(j,ms, Tag)
|
||||||
|
WriteObject(Command.Name, out2)
|
||||||
|
WriteInt(Limit, out2)
|
||||||
|
WriteList(Command.Parameters, out2)
|
||||||
|
out2.Close
|
||||||
|
j.PostBytes(link & "?method=query", ms.ToBytesArray)
|
||||||
|
If Timeout <> 0 Then j.GetRequest.Timeout = Timeout
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Executes a batch of (non-select) commands.
|
||||||
|
'ListOfCommands - List of the commands that will be executes.
|
||||||
|
'Tag - An object that will be returned in the result.
|
||||||
|
Public Sub ExecuteBatch(ListOfCommands As List, Tag As Object)
|
||||||
|
Dim j As HttpJob
|
||||||
|
Dim ms As OutputStream
|
||||||
|
Dim out2 As OutputStream = StartJob(j,ms, Tag)
|
||||||
|
WriteInt(ListOfCommands.Size, out2)
|
||||||
|
For Each Command As DBCommand In ListOfCommands
|
||||||
|
WriteObject(Command.Name, out2)
|
||||||
|
WriteList(Command.Parameters, out2)
|
||||||
|
Next
|
||||||
|
out2.Close
|
||||||
|
j.PostBytes(link & "?method=batch", ms.ToBytesArray)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Similar to ExecuteBatch. Sends a single command.
|
||||||
|
Public Sub ExecuteCommand(Command As DBCommand, Tag As Object)
|
||||||
|
ExecuteBatch(Array As DBCommand(Command), Tag)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub StartJob(j As HttpJob, MemoryStream As OutputStream, Tag As Object) As OutputStream
|
||||||
|
j.Initialize("DBRequest", mTarget)
|
||||||
|
j.Tag = Tag
|
||||||
|
MemoryStream.InitializeToBytesArray(0)
|
||||||
|
Dim compress As CompressedStreams
|
||||||
|
Dim out As OutputStream = compress.WrapOutputStream(MemoryStream, "gzip")
|
||||||
|
WriteObject(VERSION, out)
|
||||||
|
Return out
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub WriteList(Parameters As List, out As OutputStream)
|
||||||
|
Dim data() As Byte
|
||||||
|
If Parameters = Null Or Parameters.IsInitialized = False Then
|
||||||
|
Dim Parameters As List
|
||||||
|
Parameters.Initialize
|
||||||
|
End If
|
||||||
|
data = bc.IntsToBytes(Array As Int(Parameters.Size))
|
||||||
|
out.WriteBytes(data, 0, data.Length)
|
||||||
|
For Each o As Object In Parameters
|
||||||
|
WriteObject(o, out)
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub WriteObject(o As Object, out As OutputStream)
|
||||||
|
Dim data() As Byte
|
||||||
|
tempArray(0) = o
|
||||||
|
If tempArray(0) = Null Then
|
||||||
|
out.WriteBytes(Array As Byte(T_NULL), 0, 1)
|
||||||
|
Else If tempArray(0) Is Short Then
|
||||||
|
out.WriteBytes(Array As Byte(T_SHORT), 0, 1)
|
||||||
|
data = bc.ShortsToBytes(Array As Short(o))
|
||||||
|
Else If tempArray(0) Is Int Then
|
||||||
|
out.WriteBytes(Array As Byte(T_INT), 0, 1)
|
||||||
|
data = bc.IntsToBytes(Array As Int(o))
|
||||||
|
Else If tempArray(0) Is Float Then
|
||||||
|
out.WriteBytes(Array As Byte(T_FLOAT), 0, 1)
|
||||||
|
data = bc.FloatsToBytes(Array As Float(o))
|
||||||
|
Else If tempArray(0) Is Double Then
|
||||||
|
out.WriteBytes(Array As Byte(T_DOUBLE), 0, 1)
|
||||||
|
data = bc.DoublesToBytes(Array As Double(o))
|
||||||
|
Else If tempArray(0) Is Long Then
|
||||||
|
out.WriteBytes(Array As Byte(T_LONG), 0, 1)
|
||||||
|
data = bc.LongsToBytes(Array As Long(o))
|
||||||
|
Else If tempArray(0) Is Boolean Then
|
||||||
|
out.WriteBytes(Array As Byte(T_BOOLEAN), 0, 1)
|
||||||
|
Dim b As Boolean = 0
|
||||||
|
Dim data(1) As Byte
|
||||||
|
If b Then data(0) = 1 Else data(0) = 0
|
||||||
|
Else If GetType(tempArray(0)) = "[B" Then
|
||||||
|
data = o
|
||||||
|
out.WriteBytes(Array As Byte(T_BLOB), 0, 1)
|
||||||
|
WriteInt(data.Length, out)
|
||||||
|
Else 'If o Is String Then (treat all other values as string)
|
||||||
|
out.WriteBytes(Array As Byte(T_STRING), 0, 1)
|
||||||
|
data = bc.StringToBytes(o, "UTF8")
|
||||||
|
WriteInt(data.Length, out)
|
||||||
|
End If
|
||||||
|
If data.Length > 0 Then out.WriteBytes(data, 0, data.Length)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub ReadObject(In As InputStream) As Object
|
||||||
|
Dim data(1) As Byte
|
||||||
|
In.ReadBytes(data, 0, 1)
|
||||||
|
Select data(0)
|
||||||
|
Case T_NULL
|
||||||
|
Return Null
|
||||||
|
Case T_SHORT
|
||||||
|
Dim data(2) As Byte
|
||||||
|
Return bc.ShortsFromBytes(ReadBytesFully(In, data, data.Length))(0)
|
||||||
|
Case T_INT
|
||||||
|
Dim data(4) As Byte
|
||||||
|
Return bc.IntsFromBytes(ReadBytesFully(In, data, data.Length))(0)
|
||||||
|
Case T_LONG
|
||||||
|
Dim data(8) As Byte
|
||||||
|
Return bc.LongsFromBytes(ReadBytesFully(In, data, data.Length))(0)
|
||||||
|
Case T_FLOAT
|
||||||
|
Dim data(4) As Byte
|
||||||
|
Return bc.FloatsFromBytes(ReadBytesFully(In, data, data.Length))(0)
|
||||||
|
Case T_DOUBLE
|
||||||
|
Dim data(8) As Byte
|
||||||
|
Return bc.DoublesFromBytes(ReadBytesFully(In, data, data.Length))(0)
|
||||||
|
Case T_BOOLEAN
|
||||||
|
Dim b As Byte = ReadByte(In)
|
||||||
|
Return b = 1
|
||||||
|
Case T_BLOB
|
||||||
|
Dim len As Int = ReadInt(In)
|
||||||
|
Dim data(len) As Byte
|
||||||
|
Return ReadBytesFully(In, data, data.Length)
|
||||||
|
Case Else
|
||||||
|
Dim len As Int = ReadInt(In)
|
||||||
|
Dim data(len) As Byte
|
||||||
|
ReadBytesFully(In, data, data.Length)
|
||||||
|
Return BytesToString(data, 0, data.Length, "UTF8")
|
||||||
|
End Select
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub ReadBytesFully(In As InputStream, Data() As Byte, Len As Int) As Byte()
|
||||||
|
Dim count = 0, read As Int
|
||||||
|
Do While count < Len And read > -1
|
||||||
|
read = In.ReadBytes(Data, count, Len - count)
|
||||||
|
count = count + read
|
||||||
|
Loop
|
||||||
|
Return Data
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub WriteInt(i As Int, out As OutputStream)
|
||||||
|
Dim data() As Byte
|
||||||
|
data = bc.IntsToBytes(Array As Int(i))
|
||||||
|
out.WriteBytes(data, 0, data.Length)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub ReadInt(In As InputStream) As Int
|
||||||
|
Dim data(4) As Byte
|
||||||
|
Return bc.IntsFromBytes(ReadBytesFully(In, data, data.Length))(0)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub ReadByte(In As InputStream) As Byte
|
||||||
|
Dim data(1) As Byte
|
||||||
|
In.ReadBytes(data, 0, 1)
|
||||||
|
Return data(0)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Handles the Job result and returns a DBResult.
|
||||||
|
Public Sub HandleJob(Job As HttpJob) As DBResult
|
||||||
|
Dim start As Long = DateTime.Now 'ignore
|
||||||
|
Dim In As InputStream = Job.GetInputStream
|
||||||
|
Dim cs As CompressedStreams
|
||||||
|
In = cs.WrapInputStream(In, "gzip")
|
||||||
|
Dim serverVersion As Float = ReadObject(In) 'ignore
|
||||||
|
Dim method As String = ReadObject(In)
|
||||||
|
Dim table As DBResult
|
||||||
|
table.Initialize
|
||||||
|
table.Columns.Initialize
|
||||||
|
table.rows.Initialize
|
||||||
|
table.Tag = Job.Tag
|
||||||
|
If jobTagAnterior <> Job.Tag Then Log("HandleJob: '"&Job.Tag&"'") 'Mod por CHV - 211109
|
||||||
|
jobTagAnterior = Job.Tag 'Mod por CHV - 211109
|
||||||
|
If method = "query" Then
|
||||||
|
Dim numberOfColumns As Int = ReadInt(In)
|
||||||
|
For i = 0 To numberOfColumns - 1
|
||||||
|
table.Columns.Put(ReadObject(In), i)
|
||||||
|
Next
|
||||||
|
Do While ReadByte(In) = 1
|
||||||
|
Dim rowObjects(numberOfColumns) As Object
|
||||||
|
table.rows.Add(rowObjects)
|
||||||
|
For col = 0 To numberOfColumns - 1
|
||||||
|
Dim o As Object = ReadObject(In)
|
||||||
|
rowObjects(col) = o
|
||||||
|
Next
|
||||||
|
Loop
|
||||||
|
Else If method = "batch" Then
|
||||||
|
table.Columns.Put("AffectedRows", 0)
|
||||||
|
Dim rows As Int = ReadInt(In)
|
||||||
|
For i = 0 To rows - 1
|
||||||
|
table.rows.Add(Array As Object(ReadInt(In)))
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
In.Close
|
||||||
|
' Log("HandleJob: " & (DateTime.Now - start))'Comentado por CHV - 211112
|
||||||
|
Return table
|
||||||
|
End Sub
|
||||||
|
'Reads a file and returns the file as a bytes array.
|
||||||
|
Public Sub FileToBytes(Dir As String, FileName As String) As Byte()
|
||||||
|
Dim out As OutputStream
|
||||||
|
out.InitializeToBytesArray(0)
|
||||||
|
Dim In As InputStream = File.OpenInput(Dir, FileName)
|
||||||
|
File.Copy2(In, out)
|
||||||
|
out.Close
|
||||||
|
Return out.ToBytesArray
|
||||||
|
End Sub
|
||||||
|
'Converts an image to a bytes array (for BLOB fields).
|
||||||
|
'Public Sub ImageToBytes(Image As Bitmap) As Byte()
|
||||||
|
' Dim out As OutputStream
|
||||||
|
' out.InitializeToBytesArray(0)
|
||||||
|
' Image.WriteToStream(out, 100, "JPEG")
|
||||||
|
' out.Close
|
||||||
|
' Return out.ToBytesArray
|
||||||
|
'End Sub
|
||||||
|
''Converts a bytes array to an image (for BLOB fields).
|
||||||
|
'Public Sub BytesToImage(bytes() As Byte) As Bitmap
|
||||||
|
' Dim In As InputStream
|
||||||
|
' In.InitializeFromBytesArray(bytes, 0, bytes.Length)
|
||||||
|
' Dim bmp As Bitmap
|
||||||
|
' bmp.Initialize2(In)
|
||||||
|
' Return bmp
|
||||||
|
'End Sub
|
||||||
|
'Prints the table to the logs.
|
||||||
|
Public Sub PrintTable(Table As DBResult)
|
||||||
|
Log("Tag: " & Table.Tag & ", Columns: " & Table.Columns.Size & ", Rows: " & Table.Rows.Size)
|
||||||
|
Dim sb As StringBuilder
|
||||||
|
sb.Initialize
|
||||||
|
For Each col In Table.Columns.Keys
|
||||||
|
sb.Append(col).Append(TAB)
|
||||||
|
Next
|
||||||
|
Log(sb.ToString)
|
||||||
|
For Each row() As Object In Table.Rows
|
||||||
|
Dim sb As StringBuilder
|
||||||
|
sb.Initialize
|
||||||
|
For Each record As Object In row
|
||||||
|
sb.Append(record).Append(TAB)
|
||||||
|
Next
|
||||||
|
' ToastMessageShow(sb.ToString, True)
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
|
||||||
BIN
B4J/Files/MainPage.bjl
Normal file
BIN
B4J/Files/candado.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
B4J/Files/engrane.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
B4J/Files/engrane_fondoblanco.png
Normal file
|
After Width: | Height: | Size: 4.9 KiB |
BIN
B4J/Files/engranes.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
B4J/Files/errorLog.db
Normal file
BIN
B4J/Files/kmt.db
Normal file
BIN
B4J/Files/login.bjl
Normal file
BIN
B4J/Files/logolanter.bmp
Normal file
|
After Width: | Height: | Size: 147 KiB |
BIN
B4J/Files/logolanter.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
B4J/Files/logolanter2.bmp
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
B4J/Files/logolanter_192x192.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
B4J/Files/logolanternegro.bmp
Normal file
|
After Width: | Height: | Size: 149 KiB |
BIN
B4J/Files/logolanternegro.png
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
B4J/Files/logolanternegro2.bmp
Normal file
|
After Width: | Height: | Size: 94 KiB |
BIN
B4J/Files/mesasItem.bjl
Normal file
BIN
B4J/Files/usuario.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
1566
B4J/Subs.bas
Normal file
100
B4J/lanterna.b4j
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
AppType=JavaFX
|
||||||
|
Build1=Default,b4j.example
|
||||||
|
File1=candado.png
|
||||||
|
File10=logolanter_192x192.png
|
||||||
|
File11=logolanter2.bmp
|
||||||
|
File12=logolanternegro.bmp
|
||||||
|
File13=logolanternegro.png
|
||||||
|
File14=logolanternegro2.bmp
|
||||||
|
File15=MainPage.bjl
|
||||||
|
File16=mesasItem.bjl
|
||||||
|
File17=usuario.png
|
||||||
|
File2=engrane.png
|
||||||
|
File3=engrane_fondoblanco.png
|
||||||
|
File4=engranes.png
|
||||||
|
File5=errorLog.db
|
||||||
|
File6=kmt.db
|
||||||
|
File7=login.bjl
|
||||||
|
File8=logolanter.bmp
|
||||||
|
File9=logolanter.png
|
||||||
|
FileGroup1=Default Group
|
||||||
|
FileGroup10=Default Group
|
||||||
|
FileGroup11=Default Group
|
||||||
|
FileGroup12=Default Group
|
||||||
|
FileGroup13=Default Group
|
||||||
|
FileGroup14=Default Group
|
||||||
|
FileGroup15=New Group
|
||||||
|
FileGroup16=Default Group
|
||||||
|
FileGroup17=Default Group
|
||||||
|
FileGroup2=Default Group
|
||||||
|
FileGroup3=Default Group
|
||||||
|
FileGroup4=Default Group
|
||||||
|
FileGroup5=Default Group
|
||||||
|
FileGroup6=Default Group
|
||||||
|
FileGroup7=Default Group
|
||||||
|
FileGroup8=Default Group
|
||||||
|
FileGroup9=Default Group
|
||||||
|
Group=Default Group
|
||||||
|
Library1=b4xpages
|
||||||
|
Library10=jstringutils
|
||||||
|
Library11=wobblemenu
|
||||||
|
Library12=xcustomlistview
|
||||||
|
Library2=byteconverter
|
||||||
|
Library3=compressstrings
|
||||||
|
Library4=jcore
|
||||||
|
Library5=jfx
|
||||||
|
Library6=jokhttputils2
|
||||||
|
Library7=jrandomaccessfile
|
||||||
|
Library8=json
|
||||||
|
Library9=jsql
|
||||||
|
Module1=|relative|..\B4XMainPage
|
||||||
|
Module2=C_Principal
|
||||||
|
Module3=DBRequestManager
|
||||||
|
Module4=Subs
|
||||||
|
NumberOfFiles=17
|
||||||
|
NumberOfLibraries=12
|
||||||
|
NumberOfModules=4
|
||||||
|
Version=10
|
||||||
|
@EndOfDesignText@
|
||||||
|
#Region Project Attributes
|
||||||
|
#MainFormWidth: 600
|
||||||
|
#MainFormHeight: 600
|
||||||
|
#AdditionalJar: sqlite-jdbc-3.7.2.jar
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
Sub Process_Globals
|
||||||
|
Private fx As JFX
|
||||||
|
Private MainForm As Form
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub AppStart (Form1 As Form, Args() As String)
|
||||||
|
MainForm = Form1
|
||||||
|
' Log(MainForm.Width)
|
||||||
|
MainForm.Show
|
||||||
|
Dim PagesManager As B4XPagesManager
|
||||||
|
PagesManager.Initialize(MainForm)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Template version: B4J-1.0
|
||||||
|
#Region Delegates
|
||||||
|
Sub MainForm_FocusChanged (HasFocus As Boolean)
|
||||||
|
B4XPages.Delegate.MainForm_FocusChanged(HasFocus)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub MainForm_Resize (Width As Double, Height As Double)
|
||||||
|
B4XPages.Delegate.MainForm_Resize(Width, Height)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub MainForm_Closed
|
||||||
|
B4XPages.Delegate.MainForm_Closed
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub MainForm_CloseRequest (EventData As Event)
|
||||||
|
B4XPages.Delegate.MainForm_CloseRequest(EventData)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub MainForm_IconifiedChanged (Iconified As Boolean)
|
||||||
|
B4XPages.Delegate.MainForm_IconifiedChanged(Iconified)
|
||||||
|
End Sub
|
||||||
|
#End Region
|
||||||
|
|
||||||
18
B4J/lanterna.b4j.meta
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
ModuleBookmarks0=
|
||||||
|
ModuleBookmarks1=
|
||||||
|
ModuleBookmarks2=
|
||||||
|
ModuleBookmarks3=
|
||||||
|
ModuleBookmarks4=
|
||||||
|
ModuleBreakpoints0=
|
||||||
|
ModuleBreakpoints1=
|
||||||
|
ModuleBreakpoints2=
|
||||||
|
ModuleBreakpoints3=
|
||||||
|
ModuleBreakpoints4=
|
||||||
|
ModuleClosedNodes0=
|
||||||
|
ModuleClosedNodes1=40,41
|
||||||
|
ModuleClosedNodes2=
|
||||||
|
ModuleClosedNodes3=
|
||||||
|
ModuleClosedNodes4=
|
||||||
|
NavigationStack=Main,Process_Globals,8,0,B4XMainPage,b_cerrarApp_Click,620,0,B4XMainPage,Class_Globals,96,0,Subs,revisaMaxPromosProdsFijosPorInventario2,1008,0,Visual Designer,login.bjl,-100,6,B4XMainPage,b_cerrarCerrar_Click,651,0,B4XMainPage,b_abrirMesa_Click,586,0,B4XMainPage,lv_categorias_MouseClicked,607,0,B4XMainPage,lv_categorias_SelectedIndexChanged,605,6,B4XMainPage,llenaProdsLL,530,0,B4XMainPage,p_mesasItem_MouseClicked,524,0
|
||||||
|
SelectedBuild=0
|
||||||
|
VisibleModules=1,4,2,3
|
||||||
9
B4J/lanterna.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
ModuleBookmarks0=
|
||||||
|
ModuleBookmarks1=
|
||||||
|
ModuleBreakpoints0=
|
||||||
|
ModuleBreakpoints1=
|
||||||
|
ModuleClosedNodes0=1,4
|
||||||
|
ModuleClosedNodes1=1
|
||||||
|
NavigationStack=Main,MainForm_IconifiedChanged,37,0,Main,AppStart,14,6,B4XMainPage,Button1_Click,19,0,B4XMainPage,Initialize,9,0,B4XMainPage,B4XPage_Created,18,0,B4XMainPage,Class_Globals,7,0
|
||||||
|
SelectedBuild=0
|
||||||
|
VisibleModules=1
|
||||||
681
B4XMainPage.bas
Normal file
@@ -0,0 +1,681 @@
|
|||||||
|
B4A=true
|
||||||
|
Group=Default Group
|
||||||
|
ModulesStructureVersion=1
|
||||||
|
Type=Class
|
||||||
|
Version=9.85
|
||||||
|
@EndOfDesignText@
|
||||||
|
#Region Shared Files
|
||||||
|
'Ctrl + click to sync files: ide://run?file=%WINDIR%\System32\Robocopy.exe&args=..\..\Shared+Files&args=..\Files&FilesSync=True
|
||||||
|
'###########################################################################################################
|
||||||
|
'###################### PULL #############################################################
|
||||||
|
'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=git&Args=pull
|
||||||
|
'###########################################################################################################
|
||||||
|
'###################### PUSH #############################################################
|
||||||
|
'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=github&Args=..\..\
|
||||||
|
'###########################################################################################################
|
||||||
|
'###################### PUSH TORTOISE GIT #########################################################
|
||||||
|
'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=TortoiseGitProc&Args=/command:commit&Args=/path:"./../../"&Args=/closeonend:2
|
||||||
|
'###########################################################################################################
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
'Ctrl + click to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=Project.zip
|
||||||
|
|
||||||
|
Sub Class_Globals
|
||||||
|
Private Root As B4XView
|
||||||
|
Private xui As XUI
|
||||||
|
Public login As B4XMainPage
|
||||||
|
Public principal As C_Principal
|
||||||
|
Private i_logo As ImageView
|
||||||
|
Private p_configuracion As Pane
|
||||||
|
Private p_login As Pane
|
||||||
|
Private b_regresar As Button
|
||||||
|
Private b_entrar As Button
|
||||||
|
Private b_envioBD As Button
|
||||||
|
Private b_server As Button
|
||||||
|
Private ImageView4 As ImageView
|
||||||
|
Private ImageView2 As ImageView
|
||||||
|
Private Panel3 As Pane
|
||||||
|
Private Label1 As Label
|
||||||
|
Private i_conf As B4XView
|
||||||
|
' Private i_conf As ImageView
|
||||||
|
Private b_cargaProductos As Button
|
||||||
|
Private ListView1 As ListView
|
||||||
|
Private E_SERVER As TextField
|
||||||
|
Dim reqManager As DBRequestManager
|
||||||
|
Private l_version As Label
|
||||||
|
Private p_botones As Pane
|
||||||
|
Private Label3 As Label
|
||||||
|
Private p_server As Pane
|
||||||
|
Dim atrasPresionado As Boolean = False
|
||||||
|
Dim skmt As SQL
|
||||||
|
Dim DBReqServer As String = "http://keymon.lat:1782"
|
||||||
|
Dim logger As Boolean = True
|
||||||
|
Dim ticketActual, mesaActual, meseroActual, comensalesActuales, totalActual As String
|
||||||
|
Private i_password As ImageView
|
||||||
|
Private pass As TextField
|
||||||
|
Private user As TextField
|
||||||
|
Private i_usuario As ImageView
|
||||||
|
Private Panel1 As Pane
|
||||||
|
Private Panel2 As Pane
|
||||||
|
Private lv_server As ListView
|
||||||
|
Private p_conf2 As Pane
|
||||||
|
Private WobbleMenu1 As WobbleMenu
|
||||||
|
Private p_mesas As Pane
|
||||||
|
Private clv_mesas As CustomListView
|
||||||
|
Private l_mesas As Label
|
||||||
|
Private p_mesas2 As Pane
|
||||||
|
Dim listaProds, listaHints, listaHintsM, list_prodsPedido As List
|
||||||
|
Dim listaFormasDePagoCB, listaFormaDePago, listaMontoDePago, listaTickets As List
|
||||||
|
Dim fx As JFX
|
||||||
|
Dim reiniciarlistaProds As Boolean = False 'ignore
|
||||||
|
Private p_mesasItem As Pane
|
||||||
|
Private l_estatus As Label
|
||||||
|
Private l_mesaX As Label
|
||||||
|
Dim formasDePago As Int = 1
|
||||||
|
Dim tipoPago As String = "VENTA"
|
||||||
|
Dim nivelActual As String = "VENTA"
|
||||||
|
Private lv_categorias As ListView
|
||||||
|
Private p_mesa As Pane
|
||||||
|
Private p_renombraVarios As Pane
|
||||||
|
Private l_mesa As Label
|
||||||
|
Private b_abrirMesa As Button
|
||||||
|
Private p_mesaCampos As Pane
|
||||||
|
Private p_mesaAbierta As Pane
|
||||||
|
Private l_comensalesAbierta As Label
|
||||||
|
Private l_meseroAbierta As Label
|
||||||
|
Private l_comensalesAbierta2 As Label
|
||||||
|
Private l_meseroAbierta2 As Label
|
||||||
|
Private b_mesaEditar As Button
|
||||||
|
Private clv_prods_ll As CustomListView
|
||||||
|
Private p_botonesProds As Pane
|
||||||
|
Private b_mesaCerrar As Button
|
||||||
|
Private b_imprimirTicket As Button
|
||||||
|
Private b_regresarProds As Button
|
||||||
|
Private cb_comensales As ComboBox
|
||||||
|
Private cb_mesero As ComboBox
|
||||||
|
Private b_back As Button
|
||||||
|
Private p_mesa2 As Pane
|
||||||
|
Private p_cerrarApp As Pane
|
||||||
|
Private b_cerrarApp As Button
|
||||||
|
Private l_cerrarApp As Label
|
||||||
|
Private p_cerrarApp As Pane
|
||||||
|
Private b_cerrarApp As Button
|
||||||
|
Private b_cerrarCerrar As Button
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Public Sub Initialize
|
||||||
|
' B4XPages.GetManager.LogEvents = True
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'This event will be called once, before the page becomes visible.
|
||||||
|
Private Sub B4XPage_Created (Root1 As B4XView)
|
||||||
|
B4XPages.GetManager.LogEvents = True
|
||||||
|
If Not(File.Exists(File.DirApp, "kmt.db")) Then
|
||||||
|
File.Copy(File.DirAssets, "kmt.db", File.DirApp, "kmt.db")
|
||||||
|
Log("copiamos kmt.db de "&File.DirAssets & " a " & File.DirApp)
|
||||||
|
End If
|
||||||
|
If Not(skmt.IsInitialized) Then
|
||||||
|
skmt.InitializeSQLite(File.DirApp, "kmt.db", True)
|
||||||
|
End If
|
||||||
|
Subs.revisaBD
|
||||||
|
Root = Root1
|
||||||
|
Root.LoadLayout("login")
|
||||||
|
login.Initialize
|
||||||
|
B4XPages.AddPage("Login", login)
|
||||||
|
principal.Initialize
|
||||||
|
B4XPages.AddPage("Principal", principal)
|
||||||
|
Subs.agregaColumna("cat_gunaprod", "CAT_PT_DESC", "TEXT")
|
||||||
|
Subs.agregaColumna("cat_gunaprod", "CAT_PS_DESC", "TEXT")
|
||||||
|
Subs.agregaColumna("cat_gunaprod", "CAT_PS_DESC", "TEXT")
|
||||||
|
Subs.agregaColumna("cat_gunaprod", "CAT_GP_FECHA", "TEXT")
|
||||||
|
Subs.agregaColumna("cat_gunaprod", "CAT_GP_FECHA_MOD", "TEXT")
|
||||||
|
skmt.ExecNonQuery("delete from cuentaa")
|
||||||
|
skmt.ExecNonQuery("insert into cuentaa (cuenta) values ('123456')")
|
||||||
|
skmt.ExecNonQuery("delete from cat_almacen")
|
||||||
|
skmt.ExecNonQuery("insert into cat_almacen (id_almacen) values ('1')")
|
||||||
|
l_version.Text = "3.03.13" 'Application.VersionName
|
||||||
|
' p_configuracion.Height = Root.Height : p_configuracion.width = Root.width
|
||||||
|
cb_comensales.Items.AddAll(Array As String(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20))
|
||||||
|
cb_mesero.Items.AddAll(Subs.traeMeserosLista)
|
||||||
|
reqManager.Initialize(Me, DBReqServer)
|
||||||
|
' Subs.centraEtiqueta(Label3, p_configuracion.Width)
|
||||||
|
' Subs.centraPanel(p_server, p_configuracion.Width)
|
||||||
|
' Subs.centraPanel(p_botones, p_configuracion.Width)
|
||||||
|
i_logo.Left = (Root.Width / 2) - (i_logo.Width / 2)
|
||||||
|
' Subs.centraPanel(Panel3, p_configuracion.Width)
|
||||||
|
Private x As ResultSet = skmt.ExecQuery($"select * from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'DESCUENTO X EFECTIVO'"$)
|
||||||
|
' Log(x.IsInitialized)
|
||||||
|
If Not(x.IsInitialized) Then 'Insertamos el descuento para efectivo por default.
|
||||||
|
skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("DESCUENTO X EFECTIVO","10"))
|
||||||
|
End If
|
||||||
|
Subs.centraImagen(i_logo, Root.Width)
|
||||||
|
Subs.centraPanel(Panel3, Root.Width)
|
||||||
|
i_conf.Left = Root.Width - 100dip
|
||||||
|
p_login.SetSize(Root.Width, Root.Height)
|
||||||
|
Subs.centraPanel(p_conf2, Root.Width)
|
||||||
|
p_mesas.Top = 0 : p_mesas.left = 0 : p_mesas.SetSize(Root.Width, Root.Height)
|
||||||
|
WobbleMenu1.SetVisible(False, False)
|
||||||
|
b_back.Visible = False
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub B4XPage_CloseRequest As ResumableSub
|
||||||
|
' BACK key pressed
|
||||||
|
'Return True to close, False to cancel
|
||||||
|
Log("BACK")
|
||||||
|
' If p_mesa.Visible Then
|
||||||
|
' p_mesa.Visible = False
|
||||||
|
' p_mesas.Visible = True
|
||||||
|
' Else If p_mesas.Visible Then
|
||||||
|
' p_mesas.Visible = False
|
||||||
|
' b_back.Visible = False
|
||||||
|
' else if p_configuracion.Visible Then
|
||||||
|
' p_configuracion.Visible = False
|
||||||
|
' Return False
|
||||||
|
' Else
|
||||||
|
Subs.centraPanel(p_cerrarApp, Root.Width)
|
||||||
|
p_cerrarApp.Visible = True
|
||||||
|
' If atrasPresionado Then ExitApplication 'Solo salimos de la aplicación si se presiona 'Atras' 2 veces seguidas.
|
||||||
|
atrasPresionado = True
|
||||||
|
' End If
|
||||||
|
Return False
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub B4XPage_Resize (Width As Double, Height As Double)
|
||||||
|
' Log($"${Width}|${Height}"$)
|
||||||
|
p_configuracion.Top = 0 : p_configuracion.left = 0
|
||||||
|
p_login.Top = 0 : p_login.left = 0
|
||||||
|
p_login.SetSize(Width, Height)
|
||||||
|
p_configuracion.SetSize(Width, Height)
|
||||||
|
p_mesas.SetSize(Width, Height)
|
||||||
|
Subs.centraPanel(Panel3, Root.Width)
|
||||||
|
Subs.muestraPane(p_mesa, Root)
|
||||||
|
Subs.muestraPane(p_mesas, Root)
|
||||||
|
Subs.centraPanel(p_mesas2, Root.Width)
|
||||||
|
Subs.centraPanel(p_mesa2, Width)
|
||||||
|
Subs.centraImagen(i_logo, Root.Width)
|
||||||
|
i_conf.Left = Root.Width - 100dip
|
||||||
|
Subs.centraPanel(p_conf2, Root.Width)
|
||||||
|
' p_login.PrefWidth = Root.Width
|
||||||
|
' p_login.SetSize(Width, Height)
|
||||||
|
' p_login.prefHeight = Root.Height
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||||
|
|
||||||
|
Private Sub i_logo_Click
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_regresar_Click
|
||||||
|
p_configuracion.Visible = False
|
||||||
|
' Subs.panelVisible(p_login, 0, 0)
|
||||||
|
p_login.Visible = True
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_entrar_Click
|
||||||
|
' B4XPages.ShowPage("principal")
|
||||||
|
' Log(3)
|
||||||
|
b_back.Visible = True
|
||||||
|
Subs.centraPanel(p_mesas2, Root.Width)
|
||||||
|
p_mesas.Visible = True
|
||||||
|
Subs.muestraPane(p_mesas, Root)
|
||||||
|
LlenaMesas(Null, Null)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_server_Click
|
||||||
|
If E_SERVER.Text <> "" Then
|
||||||
|
DBReqServer = E_SERVER.text
|
||||||
|
skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("SERVER"))
|
||||||
|
skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SERVER", DBReqServer))
|
||||||
|
p_configuracion.Visible = False
|
||||||
|
reqManager.Initialize(Me, DBReqServer)
|
||||||
|
reqManager.Initialize(Me, DBReqServer)
|
||||||
|
p_configuracion.Visible = False
|
||||||
|
p_login.Visible = True
|
||||||
|
Else
|
||||||
|
' ToastMessageShow("Por favor ingrese la direccion del servidor", True)
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_envioBD_Click
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub i_conf_Click
|
||||||
|
' ListView1.clear
|
||||||
|
|
||||||
|
Dim Label1 As Label
|
||||||
|
' Label1 = ListView1.SingleLineLayout.Label
|
||||||
|
' Label1 = ListView1.
|
||||||
|
' Label1.TextSize = 20
|
||||||
|
' Label1.TextColor = Colors.Black
|
||||||
|
' ListView1.AddSingleLine("http://keymon.lat:1782")
|
||||||
|
' p_configuracion.Width = Root.Width
|
||||||
|
' p_configuracion.Height = Root.Height
|
||||||
|
' p_configuracion.BringToFront
|
||||||
|
' Subs.panelVisible(p_configuracion, 0, 0)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_cargaProductos_Click
|
||||||
|
Log(DBReqServer)
|
||||||
|
Dim cmd As DBCommand
|
||||||
|
cmd.Initialize
|
||||||
|
cmd.Name = "selectProds_Lanter"
|
||||||
|
reqManager.ExecuteQuery(cmd , 0, "selectProds", 0)
|
||||||
|
cmd.Initialize
|
||||||
|
|
||||||
|
cmd.Name = "selectMesas_Lanter"
|
||||||
|
reqManager.ExecuteQuery(cmd , 0, "selectMesas", 0)
|
||||||
|
|
||||||
|
cmd.Initialize
|
||||||
|
cmd.Name = "selectMeseros_Lanter"
|
||||||
|
reqManager.ExecuteQuery(cmd , 0, "selectMeseros", 0)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub ListView1_ItemClick (Position As Int, Value As Object)
|
||||||
|
DBReqServer = Value
|
||||||
|
E_SERVER.Text = Value
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub JobDone(Job As HttpJob)
|
||||||
|
Log("JOBDONE MAINPAGE")
|
||||||
|
If Job.Tag.As(String).StartsWith("_KMS_") Then Job.tag = Job.Tag.As(String).SubString(16)
|
||||||
|
If Job.Success = False Then
|
||||||
|
' ToastMessageShow("Error: " & Job.ErrorMessage, True)
|
||||||
|
Else
|
||||||
|
If logger Then Log("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size) 'Mod por CHV - 211110
|
||||||
|
If Job.JobName = "DBRequest" Then
|
||||||
|
Dim result As DBResult = reqManager.HandleJob(Job)
|
||||||
|
If result.Tag = "selectProds" Then 'query tag
|
||||||
|
skmt.ExecNonQuery("delete from cat_gunaprod")
|
||||||
|
skmt.BeginTransaction
|
||||||
|
For Each records() As Object In result.Rows
|
||||||
|
Dim CAT_GP_ID As String = records(result.Columns.Get("CAT_GP_ID"))
|
||||||
|
Dim CAT_GP_NOMBRE As String = records(result.Columns.Get("CAT_GP_NOMBRE"))
|
||||||
|
Dim CAT_GP_PRECIO As String = records(result.Columns.Get("CAT_GP_PRECIO"))
|
||||||
|
Dim CAT_GP_ALMACEN As String = 10000 'records(result.Columns.Get("CAT_GP_ALMACEN"))
|
||||||
|
Dim CAT_GP_IMG() As Byte = records(result.Columns.Get("CAT_GP_IMG"))
|
||||||
|
Dim CAT_GP_FECHA As String = records(result.Columns.Get("CAT_GP_FECHA"))
|
||||||
|
Dim CAT_GP_FECHA_MOD As String = records(result.Columns.Get("CAT_GP_FECHA_MOD"))
|
||||||
|
Dim CAT_GP_CLASIF As String = records(result.Columns.Get("CAT_GP_CLASIF"))
|
||||||
|
skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_PRECIO,CAT_GP_ALMACEN,CAT_GP_IMG,CAT_GP_FECHA,CAT_GP_FECHA_MOD, CAT_GP_CLASIF) VALUES (?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_PRECIO,CAT_GP_ALMACEN,CAT_GP_IMG,CAT_GP_FECHA,CAT_GP_FECHA_MOD,CAT_GP_CLASIF))
|
||||||
|
Next
|
||||||
|
For v = 1 To 20 'Agregamos productos varios (editables)
|
||||||
|
skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_PRECIO,CAT_GP_ALMACEN,CAT_GP_IMG,CAT_GP_FECHA,CAT_GP_FECHA_MOD, CAT_GP_CLASIF) VALUES (?,?,?,?,?,?,?,?)", Array As Object ($"VAR${NumberFormat2(v, 2, 0, 0, False)}"$,$"Alimentos Varios ${NumberFormat2(v, 2, 0, 0, False)}"$,"1","10000",Null,"2024-02-04 17:00:00","2024-02-04 17:00:00","Varios"))
|
||||||
|
Next
|
||||||
|
skmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
||||||
|
End If
|
||||||
|
|
||||||
|
If result.Tag = "selectMesas" Then 'query tag
|
||||||
|
skmt.ExecNonQuery("delete from CAT_MESAS")
|
||||||
|
skmt.BeginTransaction
|
||||||
|
For Each records() As Object In result.Rows
|
||||||
|
Dim M_ID As String = records(result.Columns.Get("M_ID"))
|
||||||
|
Dim M_NOMBRE As String = records(result.Columns.Get("M_NOMBRE"))
|
||||||
|
Dim M_NUMERO As String = records(result.Columns.Get("M_NUMERO"))
|
||||||
|
Dim M_ZONA As String = records(result.Columns.Get("M_ZONA"))
|
||||||
|
skmt.ExecNonQuery2("INSERT INTO CAT_MESAS(M_ID, M_NUMERO, M_NOMBRE, M_ZONA) VALUES (?,?,?,?)", Array As Object (M_ID, M_NUMERO, M_NOMBRE, M_ZONA))
|
||||||
|
Next
|
||||||
|
skmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
||||||
|
End If
|
||||||
|
|
||||||
|
If result.Tag = "selectMeseros" Then 'query tag
|
||||||
|
skmt.ExecNonQuery("delete from CAT_MESEROS")
|
||||||
|
skmt.BeginTransaction
|
||||||
|
For Each records() As Object In result.Rows
|
||||||
|
Dim MS_ID As String = records(result.Columns.Get("MS_ID"))
|
||||||
|
Dim MS_NOMBRE As String = records(result.Columns.Get("MS_NOMBRE"))
|
||||||
|
Dim MS_MESAS_ASIGNADAS As String = records(result.Columns.Get("MS_MESAS_ASIGNADAS"))
|
||||||
|
skmt.ExecNonQuery2("INSERT INTO CAT_MESEROS(MS_ID, MS_NOMBRE, MS_MESAS_ASIGNADAS) VALUES (?,?,?)", Array As Object (MS_ID, MS_NOMBRE, MS_MESAS_ASIGNADAS))
|
||||||
|
Next
|
||||||
|
skmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
||||||
|
' If B4XPages.MainPage.principal.cb_mesero.IsInitialized Then B4XPages.MainPage.principal.cb_mesero.SetItems(Subs.traeMeserosLista)
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
' ToastMessageShow("¡Información cargada!", False)
|
||||||
|
Job.Release
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_entrar_LongClick
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub user_TextChanged (Old As String, New As String)
|
||||||
|
If New = "KMTS1" Then i_conf.Visible = True Else i_conf.Visible = False
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub i_password_MouseClicked (EventData As MouseEvent)
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub i_conf_MouseClicked (EventData As MouseEvent)
|
||||||
|
p_configuracion.Top = 0 : p_configuracion.left = 0
|
||||||
|
p_configuracion.Visible = True
|
||||||
|
lv_server.Items.Clear
|
||||||
|
lv_server.Items.Add("http://keymon.lat:1782")
|
||||||
|
Private c As ResultSet = skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SERVER"))
|
||||||
|
Do While c.NextRow
|
||||||
|
E_SERVER.Text = c.GetString("CAT_VA_VALOR")
|
||||||
|
Loop
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub lv_server_SelectedIndexChanged(Index As Int)
|
||||||
|
' Log($"LV clicked ${Index}"$)
|
||||||
|
' Log(lv_server.SelectedItem)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub lv_server_MouseClicked (EventData As MouseEvent)
|
||||||
|
' Log($"LV mouse clicked ${EventData}"$)
|
||||||
|
Dim jo As JavaObject = EventData
|
||||||
|
Dim target As JavaObject = jo.RunMethod("getTarget", Null)
|
||||||
|
' Log(GetType(target))
|
||||||
|
If GetType(target) = "com.sun.javafx.scene.control.LabeledText" Then 'Traemos el valor de la opcion seleccionada.
|
||||||
|
Dim text As String = target.RunMethod("getText", Null)
|
||||||
|
' Log($"LV mouse clicked |${text}|"$)
|
||||||
|
E_SERVER.Text = text
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub WobbleMenu1_Tab1Click
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub clv_mesas_ItemClick (Index As Int, Value As Object)
|
||||||
|
Log(Index)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub LlenaMesas(p As ResultSet, extra As String) 'ignore
|
||||||
|
Private o As ResultSet = skmt.ExecQuery("select count(PT_TICKET) as ordenes from PEDIDO_TICKET where PT_PAGO <> 'VENTA'")
|
||||||
|
' o.Position = 0
|
||||||
|
Private cuantasOrdenes As Int = 0
|
||||||
|
Do While o.NextRow
|
||||||
|
cuantasOrdenes = o.GetInt("ordenes")
|
||||||
|
Loop
|
||||||
|
' Log(cuantasOrdenes)
|
||||||
|
If cuantasOrdenes > 0 Then WobbleMenu1.SetBadge(3, cuantasOrdenes, fx.Colors.From32Bit(0xFFFFFFFF), fx.Colors.From32Bit(0xFFFF0000)) Else WobbleMenu1.RemoveBadge(3)
|
||||||
|
Dim p As ResultSet = skmt.ExecQuery($"select *, IFNULL(M_ESTATUS, 'CERRADA') as ESTATUS2, IFNULL(M_MESERO, 'NINGUNO') as MESERO, IFNULL(M_COMENSALES, 0) as COMENSALES from cat_mesas"$)
|
||||||
|
' Log(p.RowCount)
|
||||||
|
' PCLVM.Commit
|
||||||
|
clv_mesas.Clear
|
||||||
|
Private m_mesas As Map
|
||||||
|
m_mesas.Initialize
|
||||||
|
' clv_mesas.GetBase.SetLayoutAnimated(0,0,0,
|
||||||
|
Do While p.NextRow
|
||||||
|
' Log($"${p.GetString("M_ID")} - ${p.GetString("M_NOMBRE")} - ${p.GetString("ESTATUS2")}"$)
|
||||||
|
Private SUBTOTAL2 As String = "0"
|
||||||
|
Private NO_ARTS2 As String = "0"
|
||||||
|
' Log(p.GetString("ESTATUS2"))
|
||||||
|
If p.GetString("ESTATUS2") = "ABIERTA" Then
|
||||||
|
' Log($"PT_TICKET = '${p.GetString("M_TICKET")}' and PT_MESA = '${p.GetString("M_ID")}"$)
|
||||||
|
Private pt As ResultSet = skmt.ExecQuery($"select ifnull(sum(PT_MONTO),0) as SUBTOTAL, ifnull(sum(PT_NOART), 0) as NO_ARTS from PEDIDO_TICKET where PT_TICKET = '${p.GetString("M_TICKET")}' and PT_MESA = '${p.GetString("M_ID")}' and PT_PAGO = 'VENTA'"$)
|
||||||
|
Do While pt.NextRow
|
||||||
|
SUBTOTAL2 = pt.GetString("SUBTOTAL")
|
||||||
|
NO_ARTS2 = pt.GetString("NO_ARTS")
|
||||||
|
Loop
|
||||||
|
End If
|
||||||
|
' Log($"${SUBTOTAL2}, ${NO_ARTS2}"$)
|
||||||
|
Dim tempMap As Map = CreateMap("id":p.GetString("M_ID"), "numero":p.GetString("M_NUMERO"), "nombre":p.GetString("M_NOMBRE"), "zona":p.GetString("M_ZONA"), "ticket":p.GetString("M_TICKET"), "estatus":p.GetString("ESTATUS2"), "mesero":p.GetString("MESERO"), "comensales":p.GetString("COMENSALES"), "subtotal":SUBTOTAL2, "articulos":NO_ARTS2)
|
||||||
|
' m_mesas.Put(p.GetString("M_ID"), tempMap)
|
||||||
|
Private Pnl As B4XView = xui.CreatePanel("")
|
||||||
|
Pnl.SetLayoutAnimated(0, 0, 0, clv_mesas.AsView.Width, 80dip)
|
||||||
|
clv_mesas.Add(Pnl, tempMap)
|
||||||
|
' listaHintsM.Add($"Mesa ${p.GetString("M_ID")}"$)
|
||||||
|
Loop
|
||||||
|
p.Close
|
||||||
|
' PCLVM.B4XSeekBar1.MaxValue = clv_mesas.Size
|
||||||
|
' PCLVM.B4XSeekBar1.MinValue = 0
|
||||||
|
' PCLVM.B4XSeekBar1.Interval = clv_mesas.Size/20
|
||||||
|
' PCLVM.B4XSeekBar1.Value = clv_mesas.Size
|
||||||
|
' PCLVM.B4XSeekBar1.Update
|
||||||
|
reiniciarlistaProds = False
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub clv_mesas_VisibleRangeChanged (FirstIndex As Int, LastIndex As Int)
|
||||||
|
' Log($"clv_mesa_VisibleRangeChanged : ${FirstIndex}, ${LastIndex} "$)
|
||||||
|
Dim ExtraSize As Int = 30 'List size
|
||||||
|
Private m As Map
|
||||||
|
For i = Max(0, FirstIndex - ExtraSize) To Min(LastIndex + ExtraSize, clv_mesas.Size - 1)
|
||||||
|
Dim Pnl As B4XView = clv_mesas.GetPanel(i)
|
||||||
|
m = clv_mesas.GetValue(i)
|
||||||
|
If i > FirstIndex - ExtraSize And i < LastIndex + ExtraSize Then
|
||||||
|
If Pnl.NumberOfViews = 0 Then 'Add each item/layout to the list/main layout
|
||||||
|
Pnl.LoadLayout("mesasItem")
|
||||||
|
' p_mesasItem.Width = Root.Width * 0.99
|
||||||
|
' l_mesaX.SetTextSizeAnimated(0, 13)
|
||||||
|
l_estatus.text = "DISPONIBLE"
|
||||||
|
l_mesaX.TextSize = 16
|
||||||
|
l_estatus.Left = clv_mesas.AsView.Width - 111dip
|
||||||
|
If m.Get("estatus") = "ABIERTA" Then l_estatus.Text = "ABIERTA"
|
||||||
|
' Log(m)
|
||||||
|
p_mesasItem.PrefHeight = 80dip
|
||||||
|
If l_estatus.text = "ABIERTA" Then
|
||||||
|
l_mesaX.Text = $"Mesa ${m.Get("id")}${CRLF}Comensales ${m.Get("comensales")} - Mesero ${m.Get("mesero")}${CRLF}Subtotal. $${NumberFormat2(m.Get("subtotal"), 1,2,2,True)} - Articulos: ${m.Get("articulos")}"$
|
||||||
|
Else
|
||||||
|
l_mesaX.Text = $"Mesa ${m.Get("id")}"$
|
||||||
|
End If
|
||||||
|
' Log(p_mesasItem.As(B4XView).GetView(0).As(Label).text)
|
||||||
|
l_mesaX.Tag = m
|
||||||
|
p_mesasItem.Tag = m
|
||||||
|
p_mesasItem.PrefHeight = 130dip
|
||||||
|
End If
|
||||||
|
Else 'Not visible
|
||||||
|
' If Pnl.NumberOfViews > 0 Then
|
||||||
|
' Pnl.RemoveAllViews 'Remove none visable item/layouts from the list/main layout
|
||||||
|
' End If
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub muestraCats
|
||||||
|
Private lasCats As List = Subs.traeCategorias
|
||||||
|
nivelActual = "Cats"
|
||||||
|
lv_categorias.items.Clear
|
||||||
|
For cat = 0 To lasCats.Size - 1
|
||||||
|
lv_categorias.Items.add(lasCats.get(cat))
|
||||||
|
Next
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Entramos a la mesa seleccionada.
|
||||||
|
Private Sub p_mesasItem_MouseClicked(EventData As MouseEvent)
|
||||||
|
Subs.muestraPane(p_mesa, Root)
|
||||||
|
p_mesa.Visible = True
|
||||||
|
' Subs.centraEtiqueta(l_mesa, Root.Width)
|
||||||
|
' Subs.centraPanel(p_mesaCampos, Root.Width)
|
||||||
|
' Subs.centraBoton(b_abrirMesa, Root.Width)
|
||||||
|
Subs.centraPanel(p_mesa2, Root.Width)
|
||||||
|
listaFormasDePagoCB.Initialize
|
||||||
|
listaFormaDePago.Initialize
|
||||||
|
listaMontoDePago.Initialize
|
||||||
|
listaTickets.Initialize
|
||||||
|
formasDePago = 1
|
||||||
|
tipoPago = "VENTA"
|
||||||
|
muestraCats
|
||||||
|
clv_prods_ll.AsView.Visible = False
|
||||||
|
lv_categorias.Visible = True
|
||||||
|
' Log(Sender.As(Panel).tag)
|
||||||
|
b_abrirMesa.Text = "Abrir Mesa"
|
||||||
|
' Subs.panelVisible(p_mesa, 0, 0)
|
||||||
|
Private m As Map = Sender.As(Pane).tag
|
||||||
|
mesaActual = m.Get("id")
|
||||||
|
meseroActual = m.Get("mesero")
|
||||||
|
ticketActual = m.Get("ticket")
|
||||||
|
comensalesActuales = m.Get("comensales")
|
||||||
|
totalActual = m.Get("subtotal")
|
||||||
|
l_mesa.Text = $"MESA NO. ${m.Get("id")}"$
|
||||||
|
' Log(m)
|
||||||
|
b_mesaCerrar.Tag = m
|
||||||
|
skmt.ExecNonQuery("delete from cuentaa")
|
||||||
|
skmt.ExecNonQuery($"insert into cuentaa (cuenta) values ('${m.Get("ticket")}')"$)
|
||||||
|
llenaProdsLL(Null, Null)
|
||||||
|
p_mesas.Visible = False
|
||||||
|
cb_mesero.SelectedIndex = 0
|
||||||
|
' cb_pago.SelectedIndex = 0
|
||||||
|
cb_comensales.SelectedIndex = 0
|
||||||
|
' Private mesero As String = Subs.traeMesero(m.Get("id"))
|
||||||
|
If m.Get("mesero") <> "NINGUNO" Then cb_mesero.SelectedIndex = cb_mesero.Items.IndexOf(m.Get("mesero"))
|
||||||
|
If m.Get("comensales") <> "0" Then cb_comensales.SelectedIndex = cb_comensales.Items.IndexOf(m.Get("comensales"))
|
||||||
|
' Log(Subs.traeMesaEstatus(m.Get("id")))
|
||||||
|
If Subs.traeMesaEstatus(m.Get("id")) = "CERRADA" Then
|
||||||
|
p_mesaCampos.Visible = True
|
||||||
|
b_abrirMesa.Visible = True
|
||||||
|
p_mesaAbierta.Visible = False
|
||||||
|
Else
|
||||||
|
p_mesaCampos.Visible = False
|
||||||
|
b_abrirMesa.Visible = False
|
||||||
|
p_mesaAbierta.Visible = True
|
||||||
|
' p_mesaAbierta.BringToFront
|
||||||
|
l_meseroAbierta2.Text = m.Get("mesero")
|
||||||
|
l_comensalesAbierta2.Text = m.Get("comensales")
|
||||||
|
End If
|
||||||
|
|
||||||
|
Private tm As Map = CreateMap("ticket":m.Get("ticket"), "pago":tipoPago)
|
||||||
|
listaTickets.Initialize
|
||||||
|
listaTickets.Add(tm) 'Agregamos el ticket y pago a la lista para imprimir el ticket con estos datos al llamar b_imprimirTicket_Click
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Sub llenaProdsLL(p As ResultSet, extra As String)
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_regresarProds_Click
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_imprimirTicket_Click
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_mesaCerrar_Click
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub clv_prods_ll_ItemClick (Index As Int, Value As Object)
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub clv_prods_ll_VisibleRangeChanged (FirstIndex As Int, LastIndex As Int)
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_mesaEditar_Click
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_abrirMesa_Click
|
||||||
|
If cb_mesero.SelectedIndex <> 0 Then
|
||||||
|
Private c As ResultSet = skmt.ExecQuery($"select M_ESTATUS from CAT_MESAS where M_ID = '${mesaActual}' and M_ESTATUS = 'ABIERTA'"$)
|
||||||
|
Private cont As Int = 0
|
||||||
|
Do While c.NextRow
|
||||||
|
cont = cont + 1
|
||||||
|
skmt.ExecNonQuery($"update CAT_MESAS set M_MESERO = '${cb_mesero.Value}', M_COMENSALES = '${cb_comensales.value}' where M_ID = '${mesaActual}'"$)
|
||||||
|
Log($"update CAT_MESAS set M_MESERO = '${cb_mesero.value}', M_COMENSALES = '${cb_comensales.value}' where M_ID = '${mesaActual}'"$)
|
||||||
|
Loop
|
||||||
|
If cont = 0 Then
|
||||||
|
ticketActual = Subs.traeConsecutivoTicket("ABIERTA", "PENDIENTE")
|
||||||
|
skmt.ExecNonQuery($"update CAT_MESAS set M_TICKET = '${Subs.traeConsecutivoTicket("ABIERTA", "PENDIENTE")}', M_ESTATUS = 'ABIERTA', M_MESERO = '${cb_mesero.value}', M_COMENSALES = '${cb_comensales.value}' where M_ID = '${mesaActual}'"$)
|
||||||
|
' Log($"update CAT_MESAS set M_TICKET = '${Starter.ticketActual}', M_ESTATUS = 'ABIERTA', M_MESERO = '${cb_mesero.SelectedItem}', M_COMENSALES = '${cb_comensales.SelectedItem}' where M_ID = '${Starter.mesaActual}'"$)
|
||||||
|
End If
|
||||||
|
meseroActual = cb_mesero.value
|
||||||
|
comensalesActuales = cb_comensales.value
|
||||||
|
skmt.ExecNonQuery($"delete from usuarioa"$)
|
||||||
|
skmt.ExecNonQuery($"insert into usuarioa (usuario) values ('${cb_mesero.value}')"$)
|
||||||
|
llenaProdsLL(Null, Null)
|
||||||
|
l_comensalesAbierta2.Text = cb_comensales.value
|
||||||
|
l_meseroAbierta2.Text = cb_mesero.value
|
||||||
|
p_mesaCampos.Visible = False
|
||||||
|
b_abrirMesa.Visible = False
|
||||||
|
p_mesaAbierta.Visible = True
|
||||||
|
Else
|
||||||
|
' ToastMessageShow("Es necesario seleccionar un mesero", False)
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub lv_categorias_SelectedIndexChanged(Index As Int)
|
||||||
|
Private selected As String = lv_categorias.SelectedItem
|
||||||
|
Log(selected)
|
||||||
|
If selected <> "null" Then
|
||||||
|
If nivelActual = "Cats" Then
|
||||||
|
Private lasCats As List = Subs.traeSubCategorias(selected)
|
||||||
|
Log(lasCats)
|
||||||
|
nivelActual = "SubCats"
|
||||||
|
lv_categorias.Items.Clear
|
||||||
|
For cat = 0 To lasCats.Size - 1
|
||||||
|
Log(lasCats.get(cat))
|
||||||
|
lv_categorias.items.Add(lasCats.get(cat))
|
||||||
|
Next
|
||||||
|
Else
|
||||||
|
Log(99)
|
||||||
|
lv_categorias.Visible = False
|
||||||
|
clv_prods_ll.AsView.Visible = True
|
||||||
|
Private c As ResultSet = skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD, CAT_GP_IMG from cat_gunaprod where CAT_GP_PRECIO > 0 And CAT_GP_CLASIF <> 'PROMOS' and CAT_GP_CLASIF = '${selected}' order by CAT_GP_NOMBRE"$)
|
||||||
|
llenaProdsLL(c, Null)
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub lv_categorias_MouseClicked (EventData As MouseEvent)
|
||||||
|
' Log("ITEM CLICKED")
|
||||||
|
|
||||||
|
' Dim jo As JavaObject = EventData
|
||||||
|
' Dim target As JavaObject = jo.RunMethod("getTarget", Null)
|
||||||
|
'' Log(GetType(target))
|
||||||
|
' If GetType(target) = "com.sun.javafx.scene.control.LabeledText" Then 'Traemos el valor de la opcion seleccionada.
|
||||||
|
' Dim text As String = target.RunMethod("getText", Null)
|
||||||
|
' Log($"LV mouse clicked |${text}|"$)
|
||||||
|
'' E_SERVER.Text = text
|
||||||
|
' End If
|
||||||
|
|
||||||
|
|
||||||
|
' If nivelActual = "Cats" Then
|
||||||
|
' Private lasCats As List = Subs.traeSubCategorias(Value)
|
||||||
|
' nivelActual = "SubCats"
|
||||||
|
' lv_categorias.Clear
|
||||||
|
' For cat = 0 To lasCats.Size - 1
|
||||||
|
' lv_categorias.AddSingleLine(lasCats.get(cat))
|
||||||
|
' Next
|
||||||
|
' Else
|
||||||
|
' lv_categorias.Visible = False
|
||||||
|
' clv_prods_ll.AsView.Visible = True
|
||||||
|
' Private c As ResultSet = skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD, CAT_GP_IMG from cat_gunaprod where CAT_GP_PRECIO > 0 And CAT_GP_CLASIF <> 'PROMOS' and CAT_GP_CLASIF = '${Value}' order by CAT_GP_NOMBRE"$)
|
||||||
|
' llenaProdsLL(c, Null)
|
||||||
|
' End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub cb_comensales_SelectedIndexChanged(Index As Int, Value As Object)
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub cb_mesero_SelectedIndexChanged(Index As Int, Value As Object)
|
||||||
|
Log(cb_mesero.SelectedIndex)
|
||||||
|
Log(cb_mesero.Value)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_back_Click
|
||||||
|
' B4XPage_CloseRequest
|
||||||
|
Log("BACK")
|
||||||
|
' Log(atrasPresionado
|
||||||
|
If p_mesa.Visible Then
|
||||||
|
p_mesa.Visible = False
|
||||||
|
p_mesas.Visible = True
|
||||||
|
Else If p_mesas.Visible Then
|
||||||
|
p_mesas.Visible = False
|
||||||
|
b_back.Visible = False
|
||||||
|
else if p_configuracion.Visible Then
|
||||||
|
p_configuracion.Visible = False
|
||||||
|
Return False
|
||||||
|
Else
|
||||||
|
If atrasPresionado Then ExitApplication 'Solo salimos de la aplicación si se presiona 'Atras' 2 veces seguidas.
|
||||||
|
' ToastMessageShow("Presiona 'Atras' nuevamente para salir de la aplicación.", False)
|
||||||
|
atrasPresionado = True
|
||||||
|
End If
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_cerrarApp_Click
|
||||||
|
ExitApplication
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub b_cerrarCerrar_Click
|
||||||
|
p_cerrarApp.Visible = False
|
||||||
|
End Sub
|
||||||
BIN
B4i/Files/mainpage.bil
Normal file
46
B4i/lanterna.keymon.lat.b4i
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
Build1=Default,b4i.example
|
||||||
|
File1=MainPage.bil
|
||||||
|
FileGroup1=Default Group
|
||||||
|
Group=Default Group
|
||||||
|
Library1=icore
|
||||||
|
Library2=b4xpages
|
||||||
|
Module1=|relative|..\B4XMainPage
|
||||||
|
NumberOfFiles=1
|
||||||
|
NumberOfLibraries=2
|
||||||
|
NumberOfModules=1
|
||||||
|
Version=6.5
|
||||||
|
@EndOfDesignText@
|
||||||
|
'Code module
|
||||||
|
#Region Project Attributes
|
||||||
|
#ApplicationLabel: B4i Example
|
||||||
|
#Version: 1.0.0
|
||||||
|
'Orientation possible values: Portrait, LandscapeLeft, LandscapeRight and PortraitUpsideDown
|
||||||
|
#iPhoneOrientations: Portrait, LandscapeLeft, LandscapeRight
|
||||||
|
#iPadOrientations: Portrait, LandscapeLeft, LandscapeRight, PortraitUpsideDown
|
||||||
|
#Target: iPhone, iPad
|
||||||
|
#ATSEnabled: True
|
||||||
|
#MinVersion: 11
|
||||||
|
#End Region
|
||||||
|
|
||||||
|
Sub Process_Globals
|
||||||
|
Public App As Application
|
||||||
|
Public NavControl As NavigationController
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub Application_Start (Nav As NavigationController)
|
||||||
|
NavControl = Nav
|
||||||
|
Dim PagesManager As B4XPagesManager
|
||||||
|
PagesManager.Initialize(NavControl)
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Template version: B4i-1.0
|
||||||
|
#Region Delegates
|
||||||
|
Private Sub Application_Background
|
||||||
|
B4XPages.Delegate.Activity_Pause
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub Application_Foreground
|
||||||
|
B4XPages.Delegate.Activity_Resume
|
||||||
|
End Sub
|
||||||
|
#End Region
|
||||||
9
B4i/lanterna.keymon.lat.b4i.meta
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
ModuleBookmarks0=
|
||||||
|
ModuleBookmarks1=
|
||||||
|
ModuleBreakpoints0=
|
||||||
|
ModuleBreakpoints1=
|
||||||
|
ModuleClosedNodes0=1,4
|
||||||
|
ModuleClosedNodes1=1
|
||||||
|
NavigationStack=Main,Application_Start,25,4,Main,Application_Foreground,34,0,Main,Process_Globals,13,0,Visual Designer,MainPage.bil,-100,1,B4XMainPage,Initialize,9,0,B4XMainPage,Button1_Click,19,0,B4XMainPage,B4XPage_Created,10,1,B4XMainPage,Class_Globals,11,0
|
||||||
|
SelectedBuild=0
|
||||||
|
VisibleModules=1
|
||||||