Mensajes en el área de notificación o Barra de tareas

Hola.

Velneo dispone de la funcionalidad Mensajería interna que como otros componentes está en permanente estado Beta. La comunidad ha tenido que buscar soluciones alternativas que mejoren el sistema de Notificación de mensajes al Usuario de la aplicación. Un ejemplo fue vNotify.

Yo he usado desde hace varios años un sistema de Notificación de mensajes basado en los scripts de Autoit3 con excelentes resultados, pero solo válido en la Barra de tareas de Windows.

El objetivo es disponer de un sistema de Notificación de mensajes multiplataforma y con el mismo aspecto nativo del sistema operativo.

Cuando hay que acceder a los recursos de una determinada plataforma, el QML es lo más idóneo y en este caso hemos tenido suerte. Existe el módulo Qt Labs Platform con el tipo SystemTrayIcon que nos permitirá añadir un icono a la Barra de Tareas con toda la funcionalidad nativa del sistema operativo, ya sea Windows, Linux o MacOS.

Podremos:

  • Mostrar un icono en la Barra de Tareas de Windows o área de notificación.
  • Mostrar mensajes de notificación desde la aplicación de Velneo.
  • Disponer de un menú en el icono desde el que podamos ocultar, mostrar y cerrar vClient.
  • Lanzar Acciones de Velneo desde el menú del icono.
  • Cambiar el aspecto del icono desde la aplicación.

sysTray_mensaje

sysTray_menu

sysTray_colorIcono

Puedes ver su funcionamiento en el siguiente ejercicio:
vatp://pruebas:pruebas@c3.velneo.com:10180/0PS_Pruebas_iapp

Podrás comprobar cómo el Refresco terciario dispara el evento Lista cambiada y en el manejador Notificar con un Mensaje al usuario, incluso con vClient oculto o minimizado.

Una perlita escondida en QML y de gran valor.
Saludos
Paco Satué

Excelente pluggins Paco!!! felicidades!

Lo comercializas? Cuanto ?

Hola Paco, excelente aportación. ya probe y me parece que has aportado algo que muchos necesitamos y más ahora que todo ya es en base a mensajes. Me gustaria que me dieras precio de este vin completo. ya se que tienes el ejercicio puesto en el demo pero me gustaria saber si puedes venderlo como tal ya que asi me ahorro mucho tiempo ver como aplicarlo.

Saludos y excelente aportación

jorge@geskey.com.mx

Excelente trabajo.
Me gustaría que me pasaras costos.
leonardo@uruguaycom.com

Paco increíble aporte
Ya abre tu sitio web de Plugins para la comunidad.

Hola.

Creo que ha habido una confusión con el sistema Notificación de Mensajes.
No es un Plugin ni está a la venta.
Es un ejercicio del uso de uno de los módulos de QML que están disponibles para todos los desarrolladores de Velneo.
Está todo perfectamente documentado en la web de QT.

Solo necesitas un mínimo conocimiento de QML para integrarlo en tu Aplicación.

Saludos
Paco Satué

Bien no estuvo tan dificil xD.

Incruste un formulario QML en uno de velneo de forma oculta para pasarle valores a mostrar, en el formulario QML cada cierto tiempo se comprueba si no ha cambiado el numero del mensaje que le toca mostrar:

import QtQuick 2.6
import Qt.labs.platform 1.0

Item {
	id:root;
	visible: true;
	width: 0;
	height: 0;
	property int numMsg: 0;
	SystemTrayIcon {
		id: ico;
		visible: false;
		iconSource: "email/content/pics/email.png";
	}

	Timer {
		id: tim
		interval: 1000; running: true; repeat: true;
		onTriggered: {
			if( root.numMsg != theRoot.varToInt("NUM_MSG") ){
				if( theRoot.varToString("MSG").trim() != "" ){
					root.numMsg = theRoot.varToInt("NUM_MSG");
					ico.visible = true;
					/*
						theRoot.varToInt("ICO")
						0	No se muestra ningún icono.
						1	Se muestra un icono de información.
						2	Se muestra un icono de advertencia estándar(Warning).
						3	Se muestra un icono de advertencia crítica(Critical).
					*/
					ico.showMessage( theRoot.varToString("TIT"), theRoot.varToString("MSG"), theRoot.varToInt("ICO"), theRoot.varToInt("TIME") ); // 5 seg x def.
					theRoot.setVar("MSG", "");
				}
			}
		}
	}
}

De momento me funciona, ya pensare en algo mejor en un rato de ocio.

Un saludo.

Hola Osuna.

Me alegro que hayas sabido ver lo sencillo que es con QML algo que por otros medios sería bastante más farragoso.

Ahora imagina toda un librería de clases o tipos QML (la llamaríamos Api VQML) apoyada por algo de C++ para cuestiones de bajo nivel, y totalmente integrada con vDevelop de la misma forma que tenemos el API con vJavascript.

Saludos
Paco Satué

:pensive: Esta opcion parece que ya no funciona, depende ahora de la configuración del sistema, en mi caso solo muestra el icono mas no los mensajes. :frowning_face: Que lastima.

Hola osuna.

Tú mismo dices que depende de la configuración del sistema y así debe de ser, ya que es el Usuario el que decide si desea que le molestemos o no con los mensajes emergentes.

Abre el Asistente de concentración de Windows 10 y tienes 3 opciones: desactivado, solo prioritarias y solo alarmas.

Tú decides si se muestran los mensajes o no.

Saludos
Paco Satué

Hola Paco, si eso esta claro, pero ya te digo que así este desactivado solo muestra el icono mas no las notificaciones(Probando desde la instancia de los módulos que tienes en QML por mas que le de a “Notificar algo” no lo hace, lo mismo sucede con lo que hice hace un tiempo atrás, solo muestra el icono):

Un saludo.

Hola osuna.

Revisa “Notificaciones y avisos”, que estén activadas.
O prueba en otro equipo diferente.

Saludos
Paco Satué