KaffeeAlarm

Anwendungen, Tools, Userlibs und anderes nützliches.
Crawler
Beiträge: 110
Registriert: 08.02.2009 19:52
Computerausstattung: PB 4.41
Win7 64bit

KaffeeAlarm

Beitrag von Crawler »

Für Büroangestellte ist der Genuss einer Tasse (oder gleich mehrerer Tassen) Kaffee eine schöne Nebenbeschäftigung. Dumm nur, dass einem ständig vor lauter Arbeit der Kaffee kalt wird. Was als Albernheit im Gespräch mit meiner Kollegin am gegenüberliegenden Tisch begann, manifestierte sich nun in Form eines kleinen Programmes.
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  

Zuletzt geändert von Crawler am 03.05.2009 18:22, insgesamt 1-mal geändert.
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Witzig ;)

Verschiebbar machen kannst du es übrigens so:

Code: Alles auswählen

ElseIf EventID = #WM_LBUTTONDOWN
		SendMessage_(WindowID(#MainWindow), #WM_NCLBUTTONDOWN, #HTCAPTION, 0)
Benutzeravatar
Sauer-RAM
Beiträge: 326
Registriert: 13.04.2009 16:22
Computerausstattung: Lenovo ThinkPad X230t Convertible
Wohnort: Haslach i. K.

Beitrag von Sauer-RAM »

tolles Programm :coderselixir:

wäre toll wenn man noch einstellen könnte wie viel Milch man in den Kaffee kippt und das Programm dann die Zeit verkürzt
"Bildung kommt vom Bildschirm und nicht vom Buch, sonst hieße es ja Buchung."
Dieter Hildebrandt
"Bildung ist Das, was übrig bleibt, wenn man alles was man in der Schule gelernt hat, vergisst. "
Albert Einstein
Benutzeravatar
Helle
Beiträge: 566
Registriert: 11.11.2004 16:13
Wohnort: Magdeburg

Beitrag von Helle »

Anstatt des Fortschrittbalkens könnte man ja die Temperatur farbig darstellen: Rot=heiss=Beginn, dann Übergang ins blaue (kalt). Ist sicher auch besser als Tray-Icon erkennbar. Vielleicht ´ne kleine Tasse als "Grafik"...
Gute Idee!
Gruß
Helle
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Beitrag von Andesdaf »

Gute Idee!

Vielleicht noch einen kleinen Beep einfügen. (Wenns den nicht schon gibt)
Win11 x64 | PB 6.20
Antworten