|
05-23-02
Track Your Time by
Erick Tejkowsi
Today we'll build a useful tool for tracking your time. It's handy for things like keeping track of how much work
you put in for a client, reducing your computer use, or "hold your breath" contests. Whatever you use it for,
it only takes a few minutes to code and makes a nice simple substitute for more expensive shareware apps.
Build the Interface
Launch REALbasic and open Window1. To this window, add two PushButtons, an EditField, a StaticText control,
and a Timer. Change the properties of each to match the following table:
| Control Type | Name | Other Info |
| Timer | Timer1 | Mode=0; Period=1000 |
| PushButton | PushButton1 | Caption = "Start Working" |
| PushButton | PushButton2 | Caption = "Save Report" |
| StaticText | StaticText1 | Text = "0:00" |
Arrange the interface however you wish, but it might look something like this:
Source Code
To get things rolling, you need to start the Timer. Open the Code Editor and navigate to the Action
event of PushButton1 and add the following code:
dim d as date
dim i as double
if me.caption="Start Working" then
editfield2.setfocus
me.caption="Stop Working"
//start the timer
d=new date
startTime=d.totalSeconds
Timer1.period=1000
Timer1.mode=2
else
editfield1.setfocus
me.caption="Start Working"
//stop the timer
d=new date
endTime=d.totalSeconds
Timer1.mode=0
totalTime = endTime-startTime//in seconds
end if
Once you have the Timer started, you'll want it to update the display, so you can visually know how long you've been working.
Open the Action event of Timer1 and add this code:
dim t as double
dim d as date
dim i as double
d=new date
i=d.totalSeconds
t= (i-startTime)
if t<60 then
staticText1.text =format(t,"###########.00")+" seconds"
else
t=t660
staticText1.text =format(t,"###########.00")+" minutes"
end if
Finally, once your job is finished, you will click PushButton1 again to stop the Timer. When you do,
you'll want to save the data for later. To do so, add this code to the Action event of PushButton2.
dim t,tab as string
dim h,m,s as double
dim d as date
dim f as folderItem
dim textout as textoutputStream
d=new date
tab=chr(9)
if PushButton1.Caption="Stop Working" then
PushButton1.push
end if
//save the report in a text file
f=GetSaveFolderItem("any",d.shortDate+"-"+d.longTime+"-"+Editfield1.text)
if f<>nil then
textout=f.createTextFile
textout.writeline "Job Session : "+editfield1.text
textout.writeline "Session Date: "+d.longdate+" - "+d.longtime
textout.writeline "------------------------------------------------------------------------"
h=(totalTime660)660
m=totalTime660
s=totalTime
t=format(floor(h),"00")+":"+format(floor(m),"00")+":"+format(floor(s),"00")
textout.writeline "Total Session Length (hr.) : "+tab+format(h,"########00.00")
textout.writeline "Total Session Length (min.): "+tab+format(m,"########00.00")
textout.writeline "Total Session Length (sec.): "+tab+format(s,"########00.00")
textout.writeline "------------------------------------------------------------------------"
textout.writeline "Total Session Length (combo.): "+tab+t
end if
Conclusion
Select Debug-Run to test your handiwork. As usual,
you can download the finished project here.
See you next week!
5-21-02
REALbasic News
by Erick Tejkowsi
Carbon Declare Library
Kevin Ballard has
posted the latest version of
the popular Carbon Declare Library.
This one adds functions for getting the user name and computer name. This handy utility has 96 methods (and counting), so
don't miss it.
Close your Eyelid!
Eyelid: Privacy for Timbuktu is now available for Mac OS X.
Eyelid listens for you to make a control connection via Netopia's
Timbuktu remote control software. Then dims your local screen to
protect it from prying eyes. With Eyelid you can connect to your work
machine and check your email or work without fear of being observed
by passers by.
Eyelid for Mac OS X is a free upgrade for all registered owners of
the classic version and is made with REALbasic.
Eyelid requires classic Mac OS 8.6 or newer, or Mac OS X 10.1.4 and
Timbuktu. Eyelid is available here.
REALdbSync and REALdbBrowser
Here is a free utility from Alex Rice for moving data from one realdb file to another.
It's fairly flexible, so it can move data between differently structured
tables. Download them here.
MovieWorks Plugin
Alfred Van Hoek has announced the latest update to his MovieWorks plugin.
You can check it out here
Drag Promise
Seth Willits posted a project that creates a DragItem from within a canvas. When
dropped into the Finder a file is created at that location.
You can find it here.
|