taskview.h
00001 #ifndef KARM_TASK_VIEW_H 00002 #define KARM_TASK_VIEW_H 00003 00004 #include <qdict.h> 00005 #include <qptrlist.h> 00006 #include <qptrstack.h> 00007 00008 #include <klistview.h> 00009 00010 #include "desktoplist.h" 00011 #include "karmstorage.h" 00012 #include <qtimer.h> 00013 //#include "desktoptracker.h" 00014 00015 //#include "karmutility.h" 00016 00017 class QListBox; 00018 class QTextStream; 00019 class QTimer; 00020 00021 class KMenuBar; 00022 class KToolBar; 00023 00024 class DesktopTracker; 00025 class EditTaskDialog; 00026 class IdleTimeDetector; 00027 class Preferences; 00028 class Task; 00029 class KarmStorage; 00030 class HistoryEvent; 00031 00036 class TaskView : public KListView 00037 { 00038 Q_OBJECT 00039 00040 public: 00041 TaskView( QWidget *parent = 0, const char *name = 0 ); 00042 virtual ~TaskView(); 00043 00045 Task* first_child() const; 00046 00048 Task* current_item() const; 00049 00051 Task* item_at_index(int i); 00052 00054 void load(); 00055 00057 void startNewSession(); 00058 00060 void resetTimeForAllTasks(); 00061 00063 long count(); 00064 00066 QValueList<HistoryEvent> getHistory(const QDate& from, const QDate& to) 00067 const; 00068 00070 void scheduleSave(); 00071 00072 public slots: 00074 void save(); 00075 00077 void startCurrentTimer(); 00078 00080 void stopCurrentTimer(); 00081 00083 void stopAllTimers(); 00084 00086 void changeTimer( QListViewItem * = 0 ); 00087 00089 void newTask(); 00090 00092 void newTask( QString caption, Task* parent ); 00093 00095 void loadFromFlatFile(); 00096 00098 void newSubTask(); 00099 00100 void editTask(); 00101 00110 void deleteTask(bool markingascomplete=false); 00111 // void addCommentToTask(); 00112 void markTaskAsComplete(); 00113 00115 void extractTime( int minutes ); 00116 void taskTotalTimesChanged( long session, long total) 00117 { emit totalTimesChanged( session, total); }; 00118 void adaptColumns(); 00120 void deletingTask(Task* deletedTask); 00121 void startTimerFor( Task* task ); 00122 void stopTimerFor( Task* task ); 00123 00125 void iCalFileChanged(QString file); 00126 00128 void clipTotals(); 00129 00131 void clipHistory(); 00132 00133 signals: 00134 void totalTimesChanged( long session, long total ); 00135 void updateButtons(); 00136 void timersActive(); 00137 void timersInactive(); 00138 void tasksChanged( QPtrList<Task> activeTasks ); 00139 00140 private: // member variables 00141 IdleTimeDetector *_idleTimeDetector; 00142 QTimer *_minuteTimer; 00143 QTimer *_autoSaveTimer; 00144 QTimer *_manualSaveTimer; 00145 Preferences *_preferences; 00146 QPtrList<Task> activeTasks; 00147 int previousColumnWidths[4]; 00148 DesktopTracker* _desktopTracker; 00149 00150 //KCal::CalendarLocal _calendar; 00151 KarmStorage * _storage; 00152 00153 private: 00154 void updateParents( Task* task, long totalDiff, long sesssionDiff); 00155 void deleteChildTasks( Task *item ); 00156 void addTimeToActiveTasks( int minutes, bool do_logging); 00157 00158 protected slots: 00159 void autoSaveChanged( bool ); 00160 void autoSavePeriodChanged( int period ); 00161 void minuteUpdate(); 00162 }; 00163 00164 #endif // KARM_TASK_VIEW