-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 @@ | |||
1 | |||
2 | KO/Pi timetracker HowTo | ||
3 | |||
4 | In KO/Pi you can set a todo in a "running" state to track your working time on that todo. | ||
5 | This Howto is about to use that timetracking feature. | ||
6 | |||
7 | CONTENT: | ||
8 | |||
9 | 0) Tracking time - setting a todo to started and stopped | ||
10 | 1) Getting the time information | ||
11 | 2) Overview and analysis of the timetracking data | ||
12 | |||
13 | ******************************************** | ||
14 | 0) Tracking time - setting a todo to started | ||
15 | ******************************************** | ||
16 | |||
17 | To track time open the todo view in KO/Pi. | ||
18 | There you can set a todo to the "running" state. | ||
19 | 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. | ||
20 | A started todo is displayed green and the start time and date values in the todo list are displaying the start time. | ||
21 | If a parent todo with a running sub todo is displayed closed in the todo view that parent todo is displayed green as well. | ||
22 | If a todo is running the running information is stored every five minutes (not configureable). | ||
23 | (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.) | ||
24 | You can edit a running todo as usual. | ||
25 | If you delete a running todo its running information is saved automatically | ||
26 | You can set the todo to "stopped" in the same way. | ||
27 | If a todo is set to "stopped" within 30 seconds after the start, nothing is stored. | ||
28 | If a todo is set to stopped, its running information is stored in the directory | ||
29 | <yourhome>/kdepim/apps/timetrackerdir/ | ||
30 | If you close the application all running todos are set to stopped and the running information is stored automatically. | ||
31 | That does mean: If you start KO/Pi there will be no todo in the "running" state. | ||
32 | |||
33 | ******************************************** | ||
34 | 1) Getting the time information | ||
35 | ******************************************** | ||
36 | |||
37 | All data is stored in the dir | ||
38 | <yourhome>/kdepim/apps/timetrackerdir/ | ||
39 | |||
40 | There are two kind of files: | ||
41 | E.g. | ||
42 | 20050417-090628-libkcal-1503885238.271.ics | ||
43 | and | ||
44 | libkcal-1387036159.309.ics | ||
45 | |||
46 | The filenames with the datetime at the beginning contains the actual tracking data: | ||
47 | The datetime part of the filename is the start datetime of this run of that todo. | ||
48 | The same value you can find in the file as "DTSTART" value. | ||
49 | The end datetime of the tracking you can find in the file as the "DUE" value. | ||
50 | |||
51 | A file without a datetime at the beginning | ||
52 | (libkcal-1387036159.309.ics in our example) | ||
53 | contains no timetracking information and contains only information about a parent todo of a todo with timetracking information. | ||
54 | This file is needed to display the parent-child relationchip you can see in the KO/Pi todo view in the timetracking overview application: | ||
55 | |||
56 | ******************************************** | ||
57 | 2) Overview and analysis of the timetracking data | ||
58 | ******************************************** | ||
59 | |||
60 | 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. | ||
61 | 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. | ||
62 | It makes it possible to create and print reports for specific time frames. | ||
63 | 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. | ||
64 | This program will only be available for the desktop (Windows and Linux). | ||
65 | This program is not free open source software. | ||
66 | There are no decisions about the distribution model (licence model and price) yet. | ||
67 | You can find more information about that program after the beginning of June 2005 at www.pi-sync.net. | ||
68 | \ 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 | |||
@@ -1081,17 +1081,21 @@ void MainWindow::initActions() | |||
1081 | SLOT( features() ) ); | 1081 | SLOT( features() ) ); |
1082 | action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this ); | 1082 | action = new QAction( "Keys + Colors", i18n("Keys + Colors..."), 0, this ); |
1083 | action->addTo( helpMenu ); | 1083 | action->addTo( helpMenu ); |
1084 | connect( action, SIGNAL( activated() ), | 1084 | connect( action, SIGNAL( activated() ), |
1085 | SLOT( keyBindings() ) ); | 1085 | SLOT( keyBindings() ) ); |
1086 | action = new QAction( "Storage Howto", i18n("Storage HowTo..."), 0,this ); | 1086 | action = new QAction( "Storage Howto", i18n("Storage HowTo..."), 0,this ); |
1087 | action->addTo( helpMenu ); | 1087 | action->addTo( helpMenu ); |
1088 | connect( action, SIGNAL( activated() ), | 1088 | connect( action, SIGNAL( activated() ), |
1089 | SLOT( storagehowto() ) ); | 1089 | SLOT( storagehowto() ) ); |
1090 | action = new QAction( "Timetracking Howto", i18n("Timetracking HowTo..."), 0,this ); | ||
1091 | action->addTo( helpMenu ); | ||
1092 | connect( action, SIGNAL( activated() ), | ||
1093 | SLOT( timetrackinghowto() ) ); | ||
1090 | action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this ); | 1094 | action = new QAction( "Sync Howto", i18n("Sync HowTo..."), 0,this ); |
1091 | action->addTo( helpMenu ); | 1095 | action->addTo( helpMenu ); |
1092 | connect( action, SIGNAL( activated() ), | 1096 | connect( action, SIGNAL( activated() ), |
1093 | SLOT( synchowto() ) ); | 1097 | SLOT( synchowto() ) ); |
1094 | action = new QAction( "KDE Sync Howto", i18n("KDE Sync HowTo..."), 0,this ); | 1098 | action = new QAction( "KDE Sync Howto", i18n("KDE Sync HowTo..."), 0,this ); |
1095 | action->addTo( helpMenu ); | 1099 | action->addTo( helpMenu ); |
1096 | connect( action, SIGNAL( activated() ), | 1100 | connect( action, SIGNAL( activated() ), |
1097 | SLOT( kdesynchowto() ) ); | 1101 | SLOT( kdesynchowto() ) ); |
@@ -1396,16 +1400,20 @@ void MainWindow::usertrans() | |||
1396 | 1400 | ||
1397 | KApplication::showFile( i18n("KO/Pi User translation HowTo"), "kdepim/korganizer/usertranslationHOWTO.txt" ); | 1401 | KApplication::showFile( i18n("KO/Pi User translation HowTo"), "kdepim/korganizer/usertranslationHOWTO.txt" ); |
1398 | } | 1402 | } |
1399 | 1403 | ||
1400 | void MainWindow::storagehowto() | 1404 | void MainWindow::storagehowto() |
1401 | { | 1405 | { |
1402 | KApplication::showFile( "KDE-Pim/Pi Storage HowTo", "kdepim/storagehowto.txt" ); | 1406 | KApplication::showFile( "KDE-Pim/Pi Storage HowTo", "kdepim/storagehowto.txt" ); |
1403 | } | 1407 | } |
1408 | void MainWindow::timetrackinghowto() | ||
1409 | { | ||
1410 | KApplication::showFile( "KO/Pi Timetracking HowTo", "kdepim/timetrackerhowto.txt" ); | ||
1411 | } | ||
1404 | void MainWindow::kdesynchowto() | 1412 | void MainWindow::kdesynchowto() |
1405 | { | 1413 | { |
1406 | KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" ); | 1414 | KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" ); |
1407 | } | 1415 | } |
1408 | void MainWindow::multisynchowto() | 1416 | void MainWindow::multisynchowto() |
1409 | { | 1417 | { |
1410 | KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" ); | 1418 | KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" ); |
1411 | } | 1419 | } |
diff --git a/korganizer/mainwindow.h b/korganizer/mainwindow.h index 3151f50..f2a6c60 100644 --- a/korganizer/mainwindow.h +++ b/korganizer/mainwindow.h | |||
@@ -63,16 +63,17 @@ class MainWindow : public QMainWindow | |||
63 | void weekAction(); | 63 | void weekAction(); |
64 | void about(); | 64 | void about(); |
65 | void licence(); | 65 | void licence(); |
66 | void faq(); | 66 | void faq(); |
67 | void usertrans(); | 67 | void usertrans(); |
68 | void features(); | 68 | void features(); |
69 | void synchowto(); | 69 | void synchowto(); |
70 | void storagehowto(); | 70 | void storagehowto(); |
71 | void timetrackinghowto(); | ||
71 | void kdesynchowto(); | 72 | void kdesynchowto(); |
72 | void multisynchowto(); | 73 | void multisynchowto(); |
73 | void whatsNew(); | 74 | void whatsNew(); |
74 | void keyBindings(); | 75 | void keyBindings(); |
75 | void aboutAutoSaving();; | 76 | void aboutAutoSaving();; |
76 | void aboutKnownBugs(); | 77 | void aboutKnownBugs(); |
77 | 78 | ||
78 | void processIncidenceSelection( Incidence * ); | 79 | void processIncidenceSelection( Incidence * ); |
diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp index 6a6c137..002d3f2 100644 --- a/libkcal/todo.cpp +++ b/libkcal/todo.cpp | |||
@@ -90,17 +90,17 @@ void Todo::saveRunningInfoToFile() | |||
90 | QString dir = KGlobalSettings::timeTrackerDir(); | 90 | QString dir = KGlobalSettings::timeTrackerDir(); |
91 | //qDebug("%s ", dir.latin1()); | 91 | //qDebug("%s ", dir.latin1()); |
92 | QString file = "%1%2%3-%4%5%6-"; | 92 | QString file = "%1%2%3-%4%5%6-"; |
93 | 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 ); | 93 | 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 ); |
94 | file.replace ( QRegExp (" "), "0" ); | 94 | file.replace ( QRegExp (" "), "0" ); |
95 | file += uid(); | 95 | file += uid(); |
96 | //qDebug("File %s ",file.latin1() ); | 96 | //qDebug("File %s ",file.latin1() ); |
97 | CalendarLocal cal; | 97 | CalendarLocal cal; |
98 | cal.setTimeZoneId( " 00:00 Europe/London(UTC)" ); | 98 | cal.setLocalTime(); |
99 | Todo * to = (Todo*) clone(); | 99 | Todo * to = (Todo*) clone(); |
100 | to->setFloats( false ); | 100 | to->setFloats( false ); |
101 | to->setDtStart( mRunStart ); | 101 | to->setDtStart( mRunStart ); |
102 | to->setHasStartDate( true ); | 102 | to->setHasStartDate( true ); |
103 | to->setDtDue( QDateTime::currentDateTime() ); | 103 | to->setDtDue( QDateTime::currentDateTime() ); |
104 | to->setHasDueDate( true ); | 104 | to->setHasDueDate( true ); |
105 | to->setUid( file ); | 105 | to->setUid( file ); |
106 | cal.addIncidence( to ); | 106 | cal.addIncidence( to ); |
@@ -124,17 +124,17 @@ void Todo::saveParents() | |||
124 | if ( fi.exists() ) { | 124 | if ( fi.exists() ) { |
125 | if ( fi.lastModified () < to->lastModified ()) | 125 | if ( fi.lastModified () < to->lastModified ()) |
126 | saveTodo = true; | 126 | saveTodo = true; |
127 | } else { | 127 | } else { |
128 | saveTodo = true; | 128 | saveTodo = true; |
129 | } | 129 | } |
130 | if ( saveTodo ) { | 130 | if ( saveTodo ) { |
131 | CalendarLocal cal; | 131 | CalendarLocal cal; |
132 | cal.setTimeZoneId( " 00:00 Europe/London(UTC)" ); | 132 | cal.setLocalTime(); |
133 | Todo * par = (Todo *) to->clone(); | 133 | Todo * par = (Todo *) to->clone(); |
134 | cal.addIncidence( par ); | 134 | cal.addIncidence( par ); |
135 | ICalFormat format; | 135 | ICalFormat format; |
136 | format.save( &cal, file ); | 136 | format.save( &cal, file ); |
137 | } | 137 | } |
138 | to->saveParents(); | 138 | to->saveParents(); |
139 | } | 139 | } |
140 | 140 | ||