Share via Share via... Twitter LinkedIn Facebook Pinterest Telegram WhatsApp Yammer Reddit TeamsCambios recientesSend via e-MailImprimirEnlace permanente × Tabla de Contenidos USERINTERFACE MsgBox SendMail OpenMenu GetInputString StartPrint EndPrint Print PrintLine LineFeed PrintCommand PrintBarCode ChronoStart ChronoStop ChronoValue StartScanner OpenFile OpenUrl GetView BthGetMode BthSetMode ShowGroup IsApplicationInstalled IsWifiEnabled StartWifi StopWifi StartGPS StopGPS MakePhoneCall AddCalendarItem HideSoftwareKeyboard CreateShortcut UpdateWaitDialog SetMaxWaitDialog ExecuteActionAfterDelay SetLanguage PlaySoundAndVibrate DrawMapRoute Método setNotificationLed Método showNotification Método ShowDatePicker Métodos de XOneLive con Script OpenEditView Código necesario para el mapa embebido Métodos para obtener datos de la última coordenada USERINTERFACE Este elemento, UserInterface, forma parte del objeto appData, disponiendo de características propias que hacen que sea descrito a continuación. Dentro de este ámbito, podemos encontrar funciones que nos permiten interactuar con el usuario o con el dispositivo físico, permitiendo activación/desactivación de periféricos, impresión, notificaciones sonoras, o funcionalidades más básicas como un msgbox. Es posible llamar a los métodos con ui.nombremetodo, en vez de usar el antiguo appdata.userinterface. MsgBox Tipo Método/Función Parámetros Message:Mensaje que se quiere mostrar. Caption: Título de la venta de mensaje. Options:Parametro que especifica el tipo de msgbox a mostrar. Son las siguientes: 0 - Muestra un mensaje informativo con botón “Ok”. No retorna ningún valor. 1 - Mensaje para petición de confirmación “Aceptar”/“Cancelar”. 4 - Mensaje para petición de confirmación “Si”/“No”. Tipo de Dato devuelto Para Options=0 - No hay retorno Para Options=1 - Retorna 1 si el usuario pulsa “Aceptar” y 2 si pulsa “Cancelar” Para Options=4 - Retorna 6 si el usuario pulsa “Si” y 7 si pulsa “No” Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed) Muestra una ventana de mensaje en el UI correspondiente. En dependencia de la plataforma también se puede sacar un texto por la consola del sistema como traza. Los valores de las opciones se han normalizado según los que se definen para Windows, así que se pueden usar en cualquiera de las plataformas con idéntico significado, ya que la maquinaria se encarga de traducir los significados. <mensajes show-wait-dialog="false"> <action name="runscript"> <script language="VBScript"> Dim vResult Select Case this("MAP_TIPO_MENSAJE") Case "MsgBox0" ui.MsgBox "Mensaje Informativo solo con OK","Titulo Ventana",0 Case "MsgBox1" 'Si pulsa ACEPTAR vale 1 y si pulsa CANCELAR vale 2 vResult =ui.MsgBox ("Pregunta si ACEPTAR o CANCELAR","Advertencia",1) ui.MsgBox "Ha pulsado el botón con valor: "+cstr(vResult),"Titulo Ventana",0 Case "MsgBox4" 'Si pulsa SI vale 6 y si pulsa NO vale 7 vResult =ui.MsgBox ("Pregunta SI ó NO","Advertencia",4) ui.MsgBox "Ha pulsado el botón con valor: "+cstr(vResult),"Titulo Ventana",0 End Select </script> </action> </mensajes> SendMail Tipo Método Parámetros “direcciondestino@correo.es”, “direccionencopia@correo.es”, “Asunto”, “Texto del mensaje”, “ficheroadjunto.zip” Tipo de Dato devuelto Ninguno Plataforma Android Sólo Android. Este método permite enviar un email rellenando los campos en el gestor de correo que tenga instalado el cliente. El usuario es responsable de pulsar el boton de enviar. Se puede adjuntar un fichero que esté en la carpeta files o en cualquier otra ruta si se le especifica completa. Ejemplo: ui.SendMail "direcciondestino@correo.es", "direccionencopia@correo.es", "Asunto", "Texto del mensaje", "" OpenMenu Tipo Método Parámetros CollName:Nombre de la colección a mostrar./ Mask:Mask del appwizard./ Mode:Mode del appwizard Tipo de Dato devuelto Ninguno Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), Android, iPhone, Linux, MC+, Symbian (3ed, 5ed) Muestra una colección en pantalla. En función de la forma en que esté definido el UI de la colección en el mappings, se puede usar un control especial o en caso de no tener nada definido, se muestra en modo grid. Esta función solamente está definida en determinados frameworks, independientemente de la plataforma, pero la idea es que se vaya generalizando. De todas maneras el uso de las nuevas reglas de UI harán que este tipo de funcionalidad se vaya sustituyendo. Ejemplo: ui.OpenMenu "ColeccionQueSea",31,1 GetInputString Tipo Método Parámetros Message:Mensaje que se quiere mostrar./Caption: Título de la venta de mensaje./ Options:Opciones de botones, iconos y demás Tipo de Dato devuelto Texto Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed) Muestra una ventana para pedir un dato al usuario. La forma que tenga esta petición de dato depende de la plataforma. En determinadas plataformas incluso puede que esté disponible o no dependiendo del framework usado, como puede pasar en el caso de PC. StartPrint Tipo Función Parámetros IndexPrinter:Es el índice de las entradas del fichero printer.bin que se va a usar. Usa índice cero, es decir, la primera opción, de las disponibles en printer.bin, sería 0. Tipo de Dato devuelto Ninguna, si la conexión es correcta, en caso contrario un código de Error Sintáxis WM string appdata.userinterface.StartPrint ( int IndexPrinter ) Sintáxis Android string appdata.userinterface.StartPrint “zebra” Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Android, Linux, MC+, Symbian (3ed, 5ed) Inicializa y conecta con la impresora que se indica por parámetro. EndPrint Tipo Función Tipo de Dato devuelto Ninguno Sintáxis appdata.userinterface.EndPrint Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed) Finaliza la conexión a la impresora. Print Tipo Función Parámetros Texto [in]:El texto que se mandará imprimir. Tipo de valor devuelto Ninguno, si la impresión es correcta, en caso contrario devuelve Error. Sintáxis int appdata.userinterface.Print (string Texto ) Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed) Imprime la cadena que recibe por parámetro. PrintLine Tipo Función Parámetros Texto [in]:El texto que se mandará imprimir. Tipo de valor devuelto Ninguno, si la impresión es correcta, en caso contrario devuelve Error. Sintáxis int appdata.userinterface.PrintLine(string Texto ) Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed) Imprime la cadena que recibe por parámetro y provoca un salto de línea. LineFeed Tipo Función Parámetros Saltos [in]:Números de saltos de línea. Tipo de valor devuelto Ninguno Sintáxis appdata.userinterface.LineFeed int Saltos Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed) Realiza tantos saltos de línea como se indiquen por parámetro. PrintCommand Tipo Función Parámetros Texto [in]:El texto que será enviado a la impresora como comandos ascii a no ser que se especifique la macro ##TEXT##. (*) Tipo de valor devuelto Ninguno, si la impresión es correcta, en caso contrario devuelve Error. Sintáxis Int appdata.userinterface.PrintCommand (int String ) Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed) (*)La Sintáxis puede ser: 1) Para escribir texto normal y que el control los interprete como ASCII, sería:\\ appdata.userinterface.PrintCommand "##TEXT##hola 130 15 ##END_TEXT##" appdata.userinterface.PrintCommand "##TEXT##! 0 200 200 210 1##END_TEXT##" 2) Cualquier valor que vaya entre comas sin las macros anteriores, será interpretado como un valor ASCII: appdata.userinterface.PrintCommand "32,35,104,111,108,97,10" sería igual a: appdata.userinterface.PrintCommand "32,35,##TEXT##hola##END_TEXT##,10" Imprime comandos específicos de la impresora, mediante la cadena que recibe por parámetro. PrintBarCode Tipo Función Parámetros Tipo [in]:El tipo de código de barras que se mandará imprimir. Tipos disponibles: “EAN13”,“EAN8”,“CODE39”,”CODE128“,”PDF417”,“UPCA”,“UPCE”. \\Valor [in]: El valor que formará el código de barras. Tipo de valor devuelto Ninguno, si la impresión es correcta, en caso contrario devuelve Error. Sintáxis int appdata.userinterface.PrintBarCode (string Tipostring Valor ) Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed) Imprime un código de barras del tipo especificado por parámetro. ChronoStart Arranca un contador de tiempo. Tipo Función Sintáxis Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed) ChronoStop Para el contador de tiempo. Tipo Función Sintáxis Objeto.ChronoStop Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed) ChronoValue Retorna el tiempo transcurrido, en milisegundos, desde que se arrancó el temporizador o desde la última llamada a ChronoValue. Tipo Función Sintáxis long objeto.ChronoValue Tipo de valor devuelto Los milisegundos transcurridos desde la última llamada a ChronoValue. La primera vez que es llamada retorna el total de tiempo transcurrido. Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed) StartScanner Lanza o conecta el scanner para la lectura de códigos 2d, al realizarse la lectura se asignara el valor a la propiedad con atributo barcode =”true”. Se ha implementado posteriormente un tercer parámetro que nos permite especificar la propiedad destino de la lectura del código de barras, tenga ésta o no el atributo barcode=“true”. Este comando, para su correcto funcionamiento buscará una aplicación llamada “Barcode Scanner” by ZXing. Si no está instalada, nos abrirá el market para que la instalemos. TipoFunción ParámetrosParámetro 1: aplicación de scanner a usar. quickmark1d: Usar QuickMark para códigos unidimensionales. quickmark: Usar QuickMark con escaner genérico. zxing: Usar Zxing. Esta es la preferida. Parámetro 2 (opcional): tipos de código. Si este parámetro no esta presente o su valor es vacío, se intentará identificar todos los códigos soportados. Los valores irán separados por comas. P.Ej: “QRCODE,EAN,ISBN”. EAN: “European article number” incluye (EAN2,EAN5,EAN8,EAN13). UPC: “Uniform product code” incluye (UPC-A, UPC-E). ISBN: “International Standart Book Number” incluye (ISBN-10, ISBN-13). COMPOSITE: EAN/UPC composite. 125: Interleaved 2 of 5. DATABAR: GS1 DataBar (RSS). CODE 39: Code 39. PDF417: PDF417. QRCODE: QR Code. CODE93: Code 93. CODE128: Code 128. Parámetro 3 (opcional): Propiedad destino de la lectura. Tipo de valor devueltoNinguno, si la impresión es correcta, en caso contrario devuelve Error. PlataformasWin32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed) Ejemplo de uso: <button name="ScannerCamera" group="1" caption="Lanzar scanner" visible="1" labelwidth="10" lmargin="6" method="ExecuteNode (StartScanner)” /> <StartScanner> <action name="runscript"> <script language="VBScript"> <!-- Este comando lee TODOS los tipos de códigos soportados --> ui.StartScanner "zxing", "", "MAP_CODIGOBARRAS" <!-- Sólo para leer códigos QR y ponemos la lectura en el campo "MAP_CODIGO --> ui.StartScanner "zxing", "QRCODE", "MAP_CODIGO" <!-- Sólo para leer códigos ISBN --> ui.StartScanner "zxing", "ISBN" <!-- Sólo para leer códigos QR, EAN e ISBN --> ui.StartScanner "zxing", "QRCODE,EAN,ISBN" </script> </action> </StartScanner> OpenFile Tipo Función Parámetros NombreFichero: Será, o bien el nombre de un fichero (en ese caso se busca dentro de la carpeta Files de la aplicación), o una ruta, que se tomará como absoluta. Se puede usar la macro ##APP## que se sustituye por la ruta donde está instalada la aplicación. Caché: Indica al framework si al descargar ficheros con este método no debe buscarlo antes en la caché y bajarlo de nuevo. Valores posibles: “donotcachethefile”, “cache” Tipo de valor devuelto Ninguno. Sintáxis appdata.userinterface.OpenFile string NombreFichero Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed), Android Abre el fichero que se pasa por parámetro. Ejemplo 1: appdata.userinterface.OpenFile "##APP##\Files"+this("FICHATECNICA") Ejemplo 2: appdata.userinterface.OpenFile "http://www.xone.es/XOneAndroidFramework.apk", "donotcachethefile" OpenUrl Tipo Función Parámetros Texto con la URL Tipo de valor devuelto Ninguno. Sintáxis appdata.userinterface.string url Plataforma iPhone, Android, Windows Phone Abre la URL que se pasa por parámetro. AppData.UserInterface.OpenUrl strURL ui.OpenUrl strURL GetView Tipo Función Parámetros XoneDataObject Tipo de valor devuelto XoneWindow Sintáxis ui.GetView(obj) Plataforma iPhone, Android Devuelve el objeto ventana asociada al objeto que se le pasa como parámetro. Si el objeto no tiene ventana aún, devuelve NULL. Las posibles acciones sobre dicha ventana son: Refresh, Bind, SetFocus, PickFile. Ejemplo de uso: Set mViewEdit = ui.GetView(objMain) If Not mViewEdit = nothing Then mViewEdit.Refresh "MAP_PROPIEDAD" End If BthGetMode Tipo Función Tipo de valor devuelto Valor Numérico: 0: Bluetooth OFF/ 1: Bluetooth ON/ 2: Bluetooth Visible Sintáxis Int appdata.userinterface.BthGetMode ( ) Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed) Retorna el estado del bluetooth. BthSetMode Tipo Función Parámetros NuevoEstado [in]Indica el nuevo estado al que se cambiará el bluetooth. Los valores posibles son:0: Bluetooth OFF/ 1: Bluetooth ON/ 2: Bluetooth Visible Tipo de valor devuelto Ninguno Sintáxis appdata.userinterface.BthSetMode int NuevoEstado Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed) Asigna el nuevo estado del bluetooth. ShowGroup Tipo Función Parámetros (*) Tipo de valor devuelto Ninguno Sintáxis appdata.usertinterface.showgroup “#group”,“animación de entrada”,duración entrada,“animación de salida”,duración salida Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed), Android Esta función muestra un grupo o un frame de la colección con una transición mediante script. (*)Los tipos de animaciones que pueden ponerse en los parametros de “animación de entrada” y “animación de salida: ”##ALPHA_IN##“ - Degradado de menos a mas para efecto de entrada ”##ALPHA_OUT##“ - Degradado de más a menos para efecto de salida ”##LEFT##“ Entrada por la izquierda ”##LEFT_OUT##“ Salida por la izquierda ”##PUSH_IN##“ Entrada por la parte inferior ”##PUSH_OUT##“ Salida por la parte superior ”##RIGHT##“ Entrada por la derecha ”##RIGHT_OUT##“ Salida por la derecha ”##ROTATE_IN##“ Rotación 2D para entrada ”##ROTATE_OUT##“ Rotación 2D para salida ”##ROTATE3D_IN##“ Rotación 3D para entrada ”##ROTATE3D_OUT##“ Rotación 3D para salida ”##ZOOM_IN##“ Entrada de menor a mayor ”##ZOOM_OUT##“ Salida de mayor a menor Ejemplos de Uso: <action name="runscript"> <script language="VBScript"> <!-- Entrada del group id="3" con rotación 3D y tiempo de espera de 1000 ms --> AppData.UserInterface.ShowGroup "3","##ROTATE3D_IN##",1000,"##ROTATE3D_OUT##",1000 <!-- Entrada del group id="1" con difuminado con duración de 600 milisegundos --> AppData.UserInterface.ShowGroup "1","##ALPHA_IN##",600,"##ALPHA_OUT##",600 <!-- Entrada del group id="2" con Zoom de entrada y salida y duración de 1000 ms --> AppData.UserInterface.ShowGroup "2","##ZOOM_IN##",1000,"##ZOOM_OUT##",1000 </script> </action> También se puede definir en la cabecera de los grupos o en los frames el efecto de entrada que se quiere por defecto para el grupo, <group name="General" id="1" height="100%" animation-out="animación de salida" animation-in="animación de entrada" > <frame name="frmFlotante" floating="true" top="300px" left="200px" width="600px" height="300px" class="FrameAnimateFromRight" > .FrameAnimateFromTop { animation-in-delay:500; animation-out-delay:500; /* Entra y sale por arriba. */ animation-in:##PUSH_DOWN_IN##; /* Aparece por arriba */ animation-out:##PUSH_OUT##; /* Se va por arriba */ } .FrameAnimateFromBottom { animation-in-delay:500; animation-out-delay:500; /* Entra y sale por abajo. */ animation-in:##PUSH_IN##; /* Aparece por abajo */ animation-out:##PUSH_DOWN_OUT##; /* Se va por abajo */ } .FrameAnimateFromRight { animation-in-delay:500; animation-out-delay:500; /* Entra y sale por la derecha. */ animation-in:##RIGHT_IN##; animation-out:##LEFT_OUT##; } .FrameAnimateFromLeft { animation-in-delay:500; animation-out-delay:500; /* Entra y sale por la izquierda. */ animation-in:##LEFT_IN##; animation-out:##RIGHT_OUT##; } .FrameAnimateRotate3D { animation-in-delay:500; animation-out-delay:500; /* Entra y sale rotando en 3D. */ animation-in:##ROTATE3D_IN##; animation-out:##ROTATE3D_OUT##; } .FrameAnimateAlpha { animation-in-delay:500; animation-out-delay:500; /* Aparece y desaparece;. */ animation-in:##ALPHA_IN##; animation-out:##ALPHA_OUT##; /* ZOOM. */ animation-in:##ZOOM_IN##; animation-out:##ZOOM_OUT##; } .FrameAnimateZoom { animation-in-delay:500; animation-out-delay:500; /* ZOOM. */ animation-in:##ZOOM_IN##; animation-out:##ZOOM_OUT##; } Cumple las mismas macros que el script. También puedes ocultar la ventana de espera que sea por defecto en la ejecución de los script para que el efecto sea más limpio. En la cabecera del nodo de script pones los atributos: show-wait-dialog="false" refresh="false" Eso permite que no se muestre el diálogo de espera y que tampoco se refresque la pantalla. Ya lo hará la animación de forma automática. Ejemplo de Uso: <button1_Click show-wait-dialog="false" refresh="false"> <action name="runscript"> <script language="vbscript"> AppData.UserInterface.ShowGroup "3","##ROTATE3D_IN##",1000,"##ROTATE3D_OUT##",1000 </script> </action> </button1_Click> IsApplicationInstalled Sirve para saber si una aplicación está instalada en el dispositivo, devuelve 0 si está instalada. Ejemplo: ui.isApplicationInstalled("com.google.android.apps.maps"); IsWifiEnabled Tipo Función Tipo de Dato devuelto Entero Sintáxis ui.IsWifiEnabled Plataforma Android Esta función comprueba si está habilitado el adaptador inalámbrico. Esto no significa que se haya conectado a una red. Devuelve 1 si es cierto, 0 en caso contrario. StartWifi Tipo Función Tipo de Dato devuelto Ninguno Sintáxis ui.StartWifi Plataforma Android Esta función activa el wifi. Debe usarse con muchísimo cuidado el usuario puede considerar esta función bastante intrusiva. StopWifi Tipo Función Tipo de Dato devuelto Ninguno Sintáxis ui.StopWifi Plataforma Android Esta función desactiva el wifi. Lo mismo que la anterior, pero ésta incluso, podría cortar alguna descarga en curso. StartGPS Tipo Función Tipo de Dato devuelto Ninguno Sintáxis ui.startGPS Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed) Inicializa y conecta el GPS del dispositivo para capturar las coordenadas GPS para su posterior tratamiento en un script. Ejemplo de uso: <!-- El onlogon es un nodo "especial" de la colección Empresas, y se ejecuta cuando nos logueamos en la aplicación. --> <onlogon> <action name="runscript"> <script language="VBScript"> AppData.UserInterface.StartGPS </script> </action> </onlogon> StopGPS Tipo Función Tipo de Dato devuelto Ninguno Sintáxis appdata.userinterface.stopgps Plataforma Win32, Web, .NET, .NET CF, WM (2003, 2005, 6.0, 6.5) Blackberry (5.0), iPhone, Linux, MC+, Symbian (3ed, 5ed) Finaliza y cierra el GPS del dispositivo. <!-- El onlogoff es un nodo "especial" de la colección Empresas, y se ejecuta cuando finaliza la ejecución del programa. --> <onlogoff> <action name="runscript"> <script language="VBScript"> AppData.UserInterface.StopGPS </script> </action> </onlogoff> MakePhoneCall Tipo Función Tipo de Dato devuelto Ninguno Sintáxis appdata.userinterface.makephonecall(ValorTelefono) Plataforma iPhone, Android Realiza la llamada desde un Script al numero insertado como parametro en la función. AppData.UserInterface.MakePhoneCall(This("TELEFONO")) ' O lo que es lo mismo.... ui.MakePhoneCall(This("TELEFONO")) AddCalendarItem Tipo Función Tipo de Dato devuelto Ninguno Sintáxis ui.AddCalendarItem(Titulo, Descripción, Lugar del evento, Fecha Inicio], Fecha Fin) Plataforma Android Añade un evento al calendario integrado en Android. HideSoftwareKeyboard Tipo Función Tipo de Dato devuelto Ninguno Sintáxis ui.HideSoftwareKeyboard Plataforma Android Si está visible, oculta el teclado en pantalla de android. CreateShortcut Tipo Función Tipo de Dato devuelto Ninguno Sintáxis ui. “nombreaplicacion”, “true” Plataforma Android Cuando se llama a este método, crea un acceso directo a la aplicación que se le pase en el primer parámetro, que puede ser otra distinta a la que se esté ejecutando. El segundo parámetro indica si queremos evitar que se creen duplicados al llamar de nuevo a esta función. En cualquier caso, esta función es totalmente dependiente de la aplicación de escritorio que tenga instalado el usuario, en algunos casos muestra una notificación “toast” siempre, en otros no, y en otros ni crea el acceso directo. Con la aplicación de escritorio por defecto que viene en Android debería funcionar bien. Se usará icon.png como icono del acceso directo. UpdateWaitDialog Tipo Función Tipo de Dato devuelto Ninguno Sintáxis ui.UpdateWaitDialog “Título”, aumento Plataforma Android Si se define este método en un nodo de botón tal y como se muestra en el ejemplo, se sustituirá la ventana de cargando al ejecutar el script por otra con una barra de progreso y título. Útil cuando se carga un script demasiado pesado. <AbrirFiltro show-progress-dialog="true"> <action name="runscript"> <script language="VBScript"> ui.UpdateWaitDialog "Ciclo 1",20 [script aqui] ui.UpdateWaitDialog "Ciclo 2",30 [script aqui] ui.UpdateWaitDialog "Ciclo 2.1",50 [script aqui] ui.UpdateWaitDialog "Ciclo 3",70 [script aqui] ui.UpdateWaitDialog "Ciclo 4",90 [script aqui] ui.UpdateWaitDialog "Ciclo 5",100 </script> </action> </AbrirFiltro> SetMaxWaitDialog Tipo Función Tipo de Dato devuelto Ninguno Sintáxis ui.SetMaxWaitDialog total Plataforma Android Combinado con la función anterior, éste método ajusta el máximo de la barra de progreso. Es útil para no tener que calcular el aumento en cada UpdateWaitDialog. Si, por ejemplo, quisiéramos recorrer una colección y cada vez que se procese un registro o varios aumentar sólo uno, guardamos primero el número de pasadas que daremos, lo ajustamos como el máximo y después en cada vuelta aumentamos el progreso. <AbrirFiltro show-progress-dialog="true"> <action name="runscript"> <script language="VBScript"> aumento = 0 ui.SetMaxWaitDialog 50 [bucle aquí] ui.UpdateWaitDialog "Generando PDF...", aumento aumento = aumento + 1 [fin bucle] </script> </action> </AbrirFiltro> <barraprogreso show-progress-dialog="true"> <action name="runscript"> <script language="VBScript"> 'Para poner una barra de progreso en pantalla dim cont cont=0 ui.SetMaxWaitDialog 15000 For i = 1 To 15000 ui.UpdateWaitDialog "Generando lo que sea",cont cont=cont+1 Next </script> </action> </barraprogreso> ExecuteActionAfterDelay Tipo Función Tipo de Dato devuelto Ninguno Sintáxis ui.ExecuteActionAfterDelay “Nodo_A_Ejecutar”, Segundos Plataforma Android - Iphone Este método sirve para ejecutar un nodo tras esperar un cierto tiempo. El tiempo se especifica en segundos y el nodo debe estar en la colección donde se encuentre el script con la llamada a este método. Se pueden poner decimales, por ejemplo 0.3 que vienen a ser 300 milisegundos. No poner 0. <before-edit> <!-- O en cualquier otra parte --> <action name="runscript"> <script language="VBScript"> ui.ExecuteActionAfterDelay "Nodo_A_Ejecutar", 20 <!-- Ponemos que se ejecute cuando pasen 20 segundos --> </script> </action> </before-edit> .............. <Nodo_A_Ejecutar> <action name="runscript"> <script language="VBScript"> ...... Hacemos lo que sea ....... <!-- ui.ExecuteActionAfterDelay "Nodo_A_Ejecutar", 20 --> Si queremos que sea repetitivo </script> </action> </Nodo_A_Ejecutar> Si queremos que este nodo sea repetitivo, en el nodo al que se llama tendríamos que hacer una llamada para que se ejecute a sí mismo. SetLanguage Tipo Función Tipo de Dato devuelto Entero Sintáxis ui.SetLanguage “Código_de_idioma_2_letras” Plataforma Android Este método permite cambiar el idioma de los mensajes del framework y de la aplicación XOne en tiempo de ejecución. Es necesario reiniciar la aplicación para que los cambios surtan efecto. <prop name="BTNESPANOL" type="B" frame="frm1" group="1" class="buttonlogin" title="Español" visible="1" labelwidth="5" fontsize="10" onchange="refresh" method="ExecuteNode(idioma(es))" /> <prop name="BTNINGLES" type="B" frame="frm1" group="1" class="buttonlogin" title="Inglés" visible="1" labelwidth="5" fontsize="10" onchange="refresh" method="ExecuteNode(idioma(en))" /> <idioma> <action name="runscript"> <param name="idioma" /> <script language="VBScript"> Dim resp resp = ui.MsgBox("Cambiar el idioma reiniciará la aplicación. ¿Desea continuar?", "Mensaje", 4) if resp = 6 then ui.SetLanguage idioma end if </script> </action> </idioma> PlaySoundAndVibrate Tipo Función Tipo de Dato devuelto Ninguno Sintáxis ui.PlaySoundAndVibrate “Sound.mp3”,Vibrate,numRepeat Plataforma Android, IOS Este método permite lanzar un sonido con o sin vibración, y hacer que se repita n veces. El sonido puede ser cualquiera que pueda reproducir el dispositivo, mp3, wav, etc. Por defecto, el sonido se busca en la carpeta files del proyecto. También se puede reproducir el tono de notificación que se tenga configurado en el dispositivo así como si está activa la vibración o no con la macro ##DEFAULT##. 'El archivo de sonido tiene que estar en la carpeta files del proyecto ui.PlaySoundAndVibrate "bultonoencontrado.wav", "###DEFAULT##",1 'Ejecuta el tono que tenga configurado el dispositivo 5 veces. ui.PlaySoundAndVibrate "##DEFAULT##", "##DEFAULT##", 5 'Lo mismo que el anterior pero sin vibración ui.PlaySoundAndVibrate "##DEFAULT##", "", 5 <detenersonido> <action name="runscript"> <script language="VBScript"> 'Detiene la reproducción. No pasa nada si no hay nada reproduciéndose. ui.StopPlaySoundAndVibrate </script> </action> </detenersonido> DrawMapRoute Este método permite dibujar una ruta entre 2 puntos en un mapa incrustado en la aplicación. Tipo Función Tipo de Dato devuelto Ninguno Sintáxis ui.drawMapRoute(“MAP_MAPA”, self.LATITUD, self.LONGITUD, 43.0069, -7.5699, “driving”, ”#FF0000“) Plataforma Android Parámetros Nombre del content que contiene los datos. (Name del prop) Latitud destino Longitud destino Latitud origen Longitud origen Modo de desplazamiento. Valores posibles: “walking” (caminando) y “driving” (en coche). Color del trazo que dibuja la ruta. Método setNotificationLed Modifica el color del led de los dispositivos que lo tengan, este led solo se verá si tiene una notificación en la barra de notificaciones y si está el dispositivo bloqueado. Parámetros: Define el color del led. Define el tiempo que está encendido el led. Define el tiempo que está apagado el led. Ejemplo: ui.setNotificationLed "#00FF00", 1000, 1000 Método showNotification Muestra una notificación en la barra de notificaciones de los dispositivos. Parámetros: Identificador de la notificaciones, si se hacen varias llamadas con el mismo id, modificara el valor la última llamada, si se hace con id diferentes generara una nueva notificación en pantalla por cada id diferente. Título de la notificación. Descripción de la notificación. (Opcional) Texto ticker, Texto que sale antes de mostrar la notificación, solo funciona en Android inferiores al 5 (a partir de esta versión Android puso obsoleto esta particularidad). (Opcional, funciona junto con el parámetro 6) Dataobject, para saber dónde tiene que buscar el nodo a ejecutar, cuando se pulse sobre la notificación. (Opcional, funciona junto con el parámetro 5) nodo que ejecutara una vez se pulse sobre la notificación. Ejemplos: Ej1: ui.showNotification 1, "Título", "Notificación #1" Ej2: ui.showNotification 1, "Título", "Notificación #1", “Mensaje nuevo” Ej3: ui.showNotification 3, "Título", "Notificación #3", "Mensaje nuevo", self, "mensajeria" Método ShowDatePicker Método que mostrará por pantalla un calendario. Parámetros: Un objeto JSON en el que podemos definir las siguientes propiedades: (Obligatorio si no se definió onDateSet) targetProperty: Indicamos el nombre del prop donde queremos que se guarde el valor una vez se selecciones la fecha que queremos. (Opcional) initialYear: Año en que comenzara seleccionado en el calendario. (Opcional) initialMonth: Mes en que comenzara seleccionado en el calendario. (Opcional) initialDay: Día en que comenzara seleccionado en el calendario. (Opcional) Title: título superior que queramos que muestre la ventana del calendario. (Obligatorio si no se definió targetProperty) onDateSet: (Es incompatible con la propiedad targetProperty, es decir si se pone el onDateSet no hará caso al targetProperty) donde se definirá una función que se llamara una vez seleccionemos la fecha que queremos. Ejemplos: Ej2: var params = initialYear: 2038, initialMonth: 2, initialDay: 15, title: "Seleccione fecha", onDateSet: function(nYear, nMonth, nDay) /*Aquí ponemos el script que queramos ejecutar*/ ui.showDatePicker(params) Ej3: var params = targetProperty: "MAP_TEXTO_FLOAT_TOOLTIP_USUARIO", initialYear: 2038, initialMonth: 2, initialDay: 15, title: "Seleccione fecha" ui.showDatePicker(params) Métodos de XOneLive con Script Se han implementado desde hace algún tiempo los métodos del Widget del XOneLive para tenerlos disponibles mediante script para su uso en la aplicación. Métodos de XOneLive con Script (Objeto Debugtool) Definición GetDeviceIDObtiene el PIN del dispositivo (IMEI) SendLogEnvía el Log del dispositivo SendDatabaseEnvía la base de datos SendReplicaDebugDatabaseEnvía el log de operaciones de base de datos, siempre que esté activado el sql-debug=”true” a nivel de colección ó debug=”true” en el nodo APP. SendReplicaFilesDatabaseEnvía la base de datos de réplica de ficheros. Ejemplo: Set obj = CreateObject("DebugTools") ui.showtoast "Enviando Logs del sistema" 'Para obtener el IMEI del dispositivo\\ ui.MsgBox "PIN dispositivo: " + obj01.GetDeviceID, "Mensaje", 0 'Para obtener el log de operaciones del dispositivo \\ ' (La dirección es opcional) a=obj.SendLog("http://www.xone.es/XoneLogRec/reclog.aspx") if a=-1 then ui.showtoast "No se pudo enviar el log de operaciones" 'Para obtener la base de datos del dispositivo\\ '(La dirección es opcional) b=obj.SendDatabase("http://www.xone.es/XoneLogRec/reclog.aspx") if b=-1 then ui.showtoast "No se pudo enviar la base de datos" 'Para obtener log de réplica de la base de datos del dispositivo\\ '(La dirección es opcional) c=obj.SendReplicaDebugDatabase("http://www.xone.es/XoneLogRec/reclog.aspx") if c=-1 then ui.showtoast "No se pudo enviar el log de replica de operaciones" 'Para obtener la base de datos de réplica de \\ '(La dirección es opcional) d=obj.SendReplicaFilesDatabase("http://www.xone.es/XoneLogRec/reclog.aspx") if d=-1 then ui.showtoast "No se pudo enviar la base de datos de replica de ficheros" if a=0 and b=0 and c=0 and d=0 then ui.showtoast "Logs Enviados Correctamente" Set obj = nothing OpenEditView Abre una colección en modo edición sin necesidad de hacer un create object y un pushvalue. Parámetro 1 Se le puede pasar un dataObject o el nombre de la colección. Ejemplo: ui.openEditView(“miColeccion”); Código necesario para el mapa embebido Con éste código mostramos únicamente un mapa embebido con los POI que tengamos en la tabla correspondiente. <prop name="MAP_MAPA" zoom-to-my-location="false" visible="1" type="Z" contents="ClientesCoord" onchange="Refresh" mask="2" viewmode="mapview" mapview-embedded="true" width="80%" height="80%" zoom="true" /> <contents name="ClientesCoord" src="ClientesCoord" /> El siguiente código lo ponemos dentro de la colección del contents que contiene los datos con las direcciones de los POI, si bien podríamos ponerlo también en un botón ó en cualquier otra parte. Código javascript: <selecteditem refresh="false"> <action name="runscript"> <script language="javascript"> /* ui.showToast("Soy el selecteditem del mapview: " + self.DIRECCION) */ /* Esto pinta una ruta desde la ciudad de Lugo (43.0069, -7.5699) hacia la posición del POI que se ha pulsado */ ui.drawMapRoute("MAP_MAPA", self.LATITUD, self.LONGITUD, 43.0069, -7.5699, "driving", "#FF0000") </script> </action> </selecteditem> Código vbscript: <selecteditem refresh="false"> <action name="runscript"> <script language="vbscript"> 'ui.ShowToast "Soy el selecteditem del mapview: " + this("DIRECCION") 'Esto pinta una ruta desde Lugo hasta la posición del POI que se ha pulsado ui.DrawMapRoute "MAP_MAPA", this("LATITUD"), this("LONGITUD"), 43.0069, -7.5699, "driving", "#FF0000" </script> </action> </selecteditem> Métodos para obtener datos de la última coordenada Son métodos asociados al control del GPS pero son llamados por el U.I Método 1getLastKnownLocation: obtiene la última localización (Latitud, Longitud). Método 2getLastKnownLocationLatitude: obtiene la última latitud. Método 3getLastKnownLocationLongitude: obtiene la última Longitud. Método 4getLastKnownLocationAltitude: obtiene la última Altitud. Método 5getLastKnownLocationSpeed: obtiene la última Velocidad. Método 6getLastKnownLocationAccuracy: obtiene la última precisión. Método 7getLastKnownLocationBearing: obtiene el último rumbo. Método 8getLastKnownLocationProvider: obtiene el último proveedor. Método 9getLastKnownLocationDateTime: obtiene la última fecha y hora.