Difference between revisions of "KTimeTracker"

Jump to: navigation, search
(What ktimetracker can do for you)
(seems to be unmaintained, added note)
 
(99 intermediate revisions by 14 users not shown)
Line 1: Line 1:
= What is KTimeTracker =
+
<languages />
  
KTimeTracker tracks time spent on various tasks. It is useful for tracking billable hours and can report the hours logged by task and day.
+
{|class="tablecenter vertical-centered"
This time history can be exported to a comma-delimited text file for import into other billing and/or project management tools.
+
|[[Image:ktimetracker.png|thumb|300px|KTimeTracker]]||<translate> <!--T:1-->
KTimeTracker detects when your keyboard and mouse are idle and can associate different tasks with different desktops, two tools that can help keep the timer running on the correct task.
+
'''KTimeTracker is the todo management and time tracking component of [[Special:myLanguage/Kontact|Kontact]], the integrated Personal Information Manager from KDE.</translate>'''
 +
|}
 +
{{note|KTimeTracker seems to be unmaintained at least since 2013.<ref>https://forum.kde.org/viewtopic.php?f=215&t=109937&p=261083&hilit=ktimetracker#p261083</ref>}}
 +
<translate>
 +
<!--T:2-->
 +
This is the one-and-only KTimeTracker manual. And everyone can edit it.
  
With KDE 3.x, KTimeTracker was named KArm, with KDE 4.x, it is named KTimeTracker. For KDE 4.x, there is a stub called karm that just reminds you that the name has changed.
+
== Overview == <!--T:3-->
  
http://pim.kde.org/img/screenshots/karm.png
+
<!--T:4-->
 +
'''KTimeTracker''' tracks time spent on various tasks.
  
= Using ktimetracker =
+
<!--T:5-->
 +
;Challenge: You are a software consultant with several customers and many project assignments. When billing your customers, you are required to report how much time you spend on what task.
  
== What ktimetracker can do for you ==
+
<!--T:6-->
The current stable version of ktimetracker (4.1) can:
+
;Solution: Use '''KTimeTracker''' to hold a list of projects and tasks. Whenever you switch your activity, double-click on the respective task and see how its time gets tracked. At the end of the day (or month) you can obtain a journal how much time you spent on what task.
* organize and stopwatch tasks, subtasks
 
ktimetracker allows you to organize and stopwatch your work. You can put your daily todo-list into that tool. You can group your work by tasks, subtask and n<super>th</super>level tasks, meaning that every subtask can still have a subtask below it, up to some 1000 levels.
 
  
== What ktimetracker will be able to do for you ==
+
== Get it == <!--T:34-->
The current development version of ktimetracker can:
 
* edit task history and comments
 
ktimetracker allows you to edit your task's history and to put a comment for every event that you have stopped:
 
{img src=http://pim.kde.org/img/screenshots/karm-edithistory.png width= height= align= desc= link= }
 
  
=== Options ===
+
<!--T:35-->
KTimeTracker 4 has the following behavior options:
+
There is no download link for ktimetracker here. You should install it by means of your distribution. To find out your distribution, type{{Input|1=cat /etc/*ele*}} To install ktimetracker for SUSE distributions, use{{Input|1=yast -i kdepim}}
{img src="img/wiki_up/KTimeTrackerConFigure.png" }
 
  
== Compatibility ==
+
== Features == <!--T:7-->
Up to KDE 3.1 (incl.), flat files were used to store the data. From KDE 3.2 on, the iCal format is used, but flat files can still be imported until KDE 4. With KDE 4, the custom fields
 
X-KDE-karm-duration, X-KDE-karm-totalTaskTime, X-KDE-karm-totalSessionTime and X-KDE-karm-desktopList were renamed to X-KDE-ktimetracker-duration and the respective other names. KTimeTracker 4 can still read karm iCal files, but not the other way round.
 
  
== Does it scale ==
+
<!--T:8-->
KTimeTracker scales well and it regularly tested with a 1.2 MB file (https://bugs.kde.org/attachment.cgi?id=14413&action=view) available from (https://bugs.kde.org/show_bug.cgi?id=110523). We have never observed slow-downs caused by the size of the calendar-file.
+
The current stable version of '''KTimeTracker''' (4.4) can:
  
== Support ==
+
<!--T:9-->
*needing support ? Ask and answer in the chat at irc.kde.org, channel #kde
+
* organize tasks into subtasks
 +
'''KTimeTracker''' allows you to organize your work like a todo-list. You can group your work by tasks and subtask. Every subtask can still have a subtask below it, up to some 1000 levels.
  
= Developing ktimetracker =
+
<!--T:10-->
*look at [http://bugs.kde.org/buglist.cgi?short_desc_type=allwordssubstr&short_desc=&long_desc_type=allwordssubstr&long_desc=&product=karm&component=general&component=reporting&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bugidtype=include&bug_id=&votes=&emailassigned_to1=1&emailtype1=substring&email1=&emailassigned_to2=1&emailreporter2=1&emailcc2=1&emailtype2=substring&email2=&changedin=&chfieldfrom=&chfieldto=Now&chfieldvalue=&order=Reuse+same+sort+as+last+time&cmdtype=doit&newqueryname=&namedcmd=allMyBugs|bugs.kde.org]
+
* track your time
*join our discussion on irc.kde.org, channel #kontact
+
Whenever you start working on a new task, just double-click the corresponding task in your todo-list. You will see a clock appearing next to this task indicating its time is now recorded.
*learn programming with KDE's [ProgrammingTutorial]
 
  
== So you want to become a ktimetracker developer ==
+
<!--T:11-->
Here are your classes:
+
* edit task history and comments
*mainwindow.*: Is the main window of the KDE application
+
'''KTimeTracker''' allows you to edit your task's history and to put a comment for every work-event:
*karm_part.*: Is the KPart of ktimetracker
 
**timetrackerwidget.*: Is a widget with no or several tabs that contain
 
***taskview.*: Is a treeListWidget that contains:
 
****task.*: A QObject and QTreeWidgetItem. A task can be constructed from a taskview and a todo. As soon as you instanciate a task, it becomes visible in your TreeWidget.
 
****karmstorage.*: Is the storage backend that contains a:
 
*****KCal::ResourceCalendar
 
 
 
 
 
== dbus ==
 
dbus is clearly a developer topic. To test the dbus functionality of your ktimetracker, have ktimetracker running and proceed like this:
 
{CODE()}
 
qdbus
 
...
 
org.kde.ktimetracker
 
...
 
qdbus org.kde.ktimetracker
 
...
 
/KTimeTracker
 
...
 
qdbus org.kde.ktimetracker /KTimeTracker
 
...
 
method void org.kde.ktimetracker.ktimetracker.quit()
 
...
 
qdbus org.kde.ktimetracker /KTimeTracker org.kde.ktimetracker.ktimetracker.quit
 
{CODE}
 
 
 
== Info for 4.0 ==
 
See http://www.nabble.com/Re:--Kde-cvs-announce--KDE-4.0-Release-Branch-td14615393.html
 
 
 
== Internationalization ==
 
You want to test the translation of ktimetracker. For this, you want to call ktimetracker in, say, german. For this, you need to know how you at all can call a KDE 4 program in another language than english. Here is as an example how I call akregator in german:
 
{CODE()}
 
wget http://websvn.kde.org/*checkout*/trunk/l10n-kde4/de/messages/kdepim/akregator.po
 
msgfmt -o akregator.mo akregator.po
 
cp akregator.mo .kde4/share/locale/de/LC_MESSAGES/
 
KDE4_LANG=de akregator
 
{CODE}
 
The respective ktimetracker translation is still stored in karm.*o, and it works.
 
  
== How to reproduce a stale lock ==
 
{CODE()}
 
touch .kde/share/apps/kabc/lock/_home_tom_.kde_share_apps_karm_karm.ics.lock
 
{CODE}
 
  
== How to get rid of debugging output ==
+
<!--T:12-->
{CODE()}
+
[[Image:ktimetracker-history.png|500px|center]]
cmake -DCMAKE_BUILD_TYPE=Release
 
{CODE}
 
  
== Goals ==
 
* Unicode - I found out it is already capable of UTF-8.
 
  
== Where is what ? ==
+
<!--T:13-->
* The latest development sourcecode is available via web at http://websvn.kde.org/trunk/KDE/kdepim/ktimetracker
+
* pause detection
* You can subscribe to watch code changes at
+
When going for lunch, it may happen that you forget to stop timetracking before. No problem: the idle time detector in '''KTimeTracker''' will pop up after a configurable amount of time giving you the possibility to revert (as if you said, "I was '''not''' working during this time.") or continue timing (as if you said "I was working during this time.").
http://commitfilter.kde.org
 
* You can get informed on irc about code changes at freenode,
 
#kde-commits
 
* You can discuss about KDE pim development on freenode,
 
#kontact
 
* The api documentation is available at http://developer.kde.org/documentation/library/cvs-api/kdepim-apidocs/karm/html/index.html
 
* The userdocumentation is generated from
 
http://websvn.kde.org/trunk/KDE/kdepim/doc/karm
 
* ktimetracker all-you-need in the internet:
 
http://wiki.kde.org/ktimetracker
 
* ktimetracker as part of pim, for developers:
 
http://pim.kde.org/components/karm.php / http://websvn.kde.org/trunk/www/areas/pim/components/karm.php
 
* ktimetracker as part of pim, for users:
 
http://kontact.kde.org / http://websvn.kde.org/trunk/www/apps/kontact
 
  
== Development Direction ==
+
== Options == <!--T:14-->
The following similar programs can give you inspiration how to move forward developing:
 
*hourglass
 
*gnotime
 
*titrax
 
*taskCoach
 
  
== Kontact plugin vs. Standalone ==
+
<!--T:15-->
The Kontact plugin is realized via a KPart. The elegant solution would be to have one KPart that can be integrated into Kontact and one shell that just displays the KPart. This is not so far now. At the moment, karm_part.cpp implements the ktimetracker part and mainwindow.cpp implements the standalone application.
+
'''KTimeTracker 4''' has not more and not less than the following options:
Here's a patch that allows us to use the karm part (karm_part.cpp) as widget of mainwindow, not perfect yet, but showing a direction:
 
<pre>
 
Index: mainwindow.cpp
 
===================================================================
 
--- mainwindow.cpp      (revision 618712)
 
+++ mainwindow.cpp      (working copy)
 
@@ -24,6 +24,7 @@
 
#include <qstring.h>
 
  
#include "karmerrors.h"
 
+#include "karm_part.h"
 
#include "karmutility.h"
 
#include "mainwindow.h"
 
#include "preferences.h"
 
@@ -43,9 +44,10 @@
 
    _sessionSum( 0 )
 
{
 
  
+  _karmpart  = new karmPart(this,"hi",this,"hi");
+
<!--T:16-->
  _taskView  = new TaskView( this, 0, icsfile );
+
[[Image:Snapshot-ktimetracker-options-behavior.png|center]]
  
-  setCentralWidget( _taskView );
 
+  setCentralWidget( _karmpart->widget() );
 
  // status bar
 
  startStatusBar();
 
  
@@ -85,7 +87,7 @@
+
<!--T:17-->
  connect( _taskView, SIGNAL( tasksChanged( QPtrList<Task> ) ),
+
[[Image:Snapshot-ktimetracker-options-appearance.png|center]]
                      _tray, SLOT( updateToolTip( QPtrList<Task> ) ));
 
  
-  _taskView->load();
 
+  //_taskView->load();
 
  
  // Everything that uses Preferences has been created now, we can let it
+
<!--T:18-->
  // emit its signals
+
''Configuration for PDA'': Removes the search-bar to gain screen real estate. Assumes a touch-screen and pops up a context menu on every mouse click, even with the left button.
Index: mainwindow.h
 
===================================================================
 
--- mainwindow.h        (revision 618621)
 
+++ mainwindow.h        (working copy)
 
@@ -5,6 +5,7 @@
 
  
#include "karmerrors.h"
 
#include <karmdcopiface.h>
 
+#include "karm_part.h"
 
#include "reportcriteria.h"
 
  
class KAccel;
+
<!--T:19-->
@@ -34,7 +35,8 @@
+
[[Image:Snapshot-ktimetracker-options-storage.png|center]]
  
    KAccel*          _accel;
 
    KAccelMenuWatch* _watcher;
 
-    TaskView*        _taskView;
 
+    TaskView*      _taskView;
 
+    karmPart*        _karmpart;
 
    long            _totalSum;
 
    long            _sessionSum;
 
    Preferences*    _preferences;
 
Index: Makefile.am
 
===================================================================
 
--- Makefile.am (revision 618621)
 
+++ Makefile.am (working copy)
 
@@ -21,7 +21,7 @@
 
libkarm_shared_la_LIBADD = $(top_builddir)/libkcal/libkcal.la \
 
            $(top_builddir)/kresources/remote/libkcal_resourceremote.la \
 
              $(top_builddir)/libkdepim/libkdepim.la $(LIBXSS) -lkdeprint
 
-karm_SOURCES = main.cpp
 
+karm_SOURCES = main.cpp karm_part.cpp
 
karm_LDADD = libkarm_shared.la
 
karm_LDFLAGS = $(all_libraries) $(KDE_RPATH)
 
noinst_HEADERS = desktoptracker.h edittaskdialog.h printdialog.h \
 
</pre>
 
  
== IdleTimeDetector ==
+
== Compatibility == <!--T:20-->
The idletimedetector is in the equally-named .cpp and .h file. It starts a qtimer and at every timeout, checks, if the X extension delivers for the last user interaction a timepoint that is further away than the maxIdleTime.
 
  
== About storage ==
+
<!--T:21-->
The storage of your ktimetracker data takes place in an iCal file. That format needs a bit of explanation. A simple one looks like the following:
+
There have been 3 file format changes in the over 10-year-history of KTimeTracker:
 +
{| class="wikitable sortable" border=1
 +
! KDE SC version !! KTimeTracker file
 +
|-
 +
| -3.1        || flat files
 +
|-
 +
| 3.2-3.5    || iCal files with X-KDE-karm fields, import possibility for flat files
 +
|-
 +
| 4.0-        || iCal files with X-KDE-KTimeTracker fields, automated import for iCal files with X-KDE-karm fields
 +
|-
 +
|}
  
<pre>
+
<!--T:22-->
BEGIN:VCALENDAR
+
Because of the iCal file format, KTimeTracker is compatible with korganizer. You can even work synchroneously on one file with korganizer and KTimeTracker. If one program changes the file, the updates will be propagated to the other application automatically.
PRODID:-//K Desktop Environment//NONSGML libkcal 3.5//EN
 
VERSION:2.0
 
BEGIN:VTODO
 
DTSTAMP:20060915T181010Z
 
ORGANIZER;CN=root:MAILTO:
 
X-KDE-karm-totalSessionTime:0
 
X-KDE-karm-totalTaskTime:19
 
CREATED:20060609T230212Z
 
UID:libkcal-652058592.803
 
SEQUENCE:0
 
LAST-MODIFIED:20060915T181010Z
 
SUMMARY:fg
 
CLASS:PUBLIC
 
PRIORITY:5
 
PERCENT-COMPLETE:0
 
END:VTODO
 
  
BEGIN:VEVENT
+
== ChangeLog == <!--T:23-->
DTSTAMP:20060915T181010Z
 
ORGANIZER:MAILTO:
 
X-KDE-karm-duration:300
 
CREATED:20060915T174305Z
 
UID:libkcal-6397995.845
 
SEQUENCE:0
 
LAST-MODIFIED:20060910T174305Z
 
SUMMARY:fg
 
CLASS:PUBLIC
 
PRIORITY:5
 
CATEGORIES:KArm
 
RELATED-TO:libkcal-652058592.803
 
DTSTART:20060910T172346Z
 
DTEND:20060910T174305Z
 
TRANSP:OPAQUE
 
END:VEVENT
 
  
END:VCALENDAR
+
<!--T:24-->
</pre>
+
{| class="wikitable sortable" border=1
 +
!  !! pre-3.2 !! 3.2 !! 3.3 !! future
 +
|-
 +
| tracking time ||
 +
* idle detection
 +
* flexible task tree
 +
||
 +
* desktop tracking
 +
||
 +
||
 +
* Comment tags for history
 +
      (bug #64879)
 +
* Task budget
 +
* Edit history
 +
      (bug #84499)
 +
|-
 +
| reporting    ||
 +
* totals report
 +
* log history
 +
* sessions
 +
||
 +
* history report
 +
* roll up totals
 +
||
 +
* Chart history
 +
* Statistics?
 +
|-
 +
| integration ||
 +
* iCalendar for storage
 +
||
 +
* CSV export
 +
* Basic locking
 +
||
 +
* Advanced locking (bug #71292)
 +
|-
 +
| teaching
 +
||
 +
* handbook
 +
* whatsthis help
 +
||
 +
||
 +
|-
 +
|}
  
=== A test case for kcal ===
+
== Does it scale? == <!--T:25-->
'''CMakeLists.txt'''
 
<pre>
 
PROJECT( kde4start )
 
FIND_PACKAGE(KDE4 REQUIRED)
 
INCLUDE_DIRECTORIES( ${KDE4_INCLUDES} . )
 
  
 +
<!--T:26-->
 +
'''KTimeTracker''' scales well and it regularly tested with a 1.2 MB file ([https://bugs.kde.org/attachment.cgi?id=14413&action=view download it]) available from ([https://bugs.kde.org/show_bug.cgi?id=110523 KDE Bug report 110523]). A '''KTimeTracker''' benchmark is available from [http://websvn.kde.org:80/trunk/KDE/kdepim/ktimetracker/test/ktimetrackerbenchmark?view=markup here].
  
SET(kde4startSources main.cpp )
+
=== Support === <!--T:27-->
  
KDE4_ADD_EXECUTABLE(kde4start ${kde4startSources} )
+
<!--T:28-->
 +
As you explore '''KTimeTracker''' you'll find questions that need answering. Chat with us, the KDE users, on [irc://chat.freenode.net#kde IRC, the KDE users' channel].
  
TARGET_LINK_LIBRARIES(kde4start ${KDE4_KDEUI_LIBS} ${KDE4_KCAL_LIBS} ${KDE4_KPARTS_LIBS} kdepim kcal_resourceremote )
+
=== Videos === <!--T:29-->
</pre>
 
'''main.cpp'''
 
<pre>
 
#include <QString>
 
#include <kapplication.h>
 
#include <kaboutdata.h>
 
#include <kmessagebox.h>
 
#include <kcmdlineargs.h>
 
#include <KMainWindow>
 
#include <kcal/resourcecalendar.h>
 
#include <kcal/resourcecached.h>
 
#include <kcal/resourcelocal.h>
 
  
int main (int argc, char *argv[])
+
<!--T:30-->
{
+
Video demos are here:
  const QByteArray& ba=QByteArray("test");
+
* [http://www.youtube.com/watch?v=LdlEkJAMj_A The "track active applications" demo]
  const KLocalizedString name=ki18n("myName");
 
  KAboutData aboutData( ba, ba, name, ba, name);
 
  KCmdLineArgs::init( argc, argv, &aboutData );
 
  KApplication khello;
 
  KCal::ResourceCalendar* cal;
 
  KCal::ResourceCached* resource;
 
  resource=new KCal::ResourceLocal("/tmp/ktimetrackerkonsole.ics");
 
  cal=resource;
 
}
 
</pre>
 
'''kompile, link and run'''
 
cmake . && make && ./kde4start
 
  
= Related Projects =
+
=== See also === <!--T:31-->
  
http://websvn.kde.org/trunk/playground/base/plasma/applets/timetracker/
+
<!--T:32-->
 +
* [http://techbase.kde.org/Projects/KTimeTracker become a KTimeTracker developer]
  
= Readings =
+
<!--T:33-->
* http://doc.trolltech.com/4.1/itemviews-simpletreemodel.html
+
[[Category:Office]]
* RFC 2445
+
</translate>

Latest revision as of 19:41, 13 June 2018

Other languages:
Deutsch • ‎English • ‎dansk • ‎українська • ‎中文(中国大陆)‎ • ‎日本語
KTimeTracker
KTimeTracker is the todo management and time tracking component of Kontact, the integrated Personal Information Manager from KDE.
Note-box-icon.png
Note
KTimeTracker seems to be unmaintained at least since 2013.[1]

This is the one-and-only KTimeTracker manual. And everyone can edit it.

Overview

KTimeTracker tracks time spent on various tasks.

Challenge
You are a software consultant with several customers and many project assignments. When billing your customers, you are required to report how much time you spend on what task.
Solution
Use KTimeTracker to hold a list of projects and tasks. Whenever you switch your activity, double-click on the respective task and see how its time gets tracked. At the end of the day (or month) you can obtain a journal how much time you spent on what task.

Get it

There is no download link for ktimetracker here. You should install it by means of your distribution. To find out your distribution, type

cat /etc/*ele*

To install ktimetracker for SUSE distributions, use

yast -i kdepim

Features

The current stable version of KTimeTracker (4.4) can:

  • organize tasks into subtasks

KTimeTracker allows you to organize your work like a todo-list. You can group your work by tasks and subtask. Every subtask can still have a subtask below it, up to some 1000 levels.

  • track your time

Whenever you start working on a new task, just double-click the corresponding task in your todo-list. You will see a clock appearing next to this task indicating its time is now recorded.

  • edit task history and comments

KTimeTracker allows you to edit your task's history and to put a comment for every work-event:


Ktimetracker-history.png


  • pause detection

When going for lunch, it may happen that you forget to stop timetracking before. No problem: the idle time detector in KTimeTracker will pop up after a configurable amount of time giving you the possibility to revert (as if you said, "I was not working during this time.") or continue timing (as if you said "I was working during this time.").

Options

KTimeTracker 4 has not more and not less than the following options:


Snapshot-ktimetracker-options-behavior.png


Snapshot-ktimetracker-options-appearance.png


Configuration for PDA: Removes the search-bar to gain screen real estate. Assumes a touch-screen and pops up a context menu on every mouse click, even with the left button.


Snapshot-ktimetracker-options-storage.png


Compatibility

There have been 3 file format changes in the over 10-year-history of KTimeTracker:

KDE SC version KTimeTracker file
-3.1 flat files
3.2-3.5 iCal files with X-KDE-karm fields, import possibility for flat files
4.0- iCal files with X-KDE-KTimeTracker fields, automated import for iCal files with X-KDE-karm fields

Because of the iCal file format, KTimeTracker is compatible with korganizer. You can even work synchroneously on one file with korganizer and KTimeTracker. If one program changes the file, the updates will be propagated to the other application automatically.

ChangeLog

pre-3.2 3.2 3.3 future
tracking time
  • idle detection
  • flexible task tree
  • desktop tracking
  • Comment tags for history
     (bug #64879)
  • Task budget
  • Edit history
     (bug #84499)
reporting
  • totals report
  • log history
  • sessions
  • history report
  • roll up totals
  • Chart history
  • Statistics?
integration
  • iCalendar for storage
  • CSV export
  • Basic locking
  • Advanced locking (bug #71292)
teaching
  • handbook
  • whatsthis help

Does it scale?

KTimeTracker scales well and it regularly tested with a 1.2 MB file (download it) available from (KDE Bug report 110523). A KTimeTracker benchmark is available from here.

Support

As you explore KTimeTracker you'll find questions that need answering. Chat with us, the KDE users, on IRC, the KDE users' channel.

Videos

Video demos are here:

See also

  • https://forum.kde.org/viewtopic.php?f=215&t=109937&p=261083&hilit=ktimetracker#p261083

  • This page was last edited on 13 June 2018, at 19:41. Content is available under Creative Commons License SA 4.0 unless otherwise noted.