-rw-r--r-- | bin/kdepim/timetrackerhowto.txt | 68 | ||||
-rw-r--r-- | korganizer/mainwindow.cpp | 10 | ||||
-rw-r--r-- | korganizer/mainwindow.h | 1 | ||||
-rw-r--r-- | libkcal/todo.cpp | 4 |
4 files changed, 80 insertions, 3 deletions
diff --git a/bin/kdepim/timetrackerhowto.txt b/bin/kdepim/timetrackerhowto.txt new file mode 100644 index 0000000..69fe1ea --- a/dev/null +++ b/bin/kdepim/timetrackerhowto.txt @@ -0,0 +1,68 @@ + +KO/Pi timetracker HowTo + +In KO/Pi you can set a todo in a "running" state to track your working time on that todo. +This Howto is about to use that timetracking feature. + +CONTENT: + +0) Tracking time - setting a todo to started and stopped +1) Getting the time information +2) Overview and analysis of the timetracking data + +******************************************** +0) Tracking time - setting a todo to started +******************************************** + +To track time open the todo view in KO/Pi. +There you can set a todo to the "running" state. +You can do this by choosing "Start/Stop todo.." from the context menu for that todo or by double clicking on the start time or start date column of that todo. +A started todo is displayed green and the start time and date values in the todo list are displaying the start time. +If a parent todo with a running sub todo is displayed closed in the todo view that parent todo is displayed green as well. +If a todo is running the running information is stored every five minutes (not configureable). +(Nothing is changed in the todo itself: If the todo has a start datetime set only the display changes for the time this todo is set to running.) +You can edit a running todo as usual. +If you delete a running todo its running information is saved automatically +You can set the todo to "stopped" in the same way. +If a todo is set to "stopped" within 30 seconds after the start, nothing is stored. +If a todo is set to stopped, its running information is stored in the directory +<yourhome>/kdepim/apps/timetrackerdir/ +If you close the application all running todos are set to stopped and the running information is stored automatically. +That does mean: If you start KO/Pi there will be no todo in the "running" state. + +******************************************** +1) Getting the time information +******************************************** + +All data is stored in the dir +<yourhome>/kdepim/apps/timetrackerdir/ + +There are two kind of files: +E.g. +20050417-090628-libkcal-1503885238.271.ics +and +libkcal-1387036159.309.ics + +The filenames with the datetime at the beginning contains the actual tracking data: +The datetime part of the filename is the start datetime of this run of that todo. +The same value you can find in the file as "DTSTART" value. +The end datetime of the tracking you can find in the file as the "DUE" value. + +A file without a datetime at the beginning +(libkcal-1387036159.309.ics in our example) +contains no timetracking information and contains only information about a parent todo of a todo with timetracking information. +This file is needed to display the parent-child relationchip you can see in the KO/Pi todo view in the timetracking overview application: + +******************************************** +2) Overview and analysis of the timetracking data +******************************************** + +Because every timetracking run is stored in a single file it is easy to merge the data from several computers of the same person or from several persons by copying all the files into the same directory. +There is an application which reads the content of that directory and displays the running information of each todo in a so called timetable "Gantt" view. +It makes it possible to create and print reports for specific time frames. +The default display is exactly like the parent-child relationchip displayed in the KO/Pi todo view, but it is possible to sort items by categories and by attendees. +This program will only be available for the desktop (Windows and Linux). +This program is not free open source software. +There are no decisions about the distribution model (licence model and price) yet. +You can find more information about that program after the beginning of June 2005 at www.pi-sync.net. +
\ No newline at end of file diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp index ffc4d9a..8e5d108 100644 --- a/korganizer/mainwindow.cpp +++ b/korganizer/mainwindow.cpp @@ -1077,25 +1077,29 @@ void MainWindow::initActions() SLOT( whatsNew() ) ); action = new QAction( "featureHowto", i18n("Features + hints..."), 0,this ); action->addTo( helpMenu ); connect( action, SIGNAL( activated() ), SLOT( features() ) ); action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this ); action->addTo( helpMenu ); connect( action, SIGNAL( activated() ), SLOT( keyBindings() ) ); action = new QAction( "Storage Howto", i18n("Storage HowTo..."), 0,this ); action->addTo( helpMenu ); connect( action, SIGNAL( activated() ), - SLOT( storagehowto() ) ); + SLOT( storagehowto() ) ); + action = new QAction( "Timetracking Howto", i18n("Timetracking HowTo..."), 0,this ); + action->addTo( helpMenu ); + connect( action, SIGNAL( activated() ), + SLOT( timetrackinghowto() ) ); action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this ); action->addTo( helpMenu ); connect( action, SIGNAL( activated() ), SLOT( synchowto() ) ); action = new QAction( "KDE Sync Howto", i18n("KDE Sync HowTo..."), 0,this ); action->addTo( helpMenu ); connect( action, SIGNAL( activated() ), SLOT( kdesynchowto() ) ); action = new QAction( "Multi Sync Howto", i18n("Multi Sync HowTo..."), 0,this ); action->addTo( helpMenu ); connect( action, SIGNAL( activated() ), SLOT( multisynchowto() ) ); @@ -1392,24 +1396,28 @@ void MainWindow::features() } void MainWindow::usertrans() { KApplication::showFile( i18n("KO/Pi User translation HowTo"), "kdepim/korganizer/usertranslationHOWTO.txt" ); } void MainWindow::storagehowto() { KApplication::showFile( "KDE-Pim/Pi Storage HowTo", "kdepim/storagehowto.txt" ); } +void MainWindow::timetrackinghowto() +{ + KApplication::showFile( "KO/Pi Timetracking HowTo", "kdepim/timetrackerhowto.txt" ); +} void MainWindow::kdesynchowto() { KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" ); } void MainWindow::multisynchowto() { KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" ); } void MainWindow::synchowto() { KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" ); } diff --git a/korganizer/mainwindow.h b/korganizer/mainwindow.h index 3151f50..f2a6c60 100644 --- a/korganizer/mainwindow.h +++ b/korganizer/mainwindow.h @@ -59,24 +59,25 @@ class MainWindow : public QMainWindow void configureAgenda( int ); void recieve( const QCString& msg, const QByteArray& data ); protected slots: void setCaptionToDates(); void weekAction(); void about(); void licence(); void faq(); void usertrans(); void features(); void synchowto(); void storagehowto(); + void timetrackinghowto(); void kdesynchowto(); void multisynchowto(); void whatsNew(); void keyBindings(); void aboutAutoSaving();; void aboutKnownBugs(); void processIncidenceSelection( Incidence * ); void importQtopia(); void importBday(); void importOL(); diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp index 6a6c137..002d3f2 100644 --- a/libkcal/todo.cpp +++ b/libkcal/todo.cpp @@ -86,25 +86,25 @@ void Todo::saveRunningInfoToFile() if ( mRunStart.secsTo ( QDateTime::currentDateTime() ) < 30 ) { qDebug("Running time < 30 seconds. Skipped. "); return; } QString dir = KGlobalSettings::timeTrackerDir(); //qDebug("%s ", dir.latin1()); QString file = "%1%2%3-%4%5%6-"; file = file.arg( mRunStart.date().year(), 4).arg( mRunStart.date().month(),2 ).arg( mRunStart.date().day(), 2 ).arg( mRunStart.time().hour(),2 ).arg( mRunStart.time().minute(),2 ).arg( mRunStart.time().second(),2 ); file.replace ( QRegExp (" "), "0" ); file += uid(); //qDebug("File %s ",file.latin1() ); CalendarLocal cal; - cal.setTimeZoneId( " 00:00 Europe/London(UTC)" ); + cal.setLocalTime(); Todo * to = (Todo*) clone(); to->setFloats( false ); to->setDtStart( mRunStart ); to->setHasStartDate( true ); to->setDtDue( QDateTime::currentDateTime() ); to->setHasDueDate( true ); to->setUid( file ); cal.addIncidence( to ); ICalFormat format; file = dir +"/" +file +".ics"; format.save( &cal, file ); saveParents(); @@ -120,25 +120,25 @@ void Todo::saveParents() Todo* to = (Todo*)inc; bool saveTodo = false; QString file = KGlobalSettings::timeTrackerDir() + "/"+ to->uid() + ".ics"; QFileInfo fi ( file ); if ( fi.exists() ) { if ( fi.lastModified () < to->lastModified ()) saveTodo = true; } else { saveTodo = true; } if ( saveTodo ) { CalendarLocal cal; - cal.setTimeZoneId( " 00:00 Europe/London(UTC)" ); + cal.setLocalTime(); Todo * par = (Todo *) to->clone(); cal.addIncidence( par ); ICalFormat format; format.save( &cal, file ); } to->saveParents(); } int Todo::runTime() { if ( !mRunning ) return 0; |