Ejercicios con Velneo


([N3] pacosatu) #41

Hola eduarchap.

A qué ejemplo te refieres?
Si es al ejemplo del Canvas QML2 y captura de dibujo a mano alzada, el gráfico se guarda en la caché (mira el evento onClicked: del botón btn_imprimir). Un código de importación a Velneo lo tienes en mi último mensaje de este hilo.

Saludos
Paco Satué


([N4] eduarchap) #42

Saludos Paco.

No me refiero al ejemplo de tomar fotos con la camara del movil.


([N3] pacosatu) #43

Hola eduarchap.

Sí, es algo necesario disponer de la foto capturada.

He añadido al código QML el evento onImageSaved de la propiedad imageCapture del tipo Camera.
Este evento muestra la propiedad capturedImagePath.

Conociendo el Path de la captura ya puedes importar la imagen a una tabla Velneo.

Saludos
Paco Satué


([N4] eduarchap) #44

Saludos Paco.

Genial, muchas gracias.


([N4] eduarchap) #45

Saludos Paco.

Una consulta, de casualidad tendrás algo donde me permita abrir la galería del teléfono, y seleccionar 1 imagen, y me retorne la ruta de la imagen seleccionada?

Me refiero a seleccionar una imagen previamente existente, no capturar una en el momento.

La razón de esto es que estoy teniendo el siguiente problema

Estoy trabajando sobre una APP para Android, tomado como base la APP de vContactos.

Ahora bien, el flujo es el siguiente:

1.- Ingresa a la APP y presiona boton para dar de alta un registro
2.- Llena 2 campos de tipo texto
3.- Presiona boton para captura de foto, lo cual mediante una accion lanza un formulario QML
4.- El formulario QML se encarga de la captura de la imagen, un evento JS se encarga de reconocer que se capturo y abre otro formulario para el tratado de la imagen
5.- En este ultmo formulario se redimenciona la imagen y se guarda mediante un JS
6.- Al terminar se ejecutar interfaz aceptar en toda la cadena de formularios, hasta llegar al paso 2, donde tiene la opcion de agregar mas imágenes.

El problema es que después de terminar exitosamente todo el proceso de la primera imagen. La pantalla se queda congelada, pero la aplicacion sigue funcionando, si yo presiono el boton de “home” del movil, y luego por el gestor de aplicaciones en ejecucion, vuelvo a entrar al vClient, alli si se refresca la pantalla y me deja trabajar sobre esa pantalla, pero de alli en adelante cada vez que voy a tomar una foto nueva, que involucra abrir de nuevo otro formulario, tengo que hacer el mismo procedimiento de “home” y volver al vClient para que la pantalla se refresque y me muestre bien en pantalla.

Nose si es solo en mi teléfono que pasa esto (Alcatel Idol 3 5.5) o es generalizado, ahora en la tarde me prestan otro movil para confirmar.

Espero tus comentarios.


([N3] pacosatu) #46

Hola eduarchap.

En Android poco puedo ayudarte. Mi experiencia en estos dispositivos ha sido muy poca y desastrosa.
Yo dispongo de 4 dispositivos Android y en 2 de ellos no funciona QML2, así que de momento he dejado de perder el tiempo en esa plataforma.

Lo tuyo debe ser un problema más de la fragmentación que existe en Android.
Consulta a soporte de Velneo, envíales el código y que lo prueben.

Saludos y suerte
Paco Satué


([N4] eduarchap) #47

Saludos Paco.

Entiendo. Sin embargo lo curioso es que el codigo QML2 funciona bien, es decir, muestra la foto, la captura y todo bien. El problema se me presenta cuando regreso al formulario principal y quiero tomar la 2da imagen, alli se congela todo.

Ya envie la consulta a soporte, vamos a ver que me responden.

Gracias.

PD: No me respondiste si tienes algun QML2 para seleccionar imagen de una galeria y que me retorne la ruta, ya que teniendo la ruta puedo importarla con JS al campo de imagen, no obstante el comando de seleccionar fichero, que me abre una ventana para seleccion de fichero, cuando se ejecuta en Android, es desastroso e infuncional, por eso me ha tocado capturar la imagen o ver si hay otra forma de ubicar la ruta de la imagen y obtenerla.

Saludos.


([N1] wikan) #48

Buenas, a lo mejor te sirve getPaths para acceder a la locación de la galería.


([N4] eduarchap) #49

Saludos Manuel.

Si efectivamente esa ruta me sirve, sin embargo, el problema esta en que la ventana de selección de fichero en android es muy infuncional, porque es como la de Windows, pero en miniatura y no es practico la selección de archivos desde el movil, por eso es la necesidad de utilizar algo en QML u otra forma de hacerlo.

Sabes de alguna?

Saludos


([N1] wikan) #50

Podrías montar un pequeño QML que recorrar la carpeta y muestre los ficheros.
Incluso podrías mostrar la imagen en un ListView. Es algo más trabajoso pero así tendrás más libertad.


([N1] wikan) #51

Realmente con un ListView usando como modelo una tabla en memoria que rellenes usando un DirSearh y luego obteniendo el registro seleccionado de la lista en donde habrás guardado previamente la ruta, nombre y si te pones incluso la imagen.


([N1] wikan) #52

Nada como una búsqueda rápida en Google
FolderListModel

