21/10/23 - Se quitaron lineas extra y se agrega clase "FileHandler"

This commit is contained in:
2023-10-21 14:47:46 -06:00
parent 7351a8a617
commit d84f0c588b
6 changed files with 220 additions and 25 deletions

View File

@@ -5,8 +5,8 @@ Type=Class
Version=9.85
@EndOfDesignText@
#Region Shared Files
'#CustomBuildAction: folders ready, %WINDIR%\System32\Robocopy.exe,"..\..\Shared Files" "..\Files"
'Ctrl + click to sync files: ide://run?file=%WINDIR%\System32\Robocopy.exe&args=..\..\Shared+Files&args=..\Files&FilesSync=True
'#CustomBuildAction: folders ready, %WINDIR%\System32\Robocopy.exe,"..\..\Shared Files" "..\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
@@ -94,6 +94,8 @@ Sub Class_Globals
Private b_envioBD As Button
Public Provider As FileProvider
Public rutaBDBackup = ""
Private b_importarBD As Button
Private p_botones As Panel
End Sub
Public Sub Initialize
@@ -141,8 +143,8 @@ Private Sub B4XPage_Created (Root1 As B4XView)
ruta = Starter.ruta
Provider.Initialize
Subs.borraArribaDe100Errores ' Para Websockets
Subs.borraArribaDe600RenglonesBitacora ' Para Websockets
' Subs.borraArribaDe100Errores ' Para Websockets
' Subs.borraArribaDe600RenglonesBitacora ' Para Websockets
If File.Exists(ruta, "kmt.db") = False Then
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
End If
@@ -168,9 +170,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS ENCUESTA_MODULO5 (CLIENTE TEXT, ALMACEN TEXT,P1 TEXT, P2 TEXT, P3 TEXT , P4 TEXT, P5 TEXT, P6 TEXT, P7 TEXT, P8 TEXT, P9 TEXT)")
skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_ENCUESTA_CLIENTE (HEC_CLIENTE TEXT, HEC_MODULO TEXT)")
c=skmt.ExecQuery("select COUNT(*) AS CUANTOS from HIST_STAY_OUT ")
c = skmt.ExecQuery("select COUNT(*) AS CUANTOS from HIST_STAY_OUT ")
C.Position = 0
If c.GetString("CUANTOS") = 0 Then
skmt.ExecNonQuery("INSERT INTO HIST_STAY_OUT(HSO_INI, HSO_FIN) VALUES (0,0)")
@@ -194,7 +194,8 @@ Private Sub B4XPage_Created (Root1 As B4XView)
almacen = 0
rutaPreventa = 0
p_appUpdate.Visible = False
Subs.centraPanel(p_botones, Root.Width)
Subs.guardaAppInfo(skmt)
End Sub
Sub B4XPage_Appear
@@ -604,7 +605,12 @@ Sub i_engrane_Click
p_appUpdate.Left = (Root.Width/2) - (p_appUpdate.Width/2)
lv_server.Clear
lv_server.AddSingleLine("http://keymon.lat:1782")
If user.Text = "KMTS1" Then lv_server.AddSingleLine("http://10.0.0.205:1782")
If user.Text = "KMTS1" Then
lv_server.AddSingleLine("http://10.0.0.205:1782")
b_importarBD.Visible = True
Else
b_importarBD.Visible = False
End If
l_server.Text = Starter.server
Subs.panelVisible(p_appUpdate,0,0)
p_appUpdate.Height = Root.Height
@@ -647,3 +653,18 @@ Private Sub b_envioBD_Click
in.Flags = 1 'FLAG_GRANT_READ_URI_PERMISSION
StartActivity(in)
End Sub
Private Sub b_importarBD_Click
Private FH As FileHandler
FH.Initialize
Wait For (FH.Load) Complete (Result As LoadResult) 'Abre un fileManager para seleccionar la base de datos a importar.
File.Copy(Result.Dir, Result.FileName, File.DirInternal, "kmt.db") 'Copia la base de datos seleccionada al directorio interno.
skmt.Initialize(Starter.ruta,"kmt.db", True) 'Reiniciliza la base de datos con la recien importada.
Private c As Cursor = skmt.ExecQuery("select CAT_VA_VALOR from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'APP_NAME'")
If c.RowCount > 1 Then
c.Position = 0
ToastMessageShow($"BD de ${c.GetString("APP_NAME")} importada!"$, True)
Else
ToastMessageShow($"¡BD importada!"$, True)
End If
End Sub

