Bonjour,
Je me permet de compléter ce petit tutoriel avec cette petite astuce que je vous propose pour éviter l’emploi d’un slider pour modifier l’heure, qui est, il faut bien l’avouer, pas très pratique ni ergonomique…
Ainsi, défini comme ceci :
On obtient donc ceci sur un design :
De plus, rien n’empêche, alors qu’il s’agit de définir une heure, d’avoir une valeur qui peut être aberrante (20h90 ??? ).
C’est dû au fait que cette fonction reste dans un système décimal, et ne manipule pas ces nombres dans le système sexagésimal requis pour traiter des heures et minutes.
Comment faire ?
Il y a certainement plusieurs solutions, mais voici ma méthode.
Tout d’abord, créer 4 actions virtuelles (par défaut) : heure+, heure-, minutes+, minutes-
Chaque de ces actions se réfèrent à une information de type numérique :
- heure_manuelle pour les heures,
- minute_manuelle pour les minutes.
Ces infos sont crées automatiquement lors de la création des actions correspondantes.
Dans la case valeur, mettre cette formule :
- Pour heure+ :
#[...][...][heure_manuelle]#+1 > 23 ? 0 : #[...][...][heure_manuelle]#+1
- heure- :
#[...][...][heure_manuelle]#-1 < 0 ? 23 : #[...][...][heure_manuelle]#-1
- minute+ :
#[...][...][minute_manuelle]#+5 > 59 ? 0 : #[...][...][minute_manuelle]#+5
- minute- :
#[...][...][minute_manuelle]#-5 < 0 ? 55 : #[...][...][minute_manuelle]#-5
[…][…] étant l’objet parent et le nom du virtuel ainsi défini.
A chaque activation sur heure+, etc… on aura donc les heures qui vont s’incrémenter de + ou - 1 heure, et les minutes de + ou - 5 minutes (mais on peut aussi conserver un pas d’une minute si besoin), avec un retour à 0 passé 24 heures ou 60 minutes.
Il reste donc à concaténer heure_manuelle et minute_manuelle. Pour ce faire, il suffit de créer une autre action, où dans la case valeur on va mettre la formule suivante :
#[...][...][heure_manuelle]#*100+#[...][...][minute_manuelle]#
Associé à une info (ici ‹ Heure_reveil_Vincent ›), on a donc notre heure programmée sous la forme HHMM, directement exploitable par une fonction time_op dans un scénario.