-rw-r--r-- | bin/kdepim/korganizer/germantranslation.txt | 4 | ||||
-rw-r--r-- | korganizer/calendarview.cpp | 14 | ||||
-rw-r--r-- | korganizer/koagendaview.cpp | 17 | ||||
-rw-r--r-- | korganizer/koeventviewer.cpp | 7 | ||||
-rw-r--r-- | korganizer/kolistview.cpp | 2 | ||||
-rw-r--r-- | korganizer/komonthview.cpp | 3 | ||||
-rw-r--r-- | korganizer/kowhatsnextview.cpp | 6 | ||||
-rw-r--r-- | libkcal/icalformatimpl.cpp | 2 | ||||
-rw-r--r-- | libkcal/incidence.cpp | 16 | ||||
-rw-r--r-- | libkcal/kincidenceformatter.cpp | 12 | ||||
-rw-r--r-- | libkcal/todo.cpp | 4 |
11 files changed, 74 insertions, 13 deletions
diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt index c85ca35..2d4cb74 100644 --- a/bin/kdepim/korganizer/germantranslation.txt +++ b/bin/kdepim/korganizer/germantranslation.txt @@ -1270,6 +1270,6 @@ { "ADJUST\nYOUR\nCLOCKS!","JUSTIERE\nDIE\nUHREN!" }, { "The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!","Die Uhren der syncenden Geräte\nhaben einen Unterschied von\nmehr als 5 Minuten. Bitte die\nUhrzeiten anpassen. Sie können\nfalsche Sync-Resultate erhalten!\nBitte das Syncen bestätigen!" }, -{ "","" }, -{ "","" }, +{ "This is a %1 recurring todo.","Das ist eine %1 wiederholende Aufgabe." }, +{ "<p><b>Start on:</b> %1</p>","<p><b>Start am:</b> %1</p>" }, { "","" }, { "","" }, diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp index 7c8316f..3dac20b 100644 --- a/korganizer/calendarview.cpp +++ b/korganizer/calendarview.cpp @@ -2264,4 +2264,7 @@ void CalendarView::slotSelectPickerDate( QDate d) Todo * to = (Todo *) mMoveIncidence; QTime tim; + int len = 0; + if ( to->hasStartDate() && to->hasDueDate() ) + len = to->dtStart().secsTo( to->dtDue()); if ( to->hasDueDate() ) tim = to->dtDue().time(); @@ -2273,4 +2276,13 @@ void CalendarView::slotSelectPickerDate( QDate d) QDateTime dt ( d,tim ); to->setDtDue( dt ); + + if ( to->hasStartDate() ) { + if ( len>0 ) + to->setDtStart(to->dtDue().addSecs( -len )); + else + if (to->dtStart() > to->dtDue() ) + to->setDtStart(to->dtDue().addDays( -3 )); + } + todoChanged( to ); } else { @@ -3811,5 +3823,5 @@ bool CalendarView::removeCompletedSubTodos( Todo* t ) } if ( deleteTodo ) { - if ( t->isCompleted() ) { + if ( t->isCompleted() && !t->doesRecur()) { checkExternalId( t ); mCalendar->deleteTodo( t ); diff --git a/korganizer/koagendaview.cpp b/korganizer/koagendaview.cpp index 13d8398..4ff6899 100644 --- a/korganizer/koagendaview.cpp +++ b/korganizer/koagendaview.cpp @@ -1000,5 +1000,18 @@ void KOAgendaView::updateEventDates(KOAgendaItem *item, int type) (static_cast<Event*>(item->incidence()))->setDtEnd(endDt); } else if ( item->incidence()->type() == "Todo" ) { - (static_cast<Todo*>(item->incidence()))->setDtDue(endDt); + Todo* to = static_cast<Todo*>(item->incidence()); + + int len = 0; + if ( to->hasStartDate() && to->hasDueDate() ) + len = to->dtStart().secsTo( to->dtDue()); + to->setDtDue(endDt); + if ( to->hasStartDate() ) { + if ( len>0 ) + to->setDtStart(to->dtDue().addSecs( -len )); + else + if (to->dtStart() > to->dtDue() ) + to->setDtStart(to->dtDue().addDays( -3 )); + } + } //qDebug("KOAgendaView::updateEventDates stsart %s end %s ", startDt.toString().latin1(), endDt.toString().latin1() ); @@ -1181,5 +1194,5 @@ void KOAgendaView::fillAgenda() if ( ! todo->hasDueDate() && !todo->hasCompletedDate()) continue; // todo shall not be displayed if it has no date - + // ToDo items shall be displayed for the day they are due, but only showed today if they are already overdue. // Already completed items can be displayed on their original due date diff --git a/korganizer/koeventviewer.cpp b/korganizer/koeventviewer.cpp index 39921a0..f6c9624 100644 --- a/korganizer/koeventviewer.cpp +++ b/korganizer/koeventviewer.cpp @@ -403,4 +403,11 @@ void KOEventViewer::appendTodo(Todo *event, int mode ) mMailSubject += i18n(" at ") + event->location(); } + + if (event->recurrence()->doesRecur()) { + + QString recurText = event->recurrence()->recurrenceText(); + addTag("p","<em>" + i18n("This is a %1 recurring todo.").arg(recurText ) + "</em>"); + + } if (event->hasStartDate()) { mText.append(i18n("<p><b>Start on:</b> %1</p>").arg(event->dtStartStr(KOPrefs::instance()->mShortDateInViewer))); diff --git a/korganizer/kolistview.cpp b/korganizer/kolistview.cpp index acd9265..d8e940b 100644 --- a/korganizer/kolistview.cpp +++ b/korganizer/kolistview.cpp @@ -157,5 +157,5 @@ bool ListItemVisitor::visit(Todo *t) mItem->setText(4,"---"); mItem->setText(5,t->isAlarmEnabled() ? i18n("Yes") : i18n("No")); - mItem->setText(6,"---"); + mItem->setText(6, t->recurrence()->recurrenceText()); if (t->hasDueDate()) { mItem->setText(7,t->dtDueDateStr()); diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp index f595d35..d0380e3 100644 --- a/korganizer/komonthview.cpp +++ b/korganizer/komonthview.cpp @@ -582,4 +582,7 @@ void MonthViewCell::insertTodo(Todo *todo) } item->setPalette( pal ); + item->setRecur( todo->recurrence()->doesRecur() ); + item->setAlarm( todo->isAlarmEnabled() ); + item->setMoreInfo( todo->description().length() > 0 ); mItemList->insertItem( item ); mToolTip += text+"\n"; diff --git a/korganizer/kowhatsnextview.cpp b/korganizer/kowhatsnextview.cpp index 391b3bb..18dc656 100644 --- a/korganizer/kowhatsnextview.cpp +++ b/korganizer/kowhatsnextview.cpp @@ -668,4 +668,10 @@ bool KOWhatsNextView::appendTodo(Incidence *ev, QString ind , bool isSub ) mText += "i"; needClose =true; + } + if ( ev->doesRecur() ) { + if ( !needClose) + mText +="["; + mText += "r"; + needClose =true; } // if ( ev->recurrence()->doesRecur() ) { diff --git a/libkcal/icalformatimpl.cpp b/libkcal/icalformatimpl.cpp index bb9cb29..2e38ae3 100644 --- a/libkcal/icalformatimpl.cpp +++ b/libkcal/icalformatimpl.cpp @@ -1211,5 +1211,5 @@ void ICalFormatImpl::readIncidence(icalcomponent *parent,Incidence *incidence) icaltime = icalproperty_get_recurrenceid(p); incidence->setRecurrenceID( readICalDateTime(icaltime) ); - qDebug(" RecurrenceID %s",incidence->recurrenceID().toString().latin1() ); + //qDebug(" RecurrenceID %s",incidence->recurrenceID().toString().latin1() ); break; #if 0 diff --git a/libkcal/incidence.cpp b/libkcal/incidence.cpp index 0684af2..708ee6b 100644 --- a/libkcal/incidence.cpp +++ b/libkcal/incidence.cpp @@ -214,8 +214,16 @@ Incidence* Incidence::recreateCloneException( QDate d ) addExDate( d ); newInc->recurrence()->unsetRecurs(); - int len = dtStart().secsTo( ((Event*)this)->dtEnd()); - QTime tim = dtStart().time(); - newInc->setDtStart( QDateTime(d, tim) ); - ((Event*)newInc)->setDtEnd( newInc->dtStart().addSecs( len ) ); + if ( type() == "Event") { + int len = dtStart().secsTo( ((Event*)this)->dtEnd()); + QTime tim = dtStart().time(); + newInc->setDtStart( QDateTime(d, tim) ); + ((Event*)newInc)->setDtEnd( newInc->dtStart().addSecs( len ) ); + } else { + int len = dtStart().secsTo( ((Todo*)this)->dtDue()); + QTime tim = ((Todo*)this)->dtDue().time(); + ((Todo*)newInc)->setDtDue( QDateTime(d, tim) ); + ((Todo*)newInc)->setDtStart( ((Todo*)newInc)->dtDue().addSecs( -len ) ); + ((Todo*)this)->setRecurDates(); + } } return newInc; diff --git a/libkcal/kincidenceformatter.cpp b/libkcal/kincidenceformatter.cpp index 0d9c3f4..cc3088a 100644 --- a/libkcal/kincidenceformatter.cpp +++ b/libkcal/kincidenceformatter.cpp @@ -193,4 +193,16 @@ void KIncidenceFormatter::setTodo(Todo *event ) mText.append(event->location()+"<br>"); } + + if (event->recurrence()->doesRecur()) { + + QString recurText = event->recurrence()->recurrenceText(); + addTag("p","<em>" + i18n("This is a %1 recurring todo.").arg(recurText ) + "</em>"); + } + + if (event->hasStartDate()) { + mText.append(i18n("<p><b>Start on:</b> %1</p>").arg(event->dtStartStr(shortDate))); + } + + if (event->hasDueDate()) { mText.append(i18n("<p><b>Due on:</b> %1</p>").arg(event->dtDueStr(shortDate))); diff --git a/libkcal/todo.cpp b/libkcal/todo.cpp index 1f54c2f..39d16b6 100644 --- a/libkcal/todo.cpp +++ b/libkcal/todo.cpp @@ -370,5 +370,5 @@ bool Todo::setRecurDates() int secs = mDtStart.secsTo( dtDue() ); bool ok; - qDebug("--------------------setRecurDates() "); + qDebug("T:setRecurDates() "); //qDebug("%s %s %s ",mDtStart.toString().latin1(), dtDue().toString().latin1(),mRecurrenceID.toString().latin1() ); QDateTime next = getNextOccurence( mRecurrenceID, &ok ); @@ -453,5 +453,5 @@ void Todo::checkSetCompletedFalse() qDebug("%s %s %s ",mDtStart.toString().latin1(), dtDue().toString().latin1(),mRecurrenceID.toString().latin1() ); setCompleted( false ); - qDebug("Todo::checkSetCompletedFalse++++++++++++++++++++++++++++ "); + qDebug("Todo::checkSetCompletedFalse "); } } |