Ich denke, der Code erklärt schon alles: Zuerste wird die Tassengröße gewählt (legt die Abkühlzeit fest). Ein Klick auf "Start" startet den Countdown, am Ende erscheint ein kleines Informationsfenster.
Ist vielleicht nur als Spielerei mit den ganzen Gadgets zu sehen, ist aber noch ausbaufähig:
ToDo:
- Fenster verschiebbar machen (erledigt)
- Fenster minimiert und als Icon im Tray
- grafische Überarbeitung, vielleicht Smilies deren "Gesichtszüge" Auskunft über die Trinktemperatur geben und Imagebuttons für die gewählte Tassengröße.
Vorschläge? Kritik? Anregungen?
Code: Alles auswählen
Enumeration
#MainWindow
#S
#M
#L
#Zeit
#Start
#Beenden
#BGFarbe
#BarFarbe
EndEnumeration
Define Minuten.i, Start.i, ZeitAktuell.i
#ZeitS = 8
#ZeitM = 12
#ZeitL = 16
ExamineDesktops ()
OpenWindow (#MainWindow, DesktopWidth(0)-100, 50, 70, 180, "KaffeeAlarm", #PB_Window_BorderLess)
ButtonGadget (#S, 5, 5, 20, 20, "S", #PB_Button_Toggle) : GadgetToolTip (#S, "Kleine Tasse: 8 min")
ButtonGadget (#M, 25, 5, 20, 20, "M", #PB_Button_Toggle) : GadgetToolTip (#M, "Mittlere Tasse: 12 min")
ButtonGadget (#L, 45, 5, 20, 20, "L", #PB_Button_Toggle) : GadgetToolTip (#L, "Große Tasse: 16 min")
ButtonGadget (#BGFarbe, 5, 30, 5, 5, "X") : GadgetToolTip (#BGFarbe, "Fensterfarbe")
ButtonGadget (#BarFarbe, 5, 40, 5, 5, "X") : GadgetToolTip (#BarFarbe, "Balkenfarbe")
ProgressBarGadget (#Zeit, 15, 30, 40, 100, 0, 100, #PB_ProgressBar_Vertical|#PB_ProgressBar_Smooth)
ButtonGadget (#Start, 5, 135, 60, 20, "Start", #PB_Button_Toggle)
ButtonGadget (#Beenden, 5, 155, 60, 20, "Ende")
StickyWindow (#MainWindow, 1)
Repeat
EventID = WaitWindowEvent(20)
If EventID = #PB_Event_Gadget
Select EventGadget ()
Case #BGFarbe
SetWindowColor (#MainWindow, ColorRequester ())
Case #BarFarbe
SetGadgetColor (#Zeit, #PB_Gadget_FrontColor, ColorRequester ())
Case #S
Minuten=#ZeitS
SetGadgetState (#S, 1)
SetGadgetState (#M, 0)
SetGadgetState (#L, 0)
SetGadgetAttribute (#Zeit, #PB_ProgressBar_Maximum, 60*Minuten)
SetGadgetState (#Zeit, 60*Minuten)
Case #M
Minuten=#ZeitM
SetGadgetState (#S, 0)
SetGadgetState (#M, 1)
SetGadgetState (#L, 0)
SetGadgetAttribute (#Zeit, #PB_ProgressBar_Maximum, 60*Minuten)
SetGadgetState (#Zeit, 60*Minuten)
Case #L
Minuten=#ZeitL
SetGadgetState (#S, 0)
SetGadgetState (#M, 0)
SetGadgetState (#L, 1)
SetGadgetAttribute (#Zeit, #PB_ProgressBar_Maximum, 60*Minuten)
SetGadgetState (#Zeit, 60*Minuten)
Case #Start
Start = ElapsedMilliseconds ()
If GetGadgetState (#Start)=1
SetGadgetText (#Start, "Stopp")
DisableGadget (#S, 1)
DisableGadget (#M, 1)
DisableGadget (#L, 1)
DisableGadget (#Beenden, 1)
Else
SetGadgetText (#Start, "Start")
DisableGadget (#S, 0)
DisableGadget (#M, 0)
DisableGadget (#L, 0)
DisableGadget (#Beenden, 0)
EndIf
Case #Beenden
quit=1
EndSelect
ElseIf EventID = #WM_LBUTTONDOWN
SendMessage_(WindowID(#MainWindow), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
EndIf
If GetGadgetState (#S)=1 Or GetGadgetState (#M)=1 Or GetGadgetState (#L)=1
DisableGadget (#Start, 0)
Else
DisableGadget (#Start, 1)
EndIf
If GetGadgetState (#Start)=1
ZeitAktuell=ElapsedMilliseconds ()
SetGadgetState (#Zeit, GetGadgetAttribute (#Zeit, #PB_ProgressBar_Maximum)-(ZeitAktuell-Start)/1000)
If GetGadgetState (#Zeit) <= 0
SetGadgetState (#Start, 0)
SetGadgetText (#Start, "Start")
DisableGadget (#S, 0)
DisableGadget (#M, 0)
DisableGadget (#L, 0)
DisableGadget (#Beenden, 0)
MessageRequester ("Info", "Gratulation, dein Kaffee ist kalt...")
EndIf
EndIf
Until quit=1
End