B4A=true Group=Default Group ModulesStructureVersion=1 Type=StaticCode Version=11.2 @EndOfDesignText@ 'Code module 'Subs in this code module will be accessible from all modules. Sub Process_Globals 'These global variables will be declared once when the application starts. 'These variables can be accessed from all modules. End Sub 'Hace visible el panel con los parametros "Top" y "Left" dados 'y lo hace del ancho y alto de la pantalla Sub panelVisible(panel As Panel, top As Int, left As Int, actividad As Activity) 'ignore ' panel.BringToFront panel.Width=actividad.Width panel.Height=actividad.Height '-(WobbleMenu1.GetHeight-20) panel.Visible = True panel.Top = top panel.Left = left End Sub 'Oculta el panel especificado y lo manda al fondo Sub panelOculto(panel As Panel) 'ignore panel.SendToBack panel.Visible = False End Sub 'Centra un boton horizontalmente en el panel superior Sub centraBotonEnPanel(boton As Button, panel As Panel) boton.left = (panel.Width/2)-(boton.Width/2) End Sub 'Centra una etiqueta horizontalmente en el panel superior Sub centraEtiquetaEnPanel(etiqueta As Label, panel As Panel) etiqueta.left = (panel.Width/2)-(etiqueta.Width/2) End Sub 'Centra un campo de texto horizontalmente en el panel superior Sub centraETEnPanel(et As EditText, panel As Panel) et.left = (panel.Width/2)-(et.Width/2) End Sub 'Centra un panel horizontalmente en el panel superior Sub centraPanelEnPanel(p1 As Panel, panel As Panel) p1.left = (panel.Width/2)-(p1.Width/2) End Sub 'Regresa una cita al azar, va borrando cada cita que regresa para que no se repitan, y cuando quedan pocas vuelve a llenar la lista. Sub dameCita(citas As List) As String If citas.Size < 2 Then citas.Add("No les hagas a tus hijos la vida difícil, haciéndoles la vida fácil.") citas.Add("Nunca subestimes el poder de la estupidez humana.") citas.Add("Se vive y se aprende ... o no se vive mucho.") citas.Add("La verdad de una afirmación no tiene nada que ver con su credibilidad ... y viceversa.") citas.Add("Nunca apeles al ''buen corazón'' de un hombre, puede que no tenga, saldrás ganando si invocas su interés.") citas.Add("La teología de uno es la carcajada de otro.") citas.Add("¡Todo en exceso! Para saborear la vida hay que tomarla a grandes tragos, la moderación es para los monjes.") citas.Add("La generación que ignora la historia no tiene pasado … ni futuro.") citas.Add("Si no puede expresarse en cifras, no es ciencia, es opinión.") citas.Add("Escucha siempre a los expertos, te dirán lo que no se puede hacer, y por qué ... entonces ve y hazlo!!") citas.Add("El juego está arreglado, naturalmente, pero no te detengas por eso: si no apuestas, no puedes ganar.") citas.Add("Conservarse joven exige el cultivar con tenacidad la capacidad de desaprender las viejas falsedades.") citas.Add("El dinero es veraz, si un hombre habla de su honor, hazle pagar en efectivo.") citas.Add("Cuando la tentación se cruce en tu camino, aprovéchala, puede que no vuelva a presentarse.") citas.Add("La libertad empieza cuando uno manda a la gente a freír espárragos.") citas.Add($"Cuando la tentación se cruce en tu camino, aprovéchala, puede que no vuelva a presentarse."$) citas.Add($"Existen dos palabras que abren todas las puertas: “jale” y “empuje”."$) citas.Add($"Donde sobra ... no falta."$) citas.Add($"Algunos matrimonios acaban bien ... otros duran toda la vida."$) citas.Add($"El dinero no te da la felicidad ... sobre todo si es poco."$) citas.Add($"En política: el que sabe, sabe ... y el que no, pues es jefe."$) citas.Add($"Estamos como estamos ... porque somos como somos."$) citas.Add($"Lo que está bien ... no puede estar mal."$) citas.Add($"Un hombre exitoso es aquel que gana más dinero del que su mujer gasta."$) citas.Add($"Una cosa es una cosa ... y otra cosa es otra cosa."$) citas.Add($"Trabajar nunca mató a nadie ... pero para que nos arriesgamos!"$) citas.Add($"Hay que trabajar ocho horas y dormir ocho horas ... ¡pero que no sean las mismas!"$) citas.Add($"El que nace pobre y feo tiene posibilidades de que -al crecer- desarrolle ambas condiciones."$) citas.Add($"La confusión está clarísima."$) citas.Add($"Cuando un médico se equivoca ... lo mejor es echarle tierra al asunto."$) citas.Add($"Si el que muere pasa a mejor vida ... ¿Por qué nadie quiere morirse?"$) citas.Add($"¡Cuando el gallo canta en la madrugada, puede que llueva mucho, puede que llueva poco o puede que no llueva nada!"$) citas.Add($"El que anda de buenas, no puede andar de malas."$) citas.Add($"Si no llegó ... es porque no vino."$) citas.Add($"Cuando hay ... hay; cuando no hay ... pues no hay."$) citas.Add($"Agua que no corre ... es charco."$) citas.Add($"Donde comen dos comen tres, y hasta cuatro ¡pero no llenan!"$) citas.Add($"Si las cosas no han cambiado, es porque siguen igual."$) citas.Add($"Si no recibes este mensaje ... es porque no te llegó."$) End If Private citaNum As Int = Rnd(1, citas.Size) ' Log(citas.Size & "|" & (citaNum-1)) Private laCita As String = citas.Get(citaNum-1) citas.RemoveAt(citaNum-1) Return laCita End Sub 'Compara dos versiones (string) con el formato "1.10.09", regresa 1 si la primera es mayor, 0 si es igual y -1 si es menor Sub comparaVersiones(ver1 As String, ver2 As String) As Int ' Logcolor($"${ver1} - ${ver2}"$, Colors.Magenta) Private m1(), m2() As String Private pri1, pri2, sec1, sec2, ter1, ter2 As String m1 = Regex.Split("\.", ver1) m2 = Regex.Split("\.", ver2) pri1 = m1(0) pri2 = m2(0) ' Log(pri1 & "|" & pri2) If pri1 > pri2 Then Return 1 'Si el primer numero es mayor, regresamos 1 If pri1 < pri2 Then Return -1 'Si el primer numero es menor, regresamos -1 'Si son iguales entones revisamos el segundo numero If m1.Length > 1 And m2.Length > 1 Then sec1 = "1." & m1(1) sec2 = "1." & m2(1) ' Log(sec1 & "|" & sec2) If sec1 > sec2 Then Return 1 'Si el segundo numero es mayor, regresamos 1 If sec1 < sec2 Then Return -1 'Si el segundo numero es menor, regresamos -1 End If 'Si son iguales entones revisamos el tercer numero If m1.Length > 2 And m2.Length > 2 Then ter1 = "1." & m1(2) ter2 = "1." & m2(2) ' Log(ter1 & "|" & ter2) If ter1 > ter2 Then Return 1 'Si el tercer numero es mayor, regresamos 1 If ter1 < ter2 Then Return -1 'Si el tercer numero es menor, regresamos -1 End If Return 0 'Regersamos 0 porque son iguales End Sub 'Lee un arhchivo de texto y lo convierte en un mapa. Sub procesaConfiguracion Private t As String Private c As List = File.ReadList(Starter.ruta, "conf.ini") For i = 0 To c.Size - 1 t = c.get(i) Log(t.IndexOf("=")) If t.IndexOf("=") > -1 Then Starter.confMap.Put(t.SubString2(0, t.IndexOf("=")), t.SubString(t.IndexOf("=")+1)) Log(Starter.confMap) End If Next If Starter.confMap.ContainsKey("mayusculasDesbloqueo") Then Starter.mayusculasDesbloqueo = Starter.confMap.Get("mayusculasDesbloqueo") End Sub 'Guarda la configuracion (mapa) en un archivo de texto. Sub escribreConf Private l As List l.Initialize For Each k As Object In Starter.confMap.Keys l.Add($"${k}=${Starter.confMap.Get(k)}"$) Next Log(l) File.WriteList(Starter.ruta, "conf.ini", l) End Sub 'Centra horizontalmente una vista en otra vista. Sub centraVistaEnVista(v As View, p As View) 'ignore v.Left = (p.Width/2) - (v.Width/2) End Sub 'Sets the elevation of a view Sub SetElevation(v As View, e As Float) Dim jo As JavaObject Dim p As Phone If p.SdkVersion >= 21 Then jo = v jo.RunMethod("setElevation", Array As Object(e)) End If End Sub 'Regresa buenos dias, tardes o noches dependiendo de la hora. Sub generaSaludo As String Private saludo As String = "" If DateTime.GetHour(DateTime.Now) > 4 And DateTime.GetHour(DateTime.Now) < 12 Then saludo = "Buenos dias, " If DateTime.GetHour(DateTime.Now) >= 12 And DateTime.GetHour(DateTime.Now) < 19 Then saludo = "Buenas tardes, " If DateTime.GetHour(DateTime.Now) >= 19 Or DateTime.GetHour(DateTime.Now) < 4 Then saludo = "Buenas noches, " ' Log(DateTime.GetHour(DateTime.Now)&"|"&saludo&"|") Return saludo End Sub 'Muestra en el Log los campos y valores que regresan en el JobDone. Sub logJobDoneResultados(resultado As DBResult) LogColor($"====== ${resultado.Tag} - REGISTROS = ${resultado.Rows.Size}"$, Colors.RGB(215,37,0)) For Each records() As Object In resultado.Rows For Each k As String In resultado.Columns.Keys LogColor(k & " = " & records(resultado.Columns.Get(k)), Colors.RGB(215,37,0)) Next Next End Sub