taskview.h
00001 #ifndef KARM_TASK_VIEW_H 00002 #define KARM_TASK_VIEW_H 00003 00004 #include <tqdict.h> 00005 #include <tqptrlist.h> 00006 #include <tqptrstack.h> 00007 00008 #include <klistview.h> 00009 00010 #include "desktoplist.h" 00011 #include "resourcecalendar.h" 00012 #include "karmstorage.h" 00013 #include "mainwindow.h" 00014 #include "reportcriteria.h" 00015 #include <tqtimer.h> 00016 //#include "desktoptracker.h" 00017 00018 //#include "karmutility.h" 00019 00020 class TQListBox; 00021 class TQString; 00022 class TQTextStream; 00023 class TQTimer; 00024 00025 class KMenuBar; 00026 class KToolBar; 00027 00028 class DesktopTracker; 00029 class EditTaskDialog; 00030 class IdleTimeDetector; 00031 class Preferences; 00032 class Task; 00033 class KarmStorage; 00034 class HistoryEvent; 00035 00036 using namespace KCal; 00037 00042 class TaskView : public KListView 00043 { 00044 Q_OBJECT 00045 TQ_OBJECT 00046 00047 public: 00048 TaskView( TQWidget *parent = 0, const char *name = 0, const TQString &icsfile = "" ); 00049 virtual ~TaskView(); 00050 00052 Task* first_child() const; 00053 00055 Task* current_item() const; 00056 00058 Task* item_at_index(int i); 00059 00061 void load( TQString filename="" ); 00062 00064 void closeStorage(); 00065 00067 void startNewSession(); 00068 00070 void resetTimeForAllTasks(); 00071 00073 long count(); 00074 00076 TQValueList<HistoryEvent> getHistory(const TQDate& from, const TQDate& to) const; 00077 00079 void scheduleSave(); 00080 00082 Preferences *preferences(); 00083 00085 TQString addTask( const TQString& taskame, long total, long session, const DesktopList& desktops, 00086 Task* parent = 0 ); 00087 00088 public slots: 00090 TQString save(); 00091 00093 void startCurrentTimer(); 00094 00096 void stopCurrentTimer(); 00097 00099 void stopAllTimers(); 00100 00102 void stopAllTimersAt(TQDateTime qdt); 00103 00105 void newTask(); 00106 00108 void newTask( TQString caption, Task* parent ); 00109 00111 void refresh(); 00112 00114 void loadFromFlatFile(); 00115 00117 TQString importPlanner( TQString fileName="" ); 00118 00120 TQString report( const ReportCriteria &rc ); 00121 00123 void exportcsvFile(); 00124 00126 TQString exportcsvHistory(); 00127 00129 void newSubTask(); 00130 00131 void editTask(); 00132 00142 KarmStorage* storage(); 00143 00152 void deleteTask(bool markingascomplete=false); 00153 00156 void reinstateTask(int completion); 00157 // void addCommentToTask(); 00158 void markTaskAsComplete(); 00159 void markTaskAsIncomplete(); 00160 00165 void extractTime( int minutes ); 00166 void taskTotalTimesChanged( long session, long total) 00167 { emit totalTimesChanged( session, total); }; 00168 void adaptColumns(); 00170 void deletingTask(Task* deletedTask); 00171 00176 void startTimerFor( Task* task, TQDateTime startTime = TQDateTime::currentDateTime() ); 00177 void stopTimerFor( Task* task ); 00178 00182 void clearActiveTasks(); 00183 00187 void iCalFileChanged(TQString file); 00188 00190 void clipTotals(); 00191 00193 void clipSession(); 00194 00196 void clipHistory(); 00197 00198 signals: 00199 void totalTimesChanged( long session, long total ); 00200 void updateButtons(); 00201 void timersActive(); 00202 void timersInactive(); 00203 void tasksChanged( TQPtrList<Task> activeTasks ); 00204 void setStatusBar( TQString ); 00205 00206 private: // member variables 00207 IdleTimeDetector *_idleTimeDetector; 00208 TQTimer *_minuteTimer; 00209 TQTimer *_autoSaveTimer; 00210 TQTimer *_manualSaveTimer; 00211 Preferences *_preferences; 00212 TQPtrList<Task> activeTasks; 00213 int previousColumnWidths[4]; 00214 DesktopTracker* _desktopTracker; 00215 bool _isloading; 00216 00217 //KCal::CalendarLocal _calendar; 00218 KarmStorage * _storage; 00219 00220 private: 00221 void contentsMousePressEvent ( TQMouseEvent * e ); 00222 void contentsMouseDoubleClickEvent ( TQMouseEvent * e ); 00223 void updateParents( Task* task, long totalDiff, long sesssionDiff); 00224 void deleteChildTasks( Task *item ); 00225 void addTimeToActiveTasks( int minutes, bool save_data = true ); 00227 void restoreItemState( TQListViewItem *item ); 00228 00229 protected slots: 00230 void autoSaveChanged( bool ); 00231 void autoSavePeriodChanged( int period ); 00232 void minuteUpdate(); 00234 void itemStateChanged( TQListViewItem *item ); 00236 void iCalFileModified(ResourceCalendar *); 00237 }; 00238 00239 #endif // KARM_TASK_VIEW