koeventviewer.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include <klocale.h>
00027
00028 #include <libkcal/event.h>
00029 #include <libkcal/todo.h>
00030
00031 #include "compat.h"
00032
00033 #include "koeventviewer.h"
00034 #include "koeventviewer.moc"
00035
00036 KOEventViewer::KOEventViewer(QWidget *parent,const char *name)
00037 : QTextView(parent,name)
00038 {
00039 }
00040
00041 KOEventViewer::~KOEventViewer()
00042 {
00043 }
00044
00045 void KOEventViewer::addTag(const QString & tag,const QString & text)
00046 {
00047 int number=text.contains("\n");
00048 QString str = "<" + tag + ">";
00049 QString tmpText=text;
00050 QString tmpStr=str;
00051 if(number !=-1)
00052 {
00053 int pos=0;
00054 QString tmp;
00055 for(int i=0;i<=number;i++)
00056 {
00057 pos=tmpText.find("\n");
00058 tmp=tmpText.left(pos);
00059 tmpText=tmpText.right(tmpText.length()-pos-1);
00060 tmpStr+=tmp+"<br>";
00061 }
00062 tmpStr+="</" + tag + ">";
00063 mText.append(tmpStr);
00064 }
00065 else
00066 {
00067 str += text + "</" + tag + ">";
00068 mText.append(str);
00069 }
00070 }
00071
00072 void KOEventViewer::appendEvent(Event *event)
00073 {
00074 addTag("h1",event->summary());
00075
00076 if (event->doesFloat()) {
00077 if (event->isMultiDay()) {
00078 mText.append(i18n("<b>From:</b> %1 <b>To:</b> %2")
00079 .arg(event->dtStartDateStr())
00080 .arg(event->dtEndDateStr()));
00081 } else {
00082 mText.append(i18n("<b>On:</b> %1").arg(event->dtStartDateStr()));
00083 }
00084 } else {
00085 if (event->isMultiDay()) {
00086 mText.append(i18n("<b>From:</b> %1 <b>To:</b> %2")
00087 .arg(event->dtStartStr())
00088 .arg(event->dtEndStr()));
00089 } else {
00090 mText.append(i18n("<b>On:</b> %1 <b>From:</b> %2 <b>To:</b> %3")
00091 .arg(event->dtStartDateStr())
00092 .arg(event->dtStartTimeStr())
00093 .arg(event->dtEndTimeStr()));
00094 }
00095 }
00096
00097 if (!event->description().isEmpty()) addTag("p",event->description());
00098
00099 formatCategories(event);
00100 formatAttendees(event);
00101
00102 if (event->recurrence()->doesRecur()) {
00103 addTag("p","<em>" + i18n("This is a recurring event.") + "</em>");
00104 }
00105
00106 formatReadOnly(event);
00107
00108 setText(mText);
00109 }
00110
00111 void KOEventViewer::appendTodo(Todo *event)
00112 {
00113 addTag("h1",event->summary());
00114
00115 if (event->hasDueDate()) {
00116 mText.append(i18n("<b>Due on:</b> %1").arg(event->dtDueStr()));
00117 }
00118
00119 if (!event->description().isEmpty()) addTag("p",event->description());
00120
00121 formatCategories(event);
00122 formatAttendees(event);
00123
00124 mText.append(i18n("<p><b>Priority:</b> %2</p>")
00125 .arg(QString::number(event->priority())));
00126
00127 mText.append(i18n("<p><i>%1 % completed</i></p>")
00128 .arg(event->percentComplete()));
00129
00130 formatReadOnly(event);
00131
00132 setText(mText);
00133 }
00134
00135 void KOEventViewer::formatCategories(Incidence *event)
00136 {
00137 if (!event->categoriesStr().isEmpty()) {
00138 if (event->categories().count() == 1) {
00139 addTag("h2",i18n("Category"));
00140 } else {
00141 addTag("h2",i18n("Categories"));
00142 }
00143 addTag("p",event->categoriesStr());
00144 }
00145 }
00146
00147 void KOEventViewer::formatAttendees(Incidence *event)
00148 {
00149 QPtrList<Attendee> attendees = event->attendees();
00150 if (attendees.count()) {
00151 addTag("h2",i18n("Attendees"));
00152 Attendee *a;
00153 mText.append("<ul>");
00154 for(a=attendees.first();a;a=attendees.next()) {
00155 QString str = a->name();
00156 if (!a->email().isEmpty()) str += " <" + a->email() + ">";
00157 addTag("li",str);
00158 }
00159 mText.append("</ul>");
00160 }
00161 }
00162
00163 void KOEventViewer::formatReadOnly(Incidence *event)
00164 {
00165 if (event->isReadOnly()) {
00166 addTag("p","<em>(" + i18n("read-only") + ")</em>");
00167 }
00168 }
00169
00170
00171 void KOEventViewer::setTodo(Todo *event)
00172 {
00173 clearEvents();
00174 appendTodo(event);
00175 }
00176
00177 void KOEventViewer::setEvent(Event *event)
00178 {
00179 clearEvents();
00180 appendEvent(event);
00181 }
00182
00183 void KOEventViewer::clearEvents(bool now)
00184 {
00185 mText = "";
00186 if (now) setText(mText);
00187 }
This file is part of the documentation for kdelibs Version 3.1.4.