162
B4A/FileHandler.bas Normal file
View File

@@ -0,0 +1,162 @@
B4A=true
Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=11
@EndOfDesignText@
'Requiere la librería "ContentResolver" y "FileProvider" o "AppUpdating"
'
'Copiar este codigo al boton_Click que se quiere que importe la base de datos.
'
' Private Sub b_importarBD_Click
' Private FH As FileHandler
' FH.Initialize
' Wait For (FH.Load) Complete (Result As LoadResult) 'Abre un fileManager para seleccionar la base de datos a importar.
' File.Copy(Result.Dir, Result.FileName, File.DirInternal, "kmt.db") 'Copia la base de datos seleccionada al directorio interno.
' Starter.skmt.Initialize(Starter.ruta,"kmt.db", True) 'Reiniciliza la base de datos con la recien importada.
' ToastMessageShow("¡BD importada!", False)
' End Sub
Sub Class_Globals
#if B4A
Private ion As Object
Private OldIntent As Intent
#end if
Type LoadResult (Success As Boolean, Dir As String, FileName As String, RealName As String, Size As Long, Modified As Long, MimeType As String)
End Sub
Public Sub Initialize
End Sub
#if B4A
Public Sub SaveAs (Source As InputStream, MimeType As String, Title As String) As ResumableSub
Dim intent As Intent
intent.Initialize("android.intent.action.CREATE_DOCUMENT", "")
intent.AddCategory("android.intent.category.OPENABLE")
intent.PutExtra("android.intent.extra.TITLE", Title)
intent.SetType(MimeType)
StartActivityForResult(intent)
Wait For ion_Event (MethodName As String, Args() As Object)
If -1 = Args(0) Then 'resultCode = RESULT_OK
Dim result As Intent = Args(1)
Dim jo As JavaObject = result
Dim ctxt As JavaObject
Dim out As OutputStream = ctxt.InitializeContext.RunMethodJO("getContentResolver", Null).RunMethod("openOutputStream", Array(jo.RunMethod("getData", Null)))
File.Copy2(Source, out)
out.Close
Return True
End If
Return False
End Sub
Public Sub Load As ResumableSub
Dim cc As ContentChooser
cc.Initialize("cc")
cc.Show("application/octet-stream", "Choose text file")
Wait For CC_Result (Success As Boolean, Dir As String, FileName As String)
Log($"***************************${CRLF}${Dir}${CRLF} ${FileName}"$)
Dim res As LoadResult = CreateLoadResult(Success, Dir, FileName)
Log($"***************************${CRLF}${res.FileName}${CRLF} ${res}"$)
If res.Success Then ExtractInformationFromURI(res.FileName, res)
Return res
End Sub
Private Sub StartActivityForResult(i As Intent)
Dim jo As JavaObject = GetBA
ion = jo.CreateEvent("anywheresoftware.b4a.IOnActivityResult", "ion", Null)
jo.RunMethod("startActivityForResult", Array(ion, i))
End Sub
Private Sub GetBA As Object
Return Me.As(JavaObject).RunMethod("getBA", Null)
End Sub
Private Sub ExtractInformationFromURI (Uri As String, res As LoadResult)
Try
Dim resolver As ContentResolver
resolver.Initialize("")
Dim u As Uri
u.Parse(Uri)
Dim rs As ResultSet = resolver.Query(u, Null, "", Null, "")
If rs.NextRow Then
Dim columns As B4XSet = B4XCollections.CreateSet
For i = 0 To rs.ColumnCount - 1
columns.Add(rs.GetColumnName(i))
Next
If columns.Contains("_display_name") Then res.RealName = rs.GetString("_display_name")
If columns.Contains("_size") Then res.Size = rs.GetLong("_size")
If columns.Contains("last_modified") Then res.Modified = rs.GetLong("last_modified")
If columns.Contains("mime_type") Then res.MimeType = rs.GetString("mime_type")
End If
rs.Close
Catch
Log("error extracting information from file provider")
Log(LastException)
End Try
End Sub
Public Sub CheckForReceivedFiles As LoadResult
Dim Activity As Activity = B4XPages.GetNativeParent(B4XPages.MainPage)
If IsRelevantIntent(Activity.GetStartingIntent) Then
Dim in As Intent = Activity.GetStartingIntent
Dim uri As String
If in.HasExtra("android.intent.extra.STREAM") Then
uri = in.As(JavaObject).RunMethod("getParcelableExtra", Array("android.intent.extra.STREAM"))
Else
uri = in.GetData
End If
Dim res As LoadResult = CreateLoadResult(True, "ContentDir", uri)
ExtractInformationFromURI(res.FileName, res)
Return res
End If
Return CreateLoadResult(False, "", "")
End Sub
Private Sub IsRelevantIntent(in As Intent) As Boolean
If in.IsInitialized And in <> OldIntent And in.Action = in.ACTION_VIEW Then
OldIntent = in
Return True
End If
Return False
End Sub
#else if B4i
Public Sub SaveAs(ParentPage As Object, AnchorView As Object, Text As String) As ResumableSub
Dim avc As ActivityViewController
avc.Initialize("avc", Array(Text))
avc.Show(B4XPages.GetNativeParent(ParentPage), AnchorView)
Wait For avc_Complete (Success As Boolean, ActivityType As String)
Return Success
End Sub
Public Sub Load (ParentPage As Object, AnchorView As Object) As ResumableSub
Dim DocumentPicker As DocumentPickerViewController
DocumentPicker.InitializeImport("picker", Array("public.text"))
DocumentPicker.Show(B4XPages.GetNativeParent(ParentPage), AnchorView)
Wait For Picker_Complete (Success As Boolean, URLs As List)
If Success And URLs.Size > 0 Then
Return UrlToLoadResult(URLs.Get(0))
End If
Return CreateLoadResult(False, "", "")
End Sub
Public Sub UrlToLoadResult(url As String) As LoadResult
Dim res As LoadResult = CreateLoadResult(IIf(File.Exists(url, ""), True, False), url, "")
res.RealName = res.Dir.SubString(res.Dir.LastIndexOf("/") + 1)
res.Size = File.Size(res.Dir, "")
Return res
End Sub
#end if
Private Sub CreateLoadResult (Success As Boolean, Dir As String, FileName As String) As LoadResult
Dim t1 As LoadResult
t1.Initialize
t1.Success = Success
t1.Dir = Dir
t1.FileName = FileName
Return t1
End Sub

