mirror of
https://github.com/KeymonSoft/Guna_Preventa.git
synced 2026-04-18 13:19:22 +00:00
21/10/23 - Se quitaron lineas extra y se agrega clase "FileHandler"
This commit is contained in:
@@ -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
162
B4A/FileHandler.bas
Normal 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.
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user