cace0353
01/02/16, 17:43:01
Hola de nuevo Taskeros!
Os presento mi última aplicación en la que he estado trabajando (probando, optimizando, mejorando...) los últimos 3 meses.
ANTECEDENTES
Yo era fumador y, después de varios fracasos, conseguí dejar de fumar hace mucho tiempo. He estado 13 años sin fumar. Me consideraba un "fumador que no fumaba" y no un ex-fumador porqué seguia teniendo ganas... Total, que hace 3 años empecé de nuevo, primero un cigarrillo aquí y otro allí, después uno después de las comidas, etc. (los fumadores ya conoceis de que va el asunto), hasta que, este verano, me dí cuenta de que algunos dias casi llegaba al paquete.
Entonces pensé en apuntarme los cigarrillos que fumaba y intenté evitar los que se consumen compulsivamente. Tasker era la solución para llevar las cuentas. La aplicación que os adjunto es un contador de cigarrillos fumados que nos ayuda a ser conscientes de lo que estamos fumando y que me ha resultado realmente efectiva: He conseguido bajar a una media de 10-11 cigarrillos diarios.
EL PROGRAMA
https://dl.dropboxusercontent.com/u/13481585/Pantalles.jpg
Se ejecuta en las dos pantallas mostradas a la izquierda. La de la derecha muestra las opciones de configuración. Hay otra pantalla de ayuda accesible mediante el botón ? de la de configuración.
En la pantalla FUMOMETRE tenemos dos columnas deslizantes (elemento Menú en la escena) que nos muestran los dias guardados en la de la izquierda y la hora en que me he fumado cada cigarrillo a la derecha.
Encabezando la columna de la izquierda hay un cuadro con indicación de la fecha de hoy y el número total de cigarrillos fumados con los dígitos del color determinado en la configuración (botón Menú)
En la parte inferior podemos ver las medias para los últimos 7 dias y para los últimos 30 dias.
Abajo a la derecha hay dos botones para añadir cada cigarrillo que nos fumemos o borrar el último de la lista.
Pulsando sobre un cigarrillo en la columna de la derecha podremos editar la hora.
Pulsando sobre cualquier fecha de la columna de la izquierda accederemos a la pantalla INSPECCIÓ DEL CENDRER (Inspección del cenicero) en la que veremos el detalle de los cigarrillos fumados aquel dia, la estadística por tramos horarios (mañana, tarde, noche) y el coste mensual que nos representa la media que llevamos. Podemos seguir inspeccionando lo que nos fumamos cualquier dia y sus estadísticas por tramos horarios seleccionando las fechas.
EL CÓDIGO DE LA TAREA PRINCIPAL
Fumometre (202)
A1: Destruir Escena [ Nombre:Gestio Fumar Continuar Tarea Tras Error:Encendido ]
A2: Mostrar Escena [ Nombre:Espera Fumar Mostrar como:Actividad, Ventana Completa, Sin Título Posición Horizontal:100 Posición Vertical:100 Animación:Sistema Mostrar Botón Salida:Apagado Continuar tarea inmediatamente:Encendido ]
<Estableix valors inicials de les variables en la primera execució després de la instal·lació…>
A3: Anchor
A4: Si (if) [ %InstalFumar ~ %* ]
A5: Realizar tarea [ Nombre:Inicialitzacio Fumar Prioridad:50 Parámetro 1 (%par1): Parámetro 2 (%par2): Devolver Valor de Variable: Detener:Apagado ]
A6: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:Salta aqui en la primera instalacio ]
A7: Fin si (End if)
<Si ha canviat el dia…>
A8: Si (if) [ %Avui !~ %DATE ]
<I si hi ha cigarrets fumats…>
A9: Si (if) [ %Cigarrets !~ 0 ]
A10: Establecer variable [ Nombre:%apunt_diari A:%Dia/%Nomdia: %Cigarrets#%Fumats1 Calcular:Apagado Añadir:Apagado ]
A11: For [ Variable:%cont Ítems:2:%Cigarrets ]
A12: Establecer variable [ Nombre:%apunt_diari A:%apunt_diari,%Fumats(%cont) Calcular:Apagado Añadir:Apagado ]
A13: End For
<Actualitza l'arxiu de dades amb les del dia anterior…>
A14: Anchor
A15: Leer Archivo [ Archivo:HistoricFumats.txt A la variable:%historic Continuar Tarea Tras Error:Encendido ]
A16: Eliminar archivo [ Archivo:HistoricFumats.txt Nivel de Borrado:0 Usar Root:Apagado Continuar Tarea Tras Error:Encendido ]
A17: Separar variable [ Nombre:%historic Separador:| Eliminar base:Apagado ]
A18: Array Push [ Nombre:%historic Posición:1 Valor:%apunt_diari Rellenar Espacios:Apagado ]
A19: Establecer variable [ Nombre:%numentrades A:%historic(#) Calcular:Apagado Añadir:Apagado ]
A20: Si (if) [ %numentrades > 30 ]
A21: Establecer variable [ Nombre:%numentrades A:30 Calcular:Encendido Añadir:Apagado ]
A22: Fin si (End if)
A23: For [ Variable:%cont Ítems:1:%numentrades ]
<Perqué no ens guardi les dades de "mostra" en la 1a. instal•lació…>
A24: Escribir archivo [ Archivo:HistoricFumats.txt Texto:%historic(%cont)| Añadir:Encendido Añadir Nueva Línea:Apagado ] Si (if) [ %historic(%cont) !~ dia* ]
A25: End For
A26: Fin si (End if)
<I actualitzem les dades pel dia d'avui, netejant els cigarrets fumats…>
A27: Anchor
A28: Establecer variable [ Nombre:%Avui A:%DATE Calcular:Apagado Añadir:Apagado ]
A29: Establecer variable [ Nombre:%Nomdia A:%DAYW Calcular:Apagado Añadir:Apagado ]
A30: Establecer variable [ Nombre:%dia A:%DATE Calcular:Apagado Añadir:Apagado ]
A31: Separar variable [ Nombre:%dia Separador:- Eliminar base:Apagado ]
A32: Establecer variable [ Nombre:%Dia A:%dia1-%dia2 Calcular:Apagado Añadir:Apagado ]
A33: Establecer variable [ Nombre:%Cigarrets A:0 Calcular:Encendido Añadir:Apagado ]
A34: Array Clear [ Nombre:%Fumats ]
<Llegeix l'arxiu ja actualitzat i calcula les mitjanes setmanals i de 30 dies>
A35: Leer Archivo [ Archivo:HistoricFumats.txt A la variable:%historic Continuar Tarea Tras Error:Encendido ]
A36: Separar variable [ Nombre:%historic Separador:| Eliminar base:Apagado ]
A37: Establecer variable [ Nombre:%dades A:%historic(#) Calcular:Encendido Añadir:Apagado ]
A38: Si (if) [ %dades < 7 ]
A39: Establecer variable [ Nombre:%entrades A:%dades Calcular:Apagado Añadir:Apagado ]
A40: Else
A41: Establecer variable [ Nombre:%entrades A:7 Calcular:Encendido Añadir:Apagado ]
A42: Fin si (End if)
A43: For [ Variable:%cont Ítems:1:%entrades ]
A44: Establecer variable [ Nombre:%num_cigarrets A:%historic(%cont) Calcular:Apagado Añadir:Apagado ]
A45: Separar variable [ Nombre:%num_cigarrets Separador:# Eliminar base:Apagado ]
A46: Establecer variable [ Nombre:%num_cigarrets A:%num_cigarrets1 Calcular:Apagado Añadir:Apagado ]
A47: Separar variable [ Nombre:%num_cigarrets Separador:: Eliminar base:Apagado ]
A48: Establecer variable [ Nombre:%mitjana_setmana A:%mitjana_setmana+%num_cigarrets2 Calcular:Encendido Añadir:Apagado ]
A49: End For
A50: Establecer variable [ Nombre:%Mitjana_setmana A:round(%mitjana_setmana*10/%entrades)/10 Calcular:Encendido Añadir:Apagado ]
A51: Establecer variable [ Nombre:%Mitjana_setmana A:0 Calcular:Encendido Añadir:Apagado ] Si (if) [ %Mitjana_setmana ~ %* ]
A52: Si (if) [ %dades < 30 ]
A53: Establecer variable [ Nombre:%entrades A:%dades Calcular:Apagado Añadir:Apagado ]
A54: Else
A55: Establecer variable [ Nombre:%entrades A:30 Calcular:Encendido Añadir:Apagado ]
A56: Fin si (End if)
A57: For [ Variable:%cont Ítems:1:%entrades ]
A58: Establecer variable [ Nombre:%num_cigarrets A:%historic(%cont) Calcular:Apagado Añadir:Apagado ]
A59: Separar variable [ Nombre:%num_cigarrets Separador:# Eliminar base:Apagado ]
A60: Establecer variable [ Nombre:%num_cigarrets A:%num_cigarrets1 Calcular:Apagado Añadir:Apagado ]
A61: Separar variable [ Nombre:%num_cigarrets Separador:: Eliminar base:Apagado ]
A62: Establecer variable [ Nombre:%mitjana_historic A:%mitjana_historic+%num_cigarrets2 Calcular:Encendido Añadir:Apagado ]
A63: End For
A64: Establecer variable [ Nombre:%Mitjana_historic A:round(%mitjana_historic*100/%entrades)/100 Calcular:Encendido Añadir:Apagado ]
A65: Establecer variable [ Nombre:%Mitjana_historic A:0 Calcular:Encendido Añadir:Apagado ] Si (if) [ %Mitjana_historic ~ %* ]
A66: Establecer variable [ Nombre:%Costmensual A:round(%Preu_paquet*15*%Mitjana_historic)/10 Calcular:Encendido Añadir:Apagado ]
A67: Fin si (End if)
A68: Leer Archivo [ Archivo:HistoricFumats.txt A la variable:%historic ]
A69: Separar variable [ Nombre:%historic Separador:| Eliminar base:Apagado ]
A70: Establecer variable [ Nombre:%dades A:%historic(#) Calcular:Encendido Añadir:Apagado ]
A71: For [ Variable:%cont Ítems:1:%dades ]
A72: Establecer variable [ Nombre:%num_cigarrets A:%historic(%cont) Calcular:Apagado Añadir:Apagado ]
A73: Separar variable [ Nombre:%num_cigarrets Separador:# Eliminar base:Apagado ]
A74: Establecer variable [ Nombre:%dates(%cont) A:%num_cigarrets1 Calcular:Apagado Añadir:Apagado ]
A75: Establecer variable [ Nombre:%detall(%cont) A:%num_cigarrets2 Calcular:Apagado Añadir:Apagado ]
A76: Establecer variable [ Nombre:%detall(%cont) A:Sense dades Calcular:Apagado Añadir:Apagado ] Si (if) [ %num_cigarrets2 ~ %* ]
A77: End For
<Salta aqui en la primera instalacio>
A78: Anchor
A79: Establecer variable [ Nombre:%color A:#FF79FA64 Calcular:Apagado Añadir:Apagado ] Si (if) [ %Cigarrets < %LimitBaix+1 ]
A80: Establecer variable [ Nombre:%color A:#FFFFC02C Calcular:Apagado Añadir:Apagado ] Si (if) [ %Cigarrets > %LimitBaix & %Cigarrets < %LimitMig+1 ]
A81: Establecer variable [ Nombre:%color A:#FFFF0000 Calcular:Apagado Añadir:Apagado ] Si (if) [ %Cigarrets > %LimitMig ]
A82: Mostrar Escena [ Nombre:Gestio Fumar Mostrar como:Actividad, Ventana Completa, Sin Título Posición Horizontal:100 Posición Vertical:100 Animación:Sistema Mostrar Botón Salida:Apagado Continuar tarea inmediatamente:Encendido ]
A83: Destruir Escena [ Nombre:Espera Fumar Continuar Tarea Tras Error:Encendido ]COMENTARIOS
- El programa està en catalàn pero adjunto al final el XML para que cada uno lo adapte a su gusto. También adjunto el icono para el escritorio. Para la traducción, como es muy engorroso trabajar con el texto en la pantalla del objeto texto en la escena, podeis abrir el xml con un editor de texto plano, copiar el texto, que está al principio, y editarlo. Luego copiais la traducción al portapapeles y substituis el texto de la escena.
También debereis editar las escenas porque estan ajustadas a una pantalla de 1920x1080 y, probablemente tendreis que modificar la medida de los textos (altura o relación altura anchura).
- Es conveniente para mejorar la rapidez de ejecución convertir el proyecto a aplicación con el APP FACTORY.
- A destacar en cuanto al código que el programa lee el archivo de datos HistoricFumats.txt a la variable local %historic. Esta variable se ha preparado como el embrión de una matriz de 3 dimensiones para, mediante separar variable, extraer todos los datos que se han guardado.
Las variables globales usadas son (aparte de las de colores, avisos, texto del mensaje personalizado, etc):
%Avui = % DATE. Al dia siguiente, cuando %DATE ha cambiado, se ejecuta la actualización de datos
%Dia = Es el dia expresado en formato corto dd-mm (extraido de %Avui con separar variable)
%Nomdia = Es el contenido para el dia actual de la variable %DAYW (dia de la semana)
%Cigarrets = nº de cigarrillos total fumado el dia de la fecha
%Fumats (una matriz lineal en la que cada elemento %Fumats1,%Fumats2,... guarda las horas en que nos fumamos cada cigarrillo)
Cada dia, en la primera ejecución del programa, se cumple la condición %Avui no coincide con %DATE y se prepara una variable local llamada %apunt_diari que contiene:
%Dia/%Nomdia : %Cigarrets # %Fumats1,%Fumats2,%Fumats3...| (acabada con una barra vertical)
A continuación se lee el archivo de datos HistoricFumats.txt a la variable local %historic y se separan sus elementos utilizando el caracter |
Se borra el archivo de datos y se acondiciona la variable %historic añadiendo en primera posición %apunt_diari y escribiendo de nuevo el archivo HistoricFumats.txt hasta un máximo de 30 apuntes.
Ya en la ejecución la variable %historic se convierte en una matriz lineal al separar con el símbolo | que termina cada grupo de datos. Cada "hija" són los datos de un dia determinado.
Al dividir cada hija por el símbolo # obtenemos una "tabla", o matriz de dos dimensiones, en la que las filas son los datos de una fecha y las 2 columnas son: %dades = (dia-mes/nombre del dia : nº cigarrillos) y %detall = (horas en que se han fumado los cigarrillos). Estas matrices són las que se muestran en los elementos Rueda de las dos escenas.
Después de separa la primera hija %dades con el carácter : y obtenemos las nietas %dates y %cigarrets. Este último dato se usa, mediante bucles FOR-End FOR, para obtener las media de 7 y 30 dias.
La segunda hija %detall se vuelve a separar por el carácter , y obtendremos la "nieta" que nos permite recuperar el detalle de cigarrillos fumados cada uno de los 30 dias anteriores.
- El archivo de datos (HistoricFumats.txt) y las medias (7 - 30 dias) sólo se calculan en la primera ejecución de cada dia. Esto ahorra proceso ya que los valores no van a cambiar hasta el dia siguiente.
- En la primera instalación se ejecuta una tarea (que no figura en el código escrito más arriba) que configura los parámetros generales y crea un primer apunte genérico que se borrará al dia siguiente.
Enlace al xml del proyecto y al icono para el escritorio:
https://dl.dropboxusercontent.com/u/13481585/Fumometre.rar
Editado 3/02/2016. Motivo: Nueva version en Catalàn y Castellano...
https://dl.dropboxusercontent.com/u/13481585/Fumometre_CAT-CAST.zip
Espero que os sea útil y reduzcais el consumo...
PD.- Os agradeceré que reporteis, si usais la aplicación, quan útil os ha resultado!
Os presento mi última aplicación en la que he estado trabajando (probando, optimizando, mejorando...) los últimos 3 meses.
ANTECEDENTES
Yo era fumador y, después de varios fracasos, conseguí dejar de fumar hace mucho tiempo. He estado 13 años sin fumar. Me consideraba un "fumador que no fumaba" y no un ex-fumador porqué seguia teniendo ganas... Total, que hace 3 años empecé de nuevo, primero un cigarrillo aquí y otro allí, después uno después de las comidas, etc. (los fumadores ya conoceis de que va el asunto), hasta que, este verano, me dí cuenta de que algunos dias casi llegaba al paquete.
Entonces pensé en apuntarme los cigarrillos que fumaba y intenté evitar los que se consumen compulsivamente. Tasker era la solución para llevar las cuentas. La aplicación que os adjunto es un contador de cigarrillos fumados que nos ayuda a ser conscientes de lo que estamos fumando y que me ha resultado realmente efectiva: He conseguido bajar a una media de 10-11 cigarrillos diarios.
EL PROGRAMA
https://dl.dropboxusercontent.com/u/13481585/Pantalles.jpg
Se ejecuta en las dos pantallas mostradas a la izquierda. La de la derecha muestra las opciones de configuración. Hay otra pantalla de ayuda accesible mediante el botón ? de la de configuración.
En la pantalla FUMOMETRE tenemos dos columnas deslizantes (elemento Menú en la escena) que nos muestran los dias guardados en la de la izquierda y la hora en que me he fumado cada cigarrillo a la derecha.
Encabezando la columna de la izquierda hay un cuadro con indicación de la fecha de hoy y el número total de cigarrillos fumados con los dígitos del color determinado en la configuración (botón Menú)
En la parte inferior podemos ver las medias para los últimos 7 dias y para los últimos 30 dias.
Abajo a la derecha hay dos botones para añadir cada cigarrillo que nos fumemos o borrar el último de la lista.
Pulsando sobre un cigarrillo en la columna de la derecha podremos editar la hora.
Pulsando sobre cualquier fecha de la columna de la izquierda accederemos a la pantalla INSPECCIÓ DEL CENDRER (Inspección del cenicero) en la que veremos el detalle de los cigarrillos fumados aquel dia, la estadística por tramos horarios (mañana, tarde, noche) y el coste mensual que nos representa la media que llevamos. Podemos seguir inspeccionando lo que nos fumamos cualquier dia y sus estadísticas por tramos horarios seleccionando las fechas.
EL CÓDIGO DE LA TAREA PRINCIPAL
Fumometre (202)
A1: Destruir Escena [ Nombre:Gestio Fumar Continuar Tarea Tras Error:Encendido ]
A2: Mostrar Escena [ Nombre:Espera Fumar Mostrar como:Actividad, Ventana Completa, Sin Título Posición Horizontal:100 Posición Vertical:100 Animación:Sistema Mostrar Botón Salida:Apagado Continuar tarea inmediatamente:Encendido ]
<Estableix valors inicials de les variables en la primera execució després de la instal·lació…>
A3: Anchor
A4: Si (if) [ %InstalFumar ~ %* ]
A5: Realizar tarea [ Nombre:Inicialitzacio Fumar Prioridad:50 Parámetro 1 (%par1): Parámetro 2 (%par2): Devolver Valor de Variable: Detener:Apagado ]
A6: Ir a acción [ Tipo:Etiqueta Acción Número:1 Etiqueta:Salta aqui en la primera instalacio ]
A7: Fin si (End if)
<Si ha canviat el dia…>
A8: Si (if) [ %Avui !~ %DATE ]
<I si hi ha cigarrets fumats…>
A9: Si (if) [ %Cigarrets !~ 0 ]
A10: Establecer variable [ Nombre:%apunt_diari A:%Dia/%Nomdia: %Cigarrets#%Fumats1 Calcular:Apagado Añadir:Apagado ]
A11: For [ Variable:%cont Ítems:2:%Cigarrets ]
A12: Establecer variable [ Nombre:%apunt_diari A:%apunt_diari,%Fumats(%cont) Calcular:Apagado Añadir:Apagado ]
A13: End For
<Actualitza l'arxiu de dades amb les del dia anterior…>
A14: Anchor
A15: Leer Archivo [ Archivo:HistoricFumats.txt A la variable:%historic Continuar Tarea Tras Error:Encendido ]
A16: Eliminar archivo [ Archivo:HistoricFumats.txt Nivel de Borrado:0 Usar Root:Apagado Continuar Tarea Tras Error:Encendido ]
A17: Separar variable [ Nombre:%historic Separador:| Eliminar base:Apagado ]
A18: Array Push [ Nombre:%historic Posición:1 Valor:%apunt_diari Rellenar Espacios:Apagado ]
A19: Establecer variable [ Nombre:%numentrades A:%historic(#) Calcular:Apagado Añadir:Apagado ]
A20: Si (if) [ %numentrades > 30 ]
A21: Establecer variable [ Nombre:%numentrades A:30 Calcular:Encendido Añadir:Apagado ]
A22: Fin si (End if)
A23: For [ Variable:%cont Ítems:1:%numentrades ]
<Perqué no ens guardi les dades de "mostra" en la 1a. instal•lació…>
A24: Escribir archivo [ Archivo:HistoricFumats.txt Texto:%historic(%cont)| Añadir:Encendido Añadir Nueva Línea:Apagado ] Si (if) [ %historic(%cont) !~ dia* ]
A25: End For
A26: Fin si (End if)
<I actualitzem les dades pel dia d'avui, netejant els cigarrets fumats…>
A27: Anchor
A28: Establecer variable [ Nombre:%Avui A:%DATE Calcular:Apagado Añadir:Apagado ]
A29: Establecer variable [ Nombre:%Nomdia A:%DAYW Calcular:Apagado Añadir:Apagado ]
A30: Establecer variable [ Nombre:%dia A:%DATE Calcular:Apagado Añadir:Apagado ]
A31: Separar variable [ Nombre:%dia Separador:- Eliminar base:Apagado ]
A32: Establecer variable [ Nombre:%Dia A:%dia1-%dia2 Calcular:Apagado Añadir:Apagado ]
A33: Establecer variable [ Nombre:%Cigarrets A:0 Calcular:Encendido Añadir:Apagado ]
A34: Array Clear [ Nombre:%Fumats ]
<Llegeix l'arxiu ja actualitzat i calcula les mitjanes setmanals i de 30 dies>
A35: Leer Archivo [ Archivo:HistoricFumats.txt A la variable:%historic Continuar Tarea Tras Error:Encendido ]
A36: Separar variable [ Nombre:%historic Separador:| Eliminar base:Apagado ]
A37: Establecer variable [ Nombre:%dades A:%historic(#) Calcular:Encendido Añadir:Apagado ]
A38: Si (if) [ %dades < 7 ]
A39: Establecer variable [ Nombre:%entrades A:%dades Calcular:Apagado Añadir:Apagado ]
A40: Else
A41: Establecer variable [ Nombre:%entrades A:7 Calcular:Encendido Añadir:Apagado ]
A42: Fin si (End if)
A43: For [ Variable:%cont Ítems:1:%entrades ]
A44: Establecer variable [ Nombre:%num_cigarrets A:%historic(%cont) Calcular:Apagado Añadir:Apagado ]
A45: Separar variable [ Nombre:%num_cigarrets Separador:# Eliminar base:Apagado ]
A46: Establecer variable [ Nombre:%num_cigarrets A:%num_cigarrets1 Calcular:Apagado Añadir:Apagado ]
A47: Separar variable [ Nombre:%num_cigarrets Separador:: Eliminar base:Apagado ]
A48: Establecer variable [ Nombre:%mitjana_setmana A:%mitjana_setmana+%num_cigarrets2 Calcular:Encendido Añadir:Apagado ]
A49: End For
A50: Establecer variable [ Nombre:%Mitjana_setmana A:round(%mitjana_setmana*10/%entrades)/10 Calcular:Encendido Añadir:Apagado ]
A51: Establecer variable [ Nombre:%Mitjana_setmana A:0 Calcular:Encendido Añadir:Apagado ] Si (if) [ %Mitjana_setmana ~ %* ]
A52: Si (if) [ %dades < 30 ]
A53: Establecer variable [ Nombre:%entrades A:%dades Calcular:Apagado Añadir:Apagado ]
A54: Else
A55: Establecer variable [ Nombre:%entrades A:30 Calcular:Encendido Añadir:Apagado ]
A56: Fin si (End if)
A57: For [ Variable:%cont Ítems:1:%entrades ]
A58: Establecer variable [ Nombre:%num_cigarrets A:%historic(%cont) Calcular:Apagado Añadir:Apagado ]
A59: Separar variable [ Nombre:%num_cigarrets Separador:# Eliminar base:Apagado ]
A60: Establecer variable [ Nombre:%num_cigarrets A:%num_cigarrets1 Calcular:Apagado Añadir:Apagado ]
A61: Separar variable [ Nombre:%num_cigarrets Separador:: Eliminar base:Apagado ]
A62: Establecer variable [ Nombre:%mitjana_historic A:%mitjana_historic+%num_cigarrets2 Calcular:Encendido Añadir:Apagado ]
A63: End For
A64: Establecer variable [ Nombre:%Mitjana_historic A:round(%mitjana_historic*100/%entrades)/100 Calcular:Encendido Añadir:Apagado ]
A65: Establecer variable [ Nombre:%Mitjana_historic A:0 Calcular:Encendido Añadir:Apagado ] Si (if) [ %Mitjana_historic ~ %* ]
A66: Establecer variable [ Nombre:%Costmensual A:round(%Preu_paquet*15*%Mitjana_historic)/10 Calcular:Encendido Añadir:Apagado ]
A67: Fin si (End if)
A68: Leer Archivo [ Archivo:HistoricFumats.txt A la variable:%historic ]
A69: Separar variable [ Nombre:%historic Separador:| Eliminar base:Apagado ]
A70: Establecer variable [ Nombre:%dades A:%historic(#) Calcular:Encendido Añadir:Apagado ]
A71: For [ Variable:%cont Ítems:1:%dades ]
A72: Establecer variable [ Nombre:%num_cigarrets A:%historic(%cont) Calcular:Apagado Añadir:Apagado ]
A73: Separar variable [ Nombre:%num_cigarrets Separador:# Eliminar base:Apagado ]
A74: Establecer variable [ Nombre:%dates(%cont) A:%num_cigarrets1 Calcular:Apagado Añadir:Apagado ]
A75: Establecer variable [ Nombre:%detall(%cont) A:%num_cigarrets2 Calcular:Apagado Añadir:Apagado ]
A76: Establecer variable [ Nombre:%detall(%cont) A:Sense dades Calcular:Apagado Añadir:Apagado ] Si (if) [ %num_cigarrets2 ~ %* ]
A77: End For
<Salta aqui en la primera instalacio>
A78: Anchor
A79: Establecer variable [ Nombre:%color A:#FF79FA64 Calcular:Apagado Añadir:Apagado ] Si (if) [ %Cigarrets < %LimitBaix+1 ]
A80: Establecer variable [ Nombre:%color A:#FFFFC02C Calcular:Apagado Añadir:Apagado ] Si (if) [ %Cigarrets > %LimitBaix & %Cigarrets < %LimitMig+1 ]
A81: Establecer variable [ Nombre:%color A:#FFFF0000 Calcular:Apagado Añadir:Apagado ] Si (if) [ %Cigarrets > %LimitMig ]
A82: Mostrar Escena [ Nombre:Gestio Fumar Mostrar como:Actividad, Ventana Completa, Sin Título Posición Horizontal:100 Posición Vertical:100 Animación:Sistema Mostrar Botón Salida:Apagado Continuar tarea inmediatamente:Encendido ]
A83: Destruir Escena [ Nombre:Espera Fumar Continuar Tarea Tras Error:Encendido ]COMENTARIOS
- El programa està en catalàn pero adjunto al final el XML para que cada uno lo adapte a su gusto. También adjunto el icono para el escritorio. Para la traducción, como es muy engorroso trabajar con el texto en la pantalla del objeto texto en la escena, podeis abrir el xml con un editor de texto plano, copiar el texto, que está al principio, y editarlo. Luego copiais la traducción al portapapeles y substituis el texto de la escena.
También debereis editar las escenas porque estan ajustadas a una pantalla de 1920x1080 y, probablemente tendreis que modificar la medida de los textos (altura o relación altura anchura).
- Es conveniente para mejorar la rapidez de ejecución convertir el proyecto a aplicación con el APP FACTORY.
- A destacar en cuanto al código que el programa lee el archivo de datos HistoricFumats.txt a la variable local %historic. Esta variable se ha preparado como el embrión de una matriz de 3 dimensiones para, mediante separar variable, extraer todos los datos que se han guardado.
Las variables globales usadas son (aparte de las de colores, avisos, texto del mensaje personalizado, etc):
%Avui = % DATE. Al dia siguiente, cuando %DATE ha cambiado, se ejecuta la actualización de datos
%Dia = Es el dia expresado en formato corto dd-mm (extraido de %Avui con separar variable)
%Nomdia = Es el contenido para el dia actual de la variable %DAYW (dia de la semana)
%Cigarrets = nº de cigarrillos total fumado el dia de la fecha
%Fumats (una matriz lineal en la que cada elemento %Fumats1,%Fumats2,... guarda las horas en que nos fumamos cada cigarrillo)
Cada dia, en la primera ejecución del programa, se cumple la condición %Avui no coincide con %DATE y se prepara una variable local llamada %apunt_diari que contiene:
%Dia/%Nomdia : %Cigarrets # %Fumats1,%Fumats2,%Fumats3...| (acabada con una barra vertical)
A continuación se lee el archivo de datos HistoricFumats.txt a la variable local %historic y se separan sus elementos utilizando el caracter |
Se borra el archivo de datos y se acondiciona la variable %historic añadiendo en primera posición %apunt_diari y escribiendo de nuevo el archivo HistoricFumats.txt hasta un máximo de 30 apuntes.
Ya en la ejecución la variable %historic se convierte en una matriz lineal al separar con el símbolo | que termina cada grupo de datos. Cada "hija" són los datos de un dia determinado.
Al dividir cada hija por el símbolo # obtenemos una "tabla", o matriz de dos dimensiones, en la que las filas son los datos de una fecha y las 2 columnas son: %dades = (dia-mes/nombre del dia : nº cigarrillos) y %detall = (horas en que se han fumado los cigarrillos). Estas matrices són las que se muestran en los elementos Rueda de las dos escenas.
Después de separa la primera hija %dades con el carácter : y obtenemos las nietas %dates y %cigarrets. Este último dato se usa, mediante bucles FOR-End FOR, para obtener las media de 7 y 30 dias.
La segunda hija %detall se vuelve a separar por el carácter , y obtendremos la "nieta" que nos permite recuperar el detalle de cigarrillos fumados cada uno de los 30 dias anteriores.
- El archivo de datos (HistoricFumats.txt) y las medias (7 - 30 dias) sólo se calculan en la primera ejecución de cada dia. Esto ahorra proceso ya que los valores no van a cambiar hasta el dia siguiente.
- En la primera instalación se ejecuta una tarea (que no figura en el código escrito más arriba) que configura los parámetros generales y crea un primer apunte genérico que se borrará al dia siguiente.
Enlace al xml del proyecto y al icono para el escritorio:
https://dl.dropboxusercontent.com/u/13481585/Fumometre.rar
Editado 3/02/2016. Motivo: Nueva version en Catalàn y Castellano...
https://dl.dropboxusercontent.com/u/13481585/Fumometre_CAT-CAST.zip
Espero que os sea útil y reduzcais el consumo...
PD.- Os agradeceré que reporteis, si usais la aplicación, quan útil os ha resultado!