karm/doc

%Karm API Overview

Introduction

Karm is a simple, easy to use time tracking program. It keeps a hierarchical list of tasks. Each task has a timer associated with it. The primary user interaction for karm is to start and stop the appropriate timer.

Road Map to the Classes

MainWindow is the outermost layer and initializes the menus and actions, sets up the status bar, and handles many of the signal-to-slot connections. It holds a pointer to the TaskView and Preferences objects and implements the Karm's DCOP interface (defined in KarmDCOPIface).

TaskView does most of the work in the application. This KListView subclass sets up the columns in the list, the idle detection timer, the auto save timer, and the desktop tracker. It starts and stops timers, handles importing and exporting and displays the edit task dialog in response to user action. TaskView holds a private pointer to Preferences and KarmStorage objects.

A Task is a QListViewItem subclass stores state such as the timer totals, if a timer is currently running for the task. It also defines the list view sort order and can return a pointer to a KCal::Todo object that holds the same information.

Preferences is a singleton that stores configuration options. It raises signals when options change (for example, the location where the karm data is stored) so the application can react and adjust.

KarmStorage is a singleton that creates an interface for storing KArm data. Currently, it uses KDE Resource framework and stores data in the iCalendar format.