00001
#ifndef KARM_TASK_H
00002
#define KARM_TASK_H
00003
00004
#include <qlistview.h>
00005
#include <qobject.h>
00006
#include <qpixmap.h>
00007
#include <qptrlist.h>
00008
#include <qptrvector.h>
00009
#include <qstring.h>
00010
00011
#include "incidence.h"
00012
#include "event.h"
00013
#include "todo.h"
00014
00015
#include "desktoplist.h"
00016
#include "karmstorage.h"
00017
00018
class QFile;
00019
class QTimer;
00020
00021
class TaskView;
00022
00024
00037 class Task :
public QObject,
public QListViewItem
00038 {
00039 Q_OBJECT
00040
00041
public:
00043
Task(
const QString& taskame,
long minutes,
long sessionTime,
00044 DesktopList desktops,
TaskView* parent = 0);
00045
Task(
const QString& taskame,
long minutes,
long sessionTime,
00046 DesktopList desktops,
Task* parent = 0);
00047
Task( KCal::Todo* incident,
TaskView* parent );
00049
00050 ~
Task();
00051
00055 Task*
firstChild()
const {
return (
Task*)QListViewItem::firstChild(); }
00056
Task* nextSibling()
const {
return (
Task*)QListViewItem::nextSibling(); }
00057
Task* parent()
const {
return (
Task*)QListViewItem::parent(); }
00058
00060 TaskView*
taskView()
const {
00061
return static_cast<TaskView *>( listView() );
00062 }
00063
00065 QString
uid()
const {
return _uid; }
00066
00074
void setUid(
const QString uid);
00075
00077
void cut();
00080
void move(
Task* destination);
00082
void paste(
Task* destination);
00083
00085
00095 void changeTime(
long minutes,
bool do_logging,
KarmStorage* storage )
00096 {
changeTimes( minutes, minutes, do_logging, storage); };
00097
00111
void changeTimes(
long minutesSession,
long minutes,
bool do_logging,
00112
KarmStorage* storage=0);
00113
00119
void changeTotalTimes(
long minutesSession,
long minutes );
00120
00124
void resetTimes();
00125
00129 long time()
const {
return _time; };
00130
long totalTime()
const {
return _totalTime; };
00131
long sessionTime()
const {
return _sessionTime; };
00132
long totalSessionTime()
const {
return _totalSessionTime; };
00133
00137 QDateTime
startTime()
const {
return _lastStart; };
00138
00140 void startNewSession() { changeTimes( -_sessionTime, 0,
false); };
00142
00144
00145
void setDesktopList ( DesktopList dl );
00146 DesktopList getDesktops()
const {
return _desktops;}
00147
00148 QString getDesktopStr() const;
00150
00152
00156
void setName( const QString& name,
KarmStorage* storage );
00157
00161 QString name()
const {
return _name; };
00162
00168 QString
fullName() const;
00170
00172
void update();
00173
00175
00178
void setRunning(
bool on,
KarmStorage* storage);
00179
00183
bool isRunning() const;
00185
00186
bool parseIncidence(KCal::Incidence*,
long& minutes,
00187
long& sessionMinutes, QString& name, DesktopList& desktops,
00188
int& percent_complete);
00189
00193 KCal::Todo* asTodo(KCal::Todo* calendar) const;
00194
00196
void addComment( QString comment,
KarmStorage* storage );
00197
00199 QString comment() const;
00200
00202 bool isRoot()
const {
return parent() == 0; }
00203
00208
bool remove( QPtrList<Task>& activeTasks,
KarmStorage* storage );
00209
00217
void setPercentComplete(
const int percent,
KarmStorage *storage);
00218
00220
bool isComplete();
00221
00223
void removeFromView();
00224
00225
protected:
00226
void changeParentTotalTimes(
long minutesSession,
long minutes );
00227
00228 signals:
00229
void totalTimesChanged(
long minutesSession,
long minutes);
00231
void deletingTask(
Task* thisTask);
00232
00233
protected slots:
00235
void updateActiveIcon();
00236
00237
private:
00238
00240 QString _uid;
00241
00243 QString _comment;
00244
00245
int _percentcomplete;
00246
00247
long totalTimeInSeconds()
const {
return _totalTime * 60; }
00248
00250
void noNegativeTimes();
00251
00253
void init(
const QString& taskame,
long minutes,
long sessionTime,
00254 DesktopList desktops,
int percent_complete);
00255
00256
00258 QString _name;
00259
00261 QDateTime _lastStart;
00262
00264
long _totalTime;
00265
long _totalSessionTime;
00267
00269
long _time;
00270
long _sessionTime;
00272 DesktopList _desktops;
00273 QTimer *_timer;
00274
int _currentPic;
00275
static QPtrVector<QPixmap> *icons;
00276
00277 };
00278
00279
#endif // KARM_TASK_H