summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koeventviewer.cpp13
-rw-r--r--korganizer/koeventviewer.h53
-rw-r--r--korganizer/koeventviewerdialog.cpp8
-rw-r--r--korganizer/kowhatsnextview.cpp12
4 files changed, 76 insertions, 10 deletions
diff --git a/korganizer/koeventviewer.cpp b/korganizer/koeventviewer.cpp
index 445fc86..dbe0668 100644
--- a/korganizer/koeventviewer.cpp
+++ b/korganizer/koeventviewer.cpp
@@ -1,750 +1,761 @@
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 <externalapphandler.h> 60#include <externalapphandler.h>
61#include <qtopia/qcopenvelope_qws.h> 61#include <qtopia/qcopenvelope_qws.h>
62#endif //DESKTOP_VERSION 62#endif //DESKTOP_VERSION
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
79 KOPrintPrefs pp ( this );
80 if (!pp.exec() )
81 return;
82 int scaleval = pp.printMode() ;
83
78 QPrinter printer; 84 QPrinter printer;
79 if (!printer.setup() ) 85 if (!printer.setup() )
80 return; 86 return;
81 QPainter p; 87 QPainter p;
82 p.begin ( &printer ); 88 p.begin ( &printer );
83 QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer ); 89 QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer );
84 float dx, dy; 90 float dx, dy;
85 int wid = (m.width() * 9)/10; 91 int wid = (m.width() * 9)/10;
86 dx = (float) wid/(float)contentsWidth (); 92 dx = (float) wid/(float)contentsWidth ();
87 dy = (float)(m.height()) / (float)contentsHeight (); 93 dy = (float)(m.height()) / (float)contentsHeight ();
88 float scale; 94 float scale;
89 // scale to fit the width or height of the paper 95 // scale to fit the width or height of the paper
90 if ( dx < dy ) 96 if ( dx < dy )
91 scale = dx; 97 scale = dx;
92 else 98 else
93 scale = dy; 99 scale = dy;
100
94 p.translate( m.width()/10,0 ); 101 p.translate( m.width()/10,0 );
95 p.scale( scale, scale ); 102 qDebug("Scale: %f ", scale );
103 if ( scaleval == 2 || scaleval == 1 && scale < 1.0 ) {
104 qDebug("SCALE ");
105 p.scale( scale, scale );
106 }
96 drawContents ( &p, 0,0, contentsWidth (), contentsHeight () ); 107 drawContents ( &p, 0,0, contentsWidth (), contentsHeight () );
97 p.end(); 108 p.end();
98#endif 109#endif
99 110
100} 111}
101void KOEventViewer::setSource(const QString& n) 112void KOEventViewer::setSource(const QString& n)
102{ 113{
103 114
104 if ( n.left(3) == "uid" ) 115 if ( n.left(3) == "uid" )
105#ifdef DESKTOP_VERSION 116#ifdef DESKTOP_VERSION
106 { 117 {
107 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 118 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
108 KABC::AddressBook::Iterator it; 119 KABC::AddressBook::Iterator it;
109 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 120 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
110 // LR I do not understand, why the uid string is different on zaurus and desktop 121 // LR I do not understand, why the uid string is different on zaurus and desktop
111 QString uid = "uid://"+(*it).uid(); 122 QString uid = "uid://"+(*it).uid();
112 123
113 //qDebug("for *%s* +%s+ ", n.latin1(), uid.latin1()); 124 //qDebug("for *%s* +%s+ ", n.latin1(), uid.latin1());
114 if (n == uid ) { 125 if (n == uid ) {
115 //qDebug("found %s ",(*it).mobileHomePhone().latin1() ); 126 //qDebug("found %s ",(*it).mobileHomePhone().latin1() );
116 QDialog dia( this,"dia123", true ); 127 QDialog dia( this,"dia123", true );
117 dia.setCaption( i18n("Details of attendee") ); 128 dia.setCaption( i18n("Details of attendee") );
118 QVBoxLayout lay ( &dia ); 129 QVBoxLayout lay ( &dia );
119 KABC::AddresseeView av ( &dia ); 130 KABC::AddresseeView av ( &dia );
120 av.setAddressee( (*it) ); 131 av.setAddressee( (*it) );
121 lay.addWidget( &av ); 132 lay.addWidget( &av );
122 if ( QApplication::desktop()->width() < 480 ) 133 if ( QApplication::desktop()->width() < 480 )
123 dia.resize( 220, 240); 134 dia.resize( 220, 240);
124 else { 135 else {
125 dia.resize( 400,400); 136 dia.resize( 400,400);
126 } 137 }
127 dia.exec(); 138 dia.exec();
128 break; 139 break;
129 } 140 }
130 } 141 }
131 return; 142 return;
132 } 143 }
133#else 144#else
134 { 145 {
135 if ( "uid:organizer" == n ) { 146 if ( "uid:organizer" == n ) {
136 ExternalAppHandler::instance()->requestDetailsFromKAPI("", mCurrentIncidence->organizer(),""); 147 ExternalAppHandler::instance()->requestDetailsFromKAPI("", mCurrentIncidence->organizer(),"");
137 return; 148 return;
138 } 149 }
139 QPtrList<Attendee> attendees = mCurrentIncidence->attendees(); 150 QPtrList<Attendee> attendees = mCurrentIncidence->attendees();
140 if (attendees.count()) { 151 if (attendees.count()) {
141 Attendee *a; 152 Attendee *a;
142 for(a=attendees.first();a;a=attendees.next()) { 153 for(a=attendees.first();a;a=attendees.next()) {
143 if ( "uid:"+a->uid() == n ) { 154 if ( "uid:"+a->uid() == n ) {
144 bool res = ExternalAppHandler::instance()->requestDetailsFromKAPI(a->name(), a->email(), a->uid()); 155 bool res = ExternalAppHandler::instance()->requestDetailsFromKAPI(a->name(), a->email(), a->uid());
145 return; 156 return;
146 } 157 }
147 } 158 }
148 } 159 }
149 return; 160 return;
150 } 161 }
151 //requestNameEmailUidListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); 162 //requestNameEmailUidListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/);
152 // the result should now arrive through method insertAttendees 163 // the result should now arrive through method insertAttendees
153 //QString uid = "uid:"+(*it).uid(); 164 //QString uid = "uid:"+(*it).uid();
154#endif 165#endif
155 if ( n.left(6) == "mailto" ) { 166 if ( n.left(6) == "mailto" ) {
156 // qDebug("KOEventViewer::setSource %s ", n.mid(7).latin1()); 167 // qDebug("KOEventViewer::setSource %s ", n.mid(7).latin1());
157#ifndef DESKTOP_VERSION 168#ifndef DESKTOP_VERSION
158 if ( n.mid(7,3) == "ALL" ) { 169 if ( n.mid(7,3) == "ALL" ) {
159 qDebug("all "); 170 qDebug("all ");
160 mailToAttendees( true ); 171 mailToAttendees( true );
161 } else if ( n.mid(7,4) == "RSVP" ) { 172 } else if ( n.mid(7,4) == "RSVP" ) {
162 mailToAttendees( false ); 173 mailToAttendees( false );
163 qDebug("rsvp "); 174 qDebug("rsvp ");
164 } else { 175 } else {
165 QCopEnvelope e("QPE/Application/ompi", "newMail(QString)" ); 176 QCopEnvelope e("QPE/Application/ompi", "newMail(QString)" );
166 e << n.mid(7); 177 e << n.mid(7);
167 } 178 }
168#endif 179#endif
169 180
170 } 181 }
171 182
172 183
173#ifndef KORG_NODCOP 184#ifndef KORG_NODCOP
174 kdDebug() << "KOEventViewer::setSource(): " << n << endl; 185 kdDebug() << "KOEventViewer::setSource(): " << n << endl;
175 QString tmpStr; 186 QString tmpStr;
176 if (n.startsWith("mailto:")) { 187 if (n.startsWith("mailto:")) {
177 KApplication::kApplication()->invokeMailer(n.mid(7),QString::null); 188 KApplication::kApplication()->invokeMailer(n.mid(7),QString::null);
178 //emit showIncidence(n); 189 //emit showIncidence(n);
179 return; 190 return;
180 } else if (n.startsWith("uid:")) { 191 } else if (n.startsWith("uid:")) {
181 DCOPClient *client = KApplication::kApplication()->dcopClient(); 192 DCOPClient *client = KApplication::kApplication()->dcopClient();
182 const QByteArray noParamData; 193 const QByteArray noParamData;
183 const QByteArray paramData; 194 const QByteArray paramData;
184 QByteArray replyData; 195 QByteArray replyData;
185 QCString replyTypeStr; 196 QCString replyTypeStr;
186#define PING_ABBROWSER (client->call("kaddressbook", "KAddressBookIface", "interfaces()", noParamData, replyTypeStr, replyData)) 197#define PING_ABBROWSER (client->call("kaddressbook", "KAddressBookIface", "interfaces()", noParamData, replyTypeStr, replyData))
187 bool foundAbbrowser = PING_ABBROWSER; 198 bool foundAbbrowser = PING_ABBROWSER;
188 199
189 if (foundAbbrowser) { 200 if (foundAbbrowser) {
190 //KAddressbook is already running, so just DCOP to it to bring up the contact editor 201 //KAddressbook is already running, so just DCOP to it to bring up the contact editor
191 //client->send("kaddressbook","KAddressBookIface", 202 //client->send("kaddressbook","KAddressBookIface",
192 QDataStream arg(paramData, IO_WriteOnly); 203 QDataStream arg(paramData, IO_WriteOnly);
193 arg << n.mid(6); 204 arg << n.mid(6);
194 client->send("kaddressbook", "KAddressBookIface", "showContactEditor( QString )", paramData); 205 client->send("kaddressbook", "KAddressBookIface", "showContactEditor( QString )", paramData);
195 return; 206 return;
196 } else { 207 } else {
197 /* 208 /*
198 KaddressBook is not already running. Pass it the UID of the contact via the command line while starting it - its neater. 209 KaddressBook is not already running. Pass it the UID of the contact via the command line while starting it - its neater.
199 We start it without its main interface 210 We start it without its main interface
200 */ 211 */
201 KIconLoader* iconLoader = new KIconLoader(); 212 KIconLoader* iconLoader = new KIconLoader();
202 QString iconPath = iconLoader->iconPath("go",KIcon::Small); 213 QString iconPath = iconLoader->iconPath("go",KIcon::Small);
203 ActionManager::setStartedKAddressBook(true); 214 ActionManager::setStartedKAddressBook(true);
204 tmpStr = "kaddressbook --editor-only --uid "; 215 tmpStr = "kaddressbook --editor-only --uid ";
205 tmpStr += KProcess::quote(n.mid(6)); 216 tmpStr += KProcess::quote(n.mid(6));
206 KRun::runCommand(tmpStr,"KAddressBook",iconPath); 217 KRun::runCommand(tmpStr,"KAddressBook",iconPath);
207 return; 218 return;
208 } 219 }
209 } else { 220 } else {
210 //QTextBrowser::setSource(n); 221 //QTextBrowser::setSource(n);
211 } 222 }
212#endif 223#endif
213} 224}
214void KOEventViewer::mailToAttendees( bool all ) 225void KOEventViewer::mailToAttendees( bool all )
215{ 226{
216 QPtrList<Attendee> attendees = mCurrentIncidence->attendees(); 227 QPtrList<Attendee> attendees = mCurrentIncidence->attendees();
217 if (attendees.count() == 0) return; 228 if (attendees.count() == 0) return;
218 QStringList nameList; 229 QStringList nameList;
219 QStringList emailList; 230 QStringList emailList;
220 QStringList uidList; 231 QStringList uidList;
221 Attendee* a; 232 Attendee* a;
222 for(a=attendees.first();a;a=attendees.next()) { 233 for(a=attendees.first();a;a=attendees.next()) {
223 if ( !all && !a->RSVP() ) continue; 234 if ( !all && !a->RSVP() ) continue;
224 if (!a->email().isEmpty()) { 235 if (!a->email().isEmpty()) {
225 nameList.append (a->name() ); 236 nameList.append (a->name() );
226 emailList.append (a->email() ); 237 emailList.append (a->email() );
227 uidList.append (a->uid() ); 238 uidList.append (a->uid() );
228 } 239 }
229 } 240 }
230 QString uid = "ComposeMailUIpick2"+mMailSubject; 241 QString uid = "ComposeMailUIpick2"+mMailSubject;
231#ifndef DESKTOP_VERSION 242#ifndef DESKTOP_VERSION
232 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList); 243 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList);
233#endif 244#endif
234 245
235} 246}
236void KOEventViewer::addTag(const QString & tag,const QString & text) 247void KOEventViewer::addTag(const QString & tag,const QString & text)
237{ 248{
238 int number=text.contains("\n"); 249 int number=text.contains("\n");
239 QString str = "<" + tag + ">"; 250 QString str = "<" + tag + ">";
240 QString tmpText=text; 251 QString tmpText=text;
241 QString tmpStr=str; 252 QString tmpStr=str;
242 if(number !=-1) 253 if(number !=-1)
243 { 254 {
244 if (number > 0) { 255 if (number > 0) {
245 int pos=0; 256 int pos=0;
246 QString tmp; 257 QString tmp;
247 for(int i=0;i<=number;i++) { 258 for(int i=0;i<=number;i++) {
248 pos=tmpText.find("\n"); 259 pos=tmpText.find("\n");
249 tmp=tmpText.left(pos); 260 tmp=tmpText.left(pos);
250 tmpText=tmpText.right(tmpText.length()-pos-1); 261 tmpText=tmpText.right(tmpText.length()-pos-1);
251 tmpStr+=tmp+"<br>"; 262 tmpStr+=tmp+"<br>";
252 } 263 }
253 } 264 }
254 else tmpStr += tmpText; 265 else tmpStr += tmpText;
255 tmpStr+="</" + tag + ">"; 266 tmpStr+="</" + tag + ">";
256 mText.append(tmpStr); 267 mText.append(tmpStr);
257 } 268 }
258 else 269 else
259 { 270 {
260 str += text + "</" + tag + ">"; 271 str += text + "</" + tag + ">";
261 mText.append(str); 272 mText.append(str);
262 } 273 }
263} 274}
264 275
265void KOEventViewer::setColorMode( int m ) 276void KOEventViewer::setColorMode( int m )
266{ 277{
267 mColorMode = m; 278 mColorMode = m;
268} 279}
269void KOEventViewer::appendEvent(Event *event, int mode ) 280void KOEventViewer::appendEvent(Event *event, int mode )
270{ 281{
271 mMailSubject = ""; 282 mMailSubject = "";
272 mCurrentIncidence = event; 283 mCurrentIncidence = event;
273 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 284 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
274 topLevelWidget()->setCaption(i18n("Event Viewer")); 285 topLevelWidget()->setCaption(i18n("Event Viewer"));
275 if ( mode == 0 ) { 286 if ( mode == 0 ) {
276 addTag("h2",deTag(event->summary())); 287 addTag("h2",deTag(event->summary()));
277 } 288 }
278 else { 289 else {
279 if ( mColorMode == 1 ) { 290 if ( mColorMode == 1 ) {
280 mText +="<font color=\"#00A000\">"; 291 mText +="<font color=\"#00A000\">";
281 } 292 }
282 if ( mColorMode == 2 ) { 293 if ( mColorMode == 2 ) {
283 mText +="<font color=\"#C00000\">"; 294 mText +="<font color=\"#C00000\">";
284 } 295 }
285 // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>"; 296 // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>";
286 if ( mode == 1 ) { 297 if ( mode == 1 ) {
287 addTag("h2",i18n( "Local: " ) +deTag(event->summary())); 298 addTag("h2",i18n( "Local: " ) +deTag(event->summary()));
288 } else { 299 } else {
289 addTag("h2",i18n( "Remote: " ) +deTag(event->summary())); 300 addTag("h2",i18n( "Remote: " ) +deTag(event->summary()));
290 } 301 }
291 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); 302 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) );
292 if ( mColorMode ) 303 if ( mColorMode )
293 mText += "</font>"; 304 mText += "</font>";
294 } 305 }
295 mMailSubject += i18n( "Meeting " )+ event->summary(); 306 mMailSubject += i18n( "Meeting " )+ event->summary();
296 if (event->cancelled ()) { 307 if (event->cancelled ()) {
297 mText +="<font color=\"#B00000\">"; 308 mText +="<font color=\"#B00000\">";
298 addTag("i",i18n("This event has been cancelled!")); 309 addTag("i",i18n("This event has been cancelled!"));
299 mText.append("<br>"); 310 mText.append("<br>");
300 mText += "</font>"; 311 mText += "</font>";
301 mMailSubject += i18n("(cancelled)"); 312 mMailSubject += i18n("(cancelled)");
302 } 313 }
303 if (!event->location().isEmpty()) { 314 if (!event->location().isEmpty()) {
304 addTag("b",i18n("Location: ")); 315 addTag("b",i18n("Location: "));
305 mText.append(deTag(event->location())+"<br>"); 316 mText.append(deTag(event->location())+"<br>");
306 mMailSubject += i18n(" at ") + event->location(); 317 mMailSubject += i18n(" at ") + event->location();
307 } 318 }
308 if (event->doesFloat()) { 319 if (event->doesFloat()) {
309 if (event->isMultiDay()) { 320 if (event->isMultiDay()) {
310 mText.append(i18n("<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>") 321 mText.append(i18n("<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>")
311 .arg(event->dtStartDateStr(shortDate)) 322 .arg(event->dtStartDateStr(shortDate))
312 .arg(event->dtEndDateStr(shortDate))); 323 .arg(event->dtEndDateStr(shortDate)));
313 } else { 324 } else {
314 mText.append(i18n("<p><b>On:</b> %1</p>").arg(event->dtStartDateStr( shortDate ))); 325 mText.append(i18n("<p><b>On:</b> %1</p>").arg(event->dtStartDateStr( shortDate )));
315 } 326 }
316 } else { 327 } else {
317 if (event->isMultiDay()) { 328 if (event->isMultiDay()) {
318 mText.append(i18n("<p><b>From:</b> %1</p> ") 329 mText.append(i18n("<p><b>From:</b> %1</p> ")
319 .arg(event->dtStartStr( shortDate))); 330 .arg(event->dtStartStr( shortDate)));
320 mText.append(i18n("<p><b>To:</b> %1</p>") 331 mText.append(i18n("<p><b>To:</b> %1</p>")
321 .arg(event->dtEndStr(shortDate))); 332 .arg(event->dtEndStr(shortDate)));
322 } else { 333 } else {
323 mText.append(i18n("<p><b>On:</b> %1</p> ") 334 mText.append(i18n("<p><b>On:</b> %1</p> ")
324 .arg(event->dtStartDateStr( shortDate ))); 335 .arg(event->dtStartDateStr( shortDate )));
325 mText.append(i18n("<p><b>From:</b> %1 <b>To:</b> %2</p>") 336 mText.append(i18n("<p><b>From:</b> %1 <b>To:</b> %2</p>")
326 .arg(event->dtStartTimeStr()) 337 .arg(event->dtStartTimeStr())
327 .arg(event->dtEndTimeStr())); 338 .arg(event->dtEndTimeStr()));
328 } 339 }
329 } 340 }
330 341
331 if (event->recurrence()->doesRecur()) { 342 if (event->recurrence()->doesRecur()) {
332 343
333 QString recurText = event->recurrence()->recurrenceText(); 344 QString recurText = event->recurrence()->recurrenceText();
334 addTag("p","<em>" + i18n("This is a %1 recurring event.").arg(recurText ) + "</em>"); 345 addTag("p","<em>" + i18n("This is a %1 recurring event.").arg(recurText ) + "</em>");
335 bool ok; 346 bool ok;
336 QDate start = QDate::currentDate(); 347 QDate start = QDate::currentDate();
337 QDateTime next; 348 QDateTime next;
338 next = event->getNextOccurence( QDateTime::currentDateTime() , &ok ); 349 next = event->getNextOccurence( QDateTime::currentDateTime() , &ok );
339 if ( ok ) { 350 if ( ok ) {
340 addTag("p",i18n("<b>Next recurrence is on:</b>") ); 351 addTag("p",i18n("<b>Next recurrence is on:</b>") );
341 addTag("p", KGlobal::locale()->formatDate( next.date(), shortDate )); 352 addTag("p", KGlobal::locale()->formatDate( next.date(), shortDate ));
342 mMailSubject += i18n(" - " )+ KGlobal::locale()->formatDateTime( next, true ); 353 mMailSubject += i18n(" - " )+ KGlobal::locale()->formatDateTime( next, true );
343 354
344 } else { 355 } else {
345 bool last; 356 bool last;
346 QDate nextd; 357 QDate nextd;
347 nextd = event->recurrence()->getPreviousDate( QDate::currentDate() , &last ); 358 nextd = event->recurrence()->getPreviousDate( QDate::currentDate() , &last );
348 if ( last ) { 359 if ( last ) {
349 addTag("p",i18n("<b>Last recurrence was on:</b>") ); 360 addTag("p",i18n("<b>Last recurrence was on:</b>") );
350 addTag("p", KGlobal::locale()->formatDate( nextd, shortDate )); 361 addTag("p", KGlobal::locale()->formatDate( nextd, shortDate ));
351 } 362 }
352 } 363 }
353 } else { 364 } else {
354 mMailSubject += i18n(" - " )+event->dtStartStr( true ); 365 mMailSubject += i18n(" - " )+event->dtStartStr( true );
355 366
356 } 367 }
357 368
358 369
359 if (event->isAlarmEnabled()) { 370 if (event->isAlarmEnabled()) {
360 Alarm *alarm =event->alarms().first() ; 371 Alarm *alarm =event->alarms().first() ;
361 QDateTime t = alarm->time(); 372 QDateTime t = alarm->time();
362 int min = t.secsTo( event->dtStart() )/60; 373 int min = t.secsTo( event->dtStart() )/60;
363 QString s =i18n("( %1 min before )").arg( min ); 374 QString s =i18n("( %1 min before )").arg( min );
364 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"); 375 addTag("p",i18n("<b>Alarm on: ") + s +" </b>");
365 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate )); 376 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate ));
366 //addTag("p",s); 377 //addTag("p",s);
367 } 378 }
368 379
369 addTag("b",i18n("Access: ")); 380 addTag("b",i18n("Access: "));
370 mText.append(event->secrecyStr()+"<br>"); 381 mText.append(event->secrecyStr()+"<br>");
371 382
372 383
373 if ( KOPrefs::instance()->mEVshowDetails ) { 384 if ( KOPrefs::instance()->mEVshowDetails ) {
374 if (!event->description().isEmpty()) { 385 if (!event->description().isEmpty()) {
375 addTag("p",i18n("<b>Details: </b>")); 386 addTag("p",i18n("<b>Details: </b>"));
376 addTag("p",deTag(event->description())); 387 addTag("p",deTag(event->description()));
377 } 388 }
378 } 389 }
379 formatCategories(event); 390 formatCategories(event);
380 391
381 formatReadOnly(event); 392 formatReadOnly(event);
382 formatAttendees(event); 393 formatAttendees(event);
383 394
384 if ( KOPrefs::instance()->mEVshowCreated ) { 395 if ( KOPrefs::instance()->mEVshowCreated ) {
385 addTag("p",i18n("<b>Created: ") +" </b>"); 396 addTag("p",i18n("<b>Created: ") +" </b>");
386 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate )); 397 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate ));
387 398
388 } 399 }
389 if ( KOPrefs::instance()->mEVshowChanged ) { 400 if ( KOPrefs::instance()->mEVshowChanged ) {
390 addTag("p",i18n("<b>Last modified: ") +" </b>"); 401 addTag("p",i18n("<b>Last modified: ") +" </b>");
391 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate )); 402 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ));
392 403
393 } 404 }
394 setText(mText); 405 setText(mText);
395 //QWhatsThis::add(this,mText); 406 //QWhatsThis::add(this,mText);
396 407
397} 408}
398 409
399void KOEventViewer::appendTodo(Todo *event, int mode ) 410void KOEventViewer::appendTodo(Todo *event, int mode )
400{ 411{
401 mMailSubject = ""; 412 mMailSubject = "";
402 mCurrentIncidence = event; 413 mCurrentIncidence = event;
403 topLevelWidget()->setCaption(i18n("Todo Viewer")); 414 topLevelWidget()->setCaption(i18n("Todo Viewer"));
404 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 415 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
405 if (mode == 0 ) 416 if (mode == 0 )
406 addTag("h2",deTag(event->summary())); 417 addTag("h2",deTag(event->summary()));
407 else { 418 else {
408 if ( mColorMode == 1 ) { 419 if ( mColorMode == 1 ) {
409 mText +="<font color=\"#00A000\">"; 420 mText +="<font color=\"#00A000\">";
410 } 421 }
411 if ( mColorMode == 2 ) { 422 if ( mColorMode == 2 ) {
412 mText +="<font color=\"#B00000\">"; 423 mText +="<font color=\"#B00000\">";
413 } 424 }
414 if ( mode == 1 ) { 425 if ( mode == 1 ) {
415 addTag("h2",i18n( "Local: " ) +deTag(event->summary())); 426 addTag("h2",i18n( "Local: " ) +deTag(event->summary()));
416 } else { 427 } else {
417 addTag("h2",i18n( "Remote: " ) +deTag(event->summary())); 428 addTag("h2",i18n( "Remote: " ) +deTag(event->summary()));
418 } 429 }
419 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); 430 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) );
420 if ( mColorMode ) 431 if ( mColorMode )
421 mText += "</font>"; 432 mText += "</font>";
422 } 433 }
423 mMailSubject += i18n( "Todo " )+ event->summary(); 434 mMailSubject += i18n( "Todo " )+ event->summary();
424 435
425 if ( event->percentComplete() == 100 && event->hasCompletedDate() ) { 436 if ( event->percentComplete() == 100 && event->hasCompletedDate() ) {
426 mText +="<font color=\"#B00000\">"; 437 mText +="<font color=\"#B00000\">";
427 addTag("i", i18n("<p><i>Completed on %1</i></p>").arg( event->completedStr(KOPrefs::instance()->mShortDateInViewer) ) ); 438 addTag("i", i18n("<p><i>Completed on %1</i></p>").arg( event->completedStr(KOPrefs::instance()->mShortDateInViewer) ) );
428 mText += "</font>"; 439 mText += "</font>";
429 } else { 440 } else {
430 mText.append(i18n("<p><i>%1 % completed</i></p>") 441 mText.append(i18n("<p><i>%1 % completed</i></p>")
431 .arg(event->percentComplete())); 442 .arg(event->percentComplete()));
432 } 443 }
433 444
434 if (event->cancelled ()) { 445 if (event->cancelled ()) {
435 mText +="<font color=\"#B00000\">"; 446 mText +="<font color=\"#B00000\">";
436 addTag("i",i18n("This todo has been cancelled!")); 447 addTag("i",i18n("This todo has been cancelled!"));
437 mText.append("<br>"); 448 mText.append("<br>");
438 mText += "</font>"; 449 mText += "</font>";
439 mMailSubject += i18n("(cancelled)"); 450 mMailSubject += i18n("(cancelled)");
440 } 451 }
441 452
442 if (!event->location().isEmpty()) { 453 if (!event->location().isEmpty()) {
443 addTag("b",i18n("Location: ")); 454 addTag("b",i18n("Location: "));
444 mText.append(deTag(event->location())+"<br>"); 455 mText.append(deTag(event->location())+"<br>");
445 mMailSubject += i18n(" at ") + event->location(); 456 mMailSubject += i18n(" at ") + event->location();
446 } 457 }
447 458
448 if (event->recurrence()->doesRecur()) { 459 if (event->recurrence()->doesRecur()) {
449 460
450 QString recurText = event->recurrence()->recurrenceText(); 461 QString recurText = event->recurrence()->recurrenceText();
451 addTag("p","<em>" + i18n("This is a %1 recurring todo.").arg(recurText ) + "</em>"); 462 addTag("p","<em>" + i18n("This is a %1 recurring todo.").arg(recurText ) + "</em>");
452 463
453 } 464 }
454 if (event->hasStartDate()) { 465 if (event->hasStartDate()) {
455 mText.append(i18n("<p><b>Start on:</b> %1</p>").arg(event->dtStartStr(KOPrefs::instance()->mShortDateInViewer))); 466 mText.append(i18n("<p><b>Start on:</b> %1</p>").arg(event->dtStartStr(KOPrefs::instance()->mShortDateInViewer)));
456 } 467 }
457 if (event->hasDueDate()) { 468 if (event->hasDueDate()) {
458 mText.append(i18n("<p><b>Due on:</b> %1</p>").arg(event->dtDueStr(KOPrefs::instance()->mShortDateInViewer))); 469 mText.append(i18n("<p><b>Due on:</b> %1</p>").arg(event->dtDueStr(KOPrefs::instance()->mShortDateInViewer)));
459 mMailSubject += i18n(" - " )+event->dtDueStr( true ); 470 mMailSubject += i18n(" - " )+event->dtDueStr( true );
460 } 471 }
461 addTag("b",i18n("Access: ")); 472 addTag("b",i18n("Access: "));
462 mText.append(event->secrecyStr()+"<br>"); 473 mText.append(event->secrecyStr()+"<br>");
463 if ( KOPrefs::instance()->mEVshowDetails ) { 474 if ( KOPrefs::instance()->mEVshowDetails ) {
464 if (!event->description().isEmpty()) { 475 if (!event->description().isEmpty()) {
465 addTag("p",i18n("<b>Details: </b>")); 476 addTag("p",i18n("<b>Details: </b>"));
466 addTag("p",deTag(event->description())); 477 addTag("p",deTag(event->description()));
467 } 478 }
468 } 479 }
469 480
470 formatCategories(event); 481 formatCategories(event);
471 482
472 mText.append(i18n("<p><b>Priority:</b> %2</p>") 483 mText.append(i18n("<p><b>Priority:</b> %2</p>")
473 .arg(QString::number(event->priority()))); 484 .arg(QString::number(event->priority())));
474 485
475 formatReadOnly(event); 486 formatReadOnly(event);
476 formatAttendees(event); 487 formatAttendees(event);
477 if ( event->relatedTo() ) { 488 if ( event->relatedTo() ) {
478 addTag("b",i18n("Parent todo:<br>")); 489 addTag("b",i18n("Parent todo:<br>"));
479 mText.append(deTag(event->relatedTo()->summary())+" [" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] <br>"); 490 mText.append(deTag(event->relatedTo()->summary())+" [" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] <br>");
480 } 491 }
481 QPtrList<Incidence> Relations = event->relations(); 492 QPtrList<Incidence> Relations = event->relations();
482 Incidence *to; 493 Incidence *to;
483 if ( Relations.first() ) 494 if ( Relations.first() )
484 addTag("b",i18n("Sub todos:<br>")); 495 addTag("b",i18n("Sub todos:<br>"));
485 for (to=Relations.first();to;to=Relations.next()) { 496 for (to=Relations.first();to;to=Relations.next()) {
486 mText.append( deTag(to->summary())+" [" +QString::number(to->priority()) + "/" + QString::number(((Todo*)to)->percentComplete())+"%]<br>"); 497 mText.append( deTag(to->summary())+" [" +QString::number(to->priority()) + "/" + QString::number(((Todo*)to)->percentComplete())+"%]<br>");
487 498
488 } 499 }
489 if ( KOPrefs::instance()->mEVshowCreated ) { 500 if ( KOPrefs::instance()->mEVshowCreated ) {
490 addTag("p",i18n("<b>Created: ") +" </b>"); 501 addTag("p",i18n("<b>Created: ") +" </b>");
491 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate )); 502 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate ));
492 503
493 } 504 }
494 if ( KOPrefs::instance()->mEVshowChanged ) { 505 if ( KOPrefs::instance()->mEVshowChanged ) {
495 addTag("p",i18n("<b>Last modified: ") +" </b>"); 506 addTag("p",i18n("<b>Last modified: ") +" </b>");
496 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate )); 507 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ));
497 508
498 } 509 }
499 setText(mText); 510 setText(mText);
500} 511}
501 512
502void KOEventViewer::formatCategories(Incidence *event) 513void KOEventViewer::formatCategories(Incidence *event)
503{ 514{
504 if (!event->categoriesStr().isEmpty()) { 515 if (!event->categoriesStr().isEmpty()) {
505 if (event->categories().count() == 1) { 516 if (event->categories().count() == 1) {
506 addTag("h3",i18n("Category")); 517 addTag("h3",i18n("Category"));
507 } else { 518 } else {
508 addTag("h3",i18n("Categories")); 519 addTag("h3",i18n("Categories"));
509 } 520 }
510 addTag("p",event->categoriesStr()); 521 addTag("p",event->categoriesStr());
511 } 522 }
512} 523}
513void KOEventViewer::formatAttendees(Incidence *event) 524void KOEventViewer::formatAttendees(Incidence *event)
514{ 525{
515 QPtrList<Attendee> attendees = event->attendees(); 526 QPtrList<Attendee> attendees = event->attendees();
516 if (attendees.count()) { 527 if (attendees.count()) {
517 528
518 529
519 QString iconPath = KGlobal::iconLoader()->iconPath("mailappt",KIcon::Small); 530 QString iconPath = KGlobal::iconLoader()->iconPath("mailappt",KIcon::Small);
520 QString NOiconPath = KGlobal::iconLoader()->iconPath("nomailappt",KIcon::Small); 531 QString NOiconPath = KGlobal::iconLoader()->iconPath("nomailappt",KIcon::Small);
521 addTag("h3",i18n("Organizer")); 532 addTag("h3",i18n("Organizer"));
522 mText.append("<ul><li>"); 533 mText.append("<ul><li>");
523#ifndef KORG_NOKABC 534#ifndef KORG_NOKABC
524 535
525#ifdef DESKTOP_VERSION 536#ifdef DESKTOP_VERSION
526 KABC::AddressBook *add_book = KABC::StdAddressBook::self(); 537 KABC::AddressBook *add_book = KABC::StdAddressBook::self();
527 KABC::Addressee::List addressList; 538 KABC::Addressee::List addressList;
528 addressList = add_book->findByEmail(event->organizer()); 539 addressList = add_book->findByEmail(event->organizer());
529 KABC::Addressee o = addressList.first(); 540 KABC::Addressee o = addressList.first();
530 if (!o.isEmpty() && addressList.size()<2) { 541 if (!o.isEmpty() && addressList.size()<2) {
531 mText += "<a href=\"uid:" + o.uid() + "\">"; 542 mText += "<a href=\"uid:" + o.uid() + "\">";
532 mText += o.formattedName(); 543 mText += o.formattedName();
533 mText += "</a>\n"; 544 mText += "</a>\n";
534 } else { 545 } else {
535 mText.append(event->organizer()); 546 mText.append(event->organizer());
536 } 547 }
537#else //DESKTOP_VERSION 548#else //DESKTOP_VERSION
538 mText += "<a href=\"uid:organizer\">"; 549 mText += "<a href=\"uid:organizer\">";
539 mText += event->organizer(); 550 mText += event->organizer();
540 mText += "</a>\n"; 551 mText += "</a>\n";
541#endif //DESKTOP_VERSION 552#endif //DESKTOP_VERSION
542 553
543 554
544#else 555#else
545 mText.append(event->organizer()); 556 mText.append(event->organizer());
546#endif 557#endif
547 558
548 if (iconPath) { 559 if (iconPath) {
549 mText += " <a href=\"mailto:" + event->organizer() + "\">"; 560 mText += " <a href=\"mailto:" + event->organizer() + "\">";
550 mText += "<IMG src=\"" + iconPath + "\">"; 561 mText += "<IMG src=\"" + iconPath + "\">";
551 mText += "</a>\n"; 562 mText += "</a>\n";
552 } 563 }
553 mText.append("</li></ul>"); 564 mText.append("</li></ul>");
554 565
555 addTag("h3",i18n("Attendees")); 566 addTag("h3",i18n("Attendees"));
556 Attendee *a; 567 Attendee *a;
557 mText.append("<ul>"); 568 mText.append("<ul>");
558 int a_count = 0; 569 int a_count = 0;
559 int a_count_nr = 0; 570 int a_count_nr = 0;
560 571
561 for(a=attendees.first();a;a=attendees.next()) { 572 for(a=attendees.first();a;a=attendees.next()) {
562#ifndef KORG_NOKABC 573#ifndef KORG_NOKABC
563#ifdef DESKTOP_VERSION 574#ifdef DESKTOP_VERSION
564 if (a->name().isEmpty()) { 575 if (a->name().isEmpty()) {
565 addressList = add_book->findByEmail(a->email()); 576 addressList = add_book->findByEmail(a->email());
566 KABC::Addressee o = addressList.first(); 577 KABC::Addressee o = addressList.first();
567 if (!o.isEmpty() && addressList.size()<2) { 578 if (!o.isEmpty() && addressList.size()<2) {
568 mText += "<a href=\"uid:" + o.uid() + "\">"; 579 mText += "<a href=\"uid:" + o.uid() + "\">";
569 mText += o.formattedName(); 580 mText += o.formattedName();
570 mText += "</a>\n"; 581 mText += "</a>\n";
571 } else { 582 } else {
572 mText += "<li>"; 583 mText += "<li>";
573 mText.append(a->email()); 584 mText.append(a->email());
574 mText += "\n"; 585 mText += "\n";
575 } 586 }
576 } else { 587 } else {
577 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 588 mText += "<li><a href=\"uid:" + a->uid() + "\">";
578 if (!a->name().isEmpty()) mText += a->name(); 589 if (!a->name().isEmpty()) mText += a->name();
579 else mText += a->email(); 590 else mText += a->email();
580 mText += "</a>\n"; 591 mText += "</a>\n";
581 } 592 }
582#else //DESKTOP_VERSION 593#else //DESKTOP_VERSION
583 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 594 mText += "<li><a href=\"uid:" + a->uid() + "\">";
584 if (!a->name().isEmpty()) mText += a->name(); 595 if (!a->name().isEmpty()) mText += a->name();
585 else mText += a->email(); 596 else mText += a->email();
586 mText += "</a>\n"; 597 mText += "</a>\n";
587#endif //DESKTOP_VERSION 598#endif //DESKTOP_VERSION
588#else 599#else
589 //qDebug("nokabc "); 600 //qDebug("nokabc ");
590 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 601 mText += "<li><a href=\"uid:" + a->uid() + "\">";
591 if (!a->name().isEmpty()) mText += a->name(); 602 if (!a->name().isEmpty()) mText += a->name();
592 else mText += a->email(); 603 else mText += a->email();
593 mText += "</a>\n"; 604 mText += "</a>\n";
594#endif 605#endif
595 606
596 607
597 if (!a->email().isEmpty()) { 608 if (!a->email().isEmpty()) {
598 if (iconPath) { 609 if (iconPath) {
599 mText += "<a href=\"mailto:" + a->name() +" <" + a->email() + ">:" + mMailSubject + "\">"; 610 mText += "<a href=\"mailto:" + a->name() +" <" + a->email() + ">:" + mMailSubject + "\">";
600 if ( a->RSVP() ) { 611 if ( a->RSVP() ) {
601 ++a_count_nr; 612 ++a_count_nr;
602 mText += "<IMG src=\"" + iconPath + "\">"; 613 mText += "<IMG src=\"" + iconPath + "\">";
603 } 614 }
604 else { 615 else {
605 ++a_count; 616 ++a_count;
606 mText += "<IMG src=\"" + NOiconPath + "\">"; 617 mText += "<IMG src=\"" + NOiconPath + "\">";
607 } 618 }
608 mText += "</a>\n"; 619 mText += "</a>\n";
609 } 620 }
610 } 621 }
611 if (a->status() != Attendee::NeedsAction ) 622 if (a->status() != Attendee::NeedsAction )
612 mText +="[" + a->statusStr() + "] "; 623 mText +="[" + a->statusStr() + "] ";
613 if (a->role() == Attendee::Chair ) 624 if (a->role() == Attendee::Chair )
614 mText +="(" + a->roleStr().left(1) + ".)"; 625 mText +="(" + a->roleStr().left(1) + ".)";
615 } 626 }
616 mText.append("</li></ul>"); 627 mText.append("</li></ul>");
617 if ( (a_count+a_count_nr) > 1 ) { 628 if ( (a_count+a_count_nr) > 1 ) {
618 mText += "<a href=\"mailto:ALL\">"; 629 mText += "<a href=\"mailto:ALL\">";
619 mText += i18n( "Mail to all" ); 630 mText += i18n( "Mail to all" );
620 mText += "</a> ( "; 631 mText += "</a> ( ";
621 mText += "<IMG src=\"" + iconPath + "\">"; 632 mText += "<IMG src=\"" + iconPath + "\">";
622 mText += i18n( " and " ); 633 mText += i18n( " and " );
623 mText += "<IMG src=\"" + NOiconPath + "\"> )"; 634 mText += "<IMG src=\"" + NOiconPath + "\"> )";
624 mText += "<br>\n"; 635 mText += "<br>\n";
625 636
626 637
627 } 638 }
628 if ( a_count_nr > 1 ) { 639 if ( a_count_nr > 1 ) {
629 mText += "<a href=\"mailto:RSVP\">"; 640 mText += "<a href=\"mailto:RSVP\">";
630 mText += i18n( "Mail to selected" ); 641 mText += i18n( "Mail to selected" );
631 mText += "</a> ( "; 642 mText += "</a> ( ";
632 mText += i18n( "<IMG src=\"%1\"> only )").arg ( iconPath ); 643 mText += i18n( "<IMG src=\"%1\"> only )").arg ( iconPath );
633 mText += "<br>\n"; 644 mText += "<br>\n";
634 } 645 }
635 } 646 }
636 647
637} 648}
638void KOEventViewer::appendJournal(Journal *jour, int mode ) 649void KOEventViewer::appendJournal(Journal *jour, int mode )
639{ 650{
640 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 651 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
641 if (mode == 0 ) { 652 if (mode == 0 ) {
642 addTag("h2",i18n("Journal from: ")); 653 addTag("h2",i18n("Journal from: "));
643 } 654 }
644 else { 655 else {
645 if ( mode == 1 ) { 656 if ( mode == 1 ) {
646 addTag("h2",i18n( "Local: " ) +i18n("Journal from: ")); 657 addTag("h2",i18n( "Local: " ) +i18n("Journal from: "));
647 } else { 658 } else {
648 addTag("h2",i18n( "Remote: " ) +i18n("Journal from: ")); 659 addTag("h2",i18n( "Remote: " ) +i18n("Journal from: "));
649 } 660 }
650 } 661 }
651 topLevelWidget()->setCaption("Journal Viewer"); 662 topLevelWidget()->setCaption("Journal Viewer");
652 mText.append(i18n("<h3> %1 </h3> ").arg(jour->dtStartDateStr(KOPrefs::instance()->mShortDateInViewer))); 663 mText.append(i18n("<h3> %1 </h3> ").arg(jour->dtStartDateStr(KOPrefs::instance()->mShortDateInViewer)));
653 addTag("b",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(jour->lastModified(),shortDate ) ); 664 addTag("b",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(jour->lastModified(),shortDate ) );
654 if (!jour->description().isEmpty()) { 665 if (!jour->description().isEmpty()) {
655 addTag("p",deTag(jour->description())); 666 addTag("p",deTag(jour->description()));
656 } 667 }
657 setText(mText); 668 setText(mText);
658} 669}
659 670
660void KOEventViewer::formatReadOnly(Incidence *event) 671void KOEventViewer::formatReadOnly(Incidence *event)
661{ 672{
662 if (event->isReadOnly()) { 673 if (event->isReadOnly()) {
663 addTag("p","<em>(" + i18n("read-only") + ")</em>"); 674 addTag("p","<em>(" + i18n("read-only") + ")</em>");
664 } 675 }
665} 676}
666void KOEventViewer::setSyncMode( bool b ) 677void KOEventViewer::setSyncMode( bool b )
667{ 678{
668 mSyncMode = b; 679 mSyncMode = b;
669} 680}
670 681
671void KOEventViewer::setTodo(Todo *event, bool clearV ) 682void KOEventViewer::setTodo(Todo *event, bool clearV )
672{ 683{
673 if ( clearV ) 684 if ( clearV )
674 clearEvents(); 685 clearEvents();
675 if ( mSyncMode ) { 686 if ( mSyncMode ) {
676 if ( clearV ) 687 if ( clearV )
677 appendTodo(event,1 ); 688 appendTodo(event,1 );
678 else 689 else
679 appendTodo(event,2); 690 appendTodo(event,2);
680 } else 691 } else
681 appendTodo(event); 692 appendTodo(event);
682} 693}
683void KOEventViewer::setJournal(Journal *event, bool clearV ) 694void KOEventViewer::setJournal(Journal *event, bool clearV )
684{ 695{
685 if ( clearV ) 696 if ( clearV )
686 clearEvents(); 697 clearEvents();
687 if ( mSyncMode ) { 698 if ( mSyncMode ) {
688 if ( clearV ) 699 if ( clearV )
689 appendJournal(event, 1); 700 appendJournal(event, 1);
690 else 701 else
691 appendJournal(event, 2); 702 appendJournal(event, 2);
692 } else 703 } else
693 appendJournal(event); 704 appendJournal(event);
694} 705}
695 706
696void KOEventViewer::setEvent(Event *event) 707void KOEventViewer::setEvent(Event *event)
697{ 708{
698 clearEvents(); 709 clearEvents();
699 if ( mSyncMode ) 710 if ( mSyncMode )
700 appendEvent(event, 1); 711 appendEvent(event, 1);
701 else 712 else
702 appendEvent(event); 713 appendEvent(event);
703} 714}
704 715
705void KOEventViewer::addEvent(Event *event) 716void KOEventViewer::addEvent(Event *event)
706{ 717{
707 if ( mSyncMode ) 718 if ( mSyncMode )
708 appendEvent(event, 2); 719 appendEvent(event, 2);
709 else 720 else
710 appendEvent(event); 721 appendEvent(event);
711} 722}
712 723
713void KOEventViewer::clearEvents(bool now) 724void KOEventViewer::clearEvents(bool now)
714{ 725{
715 mText = ""; 726 mText = "";
716 if (now) setText(mText); 727 if (now) setText(mText);
717} 728}
718 729
719void KOEventViewer::addText(QString text) 730void KOEventViewer::addText(QString text)
720{ 731{
721 mText.append(text); 732 mText.append(text);
722 setText(mText); 733 setText(mText);
723} 734}
724QString KOEventViewer::deTag(QString text) 735QString KOEventViewer::deTag(QString text)
725{ 736{
726#if QT_VERSION >= 0x030000 737#if QT_VERSION >= 0x030000
727 text.replace( '<' , "&lt;" ); 738 text.replace( '<' , "&lt;" );
728 text.replace( '>' , "&gt;" ); 739 text.replace( '>' , "&gt;" );
729#else 740#else
730 if ( text.find ('<') >= 0 ) { 741 if ( text.find ('<') >= 0 ) {
731 text.replace( QRegExp("<") , "&lt;" ); 742 text.replace( QRegExp("<") , "&lt;" );
732 } 743 }
733 if ( text.find ('>') >= 0 ) { 744 if ( text.find ('>') >= 0 ) {
734 text.replace( QRegExp(">") , "&gt;" ); 745 text.replace( QRegExp(">") , "&gt;" );
735 } 746 }
736#endif 747#endif
737 return text; 748 return text;
738} 749}
739void KOEventViewer::keyPressEvent ( QKeyEvent * e ) 750void KOEventViewer::keyPressEvent ( QKeyEvent * e )
740{ 751{
741 switch ( e->key() ) { 752 switch ( e->key() ) {
742 case Qt::Key_Return: 753 case Qt::Key_Return:
743 case Qt::Key_Enter : 754 case Qt::Key_Enter :
744 e->ignore(); 755 e->ignore();
745 break; 756 break;
746 default: 757 default:
747 QTextBrowser::keyPressEvent ( e ); 758 QTextBrowser::keyPressEvent ( e );
748 break; 759 break;
749 } 760 }
750} 761}
diff --git a/korganizer/koeventviewer.h b/korganizer/koeventviewer.h
index ca5bc15..6ecc233 100644
--- a/korganizer/koeventviewer.h
+++ b/korganizer/koeventviewer.h
@@ -1,78 +1,131 @@
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#ifndef KOEVENTVIEWER_H 19#ifndef KOEVENTVIEWER_H
20#define KOEVENTVIEWER_H 20#define KOEVENTVIEWER_H
21// 21//
22// Viewer widget for events. 22// Viewer widget for events.
23// 23//
24 24
25#include <qtextbrowser.h> 25#include <qtextbrowser.h>
26 26
27#include <libkcal/event.h> 27#include <libkcal/event.h>
28#include <libkcal/journal.h> 28#include <libkcal/journal.h>
29 29
30 30
31using namespace KCal; 31using namespace KCal;
32 32
33#ifdef DESKTOP_VERSION
34
35#include <qradiobutton.h>
36#include <qpushbutton.h>
37#include <qlayout.h>
38#include <qdialog.h>
39#include <qlabel.h>
40#include <qbuttongroup.h>
41#include <kglobal.h>
42
43class KOPrintPrefs : public QDialog
44{
45 public:
46 KOPrintPrefs( QWidget *parent=0, const char *name=0 ) :
47 QDialog( parent, name, true )
48 {
49 setCaption( i18n("KO/Pi Printout") );
50 QVBoxLayout* lay = new QVBoxLayout( this );
51 lay->setSpacing( 3 );
52 lay->setMargin( 3 );
53 QLabel * lab = new QLabel( i18n("This prints the view as you see it.\n(With the complete content, of course.)\nYou may change the print layout by resizing the view.\nPrint unscaled may print several pages\ndepending on the amount of data.\nPrint scaled down will print all on one page.\nPrint scaled up/down will print all on one page,\nbut will scale up the text to page boundaries,\nif the text is smaller than the page.\nYou can select page geometry setup in the next dialog."), this );
54 lay->addWidget( lab );
55 QButtonGroup* format = new QButtonGroup( 1, Horizontal, i18n("Printout Mode"), this );
56 lay->addWidget( format );
57 format->setExclusive ( true ) ;
58 pmNo = new QRadioButton(i18n("Print unscaled"), format );
59 pmScaledDown = new QRadioButton(i18n("Print scaled down to fit one page"), format );
60 new QRadioButton(i18n("Print scaled up/down to fit one page"), format );
61 pmScaledDown->setChecked( true );
62 QPushButton * ok = new QPushButton( i18n("OK"), this );
63 lay->addWidget( ok );
64 QPushButton * cancel = new QPushButton( i18n("Cancel"), this );
65 lay->addWidget( cancel );
66 connect ( ok,SIGNAL(clicked() ),this , SLOT ( accept() ) );
67 connect (cancel, SIGNAL(clicked() ), this, SLOT ( reject()) );
68 resize( 200, 200 );
69 }
70
71 int printMode()
72 {
73 if ( pmNo->isChecked() )
74 return 0;
75 if ( pmScaledDown->isChecked() )
76 return 1;
77 return 2;
78 }
79private:
80 QRadioButton* pmNo;
81 QRadioButton* pmScaledDown;
82};
83
84#endif
85
33class KOEventViewer : public QTextBrowser { 86class KOEventViewer : public QTextBrowser {
34 Q_OBJECT 87 Q_OBJECT
35 public: 88 public:
36 KOEventViewer(QWidget *parent=0,const char *name=0); 89 KOEventViewer(QWidget *parent=0,const char *name=0);
37 virtual ~KOEventViewer(); 90 virtual ~KOEventViewer();
38 91
39 void setSource(const QString &); 92 void setSource(const QString &);
40 void setEvent(Event *event); 93 void setEvent(Event *event);
41 void addEvent(Event *event); 94 void addEvent(Event *event);
42 void setTodo(Todo *event, bool clearV = true ); 95 void setTodo(Todo *event, bool clearV = true );
43 void setJournal(Journal *jour, bool clearV = true ); 96 void setJournal(Journal *jour, bool clearV = true );
44 97
45 void appendEvent(Event *event, int mode = 0 ); 98 void appendEvent(Event *event, int mode = 0 );
46 void appendTodo(Todo *event, int mode = 0 ); 99 void appendTodo(Todo *event, int mode = 0 );
47 void appendJournal(Journal *jour, int mode = 0 ); 100 void appendJournal(Journal *jour, int mode = 0 );
48 101
49 void clearEvents(bool now=false); 102 void clearEvents(bool now=false);
50 103
51 void addText(QString text); 104 void addText(QString text);
52 void setSyncMode( bool ); 105 void setSyncMode( bool );
53 void setColorMode( int ); 106 void setColorMode( int );
54 void mailToAttendees( bool all ); 107 void mailToAttendees( bool all );
55 void printMe(); 108 void printMe();
56 109
57 protected: 110 protected:
58 int mColorMode; 111 int mColorMode;
59 void addTag(const QString & tag,const QString & text); 112 void addTag(const QString & tag,const QString & text);
60 113
61 void formatCategories(Incidence *event); 114 void formatCategories(Incidence *event);
62 void formatAttendees(Incidence *event); 115 void formatAttendees(Incidence *event);
63 void formatReadOnly(Incidence *event); 116 void formatReadOnly(Incidence *event);
64 void keyPressEvent ( QKeyEvent * e ); 117 void keyPressEvent ( QKeyEvent * e );
65 118
66 private: 119 private:
67 QTextBrowser *mEventTextView; 120 QTextBrowser *mEventTextView;
68 bool mSyncMode; 121 bool mSyncMode;
69 QString deTag(QString text); 122 QString deTag(QString text);
70 123
71 QString mText; 124 QString mText;
72 QString mMailSubject; 125 QString mMailSubject;
73 Incidence* mCurrentIncidence; 126 Incidence* mCurrentIncidence;
74 signals: 127 signals:
75 void launchaddressbook(QString uid); 128 void launchaddressbook(QString uid);
76}; 129};
77 130
78#endif 131#endif
diff --git a/korganizer/koeventviewerdialog.cpp b/korganizer/koeventviewerdialog.cpp
index ec55cca..35d084d 100644
--- a/korganizer/koeventviewerdialog.cpp
+++ b/korganizer/koeventviewerdialog.cpp
@@ -1,316 +1,308 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,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 <klocale.h> 20#include <klocale.h>
21 21
22#include <libkcal/event.h> 22#include <libkcal/event.h>
23#include <qtimer.h> 23#include <qtimer.h>
24#include <qpushbutton.h> 24#include <qpushbutton.h>
25 25
26#include "koeventviewer.h" 26#include "koeventviewer.h"
27#include <kmessagebox.h> 27#include <kmessagebox.h>
28#include "koprefs.h" 28#include "koprefs.h"
29#include <libkcal/todo.h> 29#include <libkcal/todo.h>
30#include "qapp.h" 30#include "qapp.h"
31 31
32#include "koeventviewerdialog.h" 32#include "koeventviewerdialog.h"
33extern int globalFlagBlockAgenda; 33extern int globalFlagBlockAgenda;
34 34
35KOEventViewerDialog::KOEventViewerDialog(QWidget *parent,const char *name) 35KOEventViewerDialog::KOEventViewerDialog(QWidget *parent,const char *name)
36 : KDialogBase(parent,name, 36 : KDialogBase(parent,name,
37#ifndef DESKTOP_VERSION 37#ifndef DESKTOP_VERSION
38 true , 38 true ,
39#else 39#else
40 false, 40 false,
41#endif 41#endif
42 i18n("Event Viewer"),Ok|User1|Close,Close, false, i18n("Agenda")) 42 i18n("Event Viewer"),Ok|User1|Close,Close, false, i18n("Agenda"))
43{ 43{
44 sendSignalViewerClosed = true; 44 sendSignalViewerClosed = true;
45 mEventViewer = new KOEventViewer(this); 45 mEventViewer = new KOEventViewer(this);
46 mEventViewer->setFont( KOPrefs::instance()->mEventViewFont ); 46 mEventViewer->setFont( KOPrefs::instance()->mEventViewFont );
47 setMainWidget(mEventViewer); 47 setMainWidget(mEventViewer);
48 setButtonText(Ok, i18n("Edit") ); 48 setButtonText(Ok, i18n("Edit") );
49 49
50 QObject::connect(findButton( Ok ),SIGNAL(clicked()), 50 QObject::connect(findButton( Ok ),SIGNAL(clicked()),
51 SLOT(editIncidence())); 51 SLOT(editIncidence()));
52 QObject::connect(this,SIGNAL(user1Clicked()), 52 QObject::connect(this,SIGNAL(user1Clicked()),
53 SLOT(showIncidence())); 53 SLOT(showIncidence()));
54 mIncidence = 0; 54 mIncidence = 0;
55 // TODO: Set a sensible size (based on the content?). 55 // TODO: Set a sensible size (based on the content?).
56 //showMaximized(); 56 //showMaximized();
57 //qDebug("++++++++++++KOEventViewerDialog() "); 57 //qDebug("++++++++++++KOEventViewerDialog() ");
58 // if ( KOPrefs::instance()->mCompactDialogs ) { 58 // if ( KOPrefs::instance()->mCompactDialogs ) {
59// setFixedSize( 240,284 ); 59// setFixedSize( 240,284 );
60// move( 0, 15 ); 60// move( 0, 15 );
61// } else { 61// } else {
62// setMinimumSize(300,200); 62// setMinimumSize(300,200);
63// resize(320,300); 63// resize(320,300);
64// } 64// }
65 mSyncMode = false; 65 mSyncMode = false;
66 mSyncResult = 0; 66 mSyncResult = 0;
67 67
68} 68}
69 69
70KOEventViewerDialog::~KOEventViewerDialog() 70KOEventViewerDialog::~KOEventViewerDialog()
71{ 71{
72 //qDebug("-------~KOEventViewerDialog() "); 72 //qDebug("-------~KOEventViewerDialog() ");
73} 73}
74void KOEventViewerDialog::showMe() 74void KOEventViewerDialog::showMe()
75{ 75{
76 76
77#ifdef DESKTOP_VERSION 77#ifdef DESKTOP_VERSION
78 int x,y,w,h; 78 int x,y,w,h;
79 x = geometry().x(); 79 x = geometry().x();
80 y = geometry().y(); 80 y = geometry().y();
81 w = width(); 81 w = width();
82 h = height(); 82 h = height();
83 show(); 83 show();
84 setGeometry(x,y,w,h); 84 setGeometry(x,y,w,h);
85#else 85#else
86 showMaximized(); 86 showMaximized();
87#endif 87#endif
88 raise(); 88 raise();
89 setActiveWindow(); 89 setActiveWindow();
90 mEventViewer->setFocus(); 90 mEventViewer->setFocus();
91 //raise(); 91 //raise();
92 92
93} 93}
94void KOEventViewerDialog::print() 94void KOEventViewerDialog::print()
95{ 95{
96 qDebug("PRINT ");
97 int km = KMessageBox::warningContinueCancel(this,mIncidence->summary().left(35) +
98 i18n("\n\nDo you really want to print this item?"),
99 i18n("KO/Pi Print Confirmation"),i18n("Print"));
100 if ( km != KMessageBox::Continue ) {
101 qDebug("cancel ");
102 return;
103 }
104 mEventViewer->printMe(); 96 mEventViewer->printMe();
105 97
106} 98}
107void KOEventViewerDialog::setSyncMode( bool b ) 99void KOEventViewerDialog::setSyncMode( bool b )
108{ 100{
109 mSyncMode = b; 101 mSyncMode = b;
110 //qDebug("KOEventViewerDialog::setSyncMode %d ",mSyncMode ); 102 //qDebug("KOEventViewerDialog::setSyncMode %d ",mSyncMode );
111 if ( mSyncMode ) { 103 if ( mSyncMode ) {
112 findButton( Close )->setText( i18n("Cancel Sync")); 104 findButton( Close )->setText( i18n("Cancel Sync"));
113 findButton( Ok )->setText( i18n("Remote")); 105 findButton( Ok )->setText( i18n("Remote"));
114 findButton( User1 )->setText( i18n("Local")); 106 findButton( User1 )->setText( i18n("Local"));
115 } else { 107 } else {
116 findButton( Close )->setText( i18n("Close")); 108 findButton( Close )->setText( i18n("Close"));
117 findButton( Ok )->setText( i18n("Edit")); 109 findButton( Ok )->setText( i18n("Edit"));
118 findButton( User1 )->setText( i18n("Agenda")); 110 findButton( User1 )->setText( i18n("Agenda"));
119 } 111 }
120 mEventViewer->setSyncMode( b ); 112 mEventViewer->setSyncMode( b );
121} 113}
122void KOEventViewerDialog::setColorMode( int m ) 114void KOEventViewerDialog::setColorMode( int m )
123{ 115{
124 mEventViewer->setColorMode( m ); 116 mEventViewer->setColorMode( m );
125} 117}
126int KOEventViewerDialog::executeS( bool local ) 118int KOEventViewerDialog::executeS( bool local )
127{ 119{
128 mSyncResult = 3; 120 mSyncResult = 3;
129 if ( local ) 121 if ( local )
130 findButton( User1 )->setFocus(); 122 findButton( User1 )->setFocus();
131 else 123 else
132 findButton( Ok )->setFocus(); 124 findButton( Ok )->setFocus();
133 exec(); 125 exec();
134 return mSyncResult; 126 return mSyncResult;
135} 127}
136 128
137void KOEventViewerDialog::updateConfig() 129void KOEventViewerDialog::updateConfig()
138{ 130{
139 mEventViewer->setFont( KOPrefs::instance()->mEventViewFont ); 131 mEventViewer->setFont( KOPrefs::instance()->mEventViewFont );
140 132
141} 133}
142void KOEventViewerDialog::setEvent(Event *event) 134void KOEventViewerDialog::setEvent(Event *event)
143{ 135{
144 mEventViewer->setEvent(event); 136 mEventViewer->setEvent(event);
145 mIncidence = event; 137 mIncidence = event;
146 mEventViewer->setFocus(); 138 mEventViewer->setFocus();
147 //findButton( Close )->setFocus(); 139 //findButton( Close )->setFocus();
148 if ( !mSyncMode ) { 140 if ( !mSyncMode ) {
149 findButton( User1 )->setText( i18n("Agenda")); 141 findButton( User1 )->setText( i18n("Agenda"));
150 } 142 }
151} 143}
152void KOEventViewerDialog::setIncidence(Incidence *in ) 144void KOEventViewerDialog::setIncidence(Incidence *in )
153{ 145{
154 if ( in->type() == "Event" ) 146 if ( in->type() == "Event" )
155 setEvent( (Event*) in ); 147 setEvent( (Event*) in );
156 else if ( in->type() =="Todo" ) 148 else if ( in->type() =="Todo" )
157 setTodo( (Todo*) in ); 149 setTodo( (Todo*) in );
158 else if ( in->type() =="Journal" ) 150 else if ( in->type() =="Journal" )
159 setJournal( (Journal*) in ); 151 setJournal( (Journal*) in );
160} 152}
161void KOEventViewerDialog::addIncidence(Incidence *in) 153void KOEventViewerDialog::addIncidence(Incidence *in)
162{ 154{
163 if ( in->type() == "Event" ) 155 if ( in->type() == "Event" )
164 addEvent( (Event*) in ); 156 addEvent( (Event*) in );
165 else if ( in->type() =="Todo" ) 157 else if ( in->type() =="Todo" )
166 mEventViewer->setTodo( (Todo*) in, false ); 158 mEventViewer->setTodo( (Todo*) in, false );
167 else if ( in->type() =="Journal" ) 159 else if ( in->type() =="Journal" )
168 mEventViewer->setJournal( (Journal*) in, false ); 160 mEventViewer->setJournal( (Journal*) in, false );
169 if ( mSyncMode ) { 161 if ( mSyncMode ) {
170 findButton( User1 )->setFocus(); 162 findButton( User1 )->setFocus();
171 setCaption(i18n("Conflict! Please choose entry")); 163 setCaption(i18n("Conflict! Please choose entry"));
172 } 164 }
173} 165}
174 166
175void KOEventViewerDialog::addEvent(Event *event) 167void KOEventViewerDialog::addEvent(Event *event)
176{ 168{
177 mEventViewer->addEvent(event); 169 mEventViewer->addEvent(event);
178 mIncidence = event; 170 mIncidence = event;
179 mEventViewer->setFocus(); 171 mEventViewer->setFocus();
180 //findButton( Close )->setFocus(); 172 //findButton( Close )->setFocus();
181 if ( !mSyncMode ) { 173 if ( !mSyncMode ) {
182 findButton( User1 )->setText( i18n("Agenda")); 174 findButton( User1 )->setText( i18n("Agenda"));
183 } 175 }
184} 176}
185 177
186void KOEventViewerDialog::setTodo(Todo *event) 178void KOEventViewerDialog::setTodo(Todo *event)
187{ 179{
188 mEventViewer->setTodo(event); 180 mEventViewer->setTodo(event);
189 mIncidence = (Incidence*)event; 181 mIncidence = (Incidence*)event;
190 mEventViewer->setFocus(); 182 mEventViewer->setFocus();
191 //findButton( Close )->setFocus(); 183 //findButton( Close )->setFocus();
192 if ( !mSyncMode ) { 184 if ( !mSyncMode ) {
193 findButton( User1 )->setText( i18n("Set complete")); 185 findButton( User1 )->setText( i18n("Set complete"));
194 } 186 }
195} 187}
196void KOEventViewerDialog::setJournal(Journal *j) 188void KOEventViewerDialog::setJournal(Journal *j)
197{ 189{
198 mEventViewer->setJournal(j); 190 mEventViewer->setJournal(j);
199 mIncidence = (Incidence*)j; 191 mIncidence = (Incidence*)j;
200 mEventViewer->setFocus(); 192 mEventViewer->setFocus();
201 //findButton( Close )->setFocus(); 193 //findButton( Close )->setFocus();
202 if ( !mSyncMode ) { 194 if ( !mSyncMode ) {
203 findButton( User1 )->setText( i18n("Agenda")); 195 findButton( User1 )->setText( i18n("Agenda"));
204 } 196 }
205} 197}
206 198
207void KOEventViewerDialog::addText(QString text) 199void KOEventViewerDialog::addText(QString text)
208{ 200{
209 mEventViewer->addText(text); 201 mEventViewer->addText(text);
210 mEventViewer->setFocus(); 202 mEventViewer->setFocus();
211 //findButton( Close )->setFocus(); 203 //findButton( Close )->setFocus();
212} 204}
213void KOEventViewerDialog::editIncidence() 205void KOEventViewerDialog::editIncidence()
214{ 206{
215 sendSignalViewerClosed = false; 207 sendSignalViewerClosed = false;
216 if ( mSyncMode ) { 208 if ( mSyncMode ) {
217 mSyncResult = 2; 209 mSyncResult = 2;
218 accept(); 210 accept();
219 return; 211 return;
220 } 212 }
221 if ( mIncidence ){ 213 if ( mIncidence ){
222#ifndef DESKTOP_VERSION 214#ifndef DESKTOP_VERSION
223 hide(); 215 hide();
224#endif 216#endif
225 emit editIncidence( mIncidence ); 217 emit editIncidence( mIncidence );
226 } 218 }
227} 219}
228void KOEventViewerDialog::showIncidence() 220void KOEventViewerDialog::showIncidence()
229{ 221{
230 sendSignalViewerClosed = false; 222 sendSignalViewerClosed = false;
231 if ( mSyncMode ) { 223 if ( mSyncMode ) {
232 mSyncResult = 1; 224 mSyncResult = 1;
233 accept(); 225 accept();
234 return; 226 return;
235 } 227 }
236 228
237 if ( mIncidence ){ 229 if ( mIncidence ){
238#ifndef DESKTOP_VERSION 230#ifndef DESKTOP_VERSION
239 hide(); 231 hide();
240#endif 232#endif
241 QDate date; 233 QDate date;
242 if ( mIncidence->type() == "Todo" ) { 234 if ( mIncidence->type() == "Todo" ) {
243 /* 235 /*
244 if ( ((Todo*)mIncidence)->hasDueDate() ) 236 if ( ((Todo*)mIncidence)->hasDueDate() )
245 date = ((Todo*)mIncidence)->dtDue().date(); 237 date = ((Todo*)mIncidence)->dtDue().date();
246 else { 238 else {
247 globalFlagBlockAgenda = 2; 239 globalFlagBlockAgenda = 2;
248 emit showAgendaView( false ); 240 emit showAgendaView( false );
249 return; 241 return;
250 } 242 }
251 */ 243 */
252 ((Todo*)mIncidence)->setCompleted( true ); 244 ((Todo*)mIncidence)->setCompleted( true );
253 ((Todo*)mIncidence)->setCompleted(QDateTime::currentDateTime() ); 245 ((Todo*)mIncidence)->setCompleted(QDateTime::currentDateTime() );
254 hide(); 246 hide();
255 emit todoCompleted(((Todo*)mIncidence)); 247 emit todoCompleted(((Todo*)mIncidence));
256 return; 248 return;
257 249
258 } else 250 } else
259 date = mIncidence->dtStart().date(); 251 date = mIncidence->dtStart().date();
260 globalFlagBlockAgenda = 1; 252 globalFlagBlockAgenda = 1;
261 emit showAgendaView( false ); 253 emit showAgendaView( false );
262 globalFlagBlockAgenda = 2; 254 globalFlagBlockAgenda = 2;
263 emit jumpToTime( date ); 255 emit jumpToTime( date );
264 } 256 }
265} 257}
266void KOEventViewerDialog::keyPressEvent ( QKeyEvent * e ) 258void KOEventViewerDialog::keyPressEvent ( QKeyEvent * e )
267{ 259{
268 switch ( e->key() ) { 260 switch ( e->key() ) {
269 261
270 case Qt::Key_A : 262 case Qt::Key_A :
271 case Qt::Key_L : 263 case Qt::Key_L :
272 showIncidence(); 264 showIncidence();
273 break; 265 break;
274 case Qt::Key_E : 266 case Qt::Key_E :
275 case Qt::Key_R : 267 case Qt::Key_R :
276 editIncidence(); 268 editIncidence();
277 break; 269 break;
278 case Qt::Key_C: 270 case Qt::Key_C:
279 case Qt::Key_Escape: 271 case Qt::Key_Escape:
280 sendSignalViewerClosed = true; 272 sendSignalViewerClosed = true;
281 close(); 273 close();
282 break; 274 break;
283 case Qt::Key_I: 275 case Qt::Key_I:
284#ifndef DESKTOP_VERSION 276#ifndef DESKTOP_VERSION
285 sendSignalViewerClosed = true; 277 sendSignalViewerClosed = true;
286 close(); 278 close();
287#else 279#else
288 sendSignalViewerClosed = true; 280 sendSignalViewerClosed = true;
289 slotViewerClosed(); 281 slotViewerClosed();
290 //accept(); 282 //accept();
291#endif 283#endif
292 break; 284 break;
293 default: 285 default:
294 KDialogBase::keyPressEvent ( e ); 286 KDialogBase::keyPressEvent ( e );
295 break; 287 break;
296 } 288 }
297 289
298} 290}
299void KOEventViewerDialog::hideEvent ( QHideEvent * e ) 291void KOEventViewerDialog::hideEvent ( QHideEvent * e )
300{ 292{
301 KDialogBase::hideEvent ( e ); 293 KDialogBase::hideEvent ( e );
302 QTimer::singleShot( 1, this, SLOT (slotViewerClosed() ) ); 294 QTimer::singleShot( 1, this, SLOT (slotViewerClosed() ) );
303} 295}
304 296
305void KOEventViewerDialog::slotViewerClosed() 297void KOEventViewerDialog::slotViewerClosed()
306{ 298{
307 if ( mSyncMode ) 299 if ( mSyncMode )
308 return; 300 return;
309 301
310 if ( sendSignalViewerClosed ) { 302 if ( sendSignalViewerClosed ) {
311 //qDebug("KOEventViewerDialog::hideEvent "); 303 //qDebug("KOEventViewerDialog::hideEvent ");
312 emit signalViewerClosed(); 304 emit signalViewerClosed();
313 } 305 }
314 sendSignalViewerClosed = true; 306 sendSignalViewerClosed = true;
315} 307}
316 308
diff --git a/korganizer/kowhatsnextview.cpp b/korganizer/kowhatsnextview.cpp
index 66ff75d..53fe7d0 100644
--- a/korganizer/kowhatsnextview.cpp
+++ b/korganizer/kowhatsnextview.cpp
@@ -1,774 +1,784 @@
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 <qlayout.h> 20#include <qlayout.h>
21#include <qtextbrowser.h> 21#include <qtextbrowser.h>
22#include <qtextcodec.h> 22#include <qtextcodec.h>
23#include <qfileinfo.h> 23#include <qfileinfo.h>
24#include <qlabel.h> 24#include <qlabel.h>
25 25
26#include <qapplication.h> 26#include <qapplication.h>
27#ifdef DESKTOP_VERSION 27#ifdef DESKTOP_VERSION
28#include <qpaintdevicemetrics.h> 28#include <qpaintdevicemetrics.h>
29#endif 29#endif
30#include <kglobal.h> 30#include <kglobal.h>
31#include <klocale.h> 31#include <klocale.h>
32#include <kdebug.h> 32#include <kdebug.h>
33#include <kiconloader.h> 33#include <kiconloader.h>
34#include <kmessagebox.h> 34#include <kmessagebox.h>
35 35
36#include <libkcal/calendar.h> 36#include <libkcal/calendar.h>
37 37
38#ifndef KORG_NOPRINTER 38#ifndef KORG_NOPRINTER
39#include "calprinter.h" 39#include "calprinter.h"
40#endif 40#endif
41#include "koglobals.h" 41#include "koglobals.h"
42#include "koprefs.h" 42#include "koprefs.h"
43#include "koeventviewerdialog.h" 43#include "koeventviewerdialog.h"
44#include "koeventviewer.h"
44#include <qstylesheet.h> 45#include <qstylesheet.h>
45#include "kowhatsnextview.h" 46#include "kowhatsnextview.h"
46using namespace KOrg; 47using namespace KOrg;
47 48
48void WhatsNextTextBrowser::setSource(const QString& n) 49void WhatsNextTextBrowser::setSource(const QString& n)
49{ 50{
50 51
51 if (n.startsWith("event:")) { 52 if (n.startsWith("event:")) {
52 emit showIncidence(n); 53 emit showIncidence(n);
53 return; 54 return;
54 } else if (n.startsWith("todo:")) { 55 } else if (n.startsWith("todo:")) {
55 emit showIncidence(n); 56 emit showIncidence(n);
56 return; 57 return;
57 } else { 58 } else {
58 QTextBrowser::setSource(n); 59 QTextBrowser::setSource(n);
59 } 60 }
60} 61}
61void WhatsNextTextBrowser::printMe() 62void WhatsNextTextBrowser::printMe()
62{ 63{
63#ifdef DESKTOP_VERSION 64#ifdef DESKTOP_VERSION
65 KOPrintPrefs pp ( this );
66 if (!pp.exec() )
67 return;
68 int scaleval = pp.printMode() ;
69
64 QPrinter printer; 70 QPrinter printer;
65 if (!printer.setup() ) 71 if (!printer.setup() )
66 return; 72 return;
67 QPainter p; 73 QPainter p;
68 p.begin ( &printer ); 74 p.begin ( &printer );
69 QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer ); 75 QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer );
70 float dx, dy; 76 float dx, dy;
71 int wid = (m.width() * 9)/10; 77 int wid = (m.width() * 9)/10;
72 dx = (float) wid/(float)contentsWidth (); 78 dx = (float) wid/(float)contentsWidth ();
73 dy = (float)(m.height()) / (float)contentsHeight (); 79 dy = (float)(m.height()) / (float)contentsHeight ();
74 float scale; 80 float scale;
75 // scale to fit the width or height of the paper 81 // scale to fit the width or height of the paper
76 if ( dx < dy ) 82 if ( dx < dy )
77 scale = dx; 83 scale = dx;
78 else 84 else
79 scale = dy; 85 scale = dy;
80 p.translate( m.width()/10,0 ); 86 p.translate( m.width()/10,0 );
81 p.scale( scale, scale ); 87 qDebug("Scale: %f ", scale );
88 if ( scaleval == 2 || scaleval == 1 && scale < 1.0 ) {
89 qDebug("SCALE ");
90 p.scale( scale, scale );
91 }
82 drawContents ( &p, 0,0, contentsWidth (), contentsHeight () ); 92 drawContents ( &p, 0,0, contentsWidth (), contentsHeight () );
83 p.end(); 93 p.end();
84#endif 94#endif
85} 95}
86 96
87KOWhatsNextView::KOWhatsNextView(Calendar *calendar, QWidget *parent, 97KOWhatsNextView::KOWhatsNextView(Calendar *calendar, QWidget *parent,
88 const char *name) 98 const char *name)
89 : KOrg::BaseView(calendar, parent, name) 99 : KOrg::BaseView(calendar, parent, name)
90{ 100{
91 // mDateLabel = 101 // mDateLabel =
92 // new QLabel(KGlobal::locale()->formatDate(QDate::currentDate()),this); 102 // new QLabel(KGlobal::locale()->formatDate(QDate::currentDate()),this);
93 // mDateLabel->setMargin(2); 103 // mDateLabel->setMargin(2);
94 // mDateLabel->setAlignment(AlignCenter); 104 // mDateLabel->setAlignment(AlignCenter);
95 setFont( KOPrefs::instance()->mWhatsNextFont ); 105 setFont( KOPrefs::instance()->mWhatsNextFont );
96 mView = new WhatsNextTextBrowser(this); 106 mView = new WhatsNextTextBrowser(this);
97 connect(mView,SIGNAL(showIncidence(const QString &)),SLOT(showIncidence(const QString &))); 107 connect(mView,SIGNAL(showIncidence(const QString &)),SLOT(showIncidence(const QString &)));
98 QStyleSheet* stsh = mView->styleSheet(); 108 QStyleSheet* stsh = mView->styleSheet();
99 QStyleSheetItem * style ; 109 QStyleSheetItem * style ;
100 style = stsh->item ("h2" ); 110 style = stsh->item ("h2" );
101 if ( style ) { 111 if ( style ) {
102 style->setMargin(QStyleSheetItem::MarginAll,0); 112 style->setMargin(QStyleSheetItem::MarginAll,0);
103 } 113 }
104 style = stsh->item ("h3" ); 114 style = stsh->item ("h3" );
105 if ( style ) { 115 if ( style ) {
106 style->setMargin(QStyleSheetItem::MarginAll,0); 116 style->setMargin(QStyleSheetItem::MarginAll,0);
107 } 117 }
108 mEventViewer = 0; 118 mEventViewer = 0;
109 119
110 QBoxLayout *topLayout = new QVBoxLayout(this); 120 QBoxLayout *topLayout = new QVBoxLayout(this);
111 // topLayout->addWidget(mDateLabel); 121 // topLayout->addWidget(mDateLabel);
112 topLayout->addWidget(mView); 122 topLayout->addWidget(mView);
113 mTimer = new QTimer( this ); 123 mTimer = new QTimer( this );
114 connect(mTimer,SIGNAL( timeout() ),this, SLOT(updateView())); 124 connect(mTimer,SIGNAL( timeout() ),this, SLOT(updateView()));
115 125
116 connect(mView->horizontalScrollBar (),SIGNAL( sliderReleased () ),this, SLOT(restartTimer())); 126 connect(mView->horizontalScrollBar (),SIGNAL( sliderReleased () ),this, SLOT(restartTimer()));
117 connect(mView->verticalScrollBar (),SIGNAL( sliderReleased () ),this, SLOT(restartTimer())); 127 connect(mView->verticalScrollBar (),SIGNAL( sliderReleased () ),this, SLOT(restartTimer()));
118} 128}
119 129
120KOWhatsNextView::~KOWhatsNextView() 130KOWhatsNextView::~KOWhatsNextView()
121{ 131{
122} 132}
123 133
124int KOWhatsNextView::maxDatesHint() 134int KOWhatsNextView::maxDatesHint()
125{ 135{
126 return 0; 136 return 0;
127} 137}
128 138
129int KOWhatsNextView::currentDateCount() 139int KOWhatsNextView::currentDateCount()
130{ 140{
131 return 0; 141 return 0;
132} 142}
133 143
134QPtrList<Incidence> KOWhatsNextView::selectedIncidences() 144QPtrList<Incidence> KOWhatsNextView::selectedIncidences()
135{ 145{
136 QPtrList<Incidence> eventList; 146 QPtrList<Incidence> eventList;
137 147
138 return eventList; 148 return eventList;
139} 149}
140 150
141void KOWhatsNextView::printMe() 151void KOWhatsNextView::printMe()
142{ 152{
143#ifdef DESKTOP_VERSION 153#ifdef DESKTOP_VERSION
144 mView->printMe(); 154 mView->printMe();
145#endif 155#endif
146} 156}
147void KOWhatsNextView::printPreview(CalPrinter *calPrinter, const QDate &fd, 157void KOWhatsNextView::printPreview(CalPrinter *calPrinter, const QDate &fd,
148 const QDate &td) 158 const QDate &td)
149{ 159{
150#ifndef KORG_NOPRINTER 160#ifndef KORG_NOPRINTER
151 calPrinter->preview(CalPrinter::Day, fd, td); 161 calPrinter->preview(CalPrinter::Day, fd, td);
152#endif 162#endif
153} 163}
154void KOWhatsNextView::updateConfig() 164void KOWhatsNextView::updateConfig()
155{ 165{
156 setFont( KOPrefs::instance()->mWhatsNextFont ); 166 setFont( KOPrefs::instance()->mWhatsNextFont );
157 updateView(); 167 updateView();
158 168
159} 169}
160void KOWhatsNextView::showEvent ( QShowEvent * e ) 170void KOWhatsNextView::showEvent ( QShowEvent * e )
161{ 171{
162 //qDebug("KOWhatsNextView::showEvent "); 172 //qDebug("KOWhatsNextView::showEvent ");
163 restartTimer(); 173 restartTimer();
164 QWidget::showEvent ( e ); 174 QWidget::showEvent ( e );
165} 175}
166void KOWhatsNextView::hideEvent ( QHideEvent * e) 176void KOWhatsNextView::hideEvent ( QHideEvent * e)
167{ 177{
168 //qDebug(" KOWhatsNextView::hideEvent"); 178 //qDebug(" KOWhatsNextView::hideEvent");
169 mTimer->stop(); 179 mTimer->stop();
170 QWidget::hideEvent ( e ); 180 QWidget::hideEvent ( e );
171} 181}
172void KOWhatsNextView::restartTimer() 182void KOWhatsNextView::restartTimer()
173{ 183{
174 //qDebug("KOWhatsNextView::restartTimer() "); 184 //qDebug("KOWhatsNextView::restartTimer() ");
175 mTimer->start( 300000 ); 185 mTimer->start( 300000 );
176 //mTimer->start( 5000 ); 186 //mTimer->start( 5000 );
177} 187}
178void KOWhatsNextView::updateView() 188void KOWhatsNextView::updateView()
179{ 189{
180 //qDebug("KOWhatsNextView::updateView() "); 190 //qDebug("KOWhatsNextView::updateView() ");
181 if ( mTimer->isActive() ) 191 if ( mTimer->isActive() )
182 restartTimer(); 192 restartTimer();
183 //qDebug("KOWhatsNextView::updateView() "); 193 //qDebug("KOWhatsNextView::updateView() ");
184 // mDateLabel->setText(KGlobal::locale()->formatDate(QDate::currentDate())); 194 // mDateLabel->setText(KGlobal::locale()->formatDate(QDate::currentDate()));
185 KIconLoader kil("korganizer"); 195 KIconLoader kil("korganizer");
186 QString ipath;// = new QString(); 196 QString ipath;// = new QString();
187 // kil.loadIcon("korganizer",KIcon::NoGroup,32,KIcon::DefaultState,&ipath); 197 // kil.loadIcon("korganizer",KIcon::NoGroup,32,KIcon::DefaultState,&ipath);
188 //<big><big><strong>" + date + "</strong></big></big>\n"; 198 //<big><big><strong>" + date + "</strong></big></big>\n";
189 mText = "<table width=\"100%\">\n"; 199 mText = "<table width=\"100%\">\n";
190 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>"; 200 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>";
191#ifdef DESKTOP_VERSION 201#ifdef DESKTOP_VERSION
192 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h1>"; 202 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h1>";
193#else 203#else
194 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h2>"; 204 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h2>";
195#endif 205#endif
196 // mText += "<img src=\""; 206 // mText += "<img src=\"";
197 // mText += ipath; 207 // mText += ipath;
198 // mText += "\">"; 208 // mText += "\">";
199 mEventDate = QDate::currentDate(); 209 mEventDate = QDate::currentDate();
200#ifdef DESKTOP_VERSION 210#ifdef DESKTOP_VERSION
201 mText += "<font color=\"#FFFFFF\"> <em>" + KGlobal::locale()->formatDate( mEventDate , false )+"</em></font></h1>"; 211 mText += "<font color=\"#FFFFFF\"> <em>" + KGlobal::locale()->formatDate( mEventDate , false )+"</em></font></h1>";
202#else 212#else
203 mText += "<font color=\"#FFFFFF\"> <em>" + KGlobal::locale()->formatDate( mEventDate , false )+"</em></font></h2>"; 213 mText += "<font color=\"#FFFFFF\"> <em>" + KGlobal::locale()->formatDate( mEventDate , false )+"</em></font></h2>";
204#endif 214#endif
205 mText += "</td></tr>\n<tr bgcolor=\"#EAF8FA\"><td>"; 215 mText += "</td></tr>\n<tr bgcolor=\"#EAF8FA\"><td>";
206 int iii; 216 int iii;
207 mTodos.clear(); 217 mTodos.clear();
208 QPtrList<Event> events; 218 QPtrList<Event> events;
209 QPtrList<Todo> todos = calendar()->todos(); 219 QPtrList<Todo> todos = calendar()->todos();
210 Todo * todo; 220 Todo * todo;
211 //mText += "<h2>" + i18n("Events: ") + "</h2>\n"; 221 //mText += "<h2>" + i18n("Events: ") + "</h2>\n";
212 int daysToShow = KOPrefs::instance()->mWhatsNextDays ; 222 int daysToShow = KOPrefs::instance()->mWhatsNextDays ;
213 bool itemAdded = false; 223 bool itemAdded = false;
214 for ( iii = 0; iii < daysToShow; ++iii ) { 224 for ( iii = 0; iii < daysToShow; ++iii ) {
215 QString date; 225 QString date;
216 itemAdded = false; 226 itemAdded = false;
217 events = calendar()->events( mEventDate, true ); 227 events = calendar()->events( mEventDate, true );
218 228
219 if ( iii == 0 ) { // today !!! 229 if ( iii == 0 ) { // today !!!
220 todo = todos.first(); 230 todo = todos.first();
221 while(todo) { 231 while(todo) {
222 if ( !todo->isCompleted() &&todo->hasDueDate() && todo->dtDue().date() < mEventDate ) { 232 if ( !todo->isCompleted() &&todo->hasDueDate() && todo->dtDue().date() < mEventDate ) {
223 if ( ! itemAdded ) { 233 if ( ! itemAdded ) {
224 appendDay ( iii, mEventDate ); 234 appendDay ( iii, mEventDate );
225 //itemAdded = true; 235 //itemAdded = true;
226 236
227 } //bool reply=false, bool notRed = true, bool appendTable = false); 237 } //bool reply=false, bool notRed = true, bool appendTable = false);
228 appendEvent(todo, false, false, !itemAdded ); 238 appendEvent(todo, false, false, !itemAdded );
229 itemAdded = true; 239 itemAdded = true;
230 } 240 }
231 todo = todos.next(); 241 todo = todos.next();
232 } 242 }
233 } 243 }
234 244
235 245
236 if (events.count() > 0) { 246 if (events.count() > 0) {
237 // mText += "<p></p>"; 247 // mText += "<p></p>";
238 // kil.loadIcon("month",KIcon::NoGroup,22,KIcon::DefaultState,&ipath); 248 // kil.loadIcon("month",KIcon::NoGroup,22,KIcon::DefaultState,&ipath);
239 // mText += "<h2>"; 249 // mText += "<h2>";
240 //mText += " <img src=\""; 250 //mText += " <img src=\"";
241 //mText += ipath; 251 //mText += ipath;
242 //mText += "\">"; 252 //mText += "\">";
243 if ( ! itemAdded ) { 253 if ( ! itemAdded ) {
244 appendDay ( iii, mEventDate ); 254 appendDay ( iii, mEventDate );
245 255
246 } 256 }
247 // for first day (iii == 0) 257 // for first day (iii == 0)
248 // we may have syncevents, or events in the past, which maybe should not be diaplayed 258 // we may have syncevents, or events in the past, which maybe should not be diaplayed
249 // for that reason we cannot append <table> in appendDay () for iii == 0 259 // for that reason we cannot append <table> in appendDay () for iii == 0
250 // we must append it in the first successful call of appendEvent() 260 // we must append it in the first successful call of appendEvent()
251 Event *ev = events.first(); 261 Event *ev = events.first();
252 while(ev) { 262 while(ev) {
253 //qDebug("+++++event append %s", ev->summary().latin1()); 263 //qDebug("+++++event append %s", ev->summary().latin1());
254 if ( true /*!ev->recurrence()->doesRecur() || ev->recursOn( mEventDate)*/) { 264 if ( true /*!ev->recurrence()->doesRecur() || ev->recursOn( mEventDate)*/) {
255 if ( appendEvent(ev, false , iii!= 0,!itemAdded ) ) 265 if ( appendEvent(ev, false , iii!= 0,!itemAdded ) )
256 itemAdded = true; 266 itemAdded = true;
257 } 267 }
258 ev = events.next(); 268 ev = events.next();
259 } 269 }
260 270
261 //mText += "</table>\n"; 271 //mText += "</table>\n";
262 } 272 }
263 273
264 todo = todos.first(); 274 todo = todos.first();
265 while(todo) { 275 while(todo) {
266 if ( !todo->isCompleted() &&todo->hasDueDate() && todo->dtDue().date() == mEventDate ) { 276 if ( !todo->isCompleted() &&todo->hasDueDate() && todo->dtDue().date() == mEventDate ) {
267 if ( ! itemAdded ) { 277 if ( ! itemAdded ) {
268 appendDay ( iii, mEventDate ); 278 appendDay ( iii, mEventDate );
269 //itemAdded = true; 279 //itemAdded = true;
270 } 280 }
271 appendEvent(todo, false , iii!= 0,!itemAdded); 281 appendEvent(todo, false , iii!= 0,!itemAdded);
272 itemAdded = true; 282 itemAdded = true;
273 } 283 }
274 todo = todos.next(); 284 todo = todos.next();
275 } 285 }
276 if ( !itemAdded && iii == 0 ) { 286 if ( !itemAdded && iii == 0 ) {
277 // appendDay ( iii, mEventDate ); 287 // appendDay ( iii, mEventDate );
278 //mText += "<table>"; 288 //mText += "<table>";
279 // mText += "<b><font color=\"#000080\"><em>"+i18n("No event, nothing to do.") +"</em></font></b>\n"; 289 // mText += "<b><font color=\"#000080\"><em>"+i18n("No event, nothing to do.") +"</em></font></b>\n";
280 mText += "<h3 align=\"center\"><font color=\"#008000\"><em>"+i18n("No event, nothing to do.") +"</em></font></h3>\n"; 290 mText += "<h3 align=\"center\"><font color=\"#008000\"><em>"+i18n("No event, nothing to do.") +"</em></font></h3>\n";
281 //mText +="</table>"; 291 //mText +="</table>";
282 } 292 }
283 if ( itemAdded ) 293 if ( itemAdded )
284 mText += "</table>\n"; 294 mText += "</table>\n";
285 mEventDate = mEventDate.addDays( 1 ); 295 mEventDate = mEventDate.addDays( 1 );
286 } 296 }
287 297
288 int topmostPrios = KOPrefs::instance()->mWhatsNextPrios; 298 int topmostPrios = KOPrefs::instance()->mWhatsNextPrios;
289 if (todos.count() > 0 && topmostPrios > 0 ) { 299 if (todos.count() > 0 && topmostPrios > 0 ) {
290 // kil.loadIcon("todo",KIcon::NoGroup,22,KIcon::DefaultState,&ipath); 300 // kil.loadIcon("todo",KIcon::NoGroup,22,KIcon::DefaultState,&ipath);
291 // mText += "<h2>"; 301 // mText += "<h2>";
292 //<img src=\""; 302 //<img src=\"";
293 // mText += ipath; 303 // mText += ipath;
294 // mText += "\">"; 304 // mText += "\">";
295 // mText += i18n("Overdue To-Do:") + "</h2>\n"; 305 // mText += i18n("Overdue To-Do:") + "</h2>\n";
296 306
297 //mText += "<ul>\n"; 307 //mText += "<ul>\n";
298 bool gotone = false; 308 bool gotone = false;
299 int priority = 1; 309 int priority = 1;
300 int priosFound = 0; 310 int priosFound = 0;
301#ifdef DESKTOP_VERSION 311#ifdef DESKTOP_VERSION
302 mText +="<p></p>"; 312 mText +="<p></p>";
303#endif 313#endif
304 314
305 mText +="<h2><em><font color=\"#000080\">" + i18n("Incomplete Todo:") + "</font></em></h2>\n"; 315 mText +="<h2><em><font color=\"#000080\">" + i18n("Incomplete Todo:") + "</font></em></h2>\n";
306 mText += "<ul>\n"; 316 mText += "<ul>\n";
307 while (!gotone && priority<6) { 317 while (!gotone && priority<6) {
308 todo = todos.first(); 318 todo = todos.first();
309 while(todo) { 319 while(todo) {
310 if (!todo->isCompleted() && (todo->priority() == priority) ) { 320 if (!todo->isCompleted() && (todo->priority() == priority) ) {
311 if ( appendTodo(todo) ) 321 if ( appendTodo(todo) )
312 gotone = true; 322 gotone = true;
313 } 323 }
314 todo = todos.next(); 324 todo = todos.next();
315 } 325 }
316 if ( gotone ) { 326 if ( gotone ) {
317 gotone = false; 327 gotone = false;
318 ++priosFound; 328 ++priosFound;
319 if ( priosFound == topmostPrios ) 329 if ( priosFound == topmostPrios )
320 break; 330 break;
321 } 331 }
322 priority++; 332 priority++;
323 // kdDebug() << "adding the todos..." << endl; 333 // kdDebug() << "adding the todos..." << endl;
324 } 334 }
325 mText += "</ul>\n"; 335 mText += "</ul>\n";
326 } 336 }
327 337
328 int replys = 0; 338 int replys = 0;
329 events = calendar()->events(QDate::currentDate(), QDate(2975,12,6)); 339 events = calendar()->events(QDate::currentDate(), QDate(2975,12,6));
330 if (events.count() > 0) { 340 if (events.count() > 0) {
331 Event *ev = events.first(); 341 Event *ev = events.first();
332 while(ev) { 342 while(ev) {
333 Attendee *me = ev->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 343 Attendee *me = ev->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
334 if (me!=0) { 344 if (me!=0) {
335 if (me->status()==Attendee::NeedsAction && me->RSVP()) { 345 if (me->status()==Attendee::NeedsAction && me->RSVP()) {
336 if (replys == 0) { 346 if (replys == 0) {
337 mText += "<p></p>"; 347 mText += "<p></p>";
338 // kil.loadIcon("reply",KIcon::NoGroup,22,KIcon::DefaultState,&ipath); 348 // kil.loadIcon("reply",KIcon::NoGroup,22,KIcon::DefaultState,&ipath);
339 //mText += "<h2>"; 349 //mText += "<h2>";
340 //<img src=\""; 350 //<img src=\"";
341 // mText += ipath; 351 // mText += ipath;
342 // mText += "\">"; 352 // mText += "\">";
343 //mText += i18n("Events and To-Dos that need a reply:") + "</h2>\n"; 353 //mText += i18n("Events and To-Dos that need a reply:") + "</h2>\n";
344 mText +="<h2><em><font color=\"#000080\">" + i18n("Events and To-Dos that need a reply:") + "</font></em></h2>\n"; 354 mText +="<h2><em><font color=\"#000080\">" + i18n("Events and To-Dos that need a reply:") + "</font></em></h2>\n";
345 mText += "<table>\n"; 355 mText += "<table>\n";
346 } 356 }
347 replys++; 357 replys++;
348 appendEvent(ev,true); 358 appendEvent(ev,true);
349 } 359 }
350 } 360 }
351 ev = events.next(); 361 ev = events.next();
352 } 362 }
353 } 363 }
354 todos = calendar()->todos(); 364 todos = calendar()->todos();
355 if (todos.count() > 0) { 365 if (todos.count() > 0) {
356 Todo *to = todos.first(); 366 Todo *to = todos.first();
357 while(to) { 367 while(to) {
358 if ( !to->isCompleted() ){ 368 if ( !to->isCompleted() ){
359 Attendee *me = to->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 369 Attendee *me = to->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
360 if (me!=0) { 370 if (me!=0) {
361 if (me->status()==Attendee::NeedsAction && me->RSVP()) { 371 if (me->status()==Attendee::NeedsAction && me->RSVP()) {
362 if (replys == 0) { 372 if (replys == 0) {
363 mText +="<h2><em><font color=\"#000080\">" + i18n("Events and To-Dos that need a reply:") + "</font></em></h2>\n"; 373 mText +="<h2><em><font color=\"#000080\">" + i18n("Events and To-Dos that need a reply:") + "</font></em></h2>\n";
364 mText += "<table>\n"; 374 mText += "<table>\n";
365 } 375 }
366 replys++; 376 replys++;
367 appendEvent(to, true); 377 appendEvent(to, true);
368 } 378 }
369 } 379 }
370 } 380 }
371 to = todos.next(); 381 to = todos.next();
372 } 382 }
373 } 383 }
374 if (replys > 0 ) mText += "</table>\n"; 384 if (replys > 0 ) mText += "</table>\n";
375 385
376 386
377 mText += "</td></tr>\n</table>\n"; 387 mText += "</td></tr>\n</table>\n";
378 388
379 mView->setText(mText); 389 mView->setText(mText);
380 mView->setFocus(); 390 mView->setFocus();
381 391
382 // QPixmap bPix = SmallIcon( "back" ); 392 // QPixmap bPix = SmallIcon( "back" );
383 // qDebug("xxxxxxxxxxxxxxxxxxxxx "); 393 // qDebug("xxxxxxxxxxxxxxxxxxxxx ");
384 // QWidget* test = new QWidget(); 394 // QWidget* test = new QWidget();
385 // test->setBackgroundMode(FixedPixmap ); 395 // test->setBackgroundMode(FixedPixmap );
386 // test->setBackgroundPixmap ( bPix ); 396 // test->setBackgroundPixmap ( bPix );
387 // test->resize( 300, 400 ); 397 // test->resize( 300, 400 );
388 // test->show(); 398 // test->show();
389 // mView->setBackgroundMode(FixedPixmap ); 399 // mView->setBackgroundMode(FixedPixmap );
390 // mView->setBackgroundPixmap ( bPix ); 400 // mView->setBackgroundPixmap ( bPix );
391 // qDebug("%s ",mText.latin1()); 401 // qDebug("%s ",mText.latin1());
392} 402}
393 403
394void KOWhatsNextView::appendDay( int i, QDate eventDate ) 404void KOWhatsNextView::appendDay( int i, QDate eventDate )
395{ 405{
396 QString date; 406 QString date;
397 QString day = KGlobal::locale()->formatDate( eventDate , KOPrefs::instance()->mShortDateInViewer); 407 QString day = KGlobal::locale()->formatDate( eventDate , KOPrefs::instance()->mShortDateInViewer);
398 if ( ! KOPrefs::instance()->mShortDateInViewer && QApplication::desktop()->width() < 320 ) { 408 if ( ! KOPrefs::instance()->mShortDateInViewer && QApplication::desktop()->width() < 320 ) {
399 if ( i == 0 ) { 409 if ( i == 0 ) {
400 //mText += "<table>\n"; 410 //mText += "<table>\n";
401 return;//date = "<em><font color=\"#008000\"><em>" + day+"</font></em>"; 411 return;//date = "<em><font color=\"#008000\"><em>" + day+"</font></em>";
402 } 412 }
403 else if ( i == 1 ) 413 else if ( i == 1 )
404 date = "<em><font color=\"#000080\">" + day + "</font></em>" ; 414 date = "<em><font color=\"#000080\">" + day + "</font></em>" ;
405 else date = "<em><font color=\"#000080\">" + day + "</font></em>"; 415 else date = "<em><font color=\"#000080\">" + day + "</font></em>";
406 mText += "<h2>" + date + "</h2>\n"; 416 mText += "<h2>" + date + "</h2>\n";
407 //mText += "<big><big><strong>" + date + "</strong></big></big>\n"; 417 //mText += "<big><big><strong>" + date + "</strong></big></big>\n";
408 mText += "<table>\n"; 418 mText += "<table>\n";
409 419
410 420
411 421
412 } else { 422 } else {
413 if ( i == 0 ) { 423 if ( i == 0 ) {
414 //mText += "<table>\n"; 424 //mText += "<table>\n";
415 return;// date = "<font color=\"#008000\"><em>" +i18n("Today: ") +"</em>" + day+"</font>"; 425 return;// date = "<font color=\"#008000\"><em>" +i18n("Today: ") +"</em>" + day+"</font>";
416 } 426 }
417 427
418#ifdef DESKTOP_VERSION 428#ifdef DESKTOP_VERSION
419 else if ( i == 1 ) { 429 else if ( i == 1 ) {
420 date = "<h2><em><font color=\"#000080\">" + i18n("Tomorrow: ") + day +"</font></em></h2>" ; 430 date = "<h2><em><font color=\"#000080\">" + i18n("Tomorrow: ") + day +"</font></em></h2>" ;
421 } 431 }
422 else date = "<h2><em><font color=\"#000080\">" + i18n("In %1 days: ").arg( i ) +day + "</font></em></h2>"; 432 else date = "<h2><em><font color=\"#000080\">" + i18n("In %1 days: ").arg( i ) +day + "</font></em></h2>";
423#else 433#else
424 else if ( i == 1 ) { 434 else if ( i == 1 ) {
425 date = "<em><font color=\"#000080\">" + i18n("Tomorrow: ") + day +"</font></em>" ; 435 date = "<em><font color=\"#000080\">" + i18n("Tomorrow: ") + day +"</font></em>" ;
426 } 436 }
427 else date = "<em><font color=\"#000080\">" + i18n("In %1 days: ").arg( i ) +day + "</font></em>"; 437 else date = "<em><font color=\"#000080\">" + i18n("In %1 days: ").arg( i ) +day + "</font></em>";
428 438
429#endif 439#endif
430 mText += "<h2>" + date + "</h2>\n"; 440 mText += "<h2>" + date + "</h2>\n";
431 //mText += "<big><big><strong>" + date + "</strong></big></big>\n"; 441 //mText += "<big><big><strong>" + date + "</strong></big></big>\n";
432 mText += "<table>\n"; 442 mText += "<table>\n";
433 } 443 }
434} 444}
435 445
436 446
437void KOWhatsNextView::showDates(const QDate &, const QDate &) 447void KOWhatsNextView::showDates(const QDate &, const QDate &)
438{ 448{
439 updateView(); 449 updateView();
440} 450}
441 451
442void KOWhatsNextView::showEvents(QPtrList<Event>) 452void KOWhatsNextView::showEvents(QPtrList<Event>)
443{ 453{
444} 454}
445 455
446void KOWhatsNextView::changeEventDisplay(Event *, int action) 456void KOWhatsNextView::changeEventDisplay(Event *, int action)
447{ 457{
448 switch(action) { 458 switch(action) {
449 case KOGlobals::EVENTADDED: 459 case KOGlobals::EVENTADDED:
450 updateView(); 460 updateView();
451 break; 461 break;
452 case KOGlobals::EVENTEDITED: 462 case KOGlobals::EVENTEDITED:
453 updateView(); 463 updateView();
454 break; 464 break;
455 case KOGlobals::EVENTDELETED: 465 case KOGlobals::EVENTDELETED:
456 updateView(); 466 updateView();
457 break; 467 break;
458 default: 468 default:
459 updateView(); 469 updateView();
460 kdDebug() << "KOWhatsNextView::changeEventDisplay(): Illegal action " << action << endl; 470 kdDebug() << "KOWhatsNextView::changeEventDisplay(): Illegal action " << action << endl;
461 } 471 }
462} 472}
463 473
464bool KOWhatsNextView::appendEvent(Incidence *ev, bool reply, bool notRed, bool appendTable ) 474bool KOWhatsNextView::appendEvent(Incidence *ev, bool reply, bool notRed, bool appendTable )
465{ 475{
466 if ( !KOPrefs::instance()->mShowSyncEvents && ev->uid().left(15) == QString("last-syncEvent-") ) 476 if ( !KOPrefs::instance()->mShowSyncEvents && ev->uid().left(15) == QString("last-syncEvent-") )
467 return false; 477 return false;
468 QDateTime cdt = QDateTime::currentDateTime(); 478 QDateTime cdt = QDateTime::currentDateTime();
469 QDateTime noc; 479 QDateTime noc;
470 QString tempText; 480 QString tempText;
471 if ( appendTable && !notRed ) { 481 if ( appendTable && !notRed ) {
472 tempText = "<table>"; 482 tempText = "<table>";
473 } 483 }
474 bool ok = true; 484 bool ok = true;
475 if ( reply ) { 485 if ( reply ) {
476 noc = ev->getNextOccurence( cdt, &ok ); 486 noc = ev->getNextOccurence( cdt, &ok );
477 if (! ok && ev->type() == "Event") 487 if (! ok && ev->type() == "Event")
478 return false; 488 return false;
479 } 489 }
480 bool bDay = false; 490 bool bDay = false;
481 if ( ev->isBirthday() || ev->isAnniversary() ) 491 if ( ev->isBirthday() || ev->isAnniversary() )
482 bDay = true; 492 bDay = true;
483 tempText += "<tr><td><b>"; 493 tempText += "<tr><td><b>";
484 if (ev->type()=="Event") { 494 if (ev->type()=="Event") {
485 if (reply) { 495 if (reply) {
486 if (!ev->doesFloat()) 496 if (!ev->doesFloat())
487 tempText += KGlobal::locale()->formatDateTime( noc , KOPrefs::instance()->mShortDateInViewer) +": "; 497 tempText += KGlobal::locale()->formatDateTime( noc , KOPrefs::instance()->mShortDateInViewer) +": ";
488 else 498 else
489 tempText += KGlobal::locale()->formatDate( noc.date() , KOPrefs::instance()->mShortDateInViewer) +": "; 499 tempText += KGlobal::locale()->formatDate( noc.date() , KOPrefs::instance()->mShortDateInViewer) +": ";
490 500
491 } else { 501 } else {
492 if (!ev->doesFloat()) { 502 if (!ev->doesFloat()) {
493 Event *event = static_cast<Event *>(ev); 503 Event *event = static_cast<Event *>(ev);
494 QDateTime st,end; 504 QDateTime st,end;
495 if ( event->recurrence()->doesRecur() ) { 505 if ( event->recurrence()->doesRecur() ) {
496 QDate recDate= mEventDate; 506 QDate recDate= mEventDate;
497 int days = event->dtStart().date().daysTo (event->dtEnd().date() ); 507 int days = event->dtStart().date().daysTo (event->dtEnd().date() );
498 while ( ! event->recursOn( recDate ) ) { 508 while ( ! event->recursOn( recDate ) ) {
499 recDate = recDate.addDays( -1 ); 509 recDate = recDate.addDays( -1 );
500 510
501 } 511 }
502 st = QDateTime ( recDate, event->dtStart().time() ); 512 st = QDateTime ( recDate, event->dtStart().time() );
503 end = QDateTime ( recDate.addDays( days ), event->dtEnd().time() ); 513 end = QDateTime ( recDate.addDays( days ), event->dtEnd().time() );
504 } 514 }
505 else { 515 else {
506 st = event->dtStart(); 516 st = event->dtStart();
507 end = event->dtEnd(); 517 end = event->dtEnd();
508 } 518 }
509 519
510 520
511 QString dateText; 521 QString dateText;
512 // qDebug("%s %s %s %s ", mEventDate.toString().latin1(),event->summary().latin1(), st .toString().latin1(),end.toString().latin1() ); 522 // qDebug("%s %s %s %s ", mEventDate.toString().latin1(),event->summary().latin1(), st .toString().latin1(),end.toString().latin1() );
513 if ( st.date() < mEventDate ) 523 if ( st.date() < mEventDate )
514 dateText = "++:++-"; 524 dateText = "++:++-";
515 else 525 else
516 dateText = event->dtStartTimeStr() + "-"; 526 dateText = event->dtStartTimeStr() + "-";
517 if ( end.date() > mEventDate ) 527 if ( end.date() > mEventDate )
518 dateText += "++:++"; 528 dateText += "++:++";
519 else 529 else
520 dateText += event->dtEndTimeStr(); 530 dateText += event->dtEndTimeStr();
521 if ( notRed ) 531 if ( notRed )
522 tempText += dateText; 532 tempText += dateText;
523 else { 533 else {
524 if ( end < cdt ) { 534 if ( end < cdt ) {
525 if ( !KOPrefs::instance()->mWNViewShowsPast ) 535 if ( !KOPrefs::instance()->mWNViewShowsPast )
526 return false; 536 return false;
527 tempText += "<font color=\"#F00000\">" + dateText + "</font>"; 537 tempText += "<font color=\"#F00000\">" + dateText + "</font>";
528 } 538 }
529 else if ( st < cdt ) 539 else if ( st < cdt )
530 tempText += "<font color=\"#008000\">" + dateText + "</font>"; 540 tempText += "<font color=\"#008000\">" + dateText + "</font>";
531 else 541 else
532 tempText += dateText; 542 tempText += dateText;
533 543
534 } 544 }
535 545
536 } else { 546 } else {
537 if ( bDay ) { 547 if ( bDay ) {
538 548
539 if ( ev->isBirthday()) 549 if ( ev->isBirthday())
540 tempText += "<font color=\"#00B000\">" + i18n("Birthday") +":</font>"; 550 tempText += "<font color=\"#00B000\">" + i18n("Birthday") +":</font>";
541 else 551 else
542 tempText += "<font color=\"#00B0000\">" + i18n("Anniversary")+":</font>"; 552 tempText += "<font color=\"#00B0000\">" + i18n("Anniversary")+":</font>";
543 } else { 553 } else {
544 tempText += i18n("Allday:"); 554 tempText += i18n("Allday:");
545 } 555 }
546 556
547 } 557 }
548 } 558 }
549 } else { 559 } else {
550 mTodos.append( ev ); 560 mTodos.append( ev );
551 tempText += i18n("ToDo:"); 561 tempText += i18n("ToDo:");
552 if (reply) { 562 if (reply) {
553 tempText += " "; 563 tempText += " ";
554 if ( noc != cdt ) { 564 if ( noc != cdt ) {
555 tempText += KGlobal::locale()->formatDate( noc.date() , KOPrefs::instance()->mShortDateInViewer) +": "; 565 tempText += KGlobal::locale()->formatDate( noc.date() , KOPrefs::instance()->mShortDateInViewer) +": ";
556 } 566 }
557 } else { 567 } else {
558 if ( ((Todo*)ev)->dtDue().date() < QDate::currentDate() ) { 568 if ( ((Todo*)ev)->dtDue().date() < QDate::currentDate() ) {
559 // tempText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>"; 569 // tempText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>";
560 QString dfs = KGlobal::locale()->dateFormatShort(); 570 QString dfs = KGlobal::locale()->dateFormatShort();
561 KGlobal::locale()->setDateFormatShort("%d.%b"); 571 KGlobal::locale()->setDateFormatShort("%d.%b");
562 tempText +="<font color=\"#F00000\">" + KGlobal::locale()->formatDate(((Todo*)ev)->dtDue().date(), true, KLocale::Userdefined) + "</font>"; 572 tempText +="<font color=\"#F00000\">" + KGlobal::locale()->formatDate(((Todo*)ev)->dtDue().date(), true, KLocale::Userdefined) + "</font>";
563 KGlobal::locale()->setDateFormatShort(dfs); 573 KGlobal::locale()->setDateFormatShort(dfs);
564 } else { 574 } else {
565 if (!ev->doesFloat() ) 575 if (!ev->doesFloat() )
566 if( ( (Todo*)ev)->dtDue() < cdt ) { 576 if( ( (Todo*)ev)->dtDue() < cdt ) {
567 tempText +="<font color=\"#F00000\">" + ((Todo*)ev)->dtDueTimeStr() + "</font>"; 577 tempText +="<font color=\"#F00000\">" + ((Todo*)ev)->dtDueTimeStr() + "</font>";
568 578
569 579
570 } else 580 } else
571 tempText +=((Todo*)ev)->dtDueTimeStr(); 581 tempText +=((Todo*)ev)->dtDueTimeStr();
572 mTodos.append( ev ); 582 mTodos.append( ev );
573 } 583 }
574 } 584 }
575 } 585 }
576 tempText += "</b></td><td>"; 586 tempText += "</b></td><td>";
577 bool needClose = false; 587 bool needClose = false;
578 if ( ev->cancelled() ) { 588 if ( ev->cancelled() ) {
579 tempText += "<font color=\"#F00000\">[c"; 589 tempText += "<font color=\"#F00000\">[c";
580 needClose =true; 590 needClose =true;
581 591
582 } 592 }
583 if ( ev->isAlarmEnabled() ) { 593 if ( ev->isAlarmEnabled() ) {
584 if ( !needClose) 594 if ( !needClose)
585 tempText +="["; 595 tempText +="[";
586 tempText += "a"; 596 tempText += "a";
587 needClose =true; 597 needClose =true;
588 598
589 } 599 }
590 if ( ev->description().length() > 0 ) { 600 if ( ev->description().length() > 0 ) {
591 if ( !needClose) 601 if ( !needClose)
592 tempText +="["; 602 tempText +="[";
593 tempText += "i"; 603 tempText += "i";
594 needClose =true; 604 needClose =true;
595 } 605 }
596 if ( ev->recurrence()->doesRecur() ) { 606 if ( ev->recurrence()->doesRecur() ) {
597 if ( !needClose) 607 if ( !needClose)
598 tempText +="["; 608 tempText +="[";
599 tempText += "r"; 609 tempText += "r";
600 needClose =true; 610 needClose =true;
601 } 611 }
602 if ( needClose ) { 612 if ( needClose ) {
603 tempText += "] "; 613 tempText += "] ";
604 } 614 }
605 if ( ev->cancelled() ) 615 if ( ev->cancelled() )
606 tempText += "</font>"; 616 tempText += "</font>";
607 tempText += "<a "; 617 tempText += "<a ";
608 if (ev->type()=="Event") tempText += "href=\"event:"; 618 if (ev->type()=="Event") tempText += "href=\"event:";
609 if (ev->type()=="Todo") tempText += "href=\"todo:"; 619 if (ev->type()=="Todo") tempText += "href=\"todo:";
610 tempText += ev->uid() + "\">"; 620 tempText += ev->uid() + "\">";
611 if ( ev->summary().length() > 0 ) 621 if ( ev->summary().length() > 0 )
612 tempText += ev->summary(); 622 tempText += ev->summary();
613 else 623 else
614 tempText += i18n("-no summary-"); 624 tempText += i18n("-no summary-");
615 if ( bDay ) { 625 if ( bDay ) {
616 noc = ev->getNextOccurence( cdt.addDays(-1), &ok ); 626 noc = ev->getNextOccurence( cdt.addDays(-1), &ok );
617 if ( ok ) { 627 if ( ok ) {
618 int years = 0; 628 int years = 0;
619 if ( ev->type() =="Todo" ) { 629 if ( ev->type() =="Todo" ) {
620 years = noc.date().year() -((Todo*)ev)->dtDue().date().year(); 630 years = noc.date().year() -((Todo*)ev)->dtDue().date().year();
621 } else 631 } else
622 years = noc.date().year() - ev->dtStart().date().year(); 632 years = noc.date().year() - ev->dtStart().date().year();
623 tempText += i18n(" (%1 y.)"). arg( years ); 633 tempText += i18n(" (%1 y.)"). arg( years );
624 } 634 }
625 } 635 }
626 636
627 tempText += "</a>"; 637 tempText += "</a>";
628 if ( KOPrefs::instance()->mWNViewShowLocation ) 638 if ( KOPrefs::instance()->mWNViewShowLocation )
629 if ( !ev->location().isEmpty() ) 639 if ( !ev->location().isEmpty() )
630 tempText += " ("+ev->location() +")"; 640 tempText += " ("+ev->location() +")";
631 if ( ev->relatedTo() && KOPrefs::instance()->mWNViewShowsParents) 641 if ( ev->relatedTo() && KOPrefs::instance()->mWNViewShowsParents)
632 tempText += " ["+ev->relatedTo()->summary() +"]"; 642 tempText += " ["+ev->relatedTo()->summary() +"]";
633 tempText += "</td></tr>\n"; 643 tempText += "</td></tr>\n";
634 mText += tempText; 644 mText += tempText;
635 return true; 645 return true;
636} 646}
637 647
638bool KOWhatsNextView::appendTodo(Incidence *ev, QString ind , bool isSub ) 648bool KOWhatsNextView::appendTodo(Incidence *ev, QString ind , bool isSub )
639{ 649{
640 if ( mTodos.find( ev ) != mTodos.end() ) return false; 650 if ( mTodos.find( ev ) != mTodos.end() ) return false;
641 651
642 mTodos.append( ev ); 652 mTodos.append( ev );
643 if ( !isSub ) 653 if ( !isSub )
644 mText += "<p>"; 654 mText += "<p>";
645 else 655 else
646 mText += "<li>"; 656 mText += "<li>";
647 mText += "[" +QString::number(ev->priority()) + "/" + QString::number(((Todo*)ev)->percentComplete())+"%] "; 657 mText += "[" +QString::number(ev->priority()) + "/" + QString::number(((Todo*)ev)->percentComplete())+"%] ";
648 658
649 659
650 mText += ind; 660 mText += ind;
651 bool needClose = false; 661 bool needClose = false;
652 if ( ev->cancelled() ) { 662 if ( ev->cancelled() ) {
653 mText += "<font color=\"#F00000\">[c"; 663 mText += "<font color=\"#F00000\">[c";
654 needClose =true; 664 needClose =true;
655 665
656 } 666 }
657 if ( ev->isAlarmEnabled() ) { 667 if ( ev->isAlarmEnabled() ) {
658 if ( !needClose) 668 if ( !needClose)
659 mText +="["; 669 mText +="[";
660 mText += "a"; 670 mText += "a";
661 needClose =true; 671 needClose =true;
662 672
663 } 673 }
664 674
665 if ( ev->description().length() > 0 ) { 675 if ( ev->description().length() > 0 ) {
666 if ( !needClose) 676 if ( !needClose)
667 mText +="["; 677 mText +="[";
668 mText += "i"; 678 mText += "i";
669 needClose =true; 679 needClose =true;
670 } 680 }
671 if ( ev->doesRecur() ) { 681 if ( ev->doesRecur() ) {
672 if ( !needClose) 682 if ( !needClose)
673 mText +="["; 683 mText +="[";
674 mText += "r"; 684 mText += "r";
675 needClose =true; 685 needClose =true;
676 } 686 }
677 // if ( ev->recurrence()->doesRecur() ) { 687 // if ( ev->recurrence()->doesRecur() ) {
678 // if ( !needClose) 688 // if ( !needClose)
679 // mText +="("; 689 // mText +="(";
680 // mText += "r"; 690 // mText += "r";
681 // needClose =true; 691 // needClose =true;
682 // } 692 // }
683 if ( needClose ) 693 if ( needClose )
684 mText += "] "; 694 mText += "] ";
685 if ( ev->cancelled() ) 695 if ( ev->cancelled() )
686 mText += "</font>"; 696 mText += "</font>";
687 mText += "<a href=\"todo:" + ev->uid() + "\">"; 697 mText += "<a href=\"todo:" + ev->uid() + "\">";
688 if ( ev->summary().length() > 0 ) 698 if ( ev->summary().length() > 0 )
689 mText += ev->summary(); 699 mText += ev->summary();
690 else 700 else
691 mText += i18n("-no summary-"); 701 mText += i18n("-no summary-");
692 mText += "</a>"; 702 mText += "</a>";
693 if ( ((Todo*)ev)->hasDueDate () ) { 703 if ( ((Todo*)ev)->hasDueDate () ) {
694 QString year = ""; 704 QString year = "";
695 int ye = ((Todo*)ev)->dtDue().date().year(); 705 int ye = ((Todo*)ev)->dtDue().date().year();
696 if ( QDateTime::currentDateTime().date().year() != ye ) 706 if ( QDateTime::currentDateTime().date().year() != ye )
697 year = QString::number( ye ); 707 year = QString::number( ye );
698 QString dfs = KGlobal::locale()->dateFormatShort(); 708 QString dfs = KGlobal::locale()->dateFormatShort();
699 KGlobal::locale()->setDateFormatShort("%d.%b"); 709 KGlobal::locale()->setDateFormatShort("%d.%b");
700 mText +="<font color=\"#00A000\"> [" + KGlobal::locale()->formatDate(((Todo*)ev)->dtDue().date(), true, KLocale::Userdefined) + "."+ year +"]</font>"; 710 mText +="<font color=\"#00A000\"> [" + KGlobal::locale()->formatDate(((Todo*)ev)->dtDue().date(), true, KLocale::Userdefined) + "."+ year +"]</font>";
701 KGlobal::locale()->setDateFormatShort(dfs); 711 KGlobal::locale()->setDateFormatShort(dfs);
702 } 712 }
703 if ( KOPrefs::instance()->mWNViewShowLocation ) 713 if ( KOPrefs::instance()->mWNViewShowLocation )
704 if ( !ev->location().isEmpty() ) 714 if ( !ev->location().isEmpty() )
705 mText += " ("+ev->location() +")"; 715 mText += " ("+ev->location() +")";
706 if ( !isSub ) { 716 if ( !isSub ) {
707 if ( ((Todo*)ev)->relatedTo()&& KOPrefs::instance()->mWNViewShowsParents) 717 if ( ((Todo*)ev)->relatedTo()&& KOPrefs::instance()->mWNViewShowsParents)
708 mText += " ["+ev->relatedTo()->summary() +"]"; 718 mText += " ["+ev->relatedTo()->summary() +"]";
709 mText += "</p>\n"; 719 mText += "</p>\n";
710 } 720 }
711 else { 721 else {
712 ind += "-"; 722 ind += "-";
713 mText += "</li>\n"; 723 mText += "</li>\n";
714 } 724 }
715 QPtrList<Incidence> Relations = ev->relations(); 725 QPtrList<Incidence> Relations = ev->relations();
716 Incidence *to; 726 Incidence *to;
717 for (to=Relations.first();to;to=Relations.next()) { 727 for (to=Relations.first();to;to=Relations.next()) {
718 if (!((Todo*)to)->isCompleted()) 728 if (!((Todo*)to)->isCompleted())
719 appendTodo( to, ind , true ); 729 appendTodo( to, ind , true );
720 } 730 }
721 731
722 return true; 732 return true;
723} 733}
724 734
725/* 735/*
726 void KOWhatsNextView::createEventViewer() 736 void KOWhatsNextView::createEventViewer()
727 { 737 {
728 if (!mEventViewer) { 738 if (!mEventViewer) {
729 739
730 mEventViewer = new KOEventViewerDialog(this); 740 mEventViewer = new KOEventViewerDialog(this);
731 } 741 }
732 } 742 }
733*/ 743*/
734void KOWhatsNextView::setEventViewer(KOEventViewerDialog* v ) 744void KOWhatsNextView::setEventViewer(KOEventViewerDialog* v )
735{ 745{
736 mEventViewer = v; 746 mEventViewer = v;
737} 747}
738 748
739// TODO: Create this function in CalendarView and remove it from here 749// TODO: Create this function in CalendarView and remove it from here
740void KOWhatsNextView::showIncidence(const QString &uid) 750void KOWhatsNextView::showIncidence(const QString &uid)
741{ 751{
742 752
743 if ( !mEventViewer ) { 753 if ( !mEventViewer ) {
744 qDebug("KOWhatsNextView::showIncidence::sorry, no event viewer set "); 754 qDebug("KOWhatsNextView::showIncidence::sorry, no event viewer set ");
745 return; 755 return;
746 } 756 }
747 //kdDebug() << "KOWhatsNextView::showIncidence(): " << uid << endl; 757 //kdDebug() << "KOWhatsNextView::showIncidence(): " << uid << endl;
748 //qDebug("KOWhatsNextView::showIncidence %s ", uid.latin1()); 758 //qDebug("KOWhatsNextView::showIncidence %s ", uid.latin1());
749 if (uid.startsWith("event:")) { 759 if (uid.startsWith("event:")) {
750#ifdef DESKTOP_VERSION 760#ifdef DESKTOP_VERSION
751 Event *event = calendar()->event(uid.mid(8)); 761 Event *event = calendar()->event(uid.mid(8));
752#else 762#else
753 Event *event = calendar()->event(uid.mid(6)); 763 Event *event = calendar()->event(uid.mid(6));
754#endif 764#endif
755 //qDebug("event %d uid %s ", event, uid.mid(6).latin1()); 765 //qDebug("event %d uid %s ", event, uid.mid(6).latin1());
756 if (!event) return; 766 if (!event) return;
757 //createEventViewer(); 767 //createEventViewer();
758 mEventViewer->setEvent(event); 768 mEventViewer->setEvent(event);
759 } else if (uid.startsWith("todo:")) { 769 } else if (uid.startsWith("todo:")) {
760#ifdef DESKTOP_VERSION 770#ifdef DESKTOP_VERSION
761 Todo *todo = calendar()->todo(uid.mid(7)); 771 Todo *todo = calendar()->todo(uid.mid(7));
762#else 772#else
763 Todo *todo = calendar()->todo(uid.mid(5)); 773 Todo *todo = calendar()->todo(uid.mid(5));
764#endif 774#endif
765 if (!todo) return; 775 if (!todo) return;
766 //createEventViewer(); 776 //createEventViewer();
767 mEventViewer->setTodo(todo); 777 mEventViewer->setTodo(todo);
768 } else { 778 } else {
769 return; 779 return;
770 780
771 } 781 }
772 mEventViewer->showMe(); 782 mEventViewer->showMe();
773 mEventViewer->raise(); 783 mEventViewer->raise();
774} 784}