Binary file not shown.

View File

@@ -134,11 +134,12 @@ Library22=okhttputils2
Library23=phone
Library24=randomaccessfile
Library25=rspopupmenu
Library26=sql
Library27=togglelibrary
Library28=xui views
Library29=serial
Library26=serial
Library27=sql
Library28=togglelibrary
Library29=xui views
Library3=baqrcode
Library30=contentresolver
Library4=batteryprogressview
Library5=bitmapcreator
Library6=byteconverter
@@ -155,12 +156,13 @@ Module14=C_Promos
Module15=C_TicketsDia
Module16=C_UpdateAvailable
Module17=DBRequestManager
Module18=FirebaseMessaging
Module19=MAPA_RUTAS
Module18=FileHandler
Module19=FirebaseMessaging
Module2=B4XMainPage
Module20=Starter
Module21=Subs
Module22=Tracker
Module20=MAPA_RUTAS
Module21=Starter
Module22=Subs
Module23=Tracker
Module3=BatteryUtilities
Module4=C_Cliente
Module5=C_Clientes
@@ -169,9 +171,9 @@ Module7=C_Mapas
Module8=C_Nota
Module9=C_NoVenta
NumberOfFiles=58
NumberOfLibraries=29
NumberOfModules=22
Version=11.5
NumberOfLibraries=30
NumberOfModules=23
Version=12.5
@EndOfDesignText@
#Region Project Attributes
#ApplicationLabel: Guna V3.1

View File

@@ -14,6 +14,7 @@ ModuleBookmarks2=
ModuleBookmarks20=
ModuleBookmarks21=
ModuleBookmarks22=
ModuleBookmarks23=
ModuleBookmarks3=
ModuleBookmarks4=
ModuleBookmarks5=
@@ -37,6 +38,7 @@ ModuleBreakpoints2=
ModuleBreakpoints20=
ModuleBreakpoints21=
ModuleBreakpoints22=
ModuleBreakpoints23=
ModuleBreakpoints3=
ModuleBreakpoints4=
ModuleBreakpoints5=
@@ -57,9 +59,10 @@ ModuleClosedNodes17=
ModuleClosedNodes18=
ModuleClosedNodes19=
ModuleClosedNodes2=6,9
ModuleClosedNodes20=1
ModuleClosedNodes21=
ModuleClosedNodes20=
ModuleClosedNodes21=1
ModuleClosedNodes22=
ModuleClosedNodes23=
ModuleClosedNodes3=
ModuleClosedNodes4=1,2,3,5,6,7,10,11
ModuleClosedNodes5=7
@@ -67,6 +70,6 @@ ModuleClosedNodes6=
ModuleClosedNodes7=
ModuleClosedNodes8=
ModuleClosedNodes9=
NavigationStack=C_Productos,b_prodMas_Click,464,0,C_Productos,b_prodMenos_Click,456,0,C_Principal,connecta_Click,1624,0,B4XMainPage,Class_Globals,24,0,Main,Globals,25,0,Main,Activity_Create,30,0,Main,Process_Globals,21,0,C_Cliente,Class_Globals,0,0,C_Cliente,B4XPage_Created,399,0,C_Nota,Class_Globals,0,0,C_Nota,B4XPage_CloseRequest,126,0
NavigationStack=Subs,guardaAppInfo,1095,0,Subs,traePromoIdDeBD,1086,0,B4XMainPage,i_engrane_LongClick,611,0,B4XMainPage,i_engrane_Click,605,5,B4XMainPage,Class_Globals,92,0,Visual Designer,login.bal,-100,6,B4XMainPage,b_importarBD_Click,662,6,B4XMainPage,lv_server_ItemClick,630,0,B4XMainPage,b_envioBD_Click,640,0,Subs,borraArribaDe100Errores,405,0,B4XMainPage,B4XPage_Created,140,0
SelectedBuild=0
VisibleModules=20,2,21,12,13,4,8,11,5,10,19,17
VisibleModules=21,2,22,12,13,4

View File

@@ -1095,4 +1095,11 @@ Sub traePromoIdDeBD As Map 'ignore
End If
c.Close
Return m
End Sub
'Guarda el nombre y version de la app en CAT_VARIABLES.
Sub guardaAppInfo(skmt As SQL) 'ignore
skmt.ExecNonQuery("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'EMPRESA' or CAT_VA_DESCRIPCION = 'APP_NAME' or CAT_VA_DESCRIPCION = 'APP_VERSION'")
skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('APP_NAME', '${Application.LabelName}')"$)
skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('APP_VERSION', '${Application.VersionName}')"$)
End Sub