Changement de réservoir de pompe à insuline
Publié : dim. 11/mai/2025 12:06
Bonjour à tous,
j'avais besoin de cet outil pour éviter que ma pompe à insuline sonne à des heures où je ne suis pas disponible pour changer le réservoir.
Si cette petite application peut servir à quelqu'un, c'est cadeau.
j'avais besoin de cet outil pour éviter que ma pompe à insuline sonne à des heures où je ne suis pas disponible pour changer le réservoir.
Si cette petite application peut servir à quelqu'un, c'est cadeau.
Code : Tout sélectionner
Enumeration Fichiers
#Fichier
EndEnumeration
Enumeration Fenetres
#Fenetre_principale
EndEnumeration
Enumeration Gadgets
#Txt_Selection
#Txt_Heure_changement
#Txt_Dernier_Changement
#Txt_Changement_prochain
#txt_Dans
#Dte_changement
#Str_Heure_changement
#Btn_Enregistrer
EndEnumeration
Enumeration Polices
#Police
EndEnumeration
Global Evenement, Heure_dernier_rappel, Date_dernier_changement, Heure_dernier_changement, Date_prochain_changement.s, Jour, Mois, annee
LoadFont(#Police, "Louis George Cafe", 20, #PB_Font_Bold)
SetGadgetFont(#PB_Default, FontID(#Police))
; Fonction pour charger la dernière date du fichier texte
Procedure Chargement_Heure_dernier_changement()
If FileSize("Dernier_changement.txt") > 0
OpenFile(#Fichier, "Dernier_changement.txt")
Heure_dernier_rappel = ReadQuad(#Fichier)
CloseFile(#Fichier)
Else
Heure_dernier_rappel = 0
EndIf
EndProcedure
; Fonction pour convertir HH:MM en timestamp
Procedure ConvertirHeure(dateBase.l, heure.s)
Define hh, mm
hh = Val(StringField(heure, 1, ":"))
mm = Val(StringField(heure, 2, ":"))
; Crée une nouvelle date avec l'année, mois et jour d'origine mais remplace l'heure et les minutes
ProcedureReturn Date(Year(dateBase), Month(dateBase), Day(dateBase), hh, mm, 0)
EndProcedure
; Fonction pour enregistrer une nouvelle date
Procedure Sauvegarde_Heure_dernier_changement()
OpenFile(#Fichier, "Dernier_changement.txt")
WriteQuad(#Fichier, Heure_dernier_rappel) ; Enregistre la date et l'heure en format timestamp
CloseFile(#Fichier)
EndProcedure
; Fonction pour vérifier le rappel
Procedure Rappel_Controle()
Define Heure_Actuelle = Date()
If Heure_dernier_rappel = 0 Or Heure_Actuelle >= AddDate(Heure_dernier_rappel, #PB_Date_Day, 3)
MessageRequester("Rappel", "Il est temps de vérifier ta pompe à insuline !")
Heure_dernier_rappel = Heure_Actuelle
Sauvegarde_Heure_dernier_changement()
EndIf
EndProcedure
; Fonction pour calculer la date de changement
Procedure Prochain_changement()
jour = Val(Mid(GetGadgetText(#Txt_Dernier_Changement), 22, 2))
mois = Val(Mid(GetGadgetText(#Txt_Dernier_Changement), 25, 2))
annee = Val(Mid(GetGadgetText(#Txt_Dernier_Changement), 28, 4))
Date_prochain_changement = FormatDate("%dd/%mm/%yyyy", Date(annee, mois, Jour + 3, 0, 0, 0))
EndProcedure
Procedure Dans()
Protected Date_Dans = (jour + 3) - Day(Date())
ProcedureReturn Date_Dans
EndProcedure
; Procédure principale
If OpenWindow(#Fenetre_principale, 100, 100, 750, 850, "Changement de réservoir", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
TextGadget(#Txt_Selection, 160, 30, 600, 60, "Sélectionne la date du changement")
DateGadget(#Dte_changement, 160, 100, 450, 60, FormatDate("%dd/%mm/%yyyy", Date()))
TextGadget(#Txt_Heure_changement, 190, 200, 540, 60, "Heure du changement (HH:MM)")
StringGadget(#Str_Heure_changement, 310, 280, 120, 60, "08:30")
ButtonGadget(#Btn_Enregistrer, 160, 390, 450, 90, "Enregistrer")
TextGadget(#Txt_Dernier_Changement, 95, 560, 660, 60, "Dernier changement : " + FormatDate("%dd/%mm/%yyyy", Date_dernier_changement))
Chargement_Heure_dernier_changement()
FreeGadget(#Txt_Dernier_Changement)
TextGadget(#Txt_Dernier_Changement, 95, 560, 660, 60, "Dernier changement : " + FormatDate("%dd/%mm/%yyyy %hh:%ii:%ss", Heure_dernier_rappel))
Prochain_changement()
TextGadget(#Txt_Changement_prochain, 150, 660, 570, 60, "Changement le :")
SetGadgetText(#Txt_Changement_prochain, "Changement le : " + Date_prochain_changement + " à " + GetGadgetText(#Str_Heure_changement))
Dans()
TextGadget(#txt_Dans, 310, 760, 240, 60, "Dans " + Dans() + " jour(s)")
; Colorisations
SetWindowColor(#Fenetre_principale, $AC1A00)
For i = #Txt_Selection To #txt_Dans
SetGadgetColor(i, #PB_Gadget_BackColor, GetWindowColor(#Fenetre_principale))
SetGadgetColor(i, #PB_Gadget_FrontColor, $38CEFD)
Next i
Repeat
Evenement = WaitWindowEvent()
Select Evenement
Case #PB_Event_Gadget
Select EventGadget()
Case #Dte_changement
Date_dernier_changement = GetGadgetState(#Dte_changement) ; Récupère la date choisie
SetGadgetText(#Dte_changement, FormatDate("%dd/%mm/%yyyy", Date_dernier_changement))
Case #Str_Heure_changement
If GetGadgetText(#Str_Heure_changement) = ""
SetGadgetText(#Str_Heure_changement, "08:30")
EndIf
Heure_dernier_changement = ConvertirHeure(Date_dernier_changement, GetGadgetText(#Str_Heure_changement)) ; Convertit l’heure saisie
SetGadgetText(#Txt_Dernier_Changement, FormatDate("%dd/%mm/%yyyy %hh:%ii", Heure_dernier_rappel))
Case #Btn_Enregistrer ; Si on clique sur le bouton "Enregistrer"
Date_dernier_changement = GetGadgetState(#Dte_changement) ; Mise à jour forcée
Heure_dernier_changement = ConvertirHeure(Date_dernier_changement, GetGadgetText(#Str_Heure_changement)) ; Convertit l’heure saisie
Heure_dernier_rappel = Heure_dernier_changement ; Mise à jour
Sauvegarde_Heure_dernier_changement()
SetGadgetText(#Txt_Dernier_Changement, "Dernier changement : " + FormatDate("%dd/%mm/%yyyy %hh:%ii", Heure_dernier_rappel))
MessageRequester("Confirmation", "Changement enregistré avec succès !")
EndSelect
EndSelect
Until Evenement = #PB_Event_CloseWindow
EndIf