rem: tmpStr += eventViewerFormatReadOnly( todo );
context: static QString eventViewerFormatTodo( Todo *todo ){  if ( !todo ) return QString::null;  QString tmpStr( eventViewerAddTag( "h1", todo->summary() ) );  if ( !todo->location().isEmpty() ) {    tmpStr += eventViewerAddTag( "b", i18n("Location:") );    tmpStr += todo->location();    tmpStr += "<br>";  }  if ( todo->hasDueDate() ) {    tmpStr += i18n("<b>Due on:</b> %1").arg( todo->dtDueStr() );  }  if ( !todo->description().isEmpty() )    tmpStr += eventViewerAddTag( "p", todo->description() );  tmpStr += eventViewerFormatCategories( todo );  tmpStr += i18n("<p><b>Priority:</b> %2</p>")                .arg( (todo->priority()>0)?(QString::number( todo->priority() )):i18n("Unspecified") );  tmpStr += i18n("<p><i>%1 % completed</i></p>")                .arg( todo->percentComplete() );  if ( todo->doesRecur() ) {    QDateTime dt = todo->recurrence()->getNextDateTime(                                         QDateTime::currentDateTime() );    tmpStr += eventViewerAddTag( "p", "<em>" +      i18n("This is a recurring to-do. The next occurrence will be on %1.").arg(      KGlobal::locale()->formatDateTime( dt, true ) ) + "</em>" );  }  tmpStr += eventViewerFormatReadOnly( todo );  tmpStr += eventViewerFormatAttendees( todo );  tmpStr += eventViewerFormatAttachments( todo );  tmpStr += "<p><em>" + i18n( "Creation date: %1.").arg(    KGlobal::locale()->formatDateTime( todo->created() , true ) ) + "</em>";  return tmpStr;}