/* $VER: AlarmClock 1.3 (1999-09-17) */ options results call Tags SELECT WHEN arg(1)="START" then call start WHEN arg(1)="BREAK" then call break WHEN arg(1)="ABOUT" then call about WHEN arg(1)="LOAD" then call load WHEN arg(1)="SAVE" then call save OTHERWISE call init end exit init: address AlarmClock window ID ALARM TITLE '"AlarmClock v1.3"' COMMAND '"quit"' PORT AlarmClock menu LABEL "Project" item COMMAND '"Alarmclock.rexx ABOUT"' ATTRS MUIA_Menuitem_Shortcut 'A' LABEL "About" item COMMAND '"method 'MUIM_Application_AboutMUI' 0"' PORT AlarmClock ATTRS MUIA_Menuitem_Shortcut 'M' LABEL "About MUI" item COMMAND '"method 'MUIM_Application_OpenConfigWindow'"' PORT AlarmClock ATTRS MUIA_Menuitem_Shortcut 'P' LABEL "MUI Prefs..." item ATTRS MUIA_Menuitem_Title '-1' menu LABEL "Settings..." item COMMAND '"AlarmClock.rexx LOAD"' ATTRS MUIA_Menuitem_Shortcut 'L' LABEL "Load Settings" item COMMAND '"AlarmClock.rexx SAVE"' ATTRS MUIA_Menuitem_Shortcut 'S' LABEL "Save Settings" endmenu item ATTRS MUIA_Menuitem_Title '-1' item COMMAND '"quit"' PORT AlarmClock ATTRS MUIA_Menuitem_Shortcut 'Q' LABEL "Quit" endmenu text help '"AlarmClock v1.3 by\nLorens Johansson (http://snorslex.amiga.tm)\nIf you use this program, you are required to Email\nthe author (SnorsleX@Home.se). Otherwise,\nhow is he supposed to know to keep supporting AlarmClock ?!?\n\033rLorens Johansson"' label "\033c\033bAlarmClock v1.3\033n\n\033cLorens Johansson\n\033cFreely Distributable Emailware" text ID KEY ATTRS MUIA_Text_Contents '"\033c\033bUnregistered! Pease register! It is free!"' group ID GMAIN group group frame label "Alarm" group ATTRS MUIA_Group_Columns 4 label "Normal Time:" slider ID HOUR ATTRS MUIA_Slider_Max 23 MUIA_CycleChain 1 label ":" slider ID MINUT ATTRS MUIA_Slider_Max 59 MUIA_CycleChain 1 endgroup endgroup endgroup group frame label "Type of alarm" group ATTRS MUIA_Group_Columns 2 label "Alarm type:" cycle ID ALWHI ATTRS MUIA_CycleChain 1 LABELS "Play MP3,DisplayBeep,Play16" endgroup group REGISTER ATTRS MUIA_CycleChain 1 LABELS "Play MP3,DisplayBeep,Play16" group ATTRS MUIA_Group_Columns 2 label "MPega:" popasl ID AMPEG ATTRS MUIA_CycleChain 1 label "Options:" string ID AMPEO ATTRS MUIA_CycleChain 1 label "MP3:" popasl ID AMP3 ATTRS MUIA_CycleChain 1 endgroup group ATTRS MUIA_Group_Columns 2 label "Number of times:" slider ID BEEP ATTRS MUIA_Slider_Min 1 MUIA_Slider_Max 120 MUIA_CycleChain 1 label "Wait between beeps:" slider ID BWAIT ATTRS MUIA_Slider_Max 20 MUIA_CycleChain 1 endgroup group ATTRS MUIA_Group_Columns 2 label "Play16:" popasl ID PPLAY ATTRS MUIA_CycleChain 1 label "Options:" string ID POPTI ATTRS MUIA_CycleChain 1 label "File:" popasl ID PFILE ATTRS MUIA_CycleChain 1 endgroup endgroup endgroup endgroup group ID GWAIT ATTRS MUIA_ShowMe 0 space object ID INF class '"InfoText.mcc"' ATTRS MUIA_Text_Contents '"Waiting..."' space endgroup group ATTRS MUIA_Group_Columns 5 group button ID START ATTRS MUIA_CycleChain 1 MUIA_ShowMe 1 COMMAND '"AlarmClock.rexx START"' label "Start" button ID BREAK ATTRS MUIA_CycleChain 1 MUIA_ShowMe 0 COMMAND '"AlarmClock.rexx BREAK"' label "Please Stop" endgroup space button ID ABOUT ATTRS MUIA_CycleChain 1 COMMAND '"AlarmClock.rexx ABOUT"' label "About" space button ID QUIT ATTRS MUIA_CycleChain 1 COMMAND '"quit"' PORT AlarmClock label "Quit" endgroup endwindow time=LEFT(time(),5) h=LEFT(time,2) m=RIGHT(time,2) m=m+1 if m=60 then do h=h+1 m=0 end if h=24 then h=0 if h>=0&h<=23 then slider ID HOUR ATTRS MUIA_Slider_Level h if h>=0&h<=59 then slider ID MINUT ATTRS MUIA_Slider_Level m call load call KeyCheck res=result if res="No" then do ADDRESS AlarmClock window ID REGIS TITLE '"Please Register"' text label "\033c\033bRIGISTER IS FREE!!!\n\n\033nTo register send a mail to:\nSnorsleX@SoftHome.net!" group ATTRS MUIA_Group_Columns 3 space HORIZ button ID CLKEY ATTRS MUIA_CycleChain 1 COMMAND '"window ID REGIS close"' PORT AlarmClock label "I will" space HORIZ endgroup endwindow end if res="Yes" then do ADDRESS AlarmClock txt='"\033cRegistered to: '||name||' (#'||serial||')! Thanks!"' text ID KEY ATTRS MUIA_Text_Contents txt end exit Tags: MUIA_Application_Sleep=0x80425711 MUIA_AppMessage=0x80421955 MUIA_CycleChain=0x80421ce7 MUIA_Disabled=0x80423661 MUIA_Group_Columns=0x8042f416 MUIA_Menuitem_Title=0x804218be MUIA_Menuitem_Shortcut=0x80422030 MUIA_ShowMe=0x80429ba8 MUIA_Slider_Horiz=0x8042fad1 MUIA_Slider_Level=0x8042ae3a MUIA_Slider_Max=0x8042d78a MUIA_Slider_Min=0x8042e404 MUIA_Text_Contents=0x8042f8dc MUIA_Window_ScreenTitle=0x804234b0 MUIA_Weight=0x80421d1f MUIM_Application_AboutMUI=0x8042d21d MUIM_Application_OpenConfigWindow=0x804299ba MUIV_EveryTime=0x49893131 MUIV_Frame_None=0 MUIV_Frame_Text=3 TRUE=1 FALSE=0 return start: ADDRESS AlarmClock group ID GMAIN ATTRS MUIA_ShowMe 0 group ID GWAIT ATTRS MUIA_ShowMe 1 button ID START ATTRS MUIA_Disabled 1 MUIA_ShowMe 0 button ID BREAK ATTRS MUIA_Disabled 1 MUIA_ShowMe 1 button ID QUIT ATTRS MUIA_Disabled 1 slider ID HOUR h=result slider ID MINUT m=result wakeuptime=h||":"||m cycle ID ALWHI alarmmethod=result if alarmmethod="Play MP3" then do object ID INF ATTRS MUIA_Text_Contents '"I will wake you up at 'wakeuptime'! Enjoy the MP3!"' alarm=1 popasl ID AMPEG mpega=result string ID AMPEO options=result popasl ID AMP3 mp3=result ADDRESS COMMAND "c:wait until "||h||":"||m ADDRESS AlarmClock button ID BREAK ATTRS MUIA_Disabled 0 button ID QUIT ATTRS MUIA_Disabled 0 ADDRESS COMMAND mpega||" "||options||" "||mp3 end if alarmmethod="DisplayBeep" then do object ID INF ATTRS MUIA_Text_Contents '"I will wake you up at '||h||':'||m||'! Enjoy the flashing and beeping!"' alarm=2 slider ID BEEP beeps=result slider ID BWAIT pause=result ADDRESS COMMAND "c:wait until "||h||":"||m do beeps ADDRESS COMMAND "beep" call DELAY(pause*5) end ADDRESS AlarmClock button ID QUIT ATTRS MUIA_Disabled 0 end if alarmmethod="Play16" then do object ID INF ATTRS MUIA_Text_Contents '"I will wake you up at 'wakeuptime'! Enjoy the sound!"' alarm=1 popasl ID PPLAY play16=result string ID POPTI options=result popasl ID PFILE file=result ADDRESS COMMAND "c:wait until "||h||":"||m ADDRESS AlarmClock button ID BREAK ATTRS MUIA_Disabled 0 button ID QUIT ATTRS MUIA_Disabled 0 ADDRESS COMMAND play16||" "||options||" "||file end button ID BREAK ATTRS MUIA_ShowMe 0 button ID START ATTRS MUIA_ShowMe 1 MUIA_Disabled 0 group ID GWAIT ATTRS MUIA_ShowMe 0 group ID GMAIN ATTRS MUIA_ShowMe 1 return break: ADDRESS AlarmClock group ID GWAIT ATTRS MUIA_ShowMe 0 group ID GMAIN ATTRS MUIA_ShowMe 1 button ID BREAK ATTRS MUIA_ShowMe 0 button ID START ATTRS MUIA_ShowMe 1 MUIA_Disabled 0 popasl ID AMPEG mpega=result if exists("RAM:status") then call DELETE("RAM:status") ADDRESS COMMAND "status >RAM:status" call OPEN("status","RAM:status","r") J=0 do UNTIL EOF("status") J=J+1 stat=readln("status") if lastpos(mpega,stat) ~= 0 then ADDRESS COMMAND "break "J end call CLOSE("status") call DELETE("RAM:status") return load: ADDRESS AlarmClock if OPEN("prefs","AlarmClock.prefs","R") then do call READLN("prefs") cycle ID ALWHI label result call READLN("prefs") popasl ID AMPEG content result call READLN("prefs") string ID AMPEO content result call READLN("prefs") popasl ID AMP3 content result call READLN("prefs") slider ID BEEP ATTRS MUIA_Slider_Level result call READLN("prefs") slider ID BWAIT ATTRS MUIA_Slider_Level result call READLN("prefs") popasl ID PPLAY content result call READLN("prefs") string ID POPTI content result call READLN("prefs") popasl ID PFILE content result call CLOSE("prefs") end return save: ADDRESS AlarmClock call OPEN("prefs","AlarmClock.prefs","W") cycle ID ALWHI call WRITELN("prefs",result) popasl ID AMPEG call WRITELN("prefs",result) string ID AMPEO call WRITELN("prefs",result) popasl ID AMP3 call WRITELN("prefs",result) slider ID BEEP call WRITELN("prefs",result) slider ID BWAIT call WRITELN("prefs",result) popasl ID PPLAY call WRITELN("prefs",result) string ID POPTI call WRITELN("prefs",result) popasl ID PFILE call WRITELN("prefs",result) call CLOSE("prefs") return about: ADDRESS AlarmClock window ID ABT TITLE '"About AlarmClock v1.3"' COMMAND '"window ID ABT close"' PORT AlarmClock text label "\033c\033bAlarmClock v1.3\033n\n\033cFreely Distributable Emailware\n\n\033cReleased: 1999-09-17\n\n\033cPlease visit my homepage:\nhttp://snorslex.amiga.tm\n\nPlease E-Mail me if you like/hate the program!\nSnorsleX@Home.se\n\n\033r©Copyright 1999 Lorens Johansson" group ATTRS MUIA_Group_Columns 3 space HORIZ button ATTRS MUIA_CycleChain 1 COMMAND '"window ID ABT close"' PORT AlarmClock label "Close" space HORIZ endgroup endwindow return KeyCheck: if exists("AlarmClock.key") then do call OPEN("key","AlarmClock.key","R") keydata=READLN("key") keydata2=READLN("key") call CLOSE("key") checksum=substr(keydata,1,1) serial=substr(keydata,2,1) serialchk=substr(keydata,3,1) name=substr(keydata,4,length(keydata)-3) checksume=substr(keydata2,1,1) email=substr(keydata2,2,length(keydata2)-1) end else Return("No") namelen=Length(name) realsum=c2d(checksum) serial=c2d(serial) serialchk=c2d(serialchk) temp="" do I=1 To namelen temp=temp||d2c(c2d(Right(Left(name,I),1))-(I*2)) end name=temp temp="" do I=1 To namelen temp=temp||d2c(c2d(Right(Left(name,namelen+1-I),1))) end name=temp temp="" checksum=0 do I=1 To namelen checksum=checksum + c2d(Right(Left(name,I),1)) end do until checksum < 255 checksum=checksum-255 end serial=serial-checksum serialchk=serialchk-20 emaillen=Length(email) realsume=c2d(checksume) temp="" do I=1 To emaillen temp=temp||d2c(c2d(Right(Left(email,I),1))-(I*2)) end email=temp temp="" do I=1 To emaillen temp=temp||d2c(c2d(Right(Left(email,emaillen+1-I),1))) end email=temp temp="" checksume=0 do I=1 To emaillen checksume=checksume + c2d(Right(Left(email,I),1)) end do until checksume < 255 checksume=checksume-255 end OK="No" If realsum=checksum & serial=serialchk & realsume=checksume Then OK="Yes" return(OK)