summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koeventviewer.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/korganizer/koeventviewer.cpp b/korganizer/koeventviewer.cpp
index 92d2a80..c0acf34 100644
--- a/korganizer/koeventviewer.cpp
+++ b/korganizer/koeventviewer.cpp
@@ -1,779 +1,780 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19 19
20#include <qcstring.h> 20#include <qcstring.h>
21#include <qwhatsthis.h> 21#include <qwhatsthis.h>
22#include <qdialog.h> 22#include <qdialog.h>
23#include <qapplication.h> 23#include <qapplication.h>
24#include <qlabel.h> 24#include <qlabel.h>
25#include <qlayout.h> 25#include <qlayout.h>
26 26
27#include <klocale.h> 27#include <klocale.h>
28#include <kapplication.h> 28#include <kapplication.h>
29#include <libkcal/event.h> 29#include <libkcal/event.h>
30#include <libkcal/todo.h> 30#include <libkcal/todo.h>
31#include <kdebug.h> 31#include <kdebug.h>
32#include <kiconloader.h> 32#include <kiconloader.h>
33#include <krun.h> 33#include <krun.h>
34#include <kglobal.h> 34#include <kglobal.h>
35#include <kprocess.h> 35#include <kprocess.h>
36#include "koprefs.h" 36#include "koprefs.h"
37 37
38#include <kabc/stdaddressbook.h> 38#include <kabc/stdaddressbook.h>
39 39
40#ifndef KORG_NODCOP 40#ifndef KORG_NODCOP
41#include <dcopclient.h> 41#include <dcopclient.h>
42#include "korganizer.h" 42#include "korganizer.h"
43#include "koprefs.h" 43#include "koprefs.h"
44#include "actionmanager.h" 44#include "actionmanager.h"
45#endif 45#endif
46 46
47#include "koeventviewer.h" 47#include "koeventviewer.h"
48//#ifndef KORG_NOKABC 48//#ifndef KORG_NOKABC
49//#include <kabc/stdaddressbook.h> 49//#include <kabc/stdaddressbook.h>
50//#define size count 50//#define size count
51//#endif 51//#endif
52 52
53#ifdef DESKTOP_VERSION 53#ifdef DESKTOP_VERSION
54#include <kabc/addresseedialog.h> 54#include <kabc/addresseedialog.h>
55#include <kabc/addresseeview.h> 55#include <kabc/addresseeview.h>
56#include <qprinter.h> 56#include <qprinter.h>
57#include <qpainter.h> 57#include <qpainter.h>
58#include <qpaintdevicemetrics.h> 58#include <qpaintdevicemetrics.h>
59#else //DESKTOP_VERSION 59#else //DESKTOP_VERSION
60#include <qtopia/qcopenvelope_qws.h> 60#include <qtopia/qcopenvelope_qws.h>
61#endif //DESKTOP_VERSION 61#endif //DESKTOP_VERSION
62#include <externalapphandler.h> 62#include <externalapphandler.h>
63 63
64KOEventViewer::KOEventViewer(QWidget *parent,const char *name) 64KOEventViewer::KOEventViewer(QWidget *parent,const char *name)
65 : QTextBrowser(parent,name) 65 : QTextBrowser(parent,name)
66{ 66{
67 mSyncMode = false; 67 mSyncMode = false;
68 mColorMode = 0; 68 mColorMode = 0;
69} 69}
70 70
71KOEventViewer::~KOEventViewer() 71KOEventViewer::~KOEventViewer()
72{ 72{
73} 73}
74 74
75void KOEventViewer::printMe() 75void KOEventViewer::printMe()
76{ 76{
77#ifdef DESKTOP_VERSION 77#ifdef DESKTOP_VERSION
78 78
79 KOPrintPrefs pp ( this ); 79 KOPrintPrefs pp ( this );
80 if (!pp.exec() ) 80 if (!pp.exec() )
81 return; 81 return;
82 int scaleval = pp.printMode() ; 82 int scaleval = pp.printMode() ;
83 83
84 QPrinter printer; 84 QPrinter printer;
85 if (!printer.setup() ) 85 if (!printer.setup() )
86 return; 86 return;
87 QPainter p; 87 QPainter p;
88 p.begin ( &printer ); 88 p.begin ( &printer );
89 QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer ); 89 QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer );
90 float dx, dy; 90 float dx, dy;
91 int wid = (m.width() * 9)/10; 91 int wid = (m.width() * 9)/10;
92 dx = (float) wid/(float)contentsWidth (); 92 dx = (float) wid/(float)contentsWidth ();
93 dy = (float)(m.height()) / (float)contentsHeight (); 93 dy = (float)(m.height()) / (float)contentsHeight ();
94 float scale; 94 float scale;
95 // scale to fit the width or height of the paper 95 // scale to fit the width or height of the paper
96 if ( dx < dy ) 96 if ( dx < dy )
97 scale = dx; 97 scale = dx;
98 else 98 else
99 scale = dy; 99 scale = dy;
100 100
101 p.translate( m.width()/10,0 ); 101 p.translate( m.width()/10,0 );
102 if ( scaleval == 2 || scaleval == 1 && scale < 1.0 ) { 102 if ( scaleval == 2 || scaleval == 1 && scale < 1.0 ) {
103 p.scale( scale, scale ); 103 p.scale( scale, scale );
104 } 104 }
105 drawContents ( &p, 0,0, contentsWidth (), contentsHeight () ); 105 drawContents ( &p, 0,0, contentsWidth (), contentsHeight () );
106 p.end(); 106 p.end();
107#endif 107#endif
108 108
109} 109}
110void KOEventViewer::setSource(const QString& n) 110void KOEventViewer::setSource(const QString& n)
111{ 111{
112 112
113 if ( n.left(8) == "todo_uid" ) { 113 if ( n.left(8) == "todo_uid" ) {
114 int midstr = 9; 114 int midstr = 9;
115#ifdef DESKTOP_VERSION 115#ifdef DESKTOP_VERSION
116 midstr = 11; 116 midstr = 11;
117#endif 117#endif
118 //qDebug("-%s- ", n.mid(midstr).latin1()); 118 //qDebug("-%s- ", n.mid(midstr).latin1());
119 emit showIncidence( n.mid(midstr) ); 119 emit showIncidence( n.mid(midstr) );
120 return; 120 return;
121 } 121 }
122 122
123 if ( n.left(3) == "uid" ) 123 if ( n.left(3) == "uid" )
124#ifdef DESKTOP_VERSION 124#ifdef DESKTOP_VERSION
125 { 125 {
126 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 126 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
127 KABC::AddressBook::Iterator it; 127 KABC::AddressBook::Iterator it;
128 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 128 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
129 // LR I do not understand, why the uid string is different on zaurus and desktop 129 // LR I do not understand, why the uid string is different on zaurus and desktop
130 QString uid = "uid://"+(*it).uid(); 130 QString uid = "uid://"+(*it).uid();
131 131
132 //qDebug("for *%s* +%s+ ", n.latin1(), uid.latin1()); 132 //qDebug("for *%s* +%s+ ", n.latin1(), uid.latin1());
133 if (n == uid ) { 133 if (n == uid ) {
134 //qDebug("found %s ",(*it).mobileHomePhone().latin1() ); 134 //qDebug("found %s ",(*it).mobileHomePhone().latin1() );
135 QDialog dia( this,"dia123", true ); 135 QDialog dia( this,"dia123", true );
136 dia.setCaption( i18n("Details of attendee") ); 136 dia.setCaption( i18n("Details of attendee") );
137 QVBoxLayout lay ( &dia ); 137 QVBoxLayout lay ( &dia );
138 KABC::AddresseeView av ( &dia ); 138 KABC::AddresseeView av ( &dia );
139 av.setAddressee( (*it) ); 139 av.setAddressee( (*it) );
140 lay.addWidget( &av ); 140 lay.addWidget( &av );
141 if ( QApplication::desktop()->width() < 480 ) 141 if ( QApplication::desktop()->width() < 480 )
142 dia.resize( 220, 240); 142 dia.resize( 220, 240);
143 else { 143 else {
144 dia.resize( 400,400); 144 dia.resize( 400,400);
145 } 145 }
146 dia.exec(); 146 dia.exec();
147 break; 147 break;
148 } 148 }
149 } 149 }
150 return; 150 return;
151 } 151 }
152#else 152#else
153 { 153 {
154 if ( "uid:organizer" == n ) { 154 if ( "uid:organizer" == n ) {
155 ExternalAppHandler::instance()->requestDetailsFromKAPI("", mCurrentIncidence->organizer(),""); 155 ExternalAppHandler::instance()->requestDetailsFromKAPI("", mCurrentIncidence->organizer(),"");
156 return; 156 return;
157 } 157 }
158 QPtrList<Attendee> attendees = mCurrentIncidence->attendees(); 158 QPtrList<Attendee> attendees = mCurrentIncidence->attendees();
159 if (attendees.count()) { 159 if (attendees.count()) {
160 Attendee *a; 160 Attendee *a;
161 for(a=attendees.first();a;a=attendees.next()) { 161 for(a=attendees.first();a;a=attendees.next()) {
162 if ( "uid:"+a->uid() == n ) { 162 if ( "uid:"+a->uid() == n ) {
163 bool res = ExternalAppHandler::instance()->requestDetailsFromKAPI(a->name(), a->email(), a->uid()); 163 bool res = ExternalAppHandler::instance()->requestDetailsFromKAPI(a->name(), a->email(), a->uid());
164 return; 164 return;
165 } 165 }
166 } 166 }
167 } 167 }
168 return; 168 return;
169 } 169 }
170 //requestNameEmailUidListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); 170 //requestNameEmailUidListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/);
171 // the result should now arrive through method insertAttendees 171 // the result should now arrive through method insertAttendees
172 //QString uid = "uid:"+(*it).uid(); 172 //QString uid = "uid:"+(*it).uid();
173#endif 173#endif
174 if ( n.left(6) == "mailto" ) { 174 if ( n.left(6) == "mailto" ) {
175 // qDebug("KOEventViewer::setSource %s ", n.mid(7).latin1()); 175 // qDebug("KOEventViewer::setSource %s ", n.mid(7).latin1());
176 //#ifndef DESKTOP_VERSION 176 //#ifndef DESKTOP_VERSION
177 if ( n.mid(7,3) == "ALL" ) { 177 if ( n.mid(7,3) == "ALL" ) {
178 mailToAttendees( true ); 178 mailToAttendees( true );
179 } else if ( n.mid(7,4) == "RSVP" ) { 179 } else if ( n.mid(7,4) == "RSVP" ) {
180 mailToAttendees( false ); 180 mailToAttendees( false );
181 } else { 181 } else {
182 ExternalAppHandler::instance()->mailToOneContact( n.mid(7) ); 182 ExternalAppHandler::instance()->mailToOneContact( n.mid(7) );
183 //QCopEnvelope e("QPE/Application/ompi", "newMail(QString)" ); 183 //QCopEnvelope e("QPE/Application/ompi", "newMail(QString)" );
184 //e << n.mid(7); 184 //e << n.mid(7);
185 } 185 }
186 //#endif 186 //#endif
187 187
188 } 188 }
189 189
190 190
191#ifndef KORG_NODCOP 191#ifndef KORG_NODCOP
192 kdDebug() << "KOEventViewer::setSource(): " << n << endl; 192 kdDebug() << "KOEventViewer::setSource(): " << n << endl;
193 QString tmpStr; 193 QString tmpStr;
194 if (n.startsWith("mailto:")) { 194 if (n.startsWith("mailto:")) {
195 KApplication::kApplication()->invokeMailer(n.mid(7),QString::null); 195 KApplication::kApplication()->invokeMailer(n.mid(7),QString::null);
196 //emit showIncidence(n); 196 //emit showIncidence(n);
197 return; 197 return;
198 } else if (n.startsWith("uid:")) { 198 } else if (n.startsWith("uid:")) {
199 DCOPClient *client = KApplication::kApplication()->dcopClient(); 199 DCOPClient *client = KApplication::kApplication()->dcopClient();
200 const QByteArray noParamData; 200 const QByteArray noParamData;
201 const QByteArray paramData; 201 const QByteArray paramData;
202 QByteArray replyData; 202 QByteArray replyData;
203 QCString replyTypeStr; 203 QCString replyTypeStr;
204#define PING_ABBROWSER (client->call("kaddressbook", "KAddressBookIface", "interfaces()", noParamData, replyTypeStr, replyData)) 204#define PING_ABBROWSER (client->call("kaddressbook", "KAddressBookIface", "interfaces()", noParamData, replyTypeStr, replyData))
205 bool foundAbbrowser = PING_ABBROWSER; 205 bool foundAbbrowser = PING_ABBROWSER;
206 206
207 if (foundAbbrowser) { 207 if (foundAbbrowser) {
208 //KAddressbook is already running, so just DCOP to it to bring up the contact editor 208 //KAddressbook is already running, so just DCOP to it to bring up the contact editor
209 //client->send("kaddressbook","KAddressBookIface", 209 //client->send("kaddressbook","KAddressBookIface",
210 QDataStream arg(paramData, IO_WriteOnly); 210 QDataStream arg(paramData, IO_WriteOnly);
211 arg << n.mid(6); 211 arg << n.mid(6);
212 client->send("kaddressbook", "KAddressBookIface", "showContactEditor( QString )", paramData); 212 client->send("kaddressbook", "KAddressBookIface", "showContactEditor( QString )", paramData);
213 return; 213 return;
214 } else { 214 } else {
215 /* 215 /*
216 KaddressBook is not already running. Pass it the UID of the contact via the command line while starting it - its neater. 216 KaddressBook is not already running. Pass it the UID of the contact via the command line while starting it - its neater.
217 We start it without its main interface 217 We start it without its main interface
218 */ 218 */
219 KIconLoader* iconLoader = new KIconLoader(); 219 KIconLoader* iconLoader = new KIconLoader();
220 QString iconPath = iconLoader->iconPath("go",KIcon::Small); 220 QString iconPath = iconLoader->iconPath("go",KIcon::Small);
221 ActionManager::setStartedKAddressBook(true); 221 ActionManager::setStartedKAddressBook(true);
222 tmpStr = "kaddressbook --editor-only --uid "; 222 tmpStr = "kaddressbook --editor-only --uid ";
223 tmpStr += KProcess::quote(n.mid(6)); 223 tmpStr += KProcess::quote(n.mid(6));
224 KRun::runCommand(tmpStr,"KAddressBook",iconPath); 224 KRun::runCommand(tmpStr,"KAddressBook",iconPath);
225 return; 225 return;
226 } 226 }
227 } else { 227 } else {
228 //QTextBrowser::setSource(n); 228 //QTextBrowser::setSource(n);
229 } 229 }
230#endif 230#endif
231} 231}
232void KOEventViewer::mailToAttendees( bool all ) 232void KOEventViewer::mailToAttendees( bool all )
233{ 233{
234 QPtrList<Attendee> attendees = mCurrentIncidence->attendees(); 234 QPtrList<Attendee> attendees = mCurrentIncidence->attendees();
235 if (attendees.count() == 0) return; 235 if (attendees.count() == 0) return;
236 QStringList nameList; 236 QStringList nameList;
237 QStringList emailList; 237 QStringList emailList;
238 QStringList uidList; 238 QStringList uidList;
239 Attendee* a; 239 Attendee* a;
240 for(a=attendees.first();a;a=attendees.next()) { 240 for(a=attendees.first();a;a=attendees.next()) {
241 if ( !all && !a->RSVP() ) continue; 241 if ( !all && !a->RSVP() ) continue;
242 if (!a->email().isEmpty()) { 242 if (!a->email().isEmpty()) {
243#ifndef DESKTOP_VERSION 243#ifndef DESKTOP_VERSION
244 nameList.append (a->realName() ); 244 nameList.append (a->realName() );
245 emailList.append (a->email() ); 245 emailList.append (a->email() );
246 uidList.append (a->uid() ); 246 uidList.append (a->uid() );
247#else 247#else
248 emailList.append(a->realName() +" <" + a->email() +">"); 248 emailList.append(a->realName() +" <" + a->email() +">");
249#endif 249#endif
250 } 250 }
251 } 251 }
252#ifndef DESKTOP_VERSION 252#ifndef DESKTOP_VERSION
253 QString uid = "ComposeMailUIpick2"+mMailSubject; 253 QString uid = "ComposeMailUIpick2"+mMailSubject;
254 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList); 254 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList);
255 255
256#else 256#else
257 ExternalAppHandler::instance()->mailToMultipleContacts( emailList.join(","), mMailSubject ); 257 ExternalAppHandler::instance()->mailToMultipleContacts( emailList.join(","), mMailSubject );
258#endif 258#endif
259 259
260} 260}
261void KOEventViewer::addTag(const QString & tag,const QString & text) 261void KOEventViewer::addTag(const QString & tag,const QString & text)
262{ 262{
263 int number=text.contains("\n"); 263 int number=text.contains("\n");
264 QString str = "<" + tag + ">"; 264 QString str = "<" + tag + ">";
265 QString tmpText=text; 265 QString tmpText=text;
266 QString tmpStr=str; 266 QString tmpStr=str;
267 if(number !=-1) 267 if(number !=-1)
268 { 268 {
269 if (number > 0) { 269 if (number > 0) {
270 int pos=0; 270 int pos=0;
271 QString tmp; 271 QString tmp;
272 for(int i=0;i<=number;i++) { 272 for(int i=0;i<=number;i++) {
273 pos=tmpText.find("\n"); 273 pos=tmpText.find("\n");
274 tmp=tmpText.left(pos); 274 tmp=tmpText.left(pos);
275 tmpText=tmpText.right(tmpText.length()-pos-1); 275 tmpText=tmpText.right(tmpText.length()-pos-1);
276 tmpStr+=tmp+"<br>"; 276 tmpStr+=tmp+"<br>";
277 } 277 }
278 } 278 }
279 else tmpStr += tmpText; 279 else tmpStr += tmpText;
280 tmpStr+="</" + tag + ">"; 280 tmpStr+="</" + tag + ">";
281 mText.append(tmpStr); 281 mText.append(tmpStr);
282 } 282 }
283 else 283 else
284 { 284 {
285 str += text + "</" + tag + ">"; 285 str += text + "</" + tag + ">";
286 mText.append(str); 286 mText.append(str);
287 } 287 }
288} 288}
289 289
290void KOEventViewer::setColorMode( int m ) 290void KOEventViewer::setColorMode( int m )
291{ 291{
292 mColorMode = m; 292 mColorMode = m;
293} 293}
294void KOEventViewer::appendEvent(Event *event, int mode ) 294void KOEventViewer::appendEvent(Event *event, int mode )
295{ 295{
296 mMailSubject = ""; 296 mMailSubject = "";
297 mCurrentIncidence = event; 297 mCurrentIncidence = event;
298 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 298 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
299 bool wideScreen = ( QApplication::desktop()->width() >= 640 ); 299 bool wideScreen = ( QApplication::desktop()->width() >= 640 );
300 topLevelWidget()->setCaption(i18n("Event Viewer")); 300 topLevelWidget()->setCaption(i18n("Event Viewer"));
301 if ( mode == 0 ) { 301 if ( mode == 0 ) {
302 addTag("h2",deTag(event->summary())); 302 addTag("h2",deTag(event->summary()));
303 formatReadOnly(event); 303 formatReadOnly(event);
304 } 304 }
305 else { 305 else {
306 if ( mColorMode == 1 ) { 306 if ( mColorMode == 1 ) {
307 mText +="<font color=\"#00A000\">"; 307 mText +="<font color=\"#00A000\">";
308 } 308 }
309 if ( mColorMode == 2 ) { 309 if ( mColorMode == 2 ) {
310 mText +="<font color=\"#C00000\">"; 310 mText +="<font color=\"#C00000\">";
311 } 311 }
312 // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>"; 312 // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>";
313 if ( mode == 1 ) { 313 if ( mode == 1 ) {
314 addTag("h2",i18n( "Local: " ) +deTag(event->summary())); 314 addTag("h2",i18n( "Local: " ) +deTag(event->summary()));
315 } else { 315 } else {
316 addTag("h2",i18n( "Remote: " ) +deTag(event->summary())); 316 addTag("h2",i18n( "Remote: " ) +deTag(event->summary()));
317 } 317 }
318 formatReadOnly(event); 318 formatReadOnly(event);
319 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); 319 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) );
320 if ( mColorMode ) 320 if ( mColorMode )
321 mText += "</font>"; 321 mText += "</font>";
322 } 322 }
323 mMailSubject += i18n( "Meeting " )+ event->summary(); 323 mMailSubject += i18n( "Meeting " )+ event->summary();
324 if (event->cancelled ()) { 324 if (event->cancelled ()) {
325 mText +="<font color=\"#B00000\">"; 325 mText +="<font color=\"#B00000\">";
326 addTag("i",i18n("This event has been cancelled!")); 326 addTag("i",i18n("This event has been cancelled!"));
327 mText.append("<br>"); 327 mText.append("<br>");
328 mText += "</font>"; 328 mText += "</font>";
329 mMailSubject += i18n("(cancelled)"); 329 mMailSubject += i18n("(cancelled)");
330 } 330 }
331 331
332 if (event->doesFloat()) { 332 if (event->doesFloat()) {
333 if (event->isMultiDay()) { 333 if (event->isMultiDay()) {
334 mText.append(i18n("<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>") 334 mText.append(i18n("<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>")
335 .arg(event->dtStartDateStr(shortDate)) 335 .arg(event->dtStartDateStr(shortDate))
336 .arg(event->dtEndDateStr(shortDate))); 336 .arg(event->dtEndDateStr(shortDate)));
337 mText.append(i18n("<p><b>Duration:</b> %1 days</p>") 337 mText.append(i18n("<p><b>Duration:</b> %1 days</p>")
338 .arg(event->dtStart().daysTo(event->dtEnd())+1)); 338 .arg(event->dtStart().daysTo(event->dtEnd())+1));
339 } else { 339 } else {
340 mText.append(i18n("<p><b>On:</b> %1</p>").arg(event->dtStartDateStr( shortDate ))); 340 mText.append(i18n("<p><b>On:</b> %1</p>").arg(event->dtStartDateStr( shortDate )));
341 } 341 }
342 } else { 342 } else {
343 if (event->isMultiDay()) { 343 if (event->isMultiDay()) {
344 mText.append(i18n("<p><b>From:</b> %1</p> ") 344 mText.append(i18n("<p><b>From:</b> %1</p> ")
345 .arg(event->dtStartStr( shortDate))); 345 .arg(event->dtStartStr( shortDate)));
346 mText.append(i18n("<p><b>To:</b> %1</p>") 346 mText.append(i18n("<p><b>To:</b> %1</p>")
347 .arg(event->dtEndStr(shortDate))); 347 .arg(event->dtEndStr(shortDate)));
348 } else { 348 } else {
349 mText.append(i18n("<p><b>From:</b> %1 <b>To:</b> %2</p>") 349 mText.append(i18n("<p><b>From:</b> %1 <b>To:</b> %2</p>")
350 .arg(event->dtStartTimeStr()) 350 .arg(event->dtStartTimeStr())
351 .arg(event->dtEndTimeStr())); 351 .arg(event->dtEndTimeStr()));
352 mText.append(i18n("<p><b>On:</b> %1</p> ") 352 mText.append(i18n("<p><b>On:</b> %1</p> ")
353 .arg(event->dtStartDateStr( shortDate ))); 353 .arg(event->dtStartDateStr( shortDate )));
354 } 354 }
355 } 355 }
356 if (!event->location().isEmpty()) { 356 if (!event->location().isEmpty()) {
357 addTag("p","<b>"+i18n("Location: ")+"</b>"+ deTag(event->location() ) ); 357 addTag("p","<b>"+i18n("Location: ")+"</b>"+ deTag(event->location() ) );
358 mMailSubject += i18n(" at ") + event->location(); 358 mMailSubject += " (" + i18n("Location: ") + event->location() + ")";
359 } 359 }
360 if (event->doesRecur()) { 360 if (event->doesRecur()) {
361 361
362 QString recurText = event->recurrenceText(); 362 QString recurText = event->recurrenceText();
363 addTag("p","<em>" + i18n("This is a %1 recurring event.").arg(recurText ) + "</em>"); 363 addTag("p","<em>" + i18n("This is a %1 recurring event.").arg(recurText ) + "</em>");
364 bool ok; 364 bool ok;
365 QDate start = QDate::currentDate(); 365 QDate start = QDate::currentDate();
366 QDateTime next; 366 QDateTime next;
367 next = event->getNextOccurence( QDateTime::currentDateTime() , &ok ); 367 next = event->getNextOccurence( QDateTime::currentDateTime() , &ok );
368 if ( ok ) { 368 if ( ok ) {
369 if ( wideScreen ){ 369 if ( wideScreen ){
370 addTag("p",i18n("<b>Next recurrence is on:</b>") +" " + KGlobal::locale()->formatDate( next.date(), shortDate ) ); 370 addTag("p",i18n("<b>Next recurrence is on:</b>") +" " + KGlobal::locale()->formatDate( next.date(), shortDate ) );
371 } else { 371 } else {
372 addTag("p",i18n("<b>Next recurrence is on:</b>") ); 372 addTag("p",i18n("<b>Next recurrence is on:</b>") );
373 addTag("p", KGlobal::locale()->formatDate( next.date(), shortDate )); 373 addTag("p", KGlobal::locale()->formatDate( next.date(), shortDate ));
374 } 374 }
375 mMailSubject += i18n(" - " )+ KGlobal::locale()->formatDateTime( next, true ); 375 mMailSubject += i18n(" - " )+ KGlobal::locale()->formatDateTime( next, true );
376 376
377 } else { 377 } else {
378 bool last; 378 bool last;
379 QDate nextd; 379 QDate nextd;
380 nextd = event->recurrence()->getPreviousDate( QDate::currentDate() , &last ); 380 nextd = event->recurrence()->getPreviousDate( QDate::currentDate() , &last );
381 if ( last ) { 381 if ( last ) {
382 if ( wideScreen ){ 382 if ( wideScreen ){
383 addTag("p",i18n("<b>Last recurrence was on:</b>") +" " + KGlobal::locale()->formatDate( nextd, shortDate )); 383 addTag("p",i18n("<b>Last recurrence was on:</b>") +" " + KGlobal::locale()->formatDate( nextd, shortDate ));
384 } else{ 384 } else{
385 addTag("p",i18n("<b>Last recurrence was on:</b>") ); 385 addTag("p",i18n("<b>Last recurrence was on:</b>") );
386 addTag("p", KGlobal::locale()->formatDate( nextd, shortDate )); 386 addTag("p", KGlobal::locale()->formatDate( nextd, shortDate ));
387 } 387 }
388 } 388 }
389 } 389 }
390 } else { 390 } else {
391 mMailSubject += i18n(" - " )+event->dtStartStr( true ); 391 mMailSubject += i18n(" - " )+event->dtStartStr( true );
392 392
393 } 393 }
394 394
395 395
396 if (event->isAlarmEnabled()) { 396 if (event->isAlarmEnabled()) {
397 Alarm *alarm =event->alarms().first() ; 397 Alarm *alarm =event->alarms().first() ;
398 QDateTime t = alarm->time(); 398 QDateTime t = alarm->time();
399 399
400 if (event->doesRecur()) { 400 if (event->doesRecur()) {
401 bool ok = false; 401 bool ok = false;
402 int offset = 0; 402 int offset = 0;
403 QDateTime next = event->getNextAlarmDateTime(& ok, &offset, QDateTime::currentDateTime() ) ; 403 QDateTime next = event->getNextAlarmDateTime(& ok, &offset, QDateTime::currentDateTime() ) ;
404 if ( ok ) { 404 if ( ok ) {
405 t = next; 405 t = next;
406 } 406 }
407 } 407 }
408 408
409 QString s =i18n("( %1 before )").arg( alarm->offsetText() ); 409 QString s =i18n("( %1 before )").arg( alarm->offsetText() );
410 if(wideScreen ){ 410 if(wideScreen ){
411 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"+ KGlobal::locale()->formatDateTime( t, shortDate )); 411 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"+ KGlobal::locale()->formatDateTime( t, shortDate ));
412 }else{ 412 }else{
413 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"); 413 addTag("p",i18n("<b>Alarm on: ") + s +" </b>");
414 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate )); 414 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate ));
415 } 415 }
416 //addTag("p",s); 416 //addTag("p",s);
417 if ( !(event->alarmEnabled() ) ) { 417 if ( !(event->alarmEnabled() ) ) {
418 addTag("p", "<em>("+i18n("Enable alarm in resource settings") + ")</em>"); 418 addTag("p", "<em>("+i18n("Enable alarm in resource settings") + ")</em>");
419 419
420 } 420 }
421 } 421 }
422 422
423 addTag("p","<b>"+i18n("Access: ") + "</b>" + event->secrecyStr()); 423 addTag("p","<b>"+i18n("Access: ") + "</b>" + event->secrecyStr());
424 424
425 formatCategories(event); 425 formatCategories(event);
426 426
427 formatAttendees(event); 427 formatAttendees(event);
428 428
429 if ( KOPrefs::instance()->mEVshowCreated ) { 429 if ( KOPrefs::instance()->mEVshowCreated ) {
430 if(wideScreen ){ 430 if(wideScreen ){
431 addTag("p",i18n("<b>Created: ") +" </b>"+KGlobal::locale()->formatDateTime( event->created(), shortDate )); 431 addTag("p",i18n("<b>Created: ") +" </b>"+KGlobal::locale()->formatDateTime( event->created(), shortDate ));
432 }else{ 432 }else{
433 addTag("p",i18n("<b>Created: ") +" </b>"); 433 addTag("p",i18n("<b>Created: ") +" </b>");
434 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate )); 434 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate ));
435 } 435 }
436 436
437 437
438 } 438 }
439 if ( KOPrefs::instance()->mEVshowChanged ) { 439 if ( KOPrefs::instance()->mEVshowChanged ) {
440 if(wideScreen ){ 440 if(wideScreen ){
441 addTag("p",i18n("<b>Last modified: ") +" </b>" + KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ) ); 441 addTag("p",i18n("<b>Last modified: ") +" </b>" + KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ) );
442 }else{ 442 }else{
443 addTag("p",i18n("<b>Last modified: ") +" </b>"); 443 addTag("p",i18n("<b>Last modified: ") +" </b>");
444 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate )); 444 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ));
445 } 445 }
446 446
447 } 447 }
448 if ( KOPrefs::instance()->mEVshowDetails ) { 448 if ( KOPrefs::instance()->mEVshowDetails ) {
449 if (!event->description().isEmpty()) { 449 if (!event->description().isEmpty()) {
450 addTag("p",i18n("<b>Details: </b>")); 450 addTag("p",i18n("<b>Details: </b>"));
451 addTag("p",deTag(event->description())); 451 addTag("p",deTag(event->description()));
452 } 452 }
453 } 453 }
454 setText(mText); 454 setText(mText);
455 //QWhatsThis::add(this,mText); 455 //QWhatsThis::add(this,mText);
456 456
457} 457}
458 458
459void KOEventViewer::appendTodo(Todo *event, int mode ) 459void KOEventViewer::appendTodo(Todo *event, int mode )
460{ 460{
461 mMailSubject = ""; 461 mMailSubject = "";
462 mCurrentIncidence = event; 462 mCurrentIncidence = event;
463 topLevelWidget()->setCaption(i18n("Todo Viewer")); 463 topLevelWidget()->setCaption(i18n("Todo Viewer"));
464 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 464 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
465 bool wideScreen = ( QApplication::desktop()->width() >= 640 ); 465 bool wideScreen = ( QApplication::desktop()->width() >= 640 );
466 if (mode == 0 ) { 466 if (mode == 0 ) {
467 addTag("h2",deTag(event->summary())); 467 addTag("h2",deTag(event->summary()));
468 formatReadOnly(event); 468 formatReadOnly(event);
469 } 469 }
470 else { 470 else {
471 if ( mColorMode == 1 ) { 471 if ( mColorMode == 1 ) {
472 mText +="<font color=\"#00A000\">"; 472 mText +="<font color=\"#00A000\">";
473 } 473 }
474 if ( mColorMode == 2 ) { 474 if ( mColorMode == 2 ) {
475 mText +="<font color=\"#B00000\">"; 475 mText +="<font color=\"#B00000\">";
476 } 476 }
477 if ( mode == 1 ) { 477 if ( mode == 1 ) {
478 addTag("h2",i18n( "Local: " ) +deTag(event->summary())); 478 addTag("h2",i18n( "Local: " ) +deTag(event->summary()));
479 } else { 479 } else {
480 addTag("h2",i18n( "Remote: " ) +deTag(event->summary())); 480 addTag("h2",i18n( "Remote: " ) +deTag(event->summary()));
481 } 481 }
482 formatReadOnly(event); 482 formatReadOnly(event);
483 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); 483 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) );
484 if ( mColorMode ) 484 if ( mColorMode )
485 mText += "</font>"; 485 mText += "</font>";
486 } 486 }
487 mMailSubject += i18n( "Todo " )+ event->summary(); 487 mMailSubject += i18n( "Todo " )+ event->summary();
488 488
489 if ( event->percentComplete() == 100 && event->hasCompletedDate() ) { 489 if ( event->percentComplete() == 100 && event->hasCompletedDate() ) {
490 mText +="<font color=\"#B00000\">"; 490 mText +="<font color=\"#B00000\">";
491 addTag("i", i18n("<p><i>Completed on %1</i></p>").arg( event->completedStr(KOPrefs::instance()->mShortDateInViewer) ) ); 491 addTag("i", i18n("<p><i>Completed on %1</i></p>").arg( event->completedStr(KOPrefs::instance()->mShortDateInViewer) ) );
492 mText += "</font>"; 492 mText += "</font>";
493 } else { 493 } else {
494 mText.append(i18n("<p><i>%1 % completed</i></p>") 494 mText.append(i18n("<p><i>%1 % completed</i></p>")
495 .arg(event->percentComplete())); 495 .arg(event->percentComplete()));
496 } 496 }
497 497
498 if (event->cancelled ()) { 498 if (event->cancelled ()) {
499 mText +="<font color=\"#B00000\">"; 499 mText +="<font color=\"#B00000\">";
500 addTag("i",i18n("This todo has been cancelled!")); 500 addTag("i",i18n("This todo has been cancelled!"));
501 mText.append("<br>"); 501 mText.append("<br>");
502 mText += "</font>"; 502 mText += "</font>";
503 mMailSubject += i18n("(cancelled)"); 503 mMailSubject += i18n("(cancelled)");
504 } 504 }
505 505
506 506
507 507
508 if (event->doesRecur()) { 508 if (event->doesRecur()) {
509 509
510 QString recurText = event->recurrence()->recurrenceText(); 510 QString recurText = event->recurrence()->recurrenceText();
511 addTag("p","<em>" + i18n("This is a %1 recurring todo.").arg(recurText ) + "</em>"); 511 addTag("p","<em>" + i18n("This is a %1 recurring todo.").arg(recurText ) + "</em>");
512 512
513 } 513 }
514 if (event->hasStartDate()) { 514 if (event->hasStartDate()) {
515 mText.append(i18n("<p><b>Start on:</b> %1</p>").arg(event->dtStartStr(KOPrefs::instance()->mShortDateInViewer))); 515 mText.append(i18n("<p><b>Start on:</b> %1</p>").arg(event->dtStartStr(KOPrefs::instance()->mShortDateInViewer)));
516 } 516 }
517 if (!event->location().isEmpty()) {
518 mMailSubject += " (" + i18n("Location: ") + event->location() + ")";
519 }
517 if (event->hasDueDate()) { 520 if (event->hasDueDate()) {
518 mText.append(i18n("<p><b>Due on:</b> %1</p>").arg(event->dtDueStr(KOPrefs::instance()->mShortDateInViewer))); 521 mText.append(i18n("<p><b>Due on:</b> %1</p>").arg(event->dtDueStr(KOPrefs::instance()->mShortDateInViewer)));
519 mMailSubject += i18n(" - " )+event->dtDueStr( true );
520 } 522 }
521 if (!event->location().isEmpty()) { 523 if (!event->location().isEmpty()) {
522 addTag("p","<b>"+i18n("Location: ")+"</b>"+ deTag(event->location() ) ); 524 addTag("p","<b>"+i18n("Location: ")+"</b>"+ deTag(event->location() ) );
523 mMailSubject += i18n(" at ") + event->location();
524 } 525 }
525 mText.append(i18n("<p><b>Priority:</b> %2</p>") 526 mText.append(i18n("<p><b>Priority:</b> %2</p>")
526 .arg(QString::number(event->priority()))); 527 .arg(QString::number(event->priority())));
527 528
528 if (event->isAlarmEnabled()) { 529 if (event->isAlarmEnabled()) {
529 Alarm *alarm =event->alarms().first() ; 530 Alarm *alarm =event->alarms().first() ;
530 QDateTime t = alarm->time(); 531 QDateTime t = alarm->time();
531 if (event->doesRecur()) { 532 if (event->doesRecur()) {
532 bool ok = false; 533 bool ok = false;
533 int offset = 0; 534 int offset = 0;
534 QDateTime next = event->getNextAlarmDateTime(& ok, &offset, QDateTime::currentDateTime() ) ; 535 QDateTime next = event->getNextAlarmDateTime(& ok, &offset, QDateTime::currentDateTime() ) ;
535 if ( ok ) { 536 if ( ok ) {
536 t = next; 537 t = next;
537 } 538 }
538 } 539 }
539 QString s =i18n("( %1 before )").arg( alarm->offsetText() ); 540 QString s =i18n("( %1 before )").arg( alarm->offsetText() );
540 if ( wideScreen ) { 541 if ( wideScreen ) {
541 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"+ KGlobal::locale()->formatDateTime( t, shortDate )); 542 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"+ KGlobal::locale()->formatDateTime( t, shortDate ));
542 } else { 543 } else {
543 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"); 544 addTag("p",i18n("<b>Alarm on: ") + s +" </b>");
544 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate )); 545 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate ));
545 } 546 }
546 if ( !(event->alarmEnabled() ) ) { 547 if ( !(event->alarmEnabled() ) ) {
547 addTag("p", "<em>("+i18n("Enable alarm in resource settings") + ")</em>"); 548 addTag("p", "<em>("+i18n("Enable alarm in resource settings") + ")</em>");
548 549
549 } 550 }
550 } 551 }
551 552
552 addTag("p","<b>"+i18n("Access: ") + "</b>" + event->secrecyStr()); 553 addTag("p","<b>"+i18n("Access: ") + "</b>" + event->secrecyStr());
553 554
554 formatCategories(event); 555 formatCategories(event);
555 556
556 formatAttendees(event); 557 formatAttendees(event);
557 558
558 if ( KOPrefs::instance()->mEVshowCreated ) { 559 if ( KOPrefs::instance()->mEVshowCreated ) {
559 if(wideScreen ){ 560 if(wideScreen ){
560 561
561 addTag("p",i18n("<b>Created: ") +" </b>"+KGlobal::locale()->formatDateTime( event->created(), shortDate )); 562 addTag("p",i18n("<b>Created: ") +" </b>"+KGlobal::locale()->formatDateTime( event->created(), shortDate ));
562 563
563 } else { 564 } else {
564 addTag("p",i18n("<b>Created: ") +" </b>"); 565 addTag("p",i18n("<b>Created: ") +" </b>");
565 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate )); 566 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate ));
566 } 567 }
567 } 568 }
568 if ( KOPrefs::instance()->mEVshowChanged ) { 569 if ( KOPrefs::instance()->mEVshowChanged ) {
569 if(wideScreen ){ 570 if(wideScreen ){
570 addTag("p",i18n("<b>Last modified: ") +" </b>" +KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ) ); 571 addTag("p",i18n("<b>Last modified: ") +" </b>" +KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ) );
571 572
572 } else { 573 } else {
573 addTag("p",i18n("<b>Last modified: ") +" </b>"); 574 addTag("p",i18n("<b>Last modified: ") +" </b>");
574 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate )); 575 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ));
575 } 576 }
576 } 577 }
577 if ( event->relatedTo() ) { 578 if ( event->relatedTo() ) {
578 addTag("b",i18n("Parent todo:<br>")); 579 addTag("b",i18n("Parent todo:<br>"));
579 580
580 QString t_name = "[" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] ";// +event->relatedTo()->summary()); 581 QString t_name = "[" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] ";// +event->relatedTo()->summary());
581 582
582 mText += t_name; 583 mText += t_name;
583 mText += "<a href=\"todo_uid:" + event->relatedTo()->uid() + "\">"; 584 mText += "<a href=\"todo_uid:" + event->relatedTo()->uid() + "\">";
584 mText += deTag(event->relatedTo()->summary()); 585 mText += deTag(event->relatedTo()->summary());
585 mText += "</a><br>"; 586 mText += "</a><br>";
586 587
587 // mText.append(deTag("[" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] " +event->relatedTo()->summary()) +"<br>"); 588 // mText.append(deTag("[" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] " +event->relatedTo()->summary()) +"<br>");
588 } 589 }
589 QPtrList<Incidence> Relations = event->relations(); 590 QPtrList<Incidence> Relations = event->relations();
590 Incidence *to; 591 Incidence *to;
591 if ( Relations.first() ) 592 if ( Relations.first() )
592 addTag("b",i18n("Sub todos:<br>")); 593 addTag("b",i18n("Sub todos:<br>"));
593 for (to=Relations.first();to;to=Relations.next()) { 594 for (to=Relations.first();to;to=Relations.next()) {
594 QString t_name = "[" +QString::number(((Todo*)to)->priority()) + "/" + QString::number(((Todo*)to)->percentComplete())+"%] ";// +to->relatedTo()->summary()); 595 QString t_name = "[" +QString::number(((Todo*)to)->priority()) + "/" + QString::number(((Todo*)to)->percentComplete())+"%] ";// +to->relatedTo()->summary());
595 mText += t_name; 596 mText += t_name;
596 mText += "<a href=\"todo_uid:" + to->uid() + "\">"; 597 mText += "<a href=\"todo_uid:" + to->uid() + "\">";
597 mText += deTag(to->summary()); 598 mText += deTag(to->summary());
598 mText += "</a><br>"; 599 mText += "</a><br>";
599 600
600 } 601 }
601 602
602 if ( KOPrefs::instance()->mEVshowDetails ) { 603 if ( KOPrefs::instance()->mEVshowDetails ) {
603 if (!event->description().isEmpty()) { 604 if (!event->description().isEmpty()) {
604 addTag("p",i18n("<b>Details: </b>")); 605 addTag("p",i18n("<b>Details: </b>"));
605 addTag("p",deTag(event->description())); 606 addTag("p",deTag(event->description()));
606 } 607 }
607 } 608 }
608 setText(mText); 609 setText(mText);
609} 610}
610 611
611void KOEventViewer::formatCategories(Incidence *event) 612void KOEventViewer::formatCategories(Incidence *event)
612{ 613{
613 if (!event->categoriesStr().isEmpty()) { 614 if (!event->categoriesStr().isEmpty()) {
614 if (event->categories().count() == 1) { 615 if (event->categories().count() == 1) {
615 addTag("p","<b>"+i18n("Category") + ":</b> " + event->categoriesStrWithSpace()); 616 addTag("p","<b>"+i18n("Category") + ":</b> " + event->categoriesStrWithSpace());
616 } else { 617 } else {
617 addTag("p","<b>"+i18n("Categories")+":</b> " + event->categoriesStrWithSpace() ) ; 618 addTag("p","<b>"+i18n("Categories")+":</b> " + event->categoriesStrWithSpace() ) ;
618 } 619 }
619 } 620 }
620} 621}
621void KOEventViewer::formatAttendees(Incidence *event) 622void KOEventViewer::formatAttendees(Incidence *event)
622{ 623{
623 QPtrList<Attendee> attendees = event->attendees(); 624 QPtrList<Attendee> attendees = event->attendees();
624 if (attendees.count()) { 625 if (attendees.count()) {
625 626
626 627
627 QString iconPath = KGlobal::iconLoader()->iconPath("mailappt",KIcon::Small); 628 QString iconPath = KGlobal::iconLoader()->iconPath("mailappt",KIcon::Small);
628 QString NOiconPath = KGlobal::iconLoader()->iconPath("nomailappt",KIcon::Small); 629 QString NOiconPath = KGlobal::iconLoader()->iconPath("nomailappt",KIcon::Small);
629 addTag("h3",i18n("Organizer")); 630 addTag("h3",i18n("Organizer"));
630 mText.append("<ul><li>"); 631 mText.append("<ul><li>");
631#ifndef KORG_NOKABC 632#ifndef KORG_NOKABC
632 633
633#ifdef DESKTOP_VERSION 634#ifdef DESKTOP_VERSION
634 KABC::AddressBook *add_book = KABC::StdAddressBook::self(); 635 KABC::AddressBook *add_book = KABC::StdAddressBook::self();
635 KABC::Addressee::List addressList; 636 KABC::Addressee::List addressList;
636 addressList = add_book->findByEmail(event->organizer()); 637 addressList = add_book->findByEmail(event->organizer());
637 KABC::Addressee o = addressList.first(); 638 KABC::Addressee o = addressList.first();
638 if (!o.isEmpty() && addressList.size()<2) { 639 if (!o.isEmpty() && addressList.size()<2) {
639 mText += "<a href=\"uid:" + o.uid() + "\">"; 640 mText += "<a href=\"uid:" + o.uid() + "\">";
640 mText += o.formattedName(); 641 mText += o.formattedName();
641 mText += "</a>\n"; 642 mText += "</a>\n";
642 } else { 643 } else {
643 mText.append(event->organizer()); 644 mText.append(event->organizer());
644 } 645 }
645#else //DESKTOP_VERSION 646#else //DESKTOP_VERSION
646 mText += "<a href=\"uid:organizer\">"; 647 mText += "<a href=\"uid:organizer\">";
647 mText += event->organizer(); 648 mText += event->organizer();
648 mText += "</a>\n"; 649 mText += "</a>\n";
649#endif //DESKTOP_VERSION 650#endif //DESKTOP_VERSION
650 651
651 652
652#else 653#else
653 mText.append(event->organizer()); 654 mText.append(event->organizer());
654#endif 655#endif
655 656
656 if (iconPath) { 657 if (iconPath) {
657 mText += " <a href=\"mailto:" + event->organizer() + "\">"; 658 mText += " <a href=\"mailto:" + event->organizer() + "\">";
658 mText += "<IMG src=\"" + iconPath + "\">"; 659 mText += "<IMG src=\"" + iconPath + "\">";
659 mText += "</a>\n"; 660 mText += "</a>\n";
660 } 661 }
661 mText.append("</li></ul>"); 662 mText.append("</li></ul>");
662 663
663 addTag("h3",i18n("Attendees")); 664 addTag("h3",i18n("Attendees"));
664 Attendee *a; 665 Attendee *a;
665 mText.append("<ul>"); 666 mText.append("<ul>");
666 int a_count = 0; 667 int a_count = 0;
667 int a_count_nr = 0; 668 int a_count_nr = 0;
668 669
669 for(a=attendees.first();a;a=attendees.next()) { 670 for(a=attendees.first();a;a=attendees.next()) {
670#ifndef KORG_NOKABC 671#ifndef KORG_NOKABC
671#ifdef DESKTOP_VERSION 672#ifdef DESKTOP_VERSION
672 if (a->name().isEmpty()) { 673 if (a->name().isEmpty()) {
673 addressList = add_book->findByEmail(a->email()); 674 addressList = add_book->findByEmail(a->email());
674 KABC::Addressee o = addressList.first(); 675 KABC::Addressee o = addressList.first();
675 if (!o.isEmpty() && addressList.size()<2) { 676 if (!o.isEmpty() && addressList.size()<2) {
676 mText += "<a href=\"uid:" + o.uid() + "\">"; 677 mText += "<a href=\"uid:" + o.uid() + "\">";
677 mText += o.formattedName(); 678 mText += o.formattedName();
678 mText += "</a>\n"; 679 mText += "</a>\n";
679 } else { 680 } else {
680 mText += "<li>"; 681 mText += "<li>";
681 mText.append(a->email()); 682 mText.append(a->email());
682 mText += "\n"; 683 mText += "\n";
683 } 684 }
684 } else { 685 } else {
685 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 686 mText += "<li><a href=\"uid:" + a->uid() + "\">";
686 if (!a->name().isEmpty()) mText += a->name(); 687 if (!a->name().isEmpty()) mText += a->name();
687 else mText += a->email(); 688 else mText += a->email();
688 mText += "</a>\n"; 689 mText += "</a>\n";
689 } 690 }
690#else //DESKTOP_VERSION 691#else //DESKTOP_VERSION
691 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 692 mText += "<li><a href=\"uid:" + a->uid() + "\">";
692 if (!a->name().isEmpty()) mText += a->name(); 693 if (!a->name().isEmpty()) mText += a->name();
693 else mText += a->email(); 694 else mText += a->email();
694 mText += "</a>\n"; 695 mText += "</a>\n";
695#endif //DESKTOP_VERSION 696#endif //DESKTOP_VERSION
696#else 697#else
697 //qDebug("nokabc "); 698 //qDebug("nokabc ");
698 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 699 mText += "<li><a href=\"uid:" + a->uid() + "\">";
699 if (!a->name().isEmpty()) mText += a->name(); 700 if (!a->name().isEmpty()) mText += a->name();
700 else mText += a->email(); 701 else mText += a->email();
701 mText += "</a>\n"; 702 mText += "</a>\n";
702#endif 703#endif
703 704
704 705
705 if (!a->email().isEmpty()) { 706 if (!a->email().isEmpty()) {
706 if (iconPath) { 707 if (iconPath) {
707 mText += "<a href=\"mailto:" + a->realName() +" <" + a->email() + ">:" + mMailSubject + "\">"; 708 mText += "<a href=\"mailto:" + a->realName() +" <" + a->email() + ">:" + mMailSubject + "\">";
708 if ( a->RSVP() ) { 709 if ( a->RSVP() ) {
709 ++a_count_nr; 710 ++a_count_nr;
710 mText += "<IMG src=\"" + iconPath + "\">"; 711 mText += "<IMG src=\"" + iconPath + "\">";
711 } 712 }
712 else { 713 else {
713 ++a_count; 714 ++a_count;
714 mText += "<IMG src=\"" + NOiconPath + "\">"; 715 mText += "<IMG src=\"" + NOiconPath + "\">";
715 } 716 }
716 mText += "</a>\n"; 717 mText += "</a>\n";
717 } 718 }
718 } 719 }
719 if (a->status() != Attendee::NeedsAction ) 720 if (a->status() != Attendee::NeedsAction )
720 mText +="[" + a->statusStr() + "] "; 721 mText +="[" + a->statusStr() + "] ";
721 if (a->role() == Attendee::Chair ) 722 if (a->role() == Attendee::Chair )
722 mText +="(" + a->roleStr().left(1) + ".)"; 723 mText +="(" + a->roleStr().left(1) + ".)";
723 } 724 }
724 mText.append("</li></ul>"); 725 mText.append("</li></ul>");
725 if ( (a_count+a_count_nr) > 1 ) { 726 if ( (a_count+a_count_nr) > 1 ) {
726 mText += "<a href=\"mailto:ALL\">"; 727 mText += "<a href=\"mailto:ALL\">";
727 mText += i18n( "Mail to all" ); 728 mText += i18n( "Mail to all" );
728 mText += "</a> ( "; 729 mText += "</a> ( ";
729 mText += "<IMG src=\"" + iconPath + "\">"; 730 mText += "<IMG src=\"" + iconPath + "\">";
730 mText += i18n( " and " ); 731 mText += i18n( " and " );
731 mText += "<IMG src=\"" + NOiconPath + "\"> )"; 732 mText += "<IMG src=\"" + NOiconPath + "\"> )";
732 mText += "<br>\n"; 733 mText += "<br>\n";
733 734
734 735
735 } 736 }
736 if ( a_count_nr > 1 ) { 737 if ( a_count_nr > 1 ) {
737 mText += "<a href=\"mailto:RSVP\">"; 738 mText += "<a href=\"mailto:RSVP\">";
738 mText += i18n( "Mail to selected" ); 739 mText += i18n( "Mail to selected" );
739 mText += "</a> ( "; 740 mText += "</a> ( ";
740 mText += i18n( "<IMG src=\"%1\"> only )").arg ( iconPath ); 741 mText += i18n( "<IMG src=\"%1\"> only )").arg ( iconPath );
741 mText += "<br>\n"; 742 mText += "<br>\n";
742 } 743 }
743 } 744 }
744 745
745} 746}
746void KOEventViewer::appendJournal(Journal *jour, int mode ) 747void KOEventViewer::appendJournal(Journal *jour, int mode )
747{ 748{
748 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 749 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
749 QString text_d = i18n("Journal from: "); 750 QString text_d = i18n("Journal from: ");
750 if ( !jour->summary().isEmpty() ) 751 if ( !jour->summary().isEmpty() )
751 text_d = jour->summary(); 752 text_d = jour->summary();
752 if (mode == 0 ) { 753 if (mode == 0 ) {
753 addTag("h2", text_d ); 754 addTag("h2", text_d );
754 } 755 }
755 else { 756 else {
756 if ( mode == 1 ) { 757 if ( mode == 1 ) {
757 addTag("h3",i18n( "Local: " ) + text_d ); 758 addTag("h3",i18n( "Local: " ) + text_d );
758 } else { 759 } else {
759 addTag("h3",i18n( "Remote: " ) + text_d ); 760 addTag("h3",i18n( "Remote: " ) + text_d );
760 } 761 }
761 } 762 }
762 topLevelWidget()->setCaption(i18n("Journal viewer")); 763 topLevelWidget()->setCaption(i18n("Journal viewer"));
763 mText.append(i18n("<h3> %1 </h3> ").arg(jour->dtStartDateStr(KOPrefs::instance()->mShortDateInViewer))); 764 mText.append(i18n("<h3> %1 </h3> ").arg(jour->dtStartDateStr(KOPrefs::instance()->mShortDateInViewer)));
764 formatReadOnly(jour); 765 formatReadOnly(jour);
765 addTag("p","<b>"+i18n( "Last modified: " ) + "</b>"+KGlobal::locale()->formatDateTime(jour->lastModified(),shortDate ) ); 766 addTag("p","<b>"+i18n( "Last modified: " ) + "</b>"+KGlobal::locale()->formatDateTime(jour->lastModified(),shortDate ) );
766 767
767 if (!jour->description().isEmpty()) { 768 if (!jour->description().isEmpty()) {
768 addTag("p",deTag(jour->description())); 769 addTag("p",deTag(jour->description()));
769 } 770 }
770 setText(mText); 771 setText(mText);
771} 772}
772 773
773void KOEventViewer::formatReadOnly(Incidence *event) 774void KOEventViewer::formatReadOnly(Incidence *event)
774{ 775{
775 int id = event->calID(); 776 int id = event->calID();
776 if ( id > 1 ) { 777 if ( id > 1 ) {
777 addTag("p", "<em>("+i18n("Calendar:")+" " + KOPrefs::instance()->getCalendar( id )->mName + ")</em>"); 778 addTag("p", "<em>("+i18n("Calendar:")+" " + KOPrefs::instance()->getCalendar( id )->mName + ")</em>");
778 } 779 }
779 if (event->isReadOnly()) { 780 if (event->isReadOnly()) {