#include "kincidenceformatter.h" #include #include #include #ifdef DEKTOP_VERSION #include #define size count #endif KIncidenceFormatter* KIncidenceFormatter::mInstance = 0; static KStaticDeleter insd; QString KIncidenceFormatter::getFormattedText( Incidence * inc ) { // #ifndef QT_NO_INPUTDIALOG // return QInputDialog::getItem( caption, label, items, current, editable ); // #else // return QString::null; // #endif mText = ""; if ( inc->type() == "Event" ) setEvent((Event *) inc ); else if ( inc->type() == "Todo" ) setTodo((Todo *) inc ); return mText; } KIncidenceFormatter* KIncidenceFormatter::instance() { if (!mInstance) { mInstance = insd.setObject(new KIncidenceFormatter()); } return mInstance; } KIncidenceFormatter::~KIncidenceFormatter() { if (mInstance == this) mInstance = insd.setObject(0); //qDebug("KIncidenceFormatter::~KIncidenceFormatter "); } KIncidenceFormatter::KIncidenceFormatter() { mColorMode = 0; } void KIncidenceFormatter::setEvent(Event *event) { int mode = 0; mCurrentIncidence = event; bool shortDate = true; if ( mode == 0 ) { addTag("h3",event->summary()); } else { if ( mColorMode == 1 ) { mText +=""; } if ( mColorMode == 2 ) { mText +=""; } // mText +="" + i18n("O-due!") + ""; if ( mode == 1 ) { addTag("h2",i18n( "Local: " ) +event->summary()); } else { addTag("h2",i18n( "Remote: " ) +event->summary()); } addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); if ( mColorMode ) mText += ""; } if (event->cancelled ()) { mText +=""; addTag("i",i18n("This event has been cancelled!")); mText.append("
"); mText += "
"; } if (!event->location().isEmpty()) { addTag("b",i18n("Location: ")); mText.append(event->location()+"
"); } if (event->doesFloat()) { if (event->isMultiDay()) { mText.append(i18n("

From: %1

To: %2

") .arg(event->dtStartDateStr(shortDate)) .arg(event->dtEndDateStr(shortDate))); } else { mText.append(i18n("

On: %1

").arg(event->dtStartDateStr( shortDate ))); } } else { if (event->isMultiDay()) { mText.append(i18n("

From: %1

") .arg(event->dtStartStr( shortDate))); mText.append(i18n("

To: %1

") .arg(event->dtEndStr(shortDate))); } else { mText.append(i18n("

On: %1

") .arg(event->dtStartDateStr( shortDate ))); mText.append(i18n("

From: %1 To: %2

") .arg(event->dtStartTimeStr()) .arg(event->dtEndTimeStr())); } } if (event->recurrence()->doesRecur()) { QString recurText = event->recurrence()->recurrenceText(); addTag("p","" + i18n("This is a %1 recurring event.").arg(recurText ) + ""); bool last; QDate start = QDate::currentDate(); QDate next; next = event->recurrence()->getPreviousDate( start , &last ); if ( !last ) { next = event->recurrence()->getNextDate( start.addDays( - 1 ) ); addTag("p",i18n("Next recurrence is on: ")+ KGlobal::locale()->formatDate( next, shortDate ) ); //addTag("p", KGlobal::locale()->formatDate( next, shortDate )); } else { addTag("p",i18n("Last recurrence was on:") ); addTag("p", KGlobal::locale()->formatDate( next, shortDate )); } } if (event->isAlarmEnabled()) { Alarm *alarm =event->alarms().first() ; QDateTime t = alarm->time(); int min = t.secsTo( event->dtStart() )/60; QString s =i18n("(%1 min before)").arg( min ); addTag("p",i18n("Alarm on: ") + s + ": "+KGlobal::locale()->formatDateTime( t, shortDate )); //addTag("p", KGlobal::locale()->formatDateTime( t, shortDate )); //addTag("p",s); } addTag("p",i18n("Access: ") +event->secrecyStr() ); // mText.append(event->secrecyStr()+"
"); formatCategories(event); if (!event->description().isEmpty()) { addTag("p",i18n("Details: ")); addTag("p",event->description()); } formatReadOnly(event); formatAttendees(event); } void KIncidenceFormatter::setTodo(Todo *event ) { int mode = 0; mCurrentIncidence = event; bool shortDate = true; if (mode == 0 ) addTag("h3",event->summary()); else { if ( mColorMode == 1 ) { mText +=""; } if ( mColorMode == 2 ) { mText +=""; } if ( mode == 1 ) { addTag("h2",i18n( "Local: " ) +event->summary()); } else { addTag("h2",i18n( "Remote: " ) +event->summary()); } addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); if ( mColorMode ) mText += ""; } if (event->cancelled ()) { mText +=""; addTag("i",i18n("This todo has been cancelled!")); mText.append("
"); mText += "
"; } if (!event->location().isEmpty()) { addTag("b",i18n("Location: ")); mText.append(event->location()+"
"); } if (event->hasDueDate()) { mText.append(i18n("

Due on: %1

").arg(event->dtDueStr(shortDate))); } mText.append(i18n("

Priority: %2

") .arg(QString::number(event->priority()))); mText.append(i18n("

%1 % completed

") .arg(event->percentComplete())); addTag("p",i18n("Access: ") +event->secrecyStr() ); formatCategories(event); if (!event->description().isEmpty()) { addTag("p",i18n("Details: ")); addTag("p",event->description()); } formatReadOnly(event); formatAttendees(event); } void KIncidenceFormatter::setJournal(Journal* ) { } void KIncidenceFormatter::formatCategories(Incidence *event) { if (!event->categoriesStr().isEmpty()) { addTag("p",i18n("Categories: ")+event->categoriesStr() ); //mText.append(event->categoriesStr()); } } void KIncidenceFormatter::addTag(const QString & tag,const QString & text) { int number=text.contains("\n"); QString str = "<" + tag + ">"; QString tmpText=text; QString tmpStr=str; if(number !=-1) { if (number > 0) { int pos=0; QString tmp; for(int i=0;i<=number;i++) { pos=tmpText.find("\n"); tmp=tmpText.left(pos); tmpText=tmpText.right(tmpText.length()-pos-1); tmpStr+=tmp+"
"; } } else tmpStr += tmpText; tmpStr+=""; mText.append(tmpStr); } else { str += text + ""; mText.append(str); } } void KIncidenceFormatter::formatAttendees(Incidence *event) { QPtrList attendees = event->attendees(); if (attendees.count()) { QString iconPath = KGlobal::iconLoader()->iconPath("mailappt",KIcon::Small); addTag("h3",i18n("Organizer")); mText.append("
  • "); #if 0 //ndef KORG_NOKABC KABC::AddressBook *add_book = KABC::StdAddressBook::self(); KABC::Addressee::List addressList; addressList = add_book->findByEmail(event->organizer()); KABC::Addressee o = addressList.first(); if (!o.isEmpty() && addressList.size()<2) { mText += ""; mText += o.formattedName(); mText += "\n"; } else { mText.append(event->organizer()); } #else mText.append(event->organizer()); #endif if (iconPath) { mText += " organizer() + "\">"; mText += ""; mText += "\n"; } mText.append("
"); addTag("h3",i18n("Attendees")); Attendee *a; mText.append(""); } } void KIncidenceFormatter::formatReadOnly(Incidence *event) { if (event->isReadOnly()) { addTag("p","(" + i18n("read-only") + ")"); } }