Simpletask incorpora un motor de scripting de Lua que se puede usar para configuración y devoluciones de llamadas (callbacks). La configuración se lee cada vez que se reinicia la aplicación o cuando se edita en la pantalla Configuración Lua. Las devoluciones de llamada (callbacks) se ejecutan cuando tienen lugar ciertos eventos (como el filtrado de tareas).
Tanto la configuración como las devoluciones de llamada llamarán a funciones específicas de Lua. Consulte a continuación los detalles de las devoluciones de llamada admitidas.
Todo el código (configuración y devoluciones de llamada) serán ejecutadas en el mismo intérprete Lua.
De esta manera se pueden definir funciones auxiliares en la configuración y utilizarlas en las devoluciones de llamada.
'La devolución de llamada de filtrado se ha cambiado desde las versiones anteriores a la versión 8.0 (ver más abajo).'
Para cambiar un filtro existente (aplicación y widget) al formato 8.0 se debe hacer lo siguiente:
Agregar function onFilter(t,f,e)
antes y end
luego del guión (scritp) existente. Prefijar todos los campos con f.
, es decir due
será f.due
. Ejemplo:
if due~=nil then
return os.time() >= due;
end
--- las tareas sin fecha de vencimiento no se consideran vencidas.
return false;
se convierte en
function onFilter(t,f,e)
if f.due~=nil then
return os.time() >= f.due;
end
--- las tareas sin fecha de vencimiento no se consideran vencidas.
return false;
end
Muestra string
como una notificación toast. Es útil para la depuración de scripts.
Registra string
en el registro logcat de Android con nivel info
y etiqueta LuaInterp
.
No use notificaciones toasts dentro de las funciones. Es una buena manera de hacer que Simpletask se congele.
La mayoría de las funciones utilizan la misma colección de parámetros:
task
: La tarea como una cadena.fields
: Partes de la tarea convertidas a diferentes tipos (por ejemplo, una marca de tiempo paracreatedate
)completed
: Valor booleano que indica si la tarea se ha completado.completiondate
: La fecha de finalización en segundos de la tarea onil
si no está establecida.createdate
: La fecha de creación en segundos de la tarea onil
si no está establecida.due
: La fecha de vencimiento en segundos onil
si no está establecida.lists
: Una tabla con las listas de la tarea como claves.fields.lists
en sí misma nunca seránil
priority
: La prioridad de la tarea como una cadena.recurrence
: El patrón de recurrencia o repetición de la tarea como cadena onil
si no está establecida.tags
: Una tabla con las etiquetas de la tarea como claves.fields.tags
en sí misma nunca seránil
.task
: La tarea completa como una cadena.threshold
: La fecha límite en segundos onil
si no está establecida.text
: El texto ingresado cuando se creó la tarea.
extensions
: Una tabla con las extensiones de todo.txt (key: val
) de la tarea como pares de valores clave. Sólo hay una entrada para cada clave, esto es para facilitar su uso. Si necesita varios pareskey: val
con la misma clave, puede procesar la tarea en Lua.
Llamada para cada tarea como parte del filtrado de la lista de tareas.
verdadero
si la tarea debe mostrarsefalso
si la tarea no debe mostrarse
- Si hay un error de Lua en la devolución de llamada, se comporta como si hubiera devuelto
true
. - Teniendo en cuenta que esta función es llamada muchas veces (para cada tarea en la lista) debería ser rápida. Si es demasiada lenta, Simpletask podría terminar en ANR (Android Not Responding).
- Debe definir la función
onFilter
en el filtro (no en la configuración Lua). Definirlo en la configuración principal no funcionará. Si el script de filtrado está vacío, la funciónonFilter
será indefinida.
Llamada para cada tarea como parte del filtrado de la lista de tareas.
- El grupo al que pertenece la tarea.
- Si hay un error de Lua en la devolución de llamada, se comporta como si hubiera devuelto
" "
. - Teniendo en cuenta que esta función es llamada muchas veces (para cada tarea en la lista), debería ser rápida. Simpletask podría terminar en ANR (Android Not Responding).
- Se debe definir la función
onGroup
en el filtro (no en la configuración de Lua). Definirla en la configuración principal no funcionará, si el script de filtrado está vacío, la funciónonGroup
no estará definida.
Llamada para cada tarea como parte del ordenamiento de la lista de tareas. Esta función debería devolver una cadena para cada tarea. Esta cadena se usa para ordenar las tareas.
- La cadena que se utilizará para ordenar tareas.
- Si hay un error de Lua en la devolución de llamada, se comporta como si hubiera devuelto
""
. - Teniendo en cuenta que esta función es llamada muchas veces (para cada tarea en la lista), debería ser rápida. Simpletask podría terminar en ANR (Android Not Responding).
- Se debe definir la función
onSort
en el filtro (no en la configuración de Lua). Definirla en la configuración principal no funcionará, si el script de filtrado está vacío, la funciónonGroup
no estará definida.
Llamada para cada tarea antes de ser mostrada.
- La cadena que se mostrará.
- Si hay un error de Lua en la devolución de llamada, se comporta como si hubiera devuelto
""
. - Teniendo en cuenta que esta función es llamada muchas veces (para cada tarea en la lista), debería ser rápida. Simpletask podría terminar en ANR (Android Not Responding).
- Se debe definir la función
onDisplay
en el filtro (no en la configuración de Lua). Definirla en la configuración principal no funcionará, si el script de filtrado está vacío, la funciónonDisplay
no estará definida.
Llamada para cada tarea antes de ser agregada a la lista de tareas.
- Una cadena que será la tarea a ser agregada.
- Si hay un error de Lua en la devolución de llamada, el texto original de la tarea será guardado.
- Debe definir la devolución de llamada
onAdd
en la configuración principal de Lua, ya que no debe usarse en un filtro. Definirla en un filtro no funcionará.
Llamada para cada tarea al buscar una cadena de texto
taskText
: El texto de la tarea tal como aparece en el archivotodo.txt
.searchText
: La cadena de texto a ser buscada.caseSensitive
:true
si está activada en la configuración la busquéda indiferente a mayúsculas y minúsculas.
true
si la tarea debe mostrarsefalse
si la tarea no debe mostrarse
- Si ocurre un error de Lua en la devolución de llamada, se comporta como si hubiera devuelto
true
. - Teniendo en cuenta que esta función es llamada muchas veces (para cada tarea en la lista), debería ser rápida. Si es demasiada lenta, Simpletask podría terminar en ANR (Android Not Responding).
La configuracón es leída en el inicio de la aplicación y siempre que cambie o se ejecute desde la pantalla de Configuración Lua.
La configuración de Lua siempre sobreescribirá el valor definido en la Configuración (Lua gana).
Ninguno
"dark"
para el tema Material Oscuro"black"
para el tema Negro (funciona bien en dispositivos con pantalla Amoled)"light"
para el tema Material Claro
- Requiere de un reinicio de la aplicación para que tenga efecto (más precisamente, se necesita recrear la actividad).
Ninguno
El tamaño de la fuente de la lista de tareas en sp
(Scale-independent Pixels) como un número flotante.
- Requiere de un reinicio de la aplicación para que tenga efecto (más precisamente, se necesita recrear la actividad).
- El tamaño por defecto en Android es
14sp
.
El siguiente código mostrará sólo tareas vencidas donde las tareas sin una fecha de vencimiento establecida se considerarán que nunca vencen.
The following code will show only overdue tasks where tasks without a due date, will never be overdue.
Mostrar tareas sin etiquetas ni listas (el buzón de entrada de GTD):
function onFilter(t,f,e)
return next(f.tags)==nil and next(f.lists)==nil
end
Mostrar todas las tareas en la lista errands
:
function onFilter(t,f,e)
return f.lists["errands"]
end
Cambiar el tamaño de la fuente de la lista de tareas a 16sp
:
function tasklistTextSize()
return 16.0
end
La búsqueda difusa 8.0.0 en Lua (fuzzy search):
function onTextSearch(text, search, case)
pat = string.gsub(search, ".", "%0.*")
res = string.match(text, pat)
return res~=nil
end
Una devolución de llamada de grupo para agrupar por lista con encabezado vacío personalizado si la tarea no pertenece a ninguna lista:
function onGroup(t,f,e)
if not next(f.lists) then
return "Inbox"
else
return next(f.lists)
end
end
No agrupar y no mostrar ningún encabezado (independientemente del orden de clasificación):
function onGroup()
return ""
end
Una devolución de llamada para modificar como se muestra una tarea:
function onDisplay(t,f,e)
if f.due~=nil and os.time() > f.due then
--- Mostrar tareas vencidas en mayúsculas.
--- (Poner un '=' delante reemplaza la tarea entera)
return "="..string.upper(f.tasktext)
end
return f.tasktext
end
Una búsqueda en Google debería devolver muchos y buenos recursos. Programando en Lua debería cubrir casi todo.