-rw-r--r-- | korganizer/calendarview.cpp | 202 | ||||
-rw-r--r-- | korganizer/calendarview.h | 1 |
2 files changed, 201 insertions, 2 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp index a1b1d71..8269910 100644 --- a/korganizer/calendarview.cpp +++ b/korganizer/calendarview.cpp @@ -824,50 +824,48 @@ void CalendarView::updateView(const QDate &start, const QDate &end) void CalendarView::checkFiles() { QString message; QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; KopiCalendarFile * cal = calendars.first(); while ( cal ) { if ( cal->mErrorOnLoad ) { message += cal->mName +"\n"+KGlobal::formatMessage ( "(" +i18n( "Filepath: ")+ cal->mFileName+")" ,0 )+"\n"; } cal = calendars.next(); } if ( !message.isEmpty() ) { message = KGlobal::formatMessage( i18n("Calendar(s) not loaded:"),0 )+"\n" + message +KGlobal::formatMessage(i18n("You can try to reload the calendar in the Resource View!"),0); KMessageBox::error(this,message, i18n("Loding of calendar(s) failed")); } static bool firstTime = true; if ( firstTime ) { firstTime = false; QTimer::singleShot( 2000, this, SLOT ( checkAlarms() )); } } void CalendarView::checkAlarms() { - - KConfig *config = KOGlobals::config(); config->setGroup( "AppRun" ); QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) ); int daysto = dt.daysTo( QDate::currentDate() ); int days = config->readNumEntry( "LatestProgramStopDays" , daysto); dt = dt.addDays( days ); int secto = dt.secsTo( QDateTime::currentDateTime() ); int secs = config->readNumEntry( "LatestProgramStopSecs" , secto) - 30; //qDebug("KO: Reading program stop %d ", secs); //secs -= ( 3600 * 24*3 ); // debug only QDateTime latest = dt.addSecs ( secs ); qDebug("KO: Last termination on %s ", latest.toString().latin1()); //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() ); QPtrList<Incidence> el = mCalendar->rawIncidences(); QPtrList<Incidence> al; Incidence* inL = el.first(); QDateTime cur = QDateTime::currentDateTime().addSecs(-59); qDebug("KO: Checking alarm until %s ", cur.toString().latin1()); while ( inL ) { bool ok = false; int offset = 0; QDateTime next = inL->getNextAlarmDateTime(& ok, &offset, latest ) ; if ( ok ) { //qDebug("OK %s",next.toString().latin1()); @@ -881,49 +879,249 @@ void CalendarView::checkAlarms() if ( al.count() ) { QDialog* dia = new QDialog( this, "huhu", false, WDestructiveClose | WStyle_StaysOnTop ); dia->setCaption( i18n("KO/Pi: Missing alarms!") ); QVBoxLayout* lay = new QVBoxLayout( dia ); lay->setSpacing( 0 ); lay->setMargin( 0 ); MissedAlarmTextBrowser* matb = new MissedAlarmTextBrowser ( dia, al, latest ); connect( matb, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) )); lay->addWidget( matb ); if ( QApplication::desktop()->width() == 480 || QApplication::desktop()->width() == 640 ) { int wid = 210; int x = QApplication::desktop()->width() - wid - 7; int y = QApplication::desktop()->height() - wid - 70; dia->setGeometry ( x,y,wid,wid); } else { int si = 220; if ( QApplication::desktop()->width() > 470 ) si = 400; dia->resize(si,si/2); } dia->setBackgroundColor( QColor( 255, 255, 255 ) ); dia->show(); } +#if 0 + // for creating timetracker test data + qDebug("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCc "); + Todo * nt; + mCalendar->close(); + { + Todo * root1 = new Todo; + mCalendar->addTodo( root1 ); + root1->setSummary( "Project_1"); + root1->setPriority( 1 ); + root1->setDescription( "This is a test description of a root Project" ); + root1->setPercentComplete( 20 ); + updateView(); + QDateTime start = QDateTime ( QDate( 2004,11,1), QTime ( 7,30,0) ); + QDateTime end = QDateTime ( QDate( 2005,8,1), QTime ( 0,0,0) ); + + nt = new Todo; + mCalendar->addTodo( nt ); + nt->setSummary( "Planning_Project_1"); + nt->setPriority( 1 ); + nt->setDescription( "This is a test description of Planning_Project_1" ); + nt->setPercentComplete( 20 ); + + + Todo * sub1 = nt; + sub1->setRelatedTo( root1 ); + + nt = new Todo; + mCalendar->addTodo( nt ); + nt->setSummary( "Planning_Project_1: Lutz"); + nt->setPriority( 1 ); + nt->setDescription( "This todo counts the actual work of a person on a project" ); + nt->setPercentComplete( 20 ); + Todo * workLutz11 = nt; + workLutz11->setRelatedTo( sub1 ); + + nt = new Todo; + mCalendar->addTodo( nt ); + nt->setSummary( "Planning_Project_1: Norbert"); + nt->setPriority( 1 ); + nt->setDescription( "This todo counts the actual work of a person on a project" ); + nt->setPercentComplete( 20 ); + Todo * workNorbert11 = nt; + workNorbert11->setRelatedTo( sub1 ); + + nt = new Todo; + mCalendar->addTodo( nt ); + nt->setSummary( "Work on 1"); + nt->setPriority( 1 ); + nt->setDescription( "This is a test description of Work Project_1" ); + nt->setPercentComplete( 20 ); + + Todo * sub2 = nt; + sub2->setRelatedTo( root1 ); + + + nt = new Todo; + mCalendar->addTodo( nt ); + nt->setSummary( "Work on 1: Lutz"); + nt->setPriority( 1 ); + nt->setDescription( "This todo counts the actual work of a person on a project" ); + nt->setPercentComplete( 20 ); + Todo * workLutz12 = nt; + workLutz12->setRelatedTo( sub2 ); + + nt = new Todo; + mCalendar->addTodo( nt ); + nt->setSummary( "Work on 1: Norbert"); + nt->setPriority( 1 ); + nt->setDescription( "This todo counts the actual work of a person on a project" ); + nt->setPercentComplete( 20 ); + Todo * workNorbert12 = nt; + workNorbert12->setRelatedTo( sub2 ); + + int secLenRunning = 7200; + int secLenPausing = 3600 * 3; + int dayInterval = 1; + //createRunningDate4Todo( root1, start, end, secLenRunning, secLenPausing, dayInterval ); + createRunningDate4Todo( root1, start, end, secLenRunning*24, secLenPausing, 14 ); + createRunningDate4Todo( sub1, start.addSecs( secLenRunning ), start.addDays( 10 ), secLenRunning*4, secLenPausing, 1); + createRunningDate4Todo( sub2, start.addDays( 8 ), end, secLenRunning*4, secLenPausing, 3); + createRunningDate4Todo( workLutz11, start, start.addDays( 8 ), secLenRunning, secLenPausing, 0); + createRunningDate4Todo( workNorbert11, start, start.addDays( 8 ), secLenRunning*2, secLenPausing, 1); + createRunningDate4Todo( workLutz12, start.addDays( 8 ),end, secLenRunning*5, secLenPausing, 3); + createRunningDate4Todo( workNorbert11, start.addDays( 8 ), end, secLenRunning, secLenPausing*3, 0); + + } + + { + Todo * root1 = new Todo; + mCalendar->addTodo( root1 ); + root1->setSummary( "Project_2"); + root1->setPriority( 1 ); + root1->setDescription( "This is a test description of a root Project 2" ); + root1->setPercentComplete( 20 ); + updateView(); + QDateTime start = QDateTime ( QDate( 2004,11,1), QTime ( 7,30,0) ); + QDateTime end = QDateTime ( QDate( 2005,8,1), QTime ( 0,0,0) ); + int secLenRunning = 7200; + int secLenPausing = 3600 * 3; + int dayInterval = 1; + + nt = new Todo; + mCalendar->addTodo( nt ); + nt->setSummary( "Planning_Project_2"); + nt->setPriority( 1 ); + nt->setDescription( "This is a test description of Planning_Project_2" ); + nt->setPercentComplete( 20 ); + + + Todo * sub1 = nt; + sub1->setRelatedTo( root1 ); + + nt = new Todo; + mCalendar->addTodo( nt ); + nt->setSummary( "Planning_Project_2: Lutz"); + nt->setPriority( 1 ); + nt->setDescription( "This todo counts the actual work of a person on a project" ); + nt->setPercentComplete( 20 ); + Todo * workLutz11 = nt; + workLutz11->setRelatedTo( sub1 ); + + nt = new Todo; + mCalendar->addTodo( nt ); + nt->setSummary( "Planning_Project_2: Norbert"); + nt->setPriority( 1 ); + nt->setDescription( "This todo counts the actual work of a person on a project" ); + nt->setPercentComplete( 20 ); + Todo * workNorbert11 = nt; + workNorbert11->setRelatedTo( sub1 ); + + nt = new Todo; + mCalendar->addTodo( nt ); + nt->setSummary( "Work on 2"); + nt->setPriority( 1 ); + nt->setDescription( "This is a test description of Work Project_2" ); + nt->setPercentComplete( 20 ); + + Todo * sub2 = nt; + sub2->setRelatedTo( root1 ); + + + nt = new Todo; + mCalendar->addTodo( nt ); + nt->setSummary( "Work on 2: Lutz"); + nt->setPriority( 1 ); + nt->setDescription( "This todo counts the actual work of a person on a project" ); + nt->setPercentComplete( 20 ); + Todo * workLutz12 = nt; + workLutz12->setRelatedTo( sub2 ); + + nt = new Todo; + mCalendar->addTodo( nt ); + nt->setSummary( "Work on 2: Norbert"); + nt->setPriority( 1 ); + nt->setDescription( "This todo counts the actual work of a person on a project" ); + nt->setPercentComplete( 20 ); + Todo * workNorbert12 = nt; + workNorbert12->setRelatedTo( sub2 ); + createRunningDate4Todo( root1, start, end, secLenRunning, secLenPausing, 10 ); + createRunningDate4Todo( sub1, start.addSecs( secLenRunning*3 ), start.addDays( 20 ), secLenRunning*2, secLenPausing, 2); + createRunningDate4Todo( sub2, start.addDays( 8 ), end, secLenRunning*3, secLenPausing, 7); + createRunningDate4Todo( workLutz11, start, start.addDays( 18 ), secLenRunning/2, secLenPausing*5, 0); + createRunningDate4Todo( workNorbert11, start.addDays( 8 ), start.addDays( 18 ), secLenRunning*5, secLenPausing*5, 1); + createRunningDate4Todo( workLutz12, start.addDays( 8 ),end, secLenRunning, secLenPausing*8, 0); + createRunningDate4Todo( workNorbert11, start.addDays( 28 ), end, secLenRunning/8, secLenPausing*6, 0); + } + updateView(); +#endif +} +void CalendarView::createRunningDate4Todo( Todo * runT, QDateTime start , QDateTime end, int secLenRunning, int secLenPausing,int dayInterval ) +{ + static int ccc = 0; + ++ccc; + QDateTime t_start = start; + runT->setPriority( 5 ); + runT->setPercentComplete( 0 ); + int count = 0; + int prio = 5; + int complete = 0; + while ( t_start < end ) { + ++count; + if ( count > ccc ) { + count = 0; + --prio; + if ( prio == 0 ) prio = 5; + complete += 20; + if ( complete > 100 ) complete = 0; + runT->setPriority( prio ); + runT->setPercentComplete( complete ); + } + runT->setRunning( true ); + runT->saveRunningInfo( "Additional tt comment: running on "+ t_start.toString(), t_start, t_start.addSecs( secLenRunning ) ); + if ( dayInterval ) + t_start = t_start.addDays( dayInterval ); + else { + t_start = t_start.addSecs( secLenRunning + secLenPausing ); + } } +} + void CalendarView::showDay( QDate d ) { dateNavigator()->blockSignals( true ); dateNavigator()->selectDate( d ); dateNavigator()->blockSignals( false ); mViewManager->showDayView(); //dateNavigator()->selectDate( d ); } void CalendarView::timerAlarm() { //qDebug("CalendarView::timerAlarm() "); computeAlarm(mAlarmNotification ); } void CalendarView::suspendAlarm() { //qDebug(" CalendarView::suspendAlarm() "); computeAlarm(mSuspendAlarmNotification ); } void CalendarView::startAlarm( QString mess , QString filename) { diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h index 1debef7..b223315 100644 --- a/korganizer/calendarview.h +++ b/korganizer/calendarview.h @@ -491,48 +491,49 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser void beamCalendar() ; void beamFilteredCalendar() ; void beamIncidenceList(QPtrList<Incidence>) ; void manageCategories(); void editCategories(); int addCategories(); void removeCategories(); void setSyncDevice( QString ); void setSyncName( QString ); void showDay( QDate ); void undo_delete(); protected slots: void resetFocus(); void scrollBarValue(int); void slotViewerClosed(); void timerAlarm(); void suspendAlarm(); void beamDone( Ir *ir ); /** Select a view or adapt the current view to display the specified dates. */ void showDates( const KCal::DateList & ); void selectWeekNum ( int ); void checkConflictForEvent(); public: + void createRunningDate4Todo( Todo * runT, QDateTime start , QDateTime end, int secLenRunning, int secLenPausing,int dayInterval ); // show a standard warning // returns KMsgBox::yesNoCancel() int msgCalModified(); virtual bool sync(KSyncManager* manager, QString filename, int mode); virtual bool syncExternal(KSyncManager* manager, QString resource); virtual void removeSyncInfo( QString syncProfile); void setSyncManager(KSyncManager* manager); void setLoadedFileVersion(QDateTime); bool checkFileVersion(QString fn); bool checkAllFileVersions(); bool checkFileChanged(QString fn); Event* getLastSyncEvent(); /** Adapt navigation units correpsonding to step size of navigation of the * current view. */ void adaptNavigationUnits(); bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode ); int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false ); //Attendee* getYourAttendee(Event *event); void setBlockShowDates( bool b ) { mBlockShowDates = b ;} void setScrollBarStep(int val ); protected: |