Sophie

Sophie

distrib > Mandriva > 2008.1 > x86_64 > by-pkgid > 98d6b53e11e983e268c3e19f14e091a0 > files > 1356

kdepim-devel-doc-3.5.9-9mdv2008.1.x86_64.rpm

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en_US" xml:lang="en_US">

<head>
  <title>karm: KarmStorage Class Reference (karm)</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

  <meta http-equiv="Content-Style-Type" content="text/css" />

  <meta http-equiv="pics-label" content='(pics-1.1 "http://www.icra.org/ratingsv02.html" comment "ICRAonline DE v2.0" l gen true for "http://www.kde.org"  r (nz 1 vz 1 lz 1 oz 1 cb 1) "http://www.rsac.org/ratingsv01.html" l gen true for "http://www.kde.org"  r (n 0 s 0 v 0 l 0))' />

  <meta name="trademark" content="KDE e.V." />
  <meta name="description" content="K Desktop Environment Homepage, KDE.org" />
  <meta name="MSSmartTagsPreventParsing" content="true" />
  <meta name="robots" content="all" />

  <link rel="shortcut icon" href="../../favicon.ico" />

<link rel="stylesheet" media="screen" type="text/css" title="APIDOX" href="doxygen.css" />



<style type="text/css">
<!--
hr { display: none; }
#content h2 { margin-left: 0px; }
table.mdTable { background-color: #f8f8f8; border: .2em solid #d7d7d7; }
td.mdRow { padding: 8px 20px; }
td.md { font-weight: bold; }
td.mdname1 { font-weight: bold; color: #602020; }
td.mdname { font-weight: bold; color: #602020;  }

-->
</style>

</head>

<body>

<div id="nav_header_top" align="right">
  <a href="#content" class="doNotDisplay" accesskey="2">Skip to main content ::</a>

  <a href="../.."><img id="nav_header_logo" alt="Home" align="left" src="../../kde_gear_64.png" border="0" /></a>
  <span class="doNotDisplay">::</span>
  <img id="nav_header_logo_right" alt="" align="right" src="../../pimlogo.png" border="0" />

  <div id="nav_header_title" align="left">KDE PIM API Reference</div>


</div>

<div id="nav_header_bottom" align="right">
  <span class="doNotDisplay">:: <a href="#navigation" accesskey="5">Skip to Link Menu</a><br/></span>
  <div id="nav_header_bottom_left" style="text-align: left;">
/ <a href="../../">API Reference</a>
 / <a href=".">karm</a>
  </div>
</div>


<table id="main" border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
      <td valign="top" class="menuheader" height="0"></td>

  <td id="contentcolumn" valign="top" rowspan="2" >
    <div id="content" style="padding-top: 0px;"><div style="width:100%; margin: 0px; padding: 0px;">
    <h2><a name="content"></a>karm</h2>


<!-- Generated by Doxygen 1.5.5 -->
<div class="contents">
<h1>KarmStorage Class Reference</h1><!-- doxytag: class="KarmStorage" --><code>#include &lt;<a class="el" href="karmstorage_8h-source.html">karmstorage.h</a>&gt;</code>
<p>

<p>
<a href="classKarmStorage-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
Singleton to store/retrieve KArm data to/from persistent storage. 
<p>
The storage is an iCalendar file. Also included are methods to import KArm data from the two legacy file formats.<p>
All logic that deals with getting and saving data should go here. The storage logic has changed at least twice already in KArm's history, and chances are good it will change again (for example, allowing KOrganizer and KArm to access the same iCalendar file simultaneously).<p>
Prior to KDE 3.2, KArm just stored totals for each task--a session total and a task total. The session total was reset to zero each time KArm started up or after the user reset the session times to zero. With the release of KDE 3.2, KArm now stores these task totals as well as logging the history of each start/stop event; that is, every time you start a timer and then stop a timer on a task, KArm records this as an iCalendar event.<p>
Logic that gets and stores KArm data to disk. <dl class="author" compact><dt><b>Author:</b></dt><dd>Mark Bucciarelli &lt;<a href="mailto:mark@hubcapconsulting.com">mark@hubcapconsulting.com</a>&gt; </dd></dl>

<p>Definition at line <a class="el" href="karmstorage_8h-source.html#l00068">68</a> of file <a class="el" href="karmstorage_8h-source.html">karmstorage.h</a>.</p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="8c707128d3f14637807145138821e20d"></a><!-- doxytag: member="KarmStorage::load" ref="8c707128d3f14637807145138821e20d" args="(TaskView *taskview, const Preferences *preferences, QString fileName=&quot;&quot;)" -->
QString&nbsp;</td><td class="memItemRight" valign="bottom"><b>load</b> (<a class="el" href="classTaskView.html">TaskView</a> *taskview, const <a class="el" href="classPreferences.html">Preferences</a> *preferences, QString fileName=&quot;&quot;)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="720923b34d69c0a7db77e263d7a7fb4f"></a><!-- doxytag: member="KarmStorage::icalfile" ref="720923b34d69c0a7db77e263d7a7fb4f" args="()" -->
QString&nbsp;</td><td class="memItemRight" valign="bottom"><b>icalfile</b> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d1f34396d616c0227153e4caec7136d2"></a><!-- doxytag: member="KarmStorage::buildTaskView" ref="d1f34396d616c0227153e4caec7136d2" args="(KCal::ResourceCalendar *rc, TaskView *view)" -->
QString&nbsp;</td><td class="memItemRight" valign="bottom"><b>buildTaskView</b> (KCal::ResourceCalendar *rc, <a class="el" href="classTaskView.html">TaskView</a> *view)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="26e3745ddfa39d688efeb14d30e91a7f"></a><!-- doxytag: member="KarmStorage::closeStorage" ref="26e3745ddfa39d688efeb14d30e91a7f" args="(TaskView *view)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>closeStorage</b> (<a class="el" href="classTaskView.html">TaskView</a> *view)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="dd79932f855e7aa5fda180f177fc625e"></a><!-- doxytag: member="KarmStorage::save" ref="dd79932f855e7aa5fda180f177fc625e" args="(TaskView *taskview)" -->
QString&nbsp;</td><td class="memItemRight" valign="bottom"><b>save</b> (<a class="el" href="classTaskView.html">TaskView</a> *taskview)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">QString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKarmStorage.html#31314be2d906119dfba7111b18b7b17b">loadFromFlatFile</a> (<a class="el" href="classTaskView.html">TaskView</a> *taskview, const QString &amp;filename)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">QString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKarmStorage.html#46b934dd0e1694f0f39e3e62a479638c">loadFromFlatFileCumulative</a> (<a class="el" href="classTaskView.html">TaskView</a> *taskview, const QString &amp;filename)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">QString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKarmStorage.html#4d36c935a652dabc297ea571b5f7cfbd">report</a> (<a class="el" href="classTaskView.html">TaskView</a> *taskview, const <a class="el" href="classReportCriteria.html">ReportCriteria</a> &amp;rc)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKarmStorage.html#bd6111b30d7c4930d8c6d7b9d4daf294">changeTime</a> (const <a class="el" href="classTask.html">Task</a> *task, const long deltaSeconds)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKarmStorage.html#082d5930150c3db256c4dd23dbefb70c">bookTime</a> (const <a class="el" href="classTask.html">Task</a> *task, const QDateTime &amp;startDateTime, long durationInSeconds)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKarmStorage.html#a9a16025d66033522656c8fd33996453">setName</a> (const <a class="el" href="classTask.html">Task</a> *task, const QString &amp;oldname)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKarmStorage.html#905f23e1bab55b4493d237dfcc469134">startTimer</a> (const <a class="el" href="classTask.html">Task</a> *task)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKarmStorage.html#9deb86884cc80783e4488b39f0fac128">stopTimer</a> (const <a class="el" href="classTask.html">Task</a> *task, QDateTime when=QDateTime::currentDateTime())</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKarmStorage.html#851699a706f7f2f98333023547908539">addComment</a> (const <a class="el" href="classTask.html">Task</a> *task, const QString &amp;comment)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKarmStorage.html#602128e1797fa4b69cf86ae2b5b57705">removeTask</a> (<a class="el" href="classTask.html">Task</a> *task)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">QString&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKarmStorage.html#aea5b0757f27a32779ca56ba7abdb75a">addTask</a> (const <a class="el" href="classTask.html">Task</a> *task, const <a class="el" href="classTask.html">Task</a> *parent)</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKarmStorage.html#506bee62614f3e59f7eae9466876f2bc">isEmpty</a> ()</td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKarmStorage.html#6661913d2f9ff26a7d400890b291b73b">isNewStorage</a> (const <a class="el" href="classPreferences.html">Preferences</a> *preferences) const </td></tr>

<tr><td class="memItemLeft" nowrap align="right" valign="top">QValueList&lt; <a class="el" href="classHistoryEvent.html">HistoryEvent</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="classKarmStorage.html#5cef00b43033590f9b509559540c8d22">getHistory</a> (const QDate &amp;from, const QDate &amp;to)</td></tr>

<tr><td colspan="2"><br><h2>Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3afb23e95c372f292a2454490254bee5"></a><!-- doxytag: member="KarmStorage::instance" ref="3afb23e95c372f292a2454490254bee5" args="()" -->
static <a class="el" href="classKarmStorage.html">KarmStorage</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><b>instance</b> ()</td></tr>

</table>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="31314be2d906119dfba7111b18b7b17b"></a><!-- doxytag: member="KarmStorage::loadFromFlatFile" ref="31314be2d906119dfba7111b18b7b17b" args="(TaskView *taskview, const QString &amp;filename)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">QString KarmStorage::loadFromFlatFile           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTaskView.html">TaskView</a> *&nbsp;</td>
          <td class="paramname"> <em>taskview</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const QString &amp;&nbsp;</td>
          <td class="paramname"> <em>filename</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Read tasks and their total times from a text file (legacy storage). 
<p>
This reads from one of the two legacy file formats. In this version, the parent task times do not include the sum of all their children's times.<p>
The format of the file is zero or more lines of: 1 task id (a number) time in minutes string task name [string] desktops, in which to count. e.g. "1,2,5" (optional) 
<p>Definition at line <a class="el" href="karmstorage_8cpp-source.html#l00384">384</a> of file <a class="el" href="karmstorage_8cpp-source.html">karmstorage.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="46b934dd0e1694f0f39e3e62a479638c"></a><!-- doxytag: member="KarmStorage::loadFromFlatFileCumulative" ref="46b934dd0e1694f0f39e3e62a479638c" args="(TaskView *taskview, const QString &amp;filename)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">QString KarmStorage::loadFromFlatFileCumulative           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTaskView.html">TaskView</a> *&nbsp;</td>
          <td class="paramname"> <em>taskview</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const QString &amp;&nbsp;</td>
          <td class="paramname"> <em>filename</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Reads tasks and their total times from text file (legacy). 
<p>
This is the older legacy format, where the task totals included the children totals.<p>
<dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classKarmStorage.html#31314be2d906119dfba7111b18b7b17b" title="Read tasks and their total times from a text file (legacy storage).">loadFromFlatFile</a> </dd></dl>

<p>Definition at line <a class="el" href="karmstorage_8cpp-source.html#l00467">467</a> of file <a class="el" href="karmstorage_8cpp-source.html">karmstorage.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="4d36c935a652dabc297ea571b5f7cfbd"></a><!-- doxytag: member="KarmStorage::report" ref="4d36c935a652dabc297ea571b5f7cfbd" args="(TaskView *taskview, const ReportCriteria &amp;rc)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">QString KarmStorage::report           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTaskView.html">TaskView</a> *&nbsp;</td>
          <td class="paramname"> <em>taskview</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classReportCriteria.html">ReportCriteria</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>rc</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Output a report based on contents of <a class="el" href="classReportCriteria.html" title="Stores entries from export dialog.">ReportCriteria</a>. 
<p>

<p>Definition at line <a class="el" href="karmstorage_8cpp-source.html#l00873">873</a> of file <a class="el" href="karmstorage_8cpp-source.html">karmstorage.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="bd6111b30d7c4930d8c6d7b9d4daf294"></a><!-- doxytag: member="KarmStorage::changeTime" ref="bd6111b30d7c4930d8c6d7b9d4daf294" args="(const Task *task, const long deltaSeconds)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void KarmStorage::changeTime           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTask.html">Task</a> *&nbsp;</td>
          <td class="paramname"> <em>task</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const long&nbsp;</td>
          <td class="paramname"> <em>deltaSeconds</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Log the change in a task's time. 
<p>
We create an iCalendar event to store each change. The event start date is set to the current datetime. If time is added to the task, the task end date is set to start time + delta. If the time is negative, the end date is set to the start time.<p>
In both cases (postive or negative delta), we create a custom iCalendar property that stores the delta (in seconds). This property is called X-KDE-karm-duration.<p>
Note that the KArm UI allows the user to change both the session and the total task time, and this routine does not account for all posibile cases. For example, it is possible for the user to do something crazy like add 10 minutes to the session time and subtract 50 minutes from the total time. Although this change violates a basic law of physics, it is allowed.<p>
For now, you should pass in the change to the total task time. Eventually, the UI should be changed.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>task</em>&nbsp;</td><td>The task the change is for. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>delta</em>&nbsp;</td><td>Change in task time, in seconds. Can be negative. </td></tr>
  </table>
</dl>

<p>Definition at line <a class="el" href="karmstorage_8cpp-source.html#l01079">1079</a> of file <a class="el" href="karmstorage_8cpp-source.html">karmstorage.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="082d5930150c3db256c4dd23dbefb70c"></a><!-- doxytag: member="KarmStorage::bookTime" ref="082d5930150c3db256c4dd23dbefb70c" args="(const Task *task, const QDateTime &amp;startDateTime, long durationInSeconds)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool KarmStorage::bookTime           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTask.html">Task</a> *&nbsp;</td>
          <td class="paramname"> <em>task</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const QDateTime &amp;&nbsp;</td>
          <td class="paramname"> <em>startDateTime</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">long&nbsp;</td>
          <td class="paramname"> <em>durationInSeconds</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Book time to a task. 
<p>
Creates an iCalendar event and adds it to the calendar. Does not write calender to disk, just adds event to calendar in memory. However, the resource framework does try to get a lock on the file. After a succesful lock, the calendar marks this incidence as modified and then releases the lock.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>task</em>&nbsp;</td><td><a class="el" href="classTask.html" title="A class representing a task.">Task</a> </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>startDateTime</em>&nbsp;</td><td>Date and time the booking starts. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>durationInSeconds</em>&nbsp;</td><td>Duration of time to book, in seconds.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>true if event was added, false if not (if, for example, the attempted file lock failed). </dd></dl>

<p>Definition at line <a class="el" href="karmstorage_8cpp-source.html#l01059">1059</a> of file <a class="el" href="karmstorage_8cpp-source.html">karmstorage.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="a9a16025d66033522656c8fd33996453"></a><!-- doxytag: member="KarmStorage::setName" ref="a9a16025d66033522656c8fd33996453" args="(const Task *task, const QString &amp;oldname)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void KarmStorage::setName           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTask.html">Task</a> *&nbsp;</td>
          <td class="paramname"> <em>task</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const QString &amp;&nbsp;</td>
          <td class="paramname"> <em>oldname</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Log a change to a task name. 
<p>
For iCalendar storage, there is no need to log an Event for this event, since unique id's are used to link Events to Todos. No matter how many times you change a task's name, the uid stays the same.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>task</em>&nbsp;</td><td>The task </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>oldname</em>&nbsp;</td><td>The old name of the task. The new name is in the task object already. </td></tr>
  </table>
</dl>

<p>Definition at line <a class="el" href="karmstorage_8h-source.html#l00220">220</a> of file <a class="el" href="karmstorage_8h-source.html">karmstorage.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="905f23e1bab55b4493d237dfcc469134"></a><!-- doxytag: member="KarmStorage::startTimer" ref="905f23e1bab55b4493d237dfcc469134" args="(const Task *task)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void KarmStorage::startTimer           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTask.html">Task</a> *&nbsp;</td>
          <td class="paramname"> <em>task</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Log the event that a timer has started for a task. 
<p>
For the iCalendar storage, there is no need to log anything for this event. We log an event when the timer is stopped.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>task</em>&nbsp;</td><td>The task the timer was started for. </td></tr>
  </table>
</dl>

<p>Definition at line <a class="el" href="karmstorage_8h-source.html#l00231">231</a> of file <a class="el" href="karmstorage_8h-source.html">karmstorage.h</a>.</p>

</div>
</div><p>
<a class="anchor" name="9deb86884cc80783e4488b39f0fac128"></a><!-- doxytag: member="KarmStorage::stopTimer" ref="9deb86884cc80783e4488b39f0fac128" args="(const Task *task, QDateTime when=QDateTime::currentDateTime())" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void KarmStorage::stopTimer           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTask.html">Task</a> *&nbsp;</td>
          <td class="paramname"> <em>task</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">QDateTime&nbsp;</td>
          <td class="paramname"> <em>when</em> = <code>QDateTime::currentDateTime()</code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Log the event that the timer has stopped for this task. 
<p>
The task stores the last time a timer was started, so we log a new iCal Event with the start and end times for this task. <dl class="see" compact><dt><b>See also:</b></dt><dd><a class="el" href="classKarmStorage.html#bd6111b30d7c4930d8c6d7b9d4daf294" title="Log the change in a task&#39;s time.">KarmStorage::changeTime</a></dd></dl>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>task</em>&nbsp;</td><td>The task the timer was stopped for. </td></tr>
  </table>
</dl>

<p>Definition at line <a class="el" href="karmstorage_8cpp-source.html#l01052">1052</a> of file <a class="el" href="karmstorage_8cpp-source.html">karmstorage.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="851699a706f7f2f98333023547908539"></a><!-- doxytag: member="KarmStorage::addComment" ref="851699a706f7f2f98333023547908539" args="(const Task *task, const QString &amp;comment)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void KarmStorage::addComment           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTask.html">Task</a> *&nbsp;</td>
          <td class="paramname"> <em>task</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const QString &amp;&nbsp;</td>
          <td class="paramname"> <em>comment</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Log a new comment for this task. 
<p>
iCal allows multiple comment tags. So we just add a new comment to the todo for this task and write the calendar.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>task</em>&nbsp;</td><td>The task that gets the comment </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>comment</em>&nbsp;</td><td>The comment </td></tr>
  </table>
</dl>

<p>Definition at line <a class="el" href="karmstorage_8cpp-source.html#l00758">758</a> of file <a class="el" href="karmstorage_8cpp-source.html">karmstorage.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="602128e1797fa4b69cf86ae2b5b57705"></a><!-- doxytag: member="KarmStorage::removeTask" ref="602128e1797fa4b69cf86ae2b5b57705" args="(Task *task)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool KarmStorage::removeTask           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classTask.html">Task</a> *&nbsp;</td>
          <td class="paramname"> <em>task</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Remove this task from iCalendar file. 
<p>
Removes task as well as all event history for this task.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>task</em>&nbsp;</td><td>The task to be removed. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>true if change was saved, false otherwise </dd></dl>

<p>Definition at line <a class="el" href="karmstorage_8cpp-source.html#l00727">727</a> of file <a class="el" href="karmstorage_8cpp-source.html">karmstorage.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="aea5b0757f27a32779ca56ba7abdb75a"></a><!-- doxytag: member="KarmStorage::addTask" ref="aea5b0757f27a32779ca56ba7abdb75a" args="(const Task *task, const Task *parent)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">QString KarmStorage::addTask           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classTask.html">Task</a> *&nbsp;</td>
          <td class="paramname"> <em>task</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classTask.html">Task</a> *&nbsp;</td>
          <td class="paramname"> <em>parent</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add this task from iCalendar file. 
<p>
Create a new KCal::Todo object and load with task information. If parent is not zero, then set the RELATED-TO attribute for this Todo.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>task</em>&nbsp;</td><td>The task to be removed. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>parent</em>&nbsp;</td><td>The parent of this task. Must have a uid() that is in the existing calendar. If zero, this task is considered a root task. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>The unique ID for the new VTODO. Return an null QString if there was an error creating the new calendar object. </dd></dl>

<p>Definition at line <a class="el" href="karmstorage_8cpp-source.html#l00704">704</a> of file <a class="el" href="karmstorage_8cpp-source.html">karmstorage.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="506bee62614f3e59f7eae9466876f2bc"></a><!-- doxytag: member="KarmStorage::isEmpty" ref="506bee62614f3e59f7eae9466876f2bc" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool KarmStorage::isEmpty           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check if the iCalendar file currently loaded has any Todos in it. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>true if iCalendar file has any todos </dd></dl>

<p>Definition at line <a class="el" href="karmstorage_8cpp-source.html#l00365">365</a> of file <a class="el" href="karmstorage_8cpp-source.html">karmstorage.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="6661913d2f9ff26a7d400890b291b73b"></a><!-- doxytag: member="KarmStorage::isNewStorage" ref="6661913d2f9ff26a7d400890b291b73b" args="(const Preferences *preferences) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool KarmStorage::isNewStorage           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classPreferences.html">Preferences</a> *&nbsp;</td>
          <td class="paramname"> <em>preferences</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const</td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check if iCalendar file name in the preferences has changed since the last call to load. 
<p>
If there is no calendar file currently loaded, return false.<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>preferences</em>&nbsp;</td><td>Set of KArm preferences.</td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>true if a previous file has been loaded and the iCalendar file specified in the preferences is different. </dd></dl>

<p>Definition at line <a class="el" href="karmstorage_8cpp-source.html#l00373">373</a> of file <a class="el" href="karmstorage_8cpp-source.html">karmstorage.cpp</a>.</p>

</div>
</div><p>
<a class="anchor" name="5cef00b43033590f9b509559540c8d22"></a><!-- doxytag: member="KarmStorage::getHistory" ref="5cef00b43033590f9b509559540c8d22" args="(const QDate &amp;from, const QDate &amp;to)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">QValueList&lt; <a class="el" href="classHistoryEvent.html">HistoryEvent</a> &gt; KarmStorage::getHistory           </td>
          <td>(</td>
          <td class="paramtype">const QDate &amp;&nbsp;</td>
          <td class="paramname"> <em>from</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const QDate &amp;&nbsp;</td>
          <td class="paramname"> <em>to</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Return a list of start/stop events for the given date range. 
<p>

<p>Definition at line <a class="el" href="karmstorage_8cpp-source.html#l01153">1153</a> of file <a class="el" href="karmstorage_8cpp-source.html">karmstorage.cpp</a>.</p>

</div>
</div><p>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="karmstorage_8h-source.html">karmstorage.h</a><li><a class="el" href="karmstorage_8cpp-source.html">karmstorage.cpp</a></ul>
</div>
    </div></div>


      </td>
  </tr>
  <tr>
    <td valign="top" id="leftmenu" width="25%">
      <a name="navigation"></a>
      <div class="menu_box"><h2>karm</h2>
<div class="nav_list">
<ul><li><a href="index.html">Main Page</a></li><li><a href="hierarchy.html">Class Hierarchy</a></li><li><a href="classes.html">Alphabetical List</a></li><li><a href="annotated.html">Class List</a></li><li><a href="files.html">File List</a></li><li><a href="functions.html">Class Members</a></li><li><a href="pages.html">Related Pages</a></li></ul>
<!--
<h2>Class Picker</h2>
<div style="text-align: center;">
<form name="guideform">
<select name="guidelinks" style="width:100%;" onChange="window.location=document.guideform.guidelinks.options[document.guideform.guidelinks.selectedIndex].value">
<option value="annotated.html">-- Choose --</option>
  <option value="classDesktopTracker.html">desktoptracker</option>,  <option value="classEditTaskDialog.html">edittaskdialog</option>,  <option value="classHistoryEvent.html">historyevent</option>,  <option value="classIdleTimeDetector.html">idletimedetector</option>,  <option value="classKAccelMenuWatch.html">kaccelmenuwatch</option>,  <option value="classKarmDCOPIface.html">karmdcopiface</option>,  <option value="classKarmStorage.html">karmstorage</option>,  <option value="classKArmTimeWidget.html">karmtimewidget</option>,  <option value="classMainWindow.html">mainwindow</option>,  <option value="classMyPrinter.html">myprinter</option>,  <option value="classPlannerParser.html">plannerparser</option>,  <option value="classPreferences.html">preferences</option>,  <option value="classReportCriteria.html">reportcriteria</option>,  <option value="classTask.html">task</option>,  <option value="classTaskView.html">taskview</option>,  <option value="classTaskViewWhatsThis.html">taskviewwhatsthis</option>,  <option value="classTimeKard.html">timekard</option>,  <option value="classWeek.html">week</option>,
</select>
</form>
</div>
-->
</div></div>
<div class="menu_box"><h2>API Dox</h2>
<div class="nav_list">
<ul>
<li><a href="../../akregator/html/index.html">akregator</a></li><li>&nbsp;&nbsp;<a href="../../akregator/src/html/index.html">src</a></li><li>&nbsp;&nbsp;&nbsp;&nbsp;<a href="../../akregator/src/librss/html/index.html">librss</a></li><li><a href="../../certmanager/html/index.html">certmanager</a></li><li>&nbsp;&nbsp;<a href="../../certmanager/lib/html/index.html">lib</a></li><li><a href="../../kaddressbook/html/index.html">kaddressbook</a></li><li><a href="../../kalarm/html/index.html">kalarm</a></li><li>&nbsp;&nbsp;<a href="../../kalarm/lib/html/index.html">lib</a></li><li><a href="../../kandy/html/index.html">kandy</a></li><li><a href="../../karm/html/index.html">karm</a></li><li><a href="../../kdgantt/html/index.html">kdgantt</a></li><li><a href="../../kgantt/html/index.html">kgantt</a></li><li><a href="../../kioslaves/html/index.html">kioslaves</a></li><li>&nbsp;&nbsp;<a href="../../kioslaves/imap4/html/index.html">imap4</a></li><li>&nbsp;&nbsp;<a href="../../kioslaves/mbox/html/index.html">mbox</a></li><li><a href="../../kitchensync/html/index.html">kitchensync</a></li><li><a href="../../kmail/html/index.html">kmail</a></li><li><a href="../../knotes/html/index.html">knotes</a></li><li><a href="../../konsolekalendar/html/index.html">konsolekalendar</a></li><li><a href="../../kontact/html/index.html">kontact</a></li><li><a href="../../korganizer/html/index.html">korganizer</a></li><li><a href="../../kpilot/html/index.html">kpilot</a></li><li>&nbsp;&nbsp;<a href="../../kpilot/kpilot/html/index.html">kpilot</a></li><li>&nbsp;&nbsp;<a href="../../kpilot/lib/html/index.html">lib</a></li><li><a href="../../libemailfunctions/html/index.html">libemailfunctions</a></li><li><a href="../../libkcal/html/index.html">libkcal</a></li><li><a href="../../libkdepim/html/index.html">libkdepim</a></li><li><a href="../../libkholidays/html/index.html">libkholidays</a></li><li><a href="../../libkmime/html/index.html">libkmime</a></li><li><a href="../../libkpgp/html/index.html">libkpgp</a></li><li><a href="../../libkpimidentities/html/index.html">libkpimidentities</a></li>
</ul></div></div>


        </td>
</tr>
</table>

<span class="doNotDisplay">
  <a href="http://www.kde.org/" accesskey="8">KDE Home</a> |
  <a href="http://accessibility.kde.org/" accesskey="9">KDE Accessibility Home</a> |
  <a href="http://www.kde.org/media/accesskeys.php" accesskey="0">Description of Access Keys</a>
</span>


<div style="height: 8px"></div>

<div id="footer">
  <div id="footer_left">
    Maintained by <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;groo&#116;&#64;kde&#46;or&#x67;">Adriaan de Groot</a>
and
<a href="&#109;a&#105;&#108;&#116;&#111;&#58;w&#105;nter&#64;kde&#46;or&#x67">Allen Winter</a>.
<br/>
    KDE and K Desktop Environment are trademarks of <a href="http://www.kde.org/areas/kde-ev/" title="Homepage of the KDE non-profit Organization">KDE e.V.</a> |
    <a href="http://www.kde.org/contact/impressum.php">Legal</a>
  </div>
  <div id="footer_right"><img src="/media/images/footer_right.png" style="margin: 0px" alt="" /></div>
</div>

<!--
WARNING: DO NOT SEND MAIL TO THE FOLLOWING EMAIL ADDRESS! YOU WILL
BE BLOCKED INSTANTLY AND PERMANENTLY!
<a href="mailto:aaaatrap-425acc3b5374943f@kde.org">Block me</a>
WARNING END
-->

</body>
</html>