Seite 1 von 1

KaffeeAlarm

Verfasst: 03.05.2009 11:31
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  


Verfasst: 03.05.2009 12:05
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)

Verfasst: 03.05.2009 12:24
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

Verfasst: 03.05.2009 12:36
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

Verfasst: 03.05.2009 12:46
von Andesdaf
Gute Idee!

Vielleicht noch einen kleinen Beep einfügen. (Wenns den nicht schon gibt)