En el ejemplo que aparece, con un par de líneas lo tendrías.

  • Obtener el currentIndex del ListView
  • Leer la propiedad filePath
  • Guardar la ruta en una variable local del formulario QML
  • Leer desde el formulario nativo

([N1] wikan) #53

Aún así recuerda que ya tenemos QML2, así que quizás se te verá bien usando QFileDialog

La aplicación de ejemplos de Paco te podrá servir para comprobar el código.


([N3] pacosatu) #54

Hola Manuel.

Gracias por aportar nuevas ideas al desarrollo con QML2.

  • Es el “sino” de los programadores.
  • Si no funciona en Velneo lo hacemos con javascript y si no, lo intentamos con QML2.
  • Es lo que llamamos desde hace años el “Reinventar todos los días la rueda”.
  • Quizás eso es lo que nos dá de comer a muchos.

Estaría bien que os animárais a colgar ejemplos de QML2 porque realmente el potencial de esta tecnología es enorme.

Solo falta un pequeño/gran empujón por parte de Velneo en la versión 21.

Saludos
Paco Satué


([N4] eduarchap) #55

Saludos Paco.

El servidor esta off???


([N3] pacosatu) #56

Hola.

Ya que han sido novedades, he añadido 2 ejemplos de uso del Visor Web en QML2 con la nueva versión Velneo 21.
Ver ejercicios del Editor de QML.

  • Un ejercicio muestra el componente QtWebEngine (import QtWebEngine 1.2) que parece que solo funciona en sistemas operativos de escritorio.
  • El otro ejercicio muestra el componente QtWebView (import QtWebView 1.1) en el que se carga de forma dinámica código HTML (mediante loadHtml) para mostrar un gráfico HighCharts. Todo funcionando, como siempre, offline.
    Teóricamente QtWebView debería de funcionar en todos los sistemas. En Android ha funcionado, en iOS NO.
    Por supuesto no intentéis ejecutar la aplicación con los ejercicios en Android o iOS, ya que no os funcionará porque usa el Visor HTML nativo.

El componente QtWebView solo tiene un evento (onLoadingChanged) por lo que si antes era un mal sueño la conexión del Visor Html con Velneo, ahora es una auténtica pesadilla. Ya comprendo que es culpa de Qt.

Pido sugerencias de cómo pasar la cadena Base64, con la imagen del Gráfico highcharts, desde el Visor QML WebView a Velneo.

De momento se puede leer esa cadena Base64 en el evento onLoadingChanged mediante loadRequest.url.

En cualquier caso, yo particularmente, sigo estando a años luz de ser medianamente productivo con el nuevo framework para movilidad Velneo/QML2.
Lo de escribir una sola vez el código y ejecutar en múltiples plataformas, ¿lo recuerda alguién?

Saludos
Paco Satué


([N3] pacosatu) #57

Hola.

Más ejemplos del uso simultáneo de Velneo, Html, Javascript y QML. Se usan los Visores html de Velneo (editor) y QML (visor).
Al ejercicio con HighCharts, he añadido el Full Calendar y el Visor PDF.

Todo funcionando Offline y en el Visor QML WebView. Esto supone en teoría que debería funcionar en Android e iOS (habrá que verlo).

La conexión “Visor QML WebView -> Velneo” se ha solucionado mediante el protocolo TCP de Velneo, una manera transparente en backgronud y limpia de enviar datos desde el código HTML a Velneo (usamos XmlHttpRequest del DOM). Ya no necesitamos delegar clicks.

Saludos
Paco Satué


([N4] Infortic) #58

Gracias Paco. Será de mucha ayuda.


([N3] ereitmann) #59

Hola paco,perdoname si abuso de tu generosidad es que en tus Ejercicios El que tienes de imprimir gráficos de highchart con la nueva version de velneo 21 no consigo que se guarde el gráfico en la tabla temporal al hacer clic, en el botón del gráfico para exportarlo. con la version 19 no tenia problemas.
Creo que el error lo tengo en la seccion del codigo html en la que tu aclaras :
// En Velneo 21 (con Chromium) es necesario el esquema para que funcione el click
a.href = “file:///” + canvas.toDataURL(‘image/jpeg’,1);
como no se mucho de html yo he puesto en mi codigo lo siguiente:
// Envía un evento Click a Velneo
var a = document.createElement(‘a’);
a.href = ‘file:///’+ canvas.toDataURL(‘image/jpeg’,1);
a.click()
document.body.removechild(a)
pero no se si está bien o hay que completar algo mas.

la cuestion es que cuando hago clic en el boton aparece un error en el visor html diciendo Pagina no encontrada. y no se guarda el grafico en la tabla temporal.

te adjunto imagenes

Gracias desde ya





([N3] pacosatu) #60

Hola ereitmann.

Asegúrate de que:

  • Estás usando la versión 21.1 de VClient en la que se han corregido algunos fallos del Visor HTML.
  • Usas en este orden las funciones API del Visor
oVisorHTML.setSourceCode(cHTML, "file:///" + sysCacheClientPath);
oVisorHTML.setLinkDelegationPolicy(VCWebView.DelegateAllLinks);
  • Verifica con el Depurador que Velneo recibe el evento Click() desde el Visor HTML

Debería funcionar todo correctamente. Yo lo tengo en producción en varias aplicaciones.

Saludos
Paco Satué