summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2005-10-10 01:15:22 (UTC)
committer zautrix <zautrix>2005-10-10 01:15:22 (UTC)
commitb4ed5a3409d8a6d2f443e78306abbaf6963f0f9e (patch) (unidiff)
tree9b37ba3cce4cbe4431e7075f1ef586ac9d2256c2 /korganizer
parenta1bde7e0949e35073c3b6126db9bb55ffca77102 (diff)
downloadkdepimpi-b4ed5a3409d8a6d2f443e78306abbaf6963f0f9e.zip
kdepimpi-b4ed5a3409d8a6d2f443e78306abbaf6963f0f9e.tar.gz
kdepimpi-b4ed5a3409d8a6d2f443e78306abbaf6963f0f9e.tar.bz2
dur
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koeventviewer.cpp2
-rw-r--r--korganizer/komonthview.cpp7
2 files changed, 8 insertions, 1 deletions
diff --git a/korganizer/koeventviewer.cpp b/korganizer/koeventviewer.cpp
index db695f5..976ee2c 100644
--- a/korganizer/koeventviewer.cpp
+++ b/korganizer/koeventviewer.cpp
@@ -1,831 +1,833 @@
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 78
79 KOPrintPrefs pp ( this ); 79 KOPrintPrefs pp ( this );
80 if (!pp.exec() ) 80 if (!pp.exec() )
81 return; 81 return;
82 int scaleval = pp.printMode() ; 82 int scaleval = pp.printMode() ;
83 83
84 QPrinter printer; 84 QPrinter printer;
85 if (!printer.setup() ) 85 if (!printer.setup() )
86 return; 86 return;
87 QPainter p; 87 QPainter p;
88 p.begin ( &printer ); 88 p.begin ( &printer );
89 QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer ); 89 QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer );
90 float dx, dy; 90 float dx, dy;
91 int wid = (m.width() * 9)/10; 91 int wid = (m.width() * 9)/10;
92 dx = (float) wid/(float)contentsWidth (); 92 dx = (float) wid/(float)contentsWidth ();
93 dy = (float)(m.height()) / (float)contentsHeight (); 93 dy = (float)(m.height()) / (float)contentsHeight ();
94 float scale; 94 float scale;
95 // scale to fit the width or height of the paper 95 // scale to fit the width or height of the paper
96 if ( dx < dy ) 96 if ( dx < dy )
97 scale = dx; 97 scale = dx;
98 else 98 else
99 scale = dy; 99 scale = dy;
100 100
101 p.translate( m.width()/10,0 ); 101 p.translate( m.width()/10,0 );
102 if ( scaleval == 2 || scaleval == 1 && scale < 1.0 ) { 102 if ( scaleval == 2 || scaleval == 1 && scale < 1.0 ) {
103 p.scale( scale, scale ); 103 p.scale( scale, scale );
104 } 104 }
105 drawContents ( &p, 0,0, contentsWidth (), contentsHeight () ); 105 drawContents ( &p, 0,0, contentsWidth (), contentsHeight () );
106 p.end(); 106 p.end();
107#endif 107#endif
108 108
109} 109}
110void KOEventViewer::setSource(const QString& n) 110void KOEventViewer::setSource(const QString& n)
111{ 111{
112 112
113 if ( n.left(8) == "todo_uid" ) { 113 if ( n.left(8) == "todo_uid" ) {
114 int midstr = 9; 114 int midstr = 9;
115#ifdef DESKTOP_VERSION 115#ifdef DESKTOP_VERSION
116 midstr = 11; 116 midstr = 11;
117#endif 117#endif
118 //qDebug("-%s- ", n.mid(midstr).latin1()); 118 //qDebug("-%s- ", n.mid(midstr).latin1());
119 emit showIncidence( n.mid(midstr) ); 119 emit showIncidence( n.mid(midstr) );
120 return; 120 return;
121 } 121 }
122 122
123 if ( n.left(3) == "uid" ) 123 if ( n.left(3) == "uid" )
124#ifdef DESKTOP_VERSION 124#ifdef DESKTOP_VERSION
125 { 125 {
126 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 126 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
127 KABC::AddressBook::Iterator it; 127 KABC::AddressBook::Iterator it;
128 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 128 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
129 // LR I do not understand, why the uid string is different on zaurus and desktop 129 // LR I do not understand, why the uid string is different on zaurus and desktop
130 QString uid = "uid://"+(*it).uid(); 130 QString uid = "uid://"+(*it).uid();
131 131
132 //qDebug("for *%s* +%s+ ", n.latin1(), uid.latin1()); 132 //qDebug("for *%s* +%s+ ", n.latin1(), uid.latin1());
133 if (n == uid ) { 133 if (n == uid ) {
134 //qDebug("found %s ",(*it).mobileHomePhone().latin1() ); 134 //qDebug("found %s ",(*it).mobileHomePhone().latin1() );
135 QDialog dia( this,"dia123", true ); 135 QDialog dia( this,"dia123", true );
136 dia.setCaption( i18n("Details of attendee") ); 136 dia.setCaption( i18n("Details of attendee") );
137 QVBoxLayout lay ( &dia ); 137 QVBoxLayout lay ( &dia );
138 KABC::AddresseeView av ( &dia ); 138 KABC::AddresseeView av ( &dia );
139 av.setAddressee( (*it) ); 139 av.setAddressee( (*it) );
140 lay.addWidget( &av ); 140 lay.addWidget( &av );
141 if ( QApplication::desktop()->width() < 480 ) 141 if ( QApplication::desktop()->width() < 480 )
142 dia.resize( 220, 240); 142 dia.resize( 220, 240);
143 else { 143 else {
144 dia.resize( 400,400); 144 dia.resize( 400,400);
145 } 145 }
146 dia.exec(); 146 dia.exec();
147 break; 147 break;
148 } 148 }
149 } 149 }
150 return; 150 return;
151 } 151 }
152#else 152#else
153 { 153 {
154 if ( "uid:organizer" == n ) { 154 if ( "uid:organizer" == n ) {
155 ExternalAppHandler::instance()->requestDetailsFromKAPI("", mCurrentIncidence->organizer(),""); 155 ExternalAppHandler::instance()->requestDetailsFromKAPI("", mCurrentIncidence->organizer(),"");
156 return; 156 return;
157 } 157 }
158 QPtrList<Attendee> attendees = mCurrentIncidence->attendees(); 158 QPtrList<Attendee> attendees = mCurrentIncidence->attendees();
159 if (attendees.count()) { 159 if (attendees.count()) {
160 Attendee *a; 160 Attendee *a;
161 for(a=attendees.first();a;a=attendees.next()) { 161 for(a=attendees.first();a;a=attendees.next()) {
162 if ( "uid:"+a->uid() == n ) { 162 if ( "uid:"+a->uid() == n ) {
163 bool res = ExternalAppHandler::instance()->requestDetailsFromKAPI(a->name(), a->email(), a->uid()); 163 bool res = ExternalAppHandler::instance()->requestDetailsFromKAPI(a->name(), a->email(), a->uid());
164 return; 164 return;
165 } 165 }
166 } 166 }
167 } 167 }
168 return; 168 return;
169 } 169 }
170 //requestNameEmailUidListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); 170 //requestNameEmailUidListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/);
171 // the result should now arrive through method insertAttendees 171 // the result should now arrive through method insertAttendees
172 //QString uid = "uid:"+(*it).uid(); 172 //QString uid = "uid:"+(*it).uid();
173#endif 173#endif
174 if ( n.left(6) == "mailto" ) { 174 if ( n.left(6) == "mailto" ) {
175 // qDebug("KOEventViewer::setSource %s ", n.mid(7).latin1()); 175 // qDebug("KOEventViewer::setSource %s ", n.mid(7).latin1());
176#ifndef DESKTOP_VERSION 176#ifndef DESKTOP_VERSION
177 if ( n.mid(7,3) == "ALL" ) { 177 if ( n.mid(7,3) == "ALL" ) {
178 mailToAttendees( true ); 178 mailToAttendees( true );
179 } else if ( n.mid(7,4) == "RSVP" ) { 179 } else if ( n.mid(7,4) == "RSVP" ) {
180 mailToAttendees( false ); 180 mailToAttendees( false );
181 } else { 181 } else {
182 QCopEnvelope e("QPE/Application/ompi", "newMail(QString)" ); 182 QCopEnvelope e("QPE/Application/ompi", "newMail(QString)" );
183 e << n.mid(7); 183 e << n.mid(7);
184 } 184 }
185#endif 185#endif
186 186
187 } 187 }
188 188
189 189
190#ifndef KORG_NODCOP 190#ifndef KORG_NODCOP
191 kdDebug() << "KOEventViewer::setSource(): " << n << endl; 191 kdDebug() << "KOEventViewer::setSource(): " << n << endl;
192 QString tmpStr; 192 QString tmpStr;
193 if (n.startsWith("mailto:")) { 193 if (n.startsWith("mailto:")) {
194 KApplication::kApplication()->invokeMailer(n.mid(7),QString::null); 194 KApplication::kApplication()->invokeMailer(n.mid(7),QString::null);
195 //emit showIncidence(n); 195 //emit showIncidence(n);
196 return; 196 return;
197 } else if (n.startsWith("uid:")) { 197 } else if (n.startsWith("uid:")) {
198 DCOPClient *client = KApplication::kApplication()->dcopClient(); 198 DCOPClient *client = KApplication::kApplication()->dcopClient();
199 const QByteArray noParamData; 199 const QByteArray noParamData;
200 const QByteArray paramData; 200 const QByteArray paramData;
201 QByteArray replyData; 201 QByteArray replyData;
202 QCString replyTypeStr; 202 QCString replyTypeStr;
203#define PING_ABBROWSER (client->call("kaddressbook", "KAddressBookIface", "interfaces()", noParamData, replyTypeStr, replyData)) 203#define PING_ABBROWSER (client->call("kaddressbook", "KAddressBookIface", "interfaces()", noParamData, replyTypeStr, replyData))
204 bool foundAbbrowser = PING_ABBROWSER; 204 bool foundAbbrowser = PING_ABBROWSER;
205 205
206 if (foundAbbrowser) { 206 if (foundAbbrowser) {
207 //KAddressbook is already running, so just DCOP to it to bring up the contact editor 207 //KAddressbook is already running, so just DCOP to it to bring up the contact editor
208 //client->send("kaddressbook","KAddressBookIface", 208 //client->send("kaddressbook","KAddressBookIface",
209 QDataStream arg(paramData, IO_WriteOnly); 209 QDataStream arg(paramData, IO_WriteOnly);
210 arg << n.mid(6); 210 arg << n.mid(6);
211 client->send("kaddressbook", "KAddressBookIface", "showContactEditor( QString )", paramData); 211 client->send("kaddressbook", "KAddressBookIface", "showContactEditor( QString )", paramData);
212 return; 212 return;
213 } else { 213 } else {
214 /* 214 /*
215 KaddressBook is not already running. Pass it the UID of the contact via the command line while starting it - its neater. 215 KaddressBook is not already running. Pass it the UID of the contact via the command line while starting it - its neater.
216 We start it without its main interface 216 We start it without its main interface
217 */ 217 */
218 KIconLoader* iconLoader = new KIconLoader(); 218 KIconLoader* iconLoader = new KIconLoader();
219 QString iconPath = iconLoader->iconPath("go",KIcon::Small); 219 QString iconPath = iconLoader->iconPath("go",KIcon::Small);
220 ActionManager::setStartedKAddressBook(true); 220 ActionManager::setStartedKAddressBook(true);
221 tmpStr = "kaddressbook --editor-only --uid "; 221 tmpStr = "kaddressbook --editor-only --uid ";
222 tmpStr += KProcess::quote(n.mid(6)); 222 tmpStr += KProcess::quote(n.mid(6));
223 KRun::runCommand(tmpStr,"KAddressBook",iconPath); 223 KRun::runCommand(tmpStr,"KAddressBook",iconPath);
224 return; 224 return;
225 } 225 }
226 } else { 226 } else {
227 //QTextBrowser::setSource(n); 227 //QTextBrowser::setSource(n);
228 } 228 }
229#endif 229#endif
230} 230}
231void KOEventViewer::mailToAttendees( bool all ) 231void KOEventViewer::mailToAttendees( bool all )
232{ 232{
233 QPtrList<Attendee> attendees = mCurrentIncidence->attendees(); 233 QPtrList<Attendee> attendees = mCurrentIncidence->attendees();
234 if (attendees.count() == 0) return; 234 if (attendees.count() == 0) return;
235 QStringList nameList; 235 QStringList nameList;
236 QStringList emailList; 236 QStringList emailList;
237 QStringList uidList; 237 QStringList uidList;
238 Attendee* a; 238 Attendee* a;
239 for(a=attendees.first();a;a=attendees.next()) { 239 for(a=attendees.first();a;a=attendees.next()) {
240 if ( !all && !a->RSVP() ) continue; 240 if ( !all && !a->RSVP() ) continue;
241 if (!a->email().isEmpty()) { 241 if (!a->email().isEmpty()) {
242 nameList.append (a->name() ); 242 nameList.append (a->name() );
243 emailList.append (a->email() ); 243 emailList.append (a->email() );
244 uidList.append (a->uid() ); 244 uidList.append (a->uid() );
245 } 245 }
246 } 246 }
247 QString uid = "ComposeMailUIpick2"+mMailSubject; 247 QString uid = "ComposeMailUIpick2"+mMailSubject;
248#ifndef DESKTOP_VERSION 248#ifndef DESKTOP_VERSION
249 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList); 249 bool res = ExternalAppHandler::instance()->returnNameEmailUidListFromKAPI("QPE/Application/ompi", uid, nameList, emailList, uidList);
250#endif 250#endif
251 251
252} 252}
253void KOEventViewer::addTag(const QString & tag,const QString & text) 253void KOEventViewer::addTag(const QString & tag,const QString & text)
254{ 254{
255 int number=text.contains("\n"); 255 int number=text.contains("\n");
256 QString str = "<" + tag + ">"; 256 QString str = "<" + tag + ">";
257 QString tmpText=text; 257 QString tmpText=text;
258 QString tmpStr=str; 258 QString tmpStr=str;
259 if(number !=-1) 259 if(number !=-1)
260 { 260 {
261 if (number > 0) { 261 if (number > 0) {
262 int pos=0; 262 int pos=0;
263 QString tmp; 263 QString tmp;
264 for(int i=0;i<=number;i++) { 264 for(int i=0;i<=number;i++) {
265 pos=tmpText.find("\n"); 265 pos=tmpText.find("\n");
266 tmp=tmpText.left(pos); 266 tmp=tmpText.left(pos);
267 tmpText=tmpText.right(tmpText.length()-pos-1); 267 tmpText=tmpText.right(tmpText.length()-pos-1);
268 tmpStr+=tmp+"<br>"; 268 tmpStr+=tmp+"<br>";
269 } 269 }
270 } 270 }
271 else tmpStr += tmpText; 271 else tmpStr += tmpText;
272 tmpStr+="</" + tag + ">"; 272 tmpStr+="</" + tag + ">";
273 mText.append(tmpStr); 273 mText.append(tmpStr);
274 } 274 }
275 else 275 else
276 { 276 {
277 str += text + "</" + tag + ">"; 277 str += text + "</" + tag + ">";
278 mText.append(str); 278 mText.append(str);
279 } 279 }
280} 280}
281 281
282void KOEventViewer::setColorMode( int m ) 282void KOEventViewer::setColorMode( int m )
283{ 283{
284 mColorMode = m; 284 mColorMode = m;
285} 285}
286void KOEventViewer::appendEvent(Event *event, int mode ) 286void KOEventViewer::appendEvent(Event *event, int mode )
287{ 287{
288 mMailSubject = ""; 288 mMailSubject = "";
289 mCurrentIncidence = event; 289 mCurrentIncidence = event;
290 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 290 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
291 bool wideScreen = ( QApplication::desktop()->width() >= 640 ); 291 bool wideScreen = ( QApplication::desktop()->width() >= 640 );
292 topLevelWidget()->setCaption(i18n("Event Viewer")); 292 topLevelWidget()->setCaption(i18n("Event Viewer"));
293 if ( mode == 0 ) { 293 if ( mode == 0 ) {
294 addTag("h2",deTag(event->summary())); 294 addTag("h2",deTag(event->summary()));
295 formatReadOnly(event); 295 formatReadOnly(event);
296 } 296 }
297 else { 297 else {
298 if ( mColorMode == 1 ) { 298 if ( mColorMode == 1 ) {
299 mText +="<font color=\"#00A000\">"; 299 mText +="<font color=\"#00A000\">";
300 } 300 }
301 if ( mColorMode == 2 ) { 301 if ( mColorMode == 2 ) {
302 mText +="<font color=\"#C00000\">"; 302 mText +="<font color=\"#C00000\">";
303 } 303 }
304 // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>"; 304 // mText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>";
305 if ( mode == 1 ) { 305 if ( mode == 1 ) {
306 addTag("h2",i18n( "Local: " ) +deTag(event->summary())); 306 addTag("h2",i18n( "Local: " ) +deTag(event->summary()));
307 } else { 307 } else {
308 addTag("h2",i18n( "Remote: " ) +deTag(event->summary())); 308 addTag("h2",i18n( "Remote: " ) +deTag(event->summary()));
309 } 309 }
310 formatReadOnly(event); 310 formatReadOnly(event);
311 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); 311 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) );
312 if ( mColorMode ) 312 if ( mColorMode )
313 mText += "</font>"; 313 mText += "</font>";
314 } 314 }
315 mMailSubject += i18n( "Meeting " )+ event->summary(); 315 mMailSubject += i18n( "Meeting " )+ event->summary();
316 if (event->cancelled ()) { 316 if (event->cancelled ()) {
317 mText +="<font color=\"#B00000\">"; 317 mText +="<font color=\"#B00000\">";
318 addTag("i",i18n("This event has been cancelled!")); 318 addTag("i",i18n("This event has been cancelled!"));
319 mText.append("<br>"); 319 mText.append("<br>");
320 mText += "</font>"; 320 mText += "</font>";
321 mMailSubject += i18n("(cancelled)"); 321 mMailSubject += i18n("(cancelled)");
322 } 322 }
323 323
324 if (event->doesFloat()) { 324 if (event->doesFloat()) {
325 if (event->isMultiDay()) { 325 if (event->isMultiDay()) {
326 mText.append(i18n("<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>") 326 mText.append(i18n("<p><b>From:</b> %1 </p><p><b>To:</b> %2</p>")
327 .arg(event->dtStartDateStr(shortDate)) 327 .arg(event->dtStartDateStr(shortDate))
328 .arg(event->dtEndDateStr(shortDate))); 328 .arg(event->dtEndDateStr(shortDate)));
329 mText.append(i18n("<p><b>Duration:</b> %1 days</p>")
330 .arg(event->dtStart().daysTo(event->dtEnd())+1));
329 } else { 331 } else {
330 mText.append(i18n("<p><b>On:</b> %1</p>").arg(event->dtStartDateStr( shortDate ))); 332 mText.append(i18n("<p><b>On:</b> %1</p>").arg(event->dtStartDateStr( shortDate )));
331 } 333 }
332 } else { 334 } else {
333 if (event->isMultiDay()) { 335 if (event->isMultiDay()) {
334 mText.append(i18n("<p><b>From:</b> %1</p> ") 336 mText.append(i18n("<p><b>From:</b> %1</p> ")
335 .arg(event->dtStartStr( shortDate))); 337 .arg(event->dtStartStr( shortDate)));
336 mText.append(i18n("<p><b>To:</b> %1</p>") 338 mText.append(i18n("<p><b>To:</b> %1</p>")
337 .arg(event->dtEndStr(shortDate))); 339 .arg(event->dtEndStr(shortDate)));
338 } else { 340 } else {
339 mText.append(i18n("<p><b>From:</b> %1 <b>To:</b> %2</p>") 341 mText.append(i18n("<p><b>From:</b> %1 <b>To:</b> %2</p>")
340 .arg(event->dtStartTimeStr()) 342 .arg(event->dtStartTimeStr())
341 .arg(event->dtEndTimeStr())); 343 .arg(event->dtEndTimeStr()));
342 mText.append(i18n("<p><b>On:</b> %1</p> ") 344 mText.append(i18n("<p><b>On:</b> %1</p> ")
343 .arg(event->dtStartDateStr( shortDate ))); 345 .arg(event->dtStartDateStr( shortDate )));
344 } 346 }
345 } 347 }
346 if (!event->location().isEmpty()) { 348 if (!event->location().isEmpty()) {
347 addTag("p","<b>"+i18n("Location: ")+"</b>"+ deTag(event->location() ) ); 349 addTag("p","<b>"+i18n("Location: ")+"</b>"+ deTag(event->location() ) );
348 mMailSubject += i18n(" at ") + event->location(); 350 mMailSubject += i18n(" at ") + event->location();
349 } 351 }
350 if (event->doesRecur()) { 352 if (event->doesRecur()) {
351 353
352 QString recurText = event->recurrenceText(); 354 QString recurText = event->recurrenceText();
353 addTag("p","<em>" + i18n("This is a %1 recurring event.").arg(recurText ) + "</em>"); 355 addTag("p","<em>" + i18n("This is a %1 recurring event.").arg(recurText ) + "</em>");
354 bool ok; 356 bool ok;
355 QDate start = QDate::currentDate(); 357 QDate start = QDate::currentDate();
356 QDateTime next; 358 QDateTime next;
357 next = event->getNextOccurence( QDateTime::currentDateTime() , &ok ); 359 next = event->getNextOccurence( QDateTime::currentDateTime() , &ok );
358 if ( ok ) { 360 if ( ok ) {
359 if ( wideScreen ){ 361 if ( wideScreen ){
360 addTag("p",i18n("<b>Next recurrence is on:</b>") +" " + KGlobal::locale()->formatDate( next.date(), shortDate ) ); 362 addTag("p",i18n("<b>Next recurrence is on:</b>") +" " + KGlobal::locale()->formatDate( next.date(), shortDate ) );
361 } else { 363 } else {
362 addTag("p",i18n("<b>Next recurrence is on:</b>") ); 364 addTag("p",i18n("<b>Next recurrence is on:</b>") );
363 addTag("p", KGlobal::locale()->formatDate( next.date(), shortDate )); 365 addTag("p", KGlobal::locale()->formatDate( next.date(), shortDate ));
364 } 366 }
365 mMailSubject += i18n(" - " )+ KGlobal::locale()->formatDateTime( next, true ); 367 mMailSubject += i18n(" - " )+ KGlobal::locale()->formatDateTime( next, true );
366 368
367 } else { 369 } else {
368 bool last; 370 bool last;
369 QDate nextd; 371 QDate nextd;
370 nextd = event->recurrence()->getPreviousDate( QDate::currentDate() , &last ); 372 nextd = event->recurrence()->getPreviousDate( QDate::currentDate() , &last );
371 if ( last ) { 373 if ( last ) {
372 if ( wideScreen ){ 374 if ( wideScreen ){
373 addTag("p",i18n("<b>Last recurrence was on:</b>") +" " + KGlobal::locale()->formatDate( nextd, shortDate )); 375 addTag("p",i18n("<b>Last recurrence was on:</b>") +" " + KGlobal::locale()->formatDate( nextd, shortDate ));
374 } else{ 376 } else{
375 addTag("p",i18n("<b>Last recurrence was on:</b>") ); 377 addTag("p",i18n("<b>Last recurrence was on:</b>") );
376 addTag("p", KGlobal::locale()->formatDate( nextd, shortDate )); 378 addTag("p", KGlobal::locale()->formatDate( nextd, shortDate ));
377 } 379 }
378 } 380 }
379 } 381 }
380 } else { 382 } else {
381 mMailSubject += i18n(" - " )+event->dtStartStr( true ); 383 mMailSubject += i18n(" - " )+event->dtStartStr( true );
382 384
383 } 385 }
384 386
385 387
386 if (event->isAlarmEnabled()) { 388 if (event->isAlarmEnabled()) {
387 Alarm *alarm =event->alarms().first() ; 389 Alarm *alarm =event->alarms().first() ;
388 QDateTime t = alarm->time(); 390 QDateTime t = alarm->time();
389 QString s =i18n("( %1 before )").arg( alarm->offsetText() ); 391 QString s =i18n("( %1 before )").arg( alarm->offsetText() );
390 if(wideScreen ){ 392 if(wideScreen ){
391 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"+ KGlobal::locale()->formatDateTime( t, shortDate )); 393 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"+ KGlobal::locale()->formatDateTime( t, shortDate ));
392 }else{ 394 }else{
393 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"); 395 addTag("p",i18n("<b>Alarm on: ") + s +" </b>");
394 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate )); 396 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate ));
395 } 397 }
396 //addTag("p",s); 398 //addTag("p",s);
397 } 399 }
398 400
399 addTag("p","<b>"+i18n("Access: ") + "</b>" + event->secrecyStr()); 401 addTag("p","<b>"+i18n("Access: ") + "</b>" + event->secrecyStr());
400 402
401 formatCategories(event); 403 formatCategories(event);
402 404
403 formatAttendees(event); 405 formatAttendees(event);
404 406
405 if ( KOPrefs::instance()->mEVshowCreated ) { 407 if ( KOPrefs::instance()->mEVshowCreated ) {
406 if(wideScreen ){ 408 if(wideScreen ){
407 addTag("p",i18n("<b>Created: ") +" </b>"+KGlobal::locale()->formatDateTime( event->created(), shortDate )); 409 addTag("p",i18n("<b>Created: ") +" </b>"+KGlobal::locale()->formatDateTime( event->created(), shortDate ));
408 }else{ 410 }else{
409 addTag("p",i18n("<b>Created: ") +" </b>"); 411 addTag("p",i18n("<b>Created: ") +" </b>");
410 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate )); 412 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate ));
411 } 413 }
412 414
413 415
414 } 416 }
415 if ( KOPrefs::instance()->mEVshowChanged ) { 417 if ( KOPrefs::instance()->mEVshowChanged ) {
416 if(wideScreen ){ 418 if(wideScreen ){
417 addTag("p",i18n("<b>Last modified: ") +" </b>" + KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ) ); 419 addTag("p",i18n("<b>Last modified: ") +" </b>" + KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ) );
418 }else{ 420 }else{
419 addTag("p",i18n("<b>Last modified: ") +" </b>"); 421 addTag("p",i18n("<b>Last modified: ") +" </b>");
420 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate )); 422 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ));
421 } 423 }
422 424
423 } 425 }
424 if ( KOPrefs::instance()->mEVshowDetails ) { 426 if ( KOPrefs::instance()->mEVshowDetails ) {
425 if (!event->description().isEmpty()) { 427 if (!event->description().isEmpty()) {
426 addTag("p",i18n("<b>Details: </b>")); 428 addTag("p",i18n("<b>Details: </b>"));
427 addTag("p",deTag(event->description())); 429 addTag("p",deTag(event->description()));
428 } 430 }
429 } 431 }
430 setText(mText); 432 setText(mText);
431 //QWhatsThis::add(this,mText); 433 //QWhatsThis::add(this,mText);
432 434
433} 435}
434 436
435void KOEventViewer::appendTodo(Todo *event, int mode ) 437void KOEventViewer::appendTodo(Todo *event, int mode )
436{ 438{
437 mMailSubject = ""; 439 mMailSubject = "";
438 mCurrentIncidence = event; 440 mCurrentIncidence = event;
439 topLevelWidget()->setCaption(i18n("Todo Viewer")); 441 topLevelWidget()->setCaption(i18n("Todo Viewer"));
440 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 442 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
441 bool wideScreen = ( QApplication::desktop()->width() >= 640 ); 443 bool wideScreen = ( QApplication::desktop()->width() >= 640 );
442 if (mode == 0 ) { 444 if (mode == 0 ) {
443 addTag("h2",deTag(event->summary())); 445 addTag("h2",deTag(event->summary()));
444 formatReadOnly(event); 446 formatReadOnly(event);
445 } 447 }
446 else { 448 else {
447 if ( mColorMode == 1 ) { 449 if ( mColorMode == 1 ) {
448 mText +="<font color=\"#00A000\">"; 450 mText +="<font color=\"#00A000\">";
449 } 451 }
450 if ( mColorMode == 2 ) { 452 if ( mColorMode == 2 ) {
451 mText +="<font color=\"#B00000\">"; 453 mText +="<font color=\"#B00000\">";
452 } 454 }
453 if ( mode == 1 ) { 455 if ( mode == 1 ) {
454 addTag("h2",i18n( "Local: " ) +deTag(event->summary())); 456 addTag("h2",i18n( "Local: " ) +deTag(event->summary()));
455 } else { 457 } else {
456 addTag("h2",i18n( "Remote: " ) +deTag(event->summary())); 458 addTag("h2",i18n( "Remote: " ) +deTag(event->summary()));
457 } 459 }
458 formatReadOnly(event); 460 formatReadOnly(event);
459 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) ); 461 addTag("h3",i18n( "Last modified: " ) + KGlobal::locale()->formatDateTime(event->lastModified(),shortDate, true ) );
460 if ( mColorMode ) 462 if ( mColorMode )
461 mText += "</font>"; 463 mText += "</font>";
462 } 464 }
463 mMailSubject += i18n( "Todo " )+ event->summary(); 465 mMailSubject += i18n( "Todo " )+ event->summary();
464 466
465 if ( event->percentComplete() == 100 && event->hasCompletedDate() ) { 467 if ( event->percentComplete() == 100 && event->hasCompletedDate() ) {
466 mText +="<font color=\"#B00000\">"; 468 mText +="<font color=\"#B00000\">";
467 addTag("i", i18n("<p><i>Completed on %1</i></p>").arg( event->completedStr(KOPrefs::instance()->mShortDateInViewer) ) ); 469 addTag("i", i18n("<p><i>Completed on %1</i></p>").arg( event->completedStr(KOPrefs::instance()->mShortDateInViewer) ) );
468 mText += "</font>"; 470 mText += "</font>";
469 } else { 471 } else {
470 mText.append(i18n("<p><i>%1 % completed</i></p>") 472 mText.append(i18n("<p><i>%1 % completed</i></p>")
471 .arg(event->percentComplete())); 473 .arg(event->percentComplete()));
472 } 474 }
473 475
474 if (event->cancelled ()) { 476 if (event->cancelled ()) {
475 mText +="<font color=\"#B00000\">"; 477 mText +="<font color=\"#B00000\">";
476 addTag("i",i18n("This todo has been cancelled!")); 478 addTag("i",i18n("This todo has been cancelled!"));
477 mText.append("<br>"); 479 mText.append("<br>");
478 mText += "</font>"; 480 mText += "</font>";
479 mMailSubject += i18n("(cancelled)"); 481 mMailSubject += i18n("(cancelled)");
480 } 482 }
481 483
482 484
483 485
484 if (event->doesRecur()) { 486 if (event->doesRecur()) {
485 487
486 QString recurText = event->recurrence()->recurrenceText(); 488 QString recurText = event->recurrence()->recurrenceText();
487 addTag("p","<em>" + i18n("This is a %1 recurring todo.").arg(recurText ) + "</em>"); 489 addTag("p","<em>" + i18n("This is a %1 recurring todo.").arg(recurText ) + "</em>");
488 490
489 } 491 }
490 if (event->hasStartDate()) { 492 if (event->hasStartDate()) {
491 mText.append(i18n("<p><b>Start on:</b> %1</p>").arg(event->dtStartStr(KOPrefs::instance()->mShortDateInViewer))); 493 mText.append(i18n("<p><b>Start on:</b> %1</p>").arg(event->dtStartStr(KOPrefs::instance()->mShortDateInViewer)));
492 } 494 }
493 if (event->hasDueDate()) { 495 if (event->hasDueDate()) {
494 mText.append(i18n("<p><b>Due on:</b> %1</p>").arg(event->dtDueStr(KOPrefs::instance()->mShortDateInViewer))); 496 mText.append(i18n("<p><b>Due on:</b> %1</p>").arg(event->dtDueStr(KOPrefs::instance()->mShortDateInViewer)));
495 mMailSubject += i18n(" - " )+event->dtDueStr( true ); 497 mMailSubject += i18n(" - " )+event->dtDueStr( true );
496 } 498 }
497 if (!event->location().isEmpty()) { 499 if (!event->location().isEmpty()) {
498 addTag("p","<b>"+i18n("Location: ")+"</b>"+ deTag(event->location() ) ); 500 addTag("p","<b>"+i18n("Location: ")+"</b>"+ deTag(event->location() ) );
499 mMailSubject += i18n(" at ") + event->location(); 501 mMailSubject += i18n(" at ") + event->location();
500 } 502 }
501 mText.append(i18n("<p><b>Priority:</b> %2</p>") 503 mText.append(i18n("<p><b>Priority:</b> %2</p>")
502 .arg(QString::number(event->priority()))); 504 .arg(QString::number(event->priority())));
503 505
504 if (event->isAlarmEnabled()) { 506 if (event->isAlarmEnabled()) {
505 Alarm *alarm =event->alarms().first() ; 507 Alarm *alarm =event->alarms().first() ;
506 QDateTime t = alarm->time(); 508 QDateTime t = alarm->time();
507 QString s =i18n("( %1 before )").arg( alarm->offsetText() ); 509 QString s =i18n("( %1 before )").arg( alarm->offsetText() );
508 if ( wideScreen ) { 510 if ( wideScreen ) {
509 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"+ KGlobal::locale()->formatDateTime( t, shortDate )); 511 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"+ KGlobal::locale()->formatDateTime( t, shortDate ));
510 } else { 512 } else {
511 addTag("p",i18n("<b>Alarm on: ") + s +" </b>"); 513 addTag("p",i18n("<b>Alarm on: ") + s +" </b>");
512 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate )); 514 addTag("p", KGlobal::locale()->formatDateTime( t, shortDate ));
513 } 515 }
514 } 516 }
515 517
516 addTag("p","<b>"+i18n("Access: ") + "</b>" + event->secrecyStr()); 518 addTag("p","<b>"+i18n("Access: ") + "</b>" + event->secrecyStr());
517 519
518 formatCategories(event); 520 formatCategories(event);
519 521
520 formatAttendees(event); 522 formatAttendees(event);
521 523
522 if ( KOPrefs::instance()->mEVshowCreated ) { 524 if ( KOPrefs::instance()->mEVshowCreated ) {
523 if(wideScreen ){ 525 if(wideScreen ){
524 526
525 addTag("p",i18n("<b>Created: ") +" </b>"+KGlobal::locale()->formatDateTime( event->created(), shortDate )); 527 addTag("p",i18n("<b>Created: ") +" </b>"+KGlobal::locale()->formatDateTime( event->created(), shortDate ));
526 528
527 } else { 529 } else {
528 addTag("p",i18n("<b>Created: ") +" </b>"); 530 addTag("p",i18n("<b>Created: ") +" </b>");
529 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate )); 531 addTag("p", KGlobal::locale()->formatDateTime( event->created(), shortDate ));
530 } 532 }
531 } 533 }
532 if ( KOPrefs::instance()->mEVshowChanged ) { 534 if ( KOPrefs::instance()->mEVshowChanged ) {
533 if(wideScreen ){ 535 if(wideScreen ){
534 addTag("p",i18n("<b>Last modified: ") +" </b>" +KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ) ); 536 addTag("p",i18n("<b>Last modified: ") +" </b>" +KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ) );
535 537
536 } else { 538 } else {
537 addTag("p",i18n("<b>Last modified: ") +" </b>"); 539 addTag("p",i18n("<b>Last modified: ") +" </b>");
538 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate )); 540 addTag("p", KGlobal::locale()->formatDateTime( event->lastModified(), shortDate ));
539 } 541 }
540 } 542 }
541 if ( event->relatedTo() ) { 543 if ( event->relatedTo() ) {
542 addTag("b",i18n("Parent todo:<br>")); 544 addTag("b",i18n("Parent todo:<br>"));
543 545
544 QString t_name = "[" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] ";// +event->relatedTo()->summary()); 546 QString t_name = "[" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] ";// +event->relatedTo()->summary());
545 547
546 mText += t_name; 548 mText += t_name;
547 mText += "<a href=\"todo_uid:" + event->relatedTo()->uid() + "\">"; 549 mText += "<a href=\"todo_uid:" + event->relatedTo()->uid() + "\">";
548 mText += deTag(event->relatedTo()->summary()); 550 mText += deTag(event->relatedTo()->summary());
549 mText += "</a><br>"; 551 mText += "</a><br>";
550 552
551 // mText.append(deTag("[" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] " +event->relatedTo()->summary()) +"<br>"); 553 // mText.append(deTag("[" +QString::number(event->relatedTo()->priority()) + "/" + QString::number(((Todo*)event->relatedTo())->percentComplete())+"%] " +event->relatedTo()->summary()) +"<br>");
552 } 554 }
553 QPtrList<Incidence> Relations = event->relations(); 555 QPtrList<Incidence> Relations = event->relations();
554 Incidence *to; 556 Incidence *to;
555 if ( Relations.first() ) 557 if ( Relations.first() )
556 addTag("b",i18n("Sub todos:<br>")); 558 addTag("b",i18n("Sub todos:<br>"));
557 for (to=Relations.first();to;to=Relations.next()) { 559 for (to=Relations.first();to;to=Relations.next()) {
558 QString t_name = "[" +QString::number(((Todo*)to)->priority()) + "/" + QString::number(((Todo*)to)->percentComplete())+"%] ";// +to->relatedTo()->summary()); 560 QString t_name = "[" +QString::number(((Todo*)to)->priority()) + "/" + QString::number(((Todo*)to)->percentComplete())+"%] ";// +to->relatedTo()->summary());
559 mText += t_name; 561 mText += t_name;
560 mText += "<a href=\"todo_uid:" + to->uid() + "\">"; 562 mText += "<a href=\"todo_uid:" + to->uid() + "\">";
561 mText += deTag(to->summary()); 563 mText += deTag(to->summary());
562 mText += "</a><br>"; 564 mText += "</a><br>";
563 565
564 } 566 }
565 567
566 if ( KOPrefs::instance()->mEVshowDetails ) { 568 if ( KOPrefs::instance()->mEVshowDetails ) {
567 if (!event->description().isEmpty()) { 569 if (!event->description().isEmpty()) {
568 addTag("p",i18n("<b>Details: </b>")); 570 addTag("p",i18n("<b>Details: </b>"));
569 addTag("p",deTag(event->description())); 571 addTag("p",deTag(event->description()));
570 } 572 }
571 } 573 }
572 setText(mText); 574 setText(mText);
573} 575}
574 576
575void KOEventViewer::formatCategories(Incidence *event) 577void KOEventViewer::formatCategories(Incidence *event)
576{ 578{
577 if (!event->categoriesStr().isEmpty()) { 579 if (!event->categoriesStr().isEmpty()) {
578 if (event->categories().count() == 1) { 580 if (event->categories().count() == 1) {
579 addTag("p","<b>"+i18n("Category") + ":</b> " + event->categoriesStrWithSpace()); 581 addTag("p","<b>"+i18n("Category") + ":</b> " + event->categoriesStrWithSpace());
580 } else { 582 } else {
581 addTag("p","<b>"+i18n("Categories")+":</b> " + event->categoriesStrWithSpace() ) ; 583 addTag("p","<b>"+i18n("Categories")+":</b> " + event->categoriesStrWithSpace() ) ;
582 } 584 }
583 } 585 }
584} 586}
585void KOEventViewer::formatAttendees(Incidence *event) 587void KOEventViewer::formatAttendees(Incidence *event)
586{ 588{
587 QPtrList<Attendee> attendees = event->attendees(); 589 QPtrList<Attendee> attendees = event->attendees();
588 if (attendees.count()) { 590 if (attendees.count()) {
589 591
590 592
591 QString iconPath = KGlobal::iconLoader()->iconPath("mailappt",KIcon::Small); 593 QString iconPath = KGlobal::iconLoader()->iconPath("mailappt",KIcon::Small);
592 QString NOiconPath = KGlobal::iconLoader()->iconPath("nomailappt",KIcon::Small); 594 QString NOiconPath = KGlobal::iconLoader()->iconPath("nomailappt",KIcon::Small);
593 addTag("h3",i18n("Organizer")); 595 addTag("h3",i18n("Organizer"));
594 mText.append("<ul><li>"); 596 mText.append("<ul><li>");
595#ifndef KORG_NOKABC 597#ifndef KORG_NOKABC
596 598
597#ifdef DESKTOP_VERSION 599#ifdef DESKTOP_VERSION
598 KABC::AddressBook *add_book = KABC::StdAddressBook::self(); 600 KABC::AddressBook *add_book = KABC::StdAddressBook::self();
599 KABC::Addressee::List addressList; 601 KABC::Addressee::List addressList;
600 addressList = add_book->findByEmail(event->organizer()); 602 addressList = add_book->findByEmail(event->organizer());
601 KABC::Addressee o = addressList.first(); 603 KABC::Addressee o = addressList.first();
602 if (!o.isEmpty() && addressList.size()<2) { 604 if (!o.isEmpty() && addressList.size()<2) {
603 mText += "<a href=\"uid:" + o.uid() + "\">"; 605 mText += "<a href=\"uid:" + o.uid() + "\">";
604 mText += o.formattedName(); 606 mText += o.formattedName();
605 mText += "</a>\n"; 607 mText += "</a>\n";
606 } else { 608 } else {
607 mText.append(event->organizer()); 609 mText.append(event->organizer());
608 } 610 }
609#else //DESKTOP_VERSION 611#else //DESKTOP_VERSION
610 mText += "<a href=\"uid:organizer\">"; 612 mText += "<a href=\"uid:organizer\">";
611 mText += event->organizer(); 613 mText += event->organizer();
612 mText += "</a>\n"; 614 mText += "</a>\n";
613#endif //DESKTOP_VERSION 615#endif //DESKTOP_VERSION
614 616
615 617
616#else 618#else
617 mText.append(event->organizer()); 619 mText.append(event->organizer());
618#endif 620#endif
619 621
620 if (iconPath) { 622 if (iconPath) {
621 mText += " <a href=\"mailto:" + event->organizer() + "\">"; 623 mText += " <a href=\"mailto:" + event->organizer() + "\">";
622 mText += "<IMG src=\"" + iconPath + "\">"; 624 mText += "<IMG src=\"" + iconPath + "\">";
623 mText += "</a>\n"; 625 mText += "</a>\n";
624 } 626 }
625 mText.append("</li></ul>"); 627 mText.append("</li></ul>");
626 628
627 addTag("h3",i18n("Attendees")); 629 addTag("h3",i18n("Attendees"));
628 Attendee *a; 630 Attendee *a;
629 mText.append("<ul>"); 631 mText.append("<ul>");
630 int a_count = 0; 632 int a_count = 0;
631 int a_count_nr = 0; 633 int a_count_nr = 0;
632 634
633 for(a=attendees.first();a;a=attendees.next()) { 635 for(a=attendees.first();a;a=attendees.next()) {
634#ifndef KORG_NOKABC 636#ifndef KORG_NOKABC
635#ifdef DESKTOP_VERSION 637#ifdef DESKTOP_VERSION
636 if (a->name().isEmpty()) { 638 if (a->name().isEmpty()) {
637 addressList = add_book->findByEmail(a->email()); 639 addressList = add_book->findByEmail(a->email());
638 KABC::Addressee o = addressList.first(); 640 KABC::Addressee o = addressList.first();
639 if (!o.isEmpty() && addressList.size()<2) { 641 if (!o.isEmpty() && addressList.size()<2) {
640 mText += "<a href=\"uid:" + o.uid() + "\">"; 642 mText += "<a href=\"uid:" + o.uid() + "\">";
641 mText += o.formattedName(); 643 mText += o.formattedName();
642 mText += "</a>\n"; 644 mText += "</a>\n";
643 } else { 645 } else {
644 mText += "<li>"; 646 mText += "<li>";
645 mText.append(a->email()); 647 mText.append(a->email());
646 mText += "\n"; 648 mText += "\n";
647 } 649 }
648 } else { 650 } else {
649 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 651 mText += "<li><a href=\"uid:" + a->uid() + "\">";
650 if (!a->name().isEmpty()) mText += a->name(); 652 if (!a->name().isEmpty()) mText += a->name();
651 else mText += a->email(); 653 else mText += a->email();
652 mText += "</a>\n"; 654 mText += "</a>\n";
653 } 655 }
654#else //DESKTOP_VERSION 656#else //DESKTOP_VERSION
655 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 657 mText += "<li><a href=\"uid:" + a->uid() + "\">";
656 if (!a->name().isEmpty()) mText += a->name(); 658 if (!a->name().isEmpty()) mText += a->name();
657 else mText += a->email(); 659 else mText += a->email();
658 mText += "</a>\n"; 660 mText += "</a>\n";
659#endif //DESKTOP_VERSION 661#endif //DESKTOP_VERSION
660#else 662#else
661 //qDebug("nokabc "); 663 //qDebug("nokabc ");
662 mText += "<li><a href=\"uid:" + a->uid() + "\">"; 664 mText += "<li><a href=\"uid:" + a->uid() + "\">";
663 if (!a->name().isEmpty()) mText += a->name(); 665 if (!a->name().isEmpty()) mText += a->name();
664 else mText += a->email(); 666 else mText += a->email();
665 mText += "</a>\n"; 667 mText += "</a>\n";
666#endif 668#endif
667 669
668 670
669 if (!a->email().isEmpty()) { 671 if (!a->email().isEmpty()) {
670 if (iconPath) { 672 if (iconPath) {
671 mText += "<a href=\"mailto:" + a->name() +" <" + a->email() + ">:" + mMailSubject + "\">"; 673 mText += "<a href=\"mailto:" + a->name() +" <" + a->email() + ">:" + mMailSubject + "\">";
672 if ( a->RSVP() ) { 674 if ( a->RSVP() ) {
673 ++a_count_nr; 675 ++a_count_nr;
674 mText += "<IMG src=\"" + iconPath + "\">"; 676 mText += "<IMG src=\"" + iconPath + "\">";
675 } 677 }
676 else { 678 else {
677 ++a_count; 679 ++a_count;
678 mText += "<IMG src=\"" + NOiconPath + "\">"; 680 mText += "<IMG src=\"" + NOiconPath + "\">";
679 } 681 }
680 mText += "</a>\n"; 682 mText += "</a>\n";
681 } 683 }
682 } 684 }
683 if (a->status() != Attendee::NeedsAction ) 685 if (a->status() != Attendee::NeedsAction )
684 mText +="[" + a->statusStr() + "] "; 686 mText +="[" + a->statusStr() + "] ";
685 if (a->role() == Attendee::Chair ) 687 if (a->role() == Attendee::Chair )
686 mText +="(" + a->roleStr().left(1) + ".)"; 688 mText +="(" + a->roleStr().left(1) + ".)";
687 } 689 }
688 mText.append("</li></ul>"); 690 mText.append("</li></ul>");
689 if ( (a_count+a_count_nr) > 1 ) { 691 if ( (a_count+a_count_nr) > 1 ) {
690 mText += "<a href=\"mailto:ALL\">"; 692 mText += "<a href=\"mailto:ALL\">";
691 mText += i18n( "Mail to all" ); 693 mText += i18n( "Mail to all" );
692 mText += "</a> ( "; 694 mText += "</a> ( ";
693 mText += "<IMG src=\"" + iconPath + "\">"; 695 mText += "<IMG src=\"" + iconPath + "\">";
694 mText += i18n( " and " ); 696 mText += i18n( " and " );
695 mText += "<IMG src=\"" + NOiconPath + "\"> )"; 697 mText += "<IMG src=\"" + NOiconPath + "\"> )";
696 mText += "<br>\n"; 698 mText += "<br>\n";
697 699
698 700
699 } 701 }
700 if ( a_count_nr > 1 ) { 702 if ( a_count_nr > 1 ) {
701 mText += "<a href=\"mailto:RSVP\">"; 703 mText += "<a href=\"mailto:RSVP\">";
702 mText += i18n( "Mail to selected" ); 704 mText += i18n( "Mail to selected" );
703 mText += "</a> ( "; 705 mText += "</a> ( ";
704 mText += i18n( "<IMG src=\"%1\"> only )").arg ( iconPath ); 706 mText += i18n( "<IMG src=\"%1\"> only )").arg ( iconPath );
705 mText += "<br>\n"; 707 mText += "<br>\n";
706 } 708 }
707 } 709 }
708 710
709} 711}
710void KOEventViewer::appendJournal(Journal *jour, int mode ) 712void KOEventViewer::appendJournal(Journal *jour, int mode )
711{ 713{
712 bool shortDate = KOPrefs::instance()->mShortDateInViewer; 714 bool shortDate = KOPrefs::instance()->mShortDateInViewer;
713 QString text_d = i18n("Journal from: "); 715 QString text_d = i18n("Journal from: ");
714 if ( !jour->summary().isEmpty() ) 716 if ( !jour->summary().isEmpty() )
715 text_d = jour->summary(); 717 text_d = jour->summary();
716 if (mode == 0 ) { 718 if (mode == 0 ) {
717 addTag("h2", text_d ); 719 addTag("h2", text_d );
718 } 720 }
719 else { 721 else {
720 if ( mode == 1 ) { 722 if ( mode == 1 ) {
721 addTag("h3",i18n( "Local: " ) + text_d ); 723 addTag("h3",i18n( "Local: " ) + text_d );
722 } else { 724 } else {
723 addTag("h3",i18n( "Remote: " ) + text_d ); 725 addTag("h3",i18n( "Remote: " ) + text_d );
724 } 726 }
725 } 727 }
726 topLevelWidget()->setCaption(i18n("Journal viewer")); 728 topLevelWidget()->setCaption(i18n("Journal viewer"));
727 mText.append(i18n("<h3> %1 </h3> ").arg(jour->dtStartDateStr(KOPrefs::instance()->mShortDateInViewer))); 729 mText.append(i18n("<h3> %1 </h3> ").arg(jour->dtStartDateStr(KOPrefs::instance()->mShortDateInViewer)));
728 formatReadOnly(jour); 730 formatReadOnly(jour);
729 addTag("p","<b>"+i18n( "Last modified: " ) + "</b>"+KGlobal::locale()->formatDateTime(jour->lastModified(),shortDate ) ); 731 addTag("p","<b>"+i18n( "Last modified: " ) + "</b>"+KGlobal::locale()->formatDateTime(jour->lastModified(),shortDate ) );
730 732
731 if (!jour->description().isEmpty()) { 733 if (!jour->description().isEmpty()) {
732 addTag("p",deTag(jour->description())); 734 addTag("p",deTag(jour->description()));
733 } 735 }
734 setText(mText); 736 setText(mText);
735} 737}
736 738
737void KOEventViewer::formatReadOnly(Incidence *event) 739void KOEventViewer::formatReadOnly(Incidence *event)
738{ 740{
739 int id = event->calID(); 741 int id = event->calID();
740 if ( id > 1 ) { 742 if ( id > 1 ) {
741 addTag("p", "<em>("+i18n("Calendar:")+" " + KOPrefs::instance()->getCalendar( id )->mName + ")</em>"); 743 addTag("p", "<em>("+i18n("Calendar:")+" " + KOPrefs::instance()->getCalendar( id )->mName + ")</em>");
742 } 744 }
743 if (event->isReadOnly()) { 745 if (event->isReadOnly()) {
744 addTag("p","<em>(" + i18n("read-only") + ")</em>"); 746 addTag("p","<em>(" + i18n("read-only") + ")</em>");
745 } 747 }
746} 748}
747void KOEventViewer::setSyncMode( bool b ) 749void KOEventViewer::setSyncMode( bool b )
748{ 750{
749 mSyncMode = b; 751 mSyncMode = b;
750} 752}
751 753
752void KOEventViewer::setTodo(Todo *event, bool clearV ) 754void KOEventViewer::setTodo(Todo *event, bool clearV )
753{ 755{
754 if ( clearV ) 756 if ( clearV )
755 clearEvents(); 757 clearEvents();
756 if ( mSyncMode ) { 758 if ( mSyncMode ) {
757 if ( clearV ) 759 if ( clearV )
758 appendTodo(event,1 ); 760 appendTodo(event,1 );
759 else 761 else
760 appendTodo(event,2); 762 appendTodo(event,2);
761 } else 763 } else
762 appendTodo(event); 764 appendTodo(event);
763} 765}
764void KOEventViewer::setJournal(Journal *event, bool clearV ) 766void KOEventViewer::setJournal(Journal *event, bool clearV )
765{ 767{
766 if ( clearV ) 768 if ( clearV )
767 clearEvents(); 769 clearEvents();
768 if ( mSyncMode ) { 770 if ( mSyncMode ) {
769 if ( clearV ) 771 if ( clearV )
770 appendJournal(event, 1); 772 appendJournal(event, 1);
771 else 773 else
772 appendJournal(event, 2); 774 appendJournal(event, 2);
773 } else 775 } else
774 appendJournal(event); 776 appendJournal(event);
775} 777}
776 778
777void KOEventViewer::setEvent(Event *event) 779void KOEventViewer::setEvent(Event *event)
778{ 780{
779 clearEvents(); 781 clearEvents();
780 if ( mSyncMode ) 782 if ( mSyncMode )
781 appendEvent(event, 1); 783 appendEvent(event, 1);
782 else 784 else
783 appendEvent(event); 785 appendEvent(event);
784} 786}
785 787
786void KOEventViewer::addEvent(Event *event) 788void KOEventViewer::addEvent(Event *event)
787{ 789{
788 if ( mSyncMode ) 790 if ( mSyncMode )
789 appendEvent(event, 2); 791 appendEvent(event, 2);
790 else 792 else
791 appendEvent(event); 793 appendEvent(event);
792} 794}
793 795
794void KOEventViewer::clearEvents(bool now) 796void KOEventViewer::clearEvents(bool now)
795{ 797{
796 mText = ""; 798 mText = "";
797 if (now) setText(mText); 799 if (now) setText(mText);
798} 800}
799 801
800void KOEventViewer::addText(QString text) 802void KOEventViewer::addText(QString text)
801{ 803{
802 mText.append(text); 804 mText.append(text);
803 setText(mText); 805 setText(mText);
804} 806}
805QString KOEventViewer::deTag(QString text) 807QString KOEventViewer::deTag(QString text)
806{ 808{
807#if QT_VERSION >= 0x030000 809#if QT_VERSION >= 0x030000
808 text.replace( '<' , "&lt;" ); 810 text.replace( '<' , "&lt;" );
809 text.replace( '>' , "&gt;" ); 811 text.replace( '>' , "&gt;" );
810#else 812#else
811 if ( text.find ('<') >= 0 ) { 813 if ( text.find ('<') >= 0 ) {
812 text.replace( QRegExp("<") , "&lt;" ); 814 text.replace( QRegExp("<") , "&lt;" );
813 } 815 }
814 if ( text.find ('>') >= 0 ) { 816 if ( text.find ('>') >= 0 ) {
815 text.replace( QRegExp(">") , "&gt;" ); 817 text.replace( QRegExp(">") , "&gt;" );
816 } 818 }
817#endif 819#endif
818 return text; 820 return text;
819} 821}
820void KOEventViewer::keyPressEvent ( QKeyEvent * e ) 822void KOEventViewer::keyPressEvent ( QKeyEvent * e )
821{ 823{
822 switch ( e->key() ) { 824 switch ( e->key() ) {
823 case Qt::Key_Return: 825 case Qt::Key_Return:
824 case Qt::Key_Enter : 826 case Qt::Key_Enter :
825 e->ignore(); 827 e->ignore();
826 break; 828 break;
827 default: 829 default:
828 QTextBrowser::keyPressEvent ( e ); 830 QTextBrowser::keyPressEvent ( e );
829 break; 831 break;
830 } 832 }
831} 833}
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index 8d06040..610aae6 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -1,2277 +1,2282 @@
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 <qpopupmenu.h> 20#include <qpopupmenu.h>
21#include <qfont.h> 21#include <qfont.h>
22#include <qfontmetrics.h> 22#include <qfontmetrics.h>
23#include <qkeycode.h> 23#include <qkeycode.h>
24#include <qhbox.h> 24#include <qhbox.h>
25#include <qvbox.h> 25#include <qvbox.h>
26#include <qwidgetstack.h> 26#include <qwidgetstack.h>
27#include <qpushbutton.h> 27#include <qpushbutton.h>
28#include <qtooltip.h> 28#include <qtooltip.h>
29#include <qpainter.h> 29#include <qpainter.h>
30#include <qtimer.h> 30#include <qtimer.h>
31#include <qwhatsthis.h> 31#include <qwhatsthis.h>
32#ifndef DESKTOP_VERSION 32#ifndef DESKTOP_VERSION
33#include <qpe/qpeapplication.h> 33#include <qpe/qpeapplication.h>
34#else 34#else
35#include <qapplication.h> 35#include <qapplication.h>
36#endif 36#endif
37 37
38#include <kdebug.h> 38#include <kdebug.h>
39#include <klocale.h> 39#include <klocale.h>
40#include <kglobal.h> 40#include <kglobal.h>
41#include <kconfig.h> 41#include <kconfig.h>
42#include <kiconloader.h> 42#include <kiconloader.h>
43 43
44#include <kcalendarsystem.h> 44#include <kcalendarsystem.h>
45 45
46#ifndef KORG_NOPRINTER 46#ifndef KORG_NOPRINTER
47#include "calprinter.h" 47#include "calprinter.h"
48#endif 48#endif
49#include "koprefs.h" 49#include "koprefs.h"
50#ifndef KORG_NOPLUGINS 50#ifndef KORG_NOPLUGINS
51#include "kocore.h" 51#include "kocore.h"
52#endif 52#endif
53#include "koglobals.h" 53#include "koglobals.h"
54#include <libkcal/kincidenceformatter.h> 54#include <libkcal/kincidenceformatter.h>
55 55
56#include "komonthview.h" 56#include "komonthview.h"
57 57
58#define PIXMAP_SIZE 5 58#define PIXMAP_SIZE 5
59#ifdef DESKTOP_VERSION 59#ifdef DESKTOP_VERSION
60QToolTipGroup *MonthViewCell::mToolTipGroup = 0; 60QToolTipGroup *MonthViewCell::mToolTipGroup = 0;
61#endif 61#endif
62class KNOWhatsThis :public QWhatsThis 62class KNOWhatsThis :public QWhatsThis
63{ 63{
64public: 64public:
65 KNOWhatsThis( KNoScrollListBox* sbox ) : QWhatsThis( sbox ), _wid( sbox) { }; 65 KNOWhatsThis( KNoScrollListBox* sbox ) : QWhatsThis( sbox ), _wid( sbox) { };
66 //~KNOWhatsThis( ) {qDebug("~KNOWhatsThis( ) "); }; 66 //~KNOWhatsThis( ) {qDebug("~KNOWhatsThis( ) "); };
67 67
68protected: 68protected:
69 virtual QString text( const QPoint& p) 69 virtual QString text( const QPoint& p)
70 { 70 {
71 return _wid->getWhatsThisText(p) ; 71 return _wid->getWhatsThisText(p) ;
72 }; 72 };
73private: 73private:
74 KNoScrollListBox* _wid; 74 KNoScrollListBox* _wid;
75 75
76}; 76};
77 77
78 78
79KNoScrollListBox::KNoScrollListBox(QWidget *parent,const char *name) 79KNoScrollListBox::KNoScrollListBox(QWidget *parent,const char *name)
80 : QListBox(parent, name, WRepaintNoErase) 80 : QListBox(parent, name, WRepaintNoErase)
81{ 81{
82#ifndef DESKTOP_VERSION 82#ifndef DESKTOP_VERSION
83 QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold ); 83 QPEApplication::setStylusOperation( viewport(), QPEApplication::RightOnHold );
84#endif 84#endif
85 mBlockDeselect = false; 85 mBlockDeselect = false;
86 mWT = new KNOWhatsThis(this); 86 mWT = new KNOWhatsThis(this);
87 resetOnFocusIn = true; 87 resetOnFocusIn = true;
88 setVScrollBarMode(QScrollView::AlwaysOff); 88 setVScrollBarMode(QScrollView::AlwaysOff);
89 setHScrollBarMode(QScrollView::AlwaysOff); 89 setHScrollBarMode(QScrollView::AlwaysOff);
90} 90}
91KNoScrollListBox::~KNoScrollListBox() 91KNoScrollListBox::~KNoScrollListBox()
92{ 92{
93#if QT_VERSION >= 0x030000 93#if QT_VERSION >= 0x030000
94 94
95#else 95#else
96 delete mWT; 96 delete mWT;
97#endif 97#endif
98} 98}
99 99
100 100
101void KNoScrollListBox::focusInEvent ( QFocusEvent * e ) 101void KNoScrollListBox::focusInEvent ( QFocusEvent * e )
102{ 102{
103 QListBox::focusInEvent ( e ); 103 QListBox::focusInEvent ( e );
104 if ( count() ){ 104 if ( count() ){
105 int ci = currentItem(); 105 int ci = currentItem();
106 if ( ci < 0 ) ci = 0; 106 if ( ci < 0 ) ci = 0;
107 107
108 setCurrentItem( ci ); 108 setCurrentItem( ci );
109 setSelected ( ci, true ); 109 setSelected ( ci, true );
110 emit highlighted( item ( ci ) ); 110 emit highlighted( item ( ci ) );
111 111
112 resetOnFocusIn = true; 112 resetOnFocusIn = true;
113 113
114 if ( KOPrefs::instance()->mEnableMonthScroll || KOPrefs::instance()->mMonthViewWeek ) { 114 if ( KOPrefs::instance()->mEnableMonthScroll || KOPrefs::instance()->mMonthViewWeek ) {
115 QListBoxItem *fi = firstItem (); 115 QListBoxItem *fi = firstItem ();
116 if (fi ) { 116 if (fi ) {
117 int ihei = fi->height( this ); 117 int ihei = fi->height( this );
118 int hei = numRows () * ihei; 118 int hei = numRows () * ihei;
119 if ( hei < height() - horizontalScrollBar()->height () ) { 119 if ( hei < height() - horizontalScrollBar()->height () ) {
120 setVScrollBarMode(QScrollView::AlwaysOff); 120 setVScrollBarMode(QScrollView::AlwaysOff);
121 } 121 }
122 else 122 else
123 setVScrollBarMode(QScrollView::Auto); 123 setVScrollBarMode(QScrollView::Auto);
124 if ( ihei *3 > height() ) { 124 if ( ihei *3 > height() ) {
125 setHScrollBarMode(QScrollView::AlwaysOff); 125 setHScrollBarMode(QScrollView::AlwaysOff);
126 } 126 }
127 else { 127 else {
128 setHScrollBarMode(QScrollView::Auto); 128 setHScrollBarMode(QScrollView::Auto);
129 } 129 }
130 } else { 130 } else {
131 setVScrollBarMode(QScrollView::Auto); 131 setVScrollBarMode(QScrollView::Auto);
132 setHScrollBarMode(QScrollView::Auto); 132 setHScrollBarMode(QScrollView::Auto);
133 } 133 }
134 } 134 }
135 } 135 }
136} 136}
137void KNoScrollListBox::focusOutEvent ( QFocusEvent * e ) 137void KNoScrollListBox::focusOutEvent ( QFocusEvent * e )
138{ 138{
139 if ( ! mBlockDeselect ) { 139 if ( ! mBlockDeselect ) {
140 int i = currentItem (); 140 int i = currentItem ();
141 if ( i >= 0 ) { 141 if ( i >= 0 ) {
142 setSelected ( i, false ); 142 setSelected ( i, false );
143 } 143 }
144 QListBox::focusOutEvent ( e ); 144 QListBox::focusOutEvent ( e );
145 } 145 }
146 setVScrollBarMode(QScrollView::AlwaysOff); 146 setVScrollBarMode(QScrollView::AlwaysOff);
147 setHScrollBarMode(QScrollView::AlwaysOff); 147 setHScrollBarMode(QScrollView::AlwaysOff);
148 if ( ! mBlockDeselect ) 148 if ( ! mBlockDeselect )
149 emit highlightIncidence( 0, (MonthViewCell*)this, 0 ); 149 emit highlightIncidence( 0, (MonthViewCell*)this, 0 );
150 mBlockDeselect = false; 150 mBlockDeselect = false;
151} 151}
152 152
153QString KNoScrollListBox::getWhatsThisText(QPoint p) 153QString KNoScrollListBox::getWhatsThisText(QPoint p)
154{ 154{
155 QListBoxItem* item = itemAt ( p ); 155 QListBoxItem* item = itemAt ( p );
156 if ( ! item ) { 156 if ( ! item ) {
157 return i18n("Click in the cell\nto add an event!"); 157 return i18n("Click in the cell\nto add an event!");
158 } 158 }
159 return KIncidenceFormatter::instance()->getFormattedText(((MonthViewItem*) item)->incidence(), 159 return KIncidenceFormatter::instance()->getFormattedText(((MonthViewItem*) item)->incidence(),
160 KOPrefs::instance()->mWTshowDetails, 160 KOPrefs::instance()->mWTshowDetails,
161 KOPrefs::instance()->mWTshowCreated, 161 KOPrefs::instance()->mWTshowCreated,
162 KOPrefs::instance()->mWTshowChanged); 162 KOPrefs::instance()->mWTshowChanged);
163} 163}
164void KNoScrollListBox::keyPressEvent(QKeyEvent *e) 164void KNoScrollListBox::keyPressEvent(QKeyEvent *e)
165{ 165{
166 //qDebug("KNoScrollListBox::keyPressEvent "); 166 //qDebug("KNoScrollListBox::keyPressEvent ");
167 switch(e->key()) { 167 switch(e->key()) {
168 case Key_Right: 168 case Key_Right:
169 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 169 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
170 { 170 {
171 e->ignore(); 171 e->ignore();
172 return; 172 return;
173 } 173 }
174 scrollBy(10,0); 174 scrollBy(10,0);
175 break; 175 break;
176 case Key_Left: 176 case Key_Left:
177 if (e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 177 if (e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
178 { 178 {
179 e->ignore(); 179 e->ignore();
180 return; 180 return;
181 } 181 }
182 scrollBy(-10,0); 182 scrollBy(-10,0);
183 break; 183 break;
184 case Key_Up: 184 case Key_Up:
185 if( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton) { 185 if( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton) {
186 e->ignore(); 186 e->ignore();
187 break; 187 break;
188 } 188 }
189 if ( count() ) { 189 if ( count() ) {
190 if ( currentItem() == 0 ) { 190 if ( currentItem() == 0 ) {
191 emit prevCell(); 191 emit prevCell();
192 } else { 192 } else {
193 setCurrentItem((currentItem()+count()-1)%count()); 193 setCurrentItem((currentItem()+count()-1)%count());
194 if(!itemVisible(currentItem())) { 194 if(!itemVisible(currentItem())) {
195 if((unsigned int) currentItem() == (count()-1)) { 195 if((unsigned int) currentItem() == (count()-1)) {
196 setTopItem(currentItem()-numItemsVisible()+1); 196 setTopItem(currentItem()-numItemsVisible()+1);
197 } else { 197 } else {
198 setTopItem(topItem()-1); 198 setTopItem(topItem()-1);
199 } 199 }
200 } 200 }
201 } 201 }
202 } 202 }
203 break; 203 break;
204 case Key_Down: 204 case Key_Down:
205 if(e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton) { 205 if(e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton) {
206 e->ignore(); 206 e->ignore();
207 break; 207 break;
208 } 208 }
209 if ( count () ) { 209 if ( count () ) {
210 if ( ((uint)currentItem()+1) == count () ) { 210 if ( ((uint)currentItem()+1) == count () ) {
211 emit nextCell(); 211 emit nextCell();
212 } else { 212 } else {
213 setCurrentItem((currentItem()+1)%count()); 213 setCurrentItem((currentItem()+1)%count());
214 if(!itemVisible(currentItem())) { 214 if(!itemVisible(currentItem())) {
215 if(currentItem() == 0) { 215 if(currentItem() == 0) {
216 setTopItem(0); 216 setTopItem(0);
217 } else { 217 } else {
218 setTopItem(topItem()+1); 218 setTopItem(topItem()+1);
219 } 219 }
220 } 220 }
221 } 221 }
222 } 222 }
223 break; 223 break;
224 case Key_I: 224 case Key_I:
225 QTimer::singleShot( 1, this, SLOT ( oneDown() ) ); 225 QTimer::singleShot( 1, this, SLOT ( oneDown() ) );
226 e->ignore(); 226 e->ignore();
227 break; 227 break;
228 case Key_Return: 228 case Key_Return:
229 case Key_Enter: 229 case Key_Enter:
230 { 230 {
231 if ( currentItem() >= 0 ) { 231 if ( currentItem() >= 0 ) {
232 emit doubleClicked( item( currentItem() ) ); 232 emit doubleClicked( item( currentItem() ) );
233 e->accept(); 233 e->accept();
234 } else { 234 } else {
235 e->ignore(); 235 e->ignore();
236 } 236 }
237 } 237 }
238 break; 238 break;
239 case Key_Shift: 239 case Key_Shift:
240 emit shiftDown(); 240 emit shiftDown();
241 break; 241 break;
242 default: 242 default:
243 e->ignore(); 243 e->ignore();
244 break; 244 break;
245 } 245 }
246} 246}
247 247
248void KNoScrollListBox::oneDown() 248void KNoScrollListBox::oneDown()
249{ 249{
250 if ( count () ) { 250 if ( count () ) {
251 if ( ((uint)currentItem()+1) == count () ) { 251 if ( ((uint)currentItem()+1) == count () ) {
252 emit nextCell(); 252 emit nextCell();
253 } else { 253 } else {
254 resetOnFocusIn = false; 254 resetOnFocusIn = false;
255 setCurrentItem((currentItem()+1)%count()); 255 setCurrentItem((currentItem()+1)%count());
256 if(!itemVisible(currentItem())) { 256 if(!itemVisible(currentItem())) {
257 if(currentItem() == 0) { 257 if(currentItem() == 0) {
258 setTopItem(0); 258 setTopItem(0);
259 } else { 259 } else {
260 setTopItem(topItem()+1); 260 setTopItem(topItem()+1);
261 } 261 }
262 } 262 }
263 } 263 }
264 } 264 }
265} 265}
266void KNoScrollListBox::keyReleaseEvent(QKeyEvent *e) 266void KNoScrollListBox::keyReleaseEvent(QKeyEvent *e)
267{ 267{
268 switch(e->key()) { 268 switch(e->key()) {
269 case Key_Shift: 269 case Key_Shift:
270 emit shiftUp(); 270 emit shiftUp();
271 break; 271 break;
272 default: 272 default:
273 break; 273 break;
274 } 274 }
275} 275}
276 276
277void KNoScrollListBox::mousePressEvent(QMouseEvent *e) 277void KNoScrollListBox::mousePressEvent(QMouseEvent *e)
278{ 278{
279 QListBox::mousePressEvent(e); 279 QListBox::mousePressEvent(e);
280 280
281 if(e->button() == RightButton) { 281 if(e->button() == RightButton) {
282 emit rightClick(); 282 emit rightClick();
283 } 283 }
284} 284}
285 285
286MonthViewItem::MonthViewItem( Incidence *incidence, const QString & s) 286MonthViewItem::MonthViewItem( Incidence *incidence, const QString & s)
287 : QListBoxItem() 287 : QListBoxItem()
288{ 288{
289 mblockRepaint = true; 289 mblockRepaint = true;
290 isWeekItem = KOPrefs::instance()->mMonthViewWeek; 290 isWeekItem = KOPrefs::instance()->mMonthViewWeek;
291 recycle( incidence, s ); 291 recycle( incidence, s );
292} 292}
293void MonthViewItem::recycle( Incidence *incidence, const QString & s) 293void MonthViewItem::recycle( Incidence *incidence, const QString & s)
294{ 294{
295 mDisplayHighlighted = false; 295 mDisplayHighlighted = false;
296 setText( s ); 296 setText( s );
297 mMultiday = 0; 297 mMultiday = 0;
298 mIncidence = incidence; 298 mIncidence = incidence;
299 mRecur = false; 299 mRecur = false;
300 mAlarm = false; 300 mAlarm = false;
301 mReply = false; 301 mReply = false;
302 mInfo = false; 302 mInfo = false;
303 mdayPos = 0; 303 mdayPos = 0;
304} 304}
305 305
306bool MonthViewItem::setHighlightedFalse() 306bool MonthViewItem::setHighlightedFalse()
307{ 307{
308 if ( !mDisplayHighlighted ) 308 if ( !mDisplayHighlighted )
309 return false; 309 return false;
310 mDisplayHighlighted = false; 310 mDisplayHighlighted = false;
311 return true; 311 return true;
312} 312}
313 313
314bool MonthViewItem::setHighlighted( Incidence * inc ) 314bool MonthViewItem::setHighlighted( Incidence * inc )
315{ 315{
316 if ( inc == mIncidence ) { 316 if ( inc == mIncidence ) {
317 if ( mDisplayHighlighted ) 317 if ( mDisplayHighlighted )
318 return false; 318 return false;
319 mDisplayHighlighted = true; 319 mDisplayHighlighted = true;
320 return true; 320 return true;
321 } else { 321 } else {
322 if ( !mDisplayHighlighted ) 322 if ( !mDisplayHighlighted )
323 return false; 323 return false;
324 mDisplayHighlighted = false; 324 mDisplayHighlighted = false;
325 return true; 325 return true;
326 } 326 }
327 return false; 327 return false;
328} 328}
329void MonthViewItem::paint(QPainter *p) 329void MonthViewItem::paint(QPainter *p)
330{ 330{
331 if ( mblockRepaint || !mIncidence ) { 331 if ( mblockRepaint || !mIncidence ) {
332 return; 332 return;
333 } 333 }
334#if QT_VERSION >= 0x030000 334#if QT_VERSION >= 0x030000
335 bool sel = isSelected(); 335 bool sel = isSelected();
336#else 336#else
337 bool sel = selected(); 337 bool sel = selected();
338#endif 338#endif
339 int heihei = height( listBox () ); 339 int heihei = height( listBox () );
340 int x = 1; 340 int x = 1;
341 if (KOPrefs::instance()->mMonthViewUsesCategoryColor || mDisplayHighlighted || sel ) 341 if (KOPrefs::instance()->mMonthViewUsesCategoryColor || mDisplayHighlighted || sel )
342 { 342 {
343 343
344 p->setBackgroundColor( palette().color( QPalette::Normal, \ 344 p->setBackgroundColor( palette().color( QPalette::Normal, \
345 sel ||mDisplayHighlighted ? QColorGroup::Highlight : QColorGroup::Background ) ); 345 sel ||mDisplayHighlighted ? QColorGroup::Highlight : QColorGroup::Background ) );
346 p->eraseRect( 0, 0, listBox()->maxItemWidth(), heihei ); 346 p->eraseRect( 0, 0, listBox()->maxItemWidth(), heihei );
347 } 347 }
348 348
349 //int y = 3;//(height() - mRecurPixmap.height()) /2; 349 //int y = 3;//(height() - mRecurPixmap.height()) /2;
350 int size = PIXMAP_SIZE; 350 int size = PIXMAP_SIZE;
351 if ( QApplication::desktop()->width() < 300 ) 351 if ( QApplication::desktop()->width() < 300 )
352 size = 3; 352 size = 3;
353 int y = (heihei - size -1 ) /2; 353 int y = (heihei - size -1 ) /2;
354 354
355 if ( mIncidence->calID() > 1 ) { 355 if ( mIncidence->calID() > 1 ) {
356 p->fillRect ( x, y-2,size,size+4, KOPrefs::instance()->defaultColor( mIncidence->calID() ) ); 356 p->fillRect ( x, y-2,size,size+4, KOPrefs::instance()->defaultColor( mIncidence->calID() ) );
357 p->drawRect ( x, y-2,size,size+4); 357 p->drawRect ( x, y-2,size,size+4);
358 x += size + 1; 358 x += size + 1;
359 } 359 }
360 if ( KOPrefs::instance()->mMonthShowIcons ) { 360 if ( KOPrefs::instance()->mMonthShowIcons ) {
361 if ( mInfo ) { 361 if ( mInfo ) {
362 p->fillRect ( x, y,size,size, Qt::darkGreen ); 362 p->fillRect ( x, y,size,size, Qt::darkGreen );
363 x += size + 1; 363 x += size + 1;
364 } 364 }
365 if ( mRecur ) { 365 if ( mRecur ) {
366 p->fillRect ( x, y,size,size, Qt::blue ); 366 p->fillRect ( x, y,size,size, Qt::blue );
367 x += size + 1; 367 x += size + 1;
368 } 368 }
369 if ( mAlarm ) { 369 if ( mAlarm ) {
370 p->fillRect ( x, y,size,size, Qt::red ); 370 p->fillRect ( x, y,size,size, Qt::red );
371 x += size + 1; 371 x += size + 1;
372 } 372 }
373 if ( mReply ) { 373 if ( mReply ) {
374 p->fillRect ( x, y,size,size, Qt::yellow ); 374 p->fillRect ( x, y,size,size, Qt::yellow );
375 x += size + 1; 375 x += size + 1;
376 } 376 }
377 } 377 }
378 378
379 379
380 380
381 381
382 if ( sel ) p->setPen( Qt::white ); 382 if ( sel ) p->setPen( Qt::white );
383 else p->setPen( palette().color( QPalette::Normal,QColorGroup::Foreground ) ); 383 else p->setPen( palette().color( QPalette::Normal,QColorGroup::Foreground ) );
384 384
385#if 0 385#if 0
386 p->setPen( palette().color( QPalette::Normal, sel ? \ 386 p->setPen( palette().color( QPalette::Normal, sel ? \
387 QColorGroup::HighlightedText : QColorGroup::Foreground ) ); 387 QColorGroup::HighlightedText : QColorGroup::Foreground ) );
388#endif 388#endif
389 QColor textColor = p->pen().color(); 389 QColor textColor = p->pen().color();
390 390
391 391
392 if ( mMultiday ) { 392 if ( mMultiday ) {
393 int yyy = y+(size/2); 393 int yyy = y+(size/2);
394 int sizeM = size+2; 394 int sizeM = size+2;
395 p->setBrush( QBrush( textColor ) ); 395 p->setBrush( QBrush( textColor ) );
396 p->drawLine ( x+1, yyy, x +sizeM +sizeM/2-1, yyy ) ; 396 p->drawLine ( x+1, yyy, x +sizeM +sizeM/2-1, yyy ) ;
397 if ( mMultiday == 2 || mMultiday == 3 ) { 397 if ( mMultiday == 2 || mMultiday == 3 ) {
398 QPointArray pa ( 3 ); 398 QPointArray pa ( 3 );
399 pa.setPoint (0, x, yyy ); 399 pa.setPoint (0, x, yyy );
400 pa.setPoint (1, x+sizeM/2, yyy+sizeM/2 ); 400 pa.setPoint (1, x+sizeM/2, yyy+sizeM/2 );
401 pa.setPoint (2, x+sizeM/2, yyy-sizeM/2 ); 401 pa.setPoint (2, x+sizeM/2, yyy-sizeM/2 );
402 p->drawPolygon( pa ); 402 p->drawPolygon( pa );
403 } 403 }
404 if ( mMultiday == 2 || mMultiday == 1 ) { 404 if ( mMultiday == 2 || mMultiday == 1 ) {
405 QPointArray pa ( 3 ); 405 QPointArray pa ( 3 );
406 pa.setPoint (0, x+sizeM +sizeM/2, yyy ); 406 pa.setPoint (0, x+sizeM +sizeM/2, yyy );
407 pa.setPoint (1, x+sizeM, yyy+sizeM/2 ); 407 pa.setPoint (1, x+sizeM, yyy+sizeM/2 );
408 pa.setPoint (2, x+sizeM, yyy-sizeM/2 ); 408 pa.setPoint (2, x+sizeM, yyy-sizeM/2 );
409 p->drawPolygon( pa ); 409 p->drawPolygon( pa );
410 } 410 }
411 if ( mMultiday == 1 ) { 411 if ( mMultiday == 1 ) {
412 // p->fillRect ( x, yyy-sizeM/2+1, sizeM/2, size, QBrush ( QBrush::SolidPattern ) ); 412 // p->fillRect ( x, yyy-sizeM/2+1, sizeM/2, size, QBrush ( QBrush::SolidPattern ) );
413 p->drawLine ( x+1, yyy-sizeM/2, x+1, yyy+sizeM/2 ); 413 p->drawLine ( x+1, yyy-sizeM/2, x+1, yyy+sizeM/2 );
414 } 414 }
415 if ( mMultiday == 3 ) { 415 if ( mMultiday == 3 ) {
416 // p->fillRect ( x+sizeM, yyy-sizeM/2+1, sizeM/2, size, QBrush ( QBrush::SolidPattern ) ); 416 // p->fillRect ( x+sizeM, yyy-sizeM/2+1, sizeM/2, size, QBrush ( QBrush::SolidPattern ) );
417 p->drawLine ( x+sizeM +sizeM/2-1, yyy-sizeM/2, x+sizeM +sizeM/2-1, yyy+sizeM/2 ); 417 p->drawLine ( x+sizeM +sizeM/2-1, yyy-sizeM/2, x+sizeM +sizeM/2-1, yyy+sizeM/2 );
418 418
419 } 419 }
420 x += sizeM/2 + 1; 420 x += sizeM/2 + 1;
421 x += sizeM + 1; 421 x += sizeM + 1;
422 } 422 }
423 423
424 if ( mIncidence->typeID() == todoID ){ 424 if ( mIncidence->typeID() == todoID ){
425 Todo* td = ( Todo* ) mIncidence; 425 Todo* td = ( Todo* ) mIncidence;
426 if ( td->isCompleted() ) { 426 if ( td->isCompleted() ) {
427 int half = size/2; 427 int half = size/2;
428 p->drawLine ( x, heihei/2, x +half , heihei/2 +half ) ; 428 p->drawLine ( x, heihei/2, x +half , heihei/2 +half ) ;
429 p->drawLine ( x +half , heihei/2 +half , x +half+half +2 , heihei/2 -2 ) ; 429 p->drawLine ( x +half , heihei/2 +half , x +half+half +2 , heihei/2 -2 ) ;
430 x += half+half + 4; 430 x += half+half + 4;
431 431
432 } else { 432 } else {
433 int val = td->percentComplete()/20; 433 int val = td->percentComplete()/20;
434 p->fillRect ( x+1, y-2, val ,size+4,textColor ); 434 p->fillRect ( x+1, y-2, val ,size+4,textColor );
435 p->drawRect ( x, y-2,7,size+4); 435 p->drawRect ( x, y-2,7,size+4);
436 x += size + 3; 436 x += size + 3;
437 } 437 }
438 } 438 }
439 QFontMetrics fm = p->fontMetrics(); 439 QFontMetrics fm = p->fontMetrics();
440 int yPos; 440 int yPos;
441 int pmheight = size; 441 int pmheight = size;
442 if( pmheight < fm.height() ) 442 if( pmheight < fm.height() )
443 yPos = fm.ascent() + fm.leading()/2; 443 yPos = fm.ascent() + fm.leading()/2;
444 else 444 else
445 yPos = pmheight/2 - fm.height()/2 + fm.ascent(); 445 yPos = pmheight/2 - fm.height()/2 + fm.ascent();
446 446
447 if ( KOPrefs::instance()->mMonthShowTimes || isWeekItem) { 447 if ( KOPrefs::instance()->mMonthShowTimes || isWeekItem) {
448 p->drawText( x, yPos, text() ); 448 p->drawText( x, yPos, text() );
449 if ( mIncidence->cancelled() ) { 449 if ( mIncidence->cancelled() ) {
450 int wid = fm.width( text() ); 450 int wid = fm.width( text() );
451 p->drawLine( x, heihei/2 ,x+wid, heihei/2 ); 451 p->drawLine( x, heihei/2 ,x+wid, heihei/2 );
452 } 452 }
453 } else { 453 } else {
454 QString pText = text(); 454 QString pText = text();
455 if( pText.mid(2,1) == ":" ) 455 if( pText.mid(2,1) == ":" )
456 pText = pText.mid( 6 ); 456 pText = pText.mid( 6 );
457 p->drawText( x, yPos, pText ); 457 p->drawText( x, yPos, pText );
458 if ( mIncidence->cancelled() ) { 458 if ( mIncidence->cancelled() ) {
459 int wid = fm.width( pText ); 459 int wid = fm.width( pText );
460 p->drawLine( x, heihei/2 ,x+wid, heihei/2 ); 460 p->drawLine( x, heihei/2 ,x+wid, heihei/2 );
461 } 461 }
462 } 462 }
463} 463}
464 464
465int MonthViewItem::height(const QListBox *lb) const 465int MonthViewItem::height(const QListBox *lb) const
466{ 466{
467 int ret = 10; 467 int ret = 10;
468 if ( lb ) 468 if ( lb )
469 ret = lb->fontMetrics().lineSpacing()+1; 469 ret = lb->fontMetrics().lineSpacing()+1;
470 return ret; 470 return ret;
471} 471}
472 472
473int MonthViewItem::width(const QListBox *lb) const 473int MonthViewItem::width(const QListBox *lb) const
474{ 474{
475 if( KOPrefs::instance()->mEnableMonthScroll || isWeekItem ) { 475 if( KOPrefs::instance()->mEnableMonthScroll || isWeekItem ) {
476 int size = PIXMAP_SIZE; 476 int size = PIXMAP_SIZE;
477 if ( QApplication::desktop()->width() < 300 ) 477 if ( QApplication::desktop()->width() < 300 )
478 size = 3; 478 size = 3;
479 int x = 1; 479 int x = 1;
480 if ( KOPrefs::instance()->mMonthShowIcons ) { 480 if ( KOPrefs::instance()->mMonthShowIcons ) {
481 if ( mInfo ) { 481 if ( mInfo ) {
482 x += size + 1; 482 x += size + 1;
483 } 483 }
484 if( mRecur ) { 484 if( mRecur ) {
485 x += size+1; 485 x += size+1;
486 } 486 }
487 if( mAlarm ) { 487 if( mAlarm ) {
488 x += size+1; 488 x += size+1;
489 } 489 }
490 if( mReply ) { 490 if( mReply ) {
491 x += size+1; 491 x += size+1;
492 } 492 }
493 } 493 }
494 if( mMultiday ) { 494 if( mMultiday ) {
495 x += size+1+2+size/2; 495 x += size+1+2+size/2;
496 } 496 }
497 return( x + lb->fontMetrics().width( text() ) + 1 ); 497 return( x + lb->fontMetrics().width( text() ) + 1 );
498 } 498 }
499 if ( ! lb ) 499 if ( ! lb )
500 return 10; 500 return 10;
501 return lb->width(); 501 return lb->width();
502} 502}
503 503
504 504
505MonthViewCell::MonthViewCell( KOMonthView *parent,QWidget* par ) 505MonthViewCell::MonthViewCell( KOMonthView *parent,QWidget* par )
506 : KNoScrollListBox( par ), 506 : KNoScrollListBox( par ),
507 mMonthView( parent ) 507 mMonthView( parent )
508{ 508{
509 //QVBoxLayout *topLayout = new QVBoxLayout( this ); 509 //QVBoxLayout *topLayout = new QVBoxLayout( this );
510 currentPalette = 0; 510 currentPalette = 0;
511 // mLabel = new QLabel( this );QPushButton 511 // mLabel = new QLabel( this );QPushButton
512 mLabel = new QPushButton( this ); 512 mLabel = new QPushButton( this );
513 //mLabel->setFrameStyle( QFrame::Panel | QFrame::Plain ); 513 //mLabel->setFrameStyle( QFrame::Panel | QFrame::Plain );
514 //mLabel->setLineWidth( 1 ); 514 //mLabel->setLineWidth( 1 );
515 //mLabel->setAlignment( AlignCenter ); 515 //mLabel->setAlignment( AlignCenter );
516 mLabel->setFlat( true ); 516 mLabel->setFlat( true );
517 mLabel->setFocusPolicy(NoFocus); 517 mLabel->setFocusPolicy(NoFocus);
518 //mItemList = new KNoScrollListBox( this ); 518 //mItemList = new KNoScrollListBox( this );
519 setMinimumSize( 10, 10 ); 519 setMinimumSize( 10, 10 );
520 setFrameStyle( QFrame::Panel | QFrame::Plain ); 520 setFrameStyle( QFrame::Panel | QFrame::Plain );
521 setLineWidth( 1 ); 521 setLineWidth( 1 );
522 //topLayout->addWidget( mItemList ); 522 //topLayout->addWidget( mItemList );
523 mLabel->raise(); 523 mLabel->raise();
524 // QColor( 0,0,255 ) QColor( 160,1600,255 ) 524 // QColor( 0,0,255 ) QColor( 160,1600,255 )
525 mStandardPalette = palette(); 525 mStandardPalette = palette();
526 mStandardPalette.setColor(QColorGroup::Base, mStandardPalette.color( QPalette::Normal, QColorGroup::Background ) ); 526 mStandardPalette.setColor(QColorGroup::Base, mStandardPalette.color( QPalette::Normal, QColorGroup::Background ) );
527 527
528 enableScrollBars( false ); 528 enableScrollBars( false );
529 updateConfig(); 529 updateConfig();
530 //connect( mLabel, SIGNAL( clicked( )), SLOT( newEvent() )); 530 //connect( mLabel, SIGNAL( clicked( )), SLOT( newEvent() ));
531 connect( mLabel, SIGNAL( clicked( )), SLOT( showDay() )); 531 connect( mLabel, SIGNAL( clicked( )), SLOT( showDay() ));
532 connect( this , SIGNAL( doubleClicked( QListBoxItem *) ), 532 connect( this , SIGNAL( doubleClicked( QListBoxItem *) ),
533 SLOT( defaultAction( QListBoxItem * ) ) ); 533 SLOT( defaultAction( QListBoxItem * ) ) );
534 connect( this, SIGNAL( rightButtonPressed( QListBoxItem *, 534 connect( this, SIGNAL( rightButtonPressed( QListBoxItem *,
535 const QPoint &) ), 535 const QPoint &) ),
536 SLOT( contextMenu( QListBoxItem * ) ) ); 536 SLOT( contextMenu( QListBoxItem * ) ) );
537 connect( this, SIGNAL( highlighted( QListBoxItem *) ), 537 connect( this, SIGNAL( highlighted( QListBoxItem *) ),
538 SLOT( selection( QListBoxItem * ) ) ); 538 SLOT( selection( QListBoxItem * ) ) );
539 539
540 /* 540 /*
541 connect( this, SIGNAL( clicked( QListBoxItem * ) ), 541 connect( this, SIGNAL( clicked( QListBoxItem * ) ),
542 SLOT( selection( QListBoxItem * ) ) ); 542 SLOT( selection( QListBoxItem * ) ) );
543 */ 543 */
544} 544}
545#ifdef DESKTOP_VERSION 545#ifdef DESKTOP_VERSION
546QToolTipGroup *MonthViewCell::toolTipGroup() 546QToolTipGroup *MonthViewCell::toolTipGroup()
547{ 547{
548 if (!mToolTipGroup) mToolTipGroup = new QToolTipGroup(0); 548 if (!mToolTipGroup) mToolTipGroup = new QToolTipGroup(0);
549 return mToolTipGroup; 549 return mToolTipGroup;
550} 550}
551#endif 551#endif
552 552
553void MonthViewCell::setDate( const QDate &date ) 553void MonthViewCell::setDate( const QDate &date )
554{ 554{
555 // kdDebug() << "MonthViewCell::setDate(): " << date.toString() << endl; 555 // kdDebug() << "MonthViewCell::setDate(): " << date.toString() << endl;
556 mDate = date; 556 mDate = date;
557 557
558 558
559 559
560 //resizeEvent( 0 ); 560 //resizeEvent( 0 );
561} 561}
562 562
563QDate MonthViewCell::date() const 563QDate MonthViewCell::date() const
564{ 564{
565 return mDate; 565 return mDate;
566} 566}
567 567
568void MonthViewCell::setPrimary( bool primary ) 568void MonthViewCell::setPrimary( bool primary )
569{ 569{
570 mPrimary = primary; 570 mPrimary = primary;
571 //setMyPalette(); 571 //setMyPalette();
572} 572}
573void MonthViewCell::setMyPalette() 573void MonthViewCell::setMyPalette()
574{ 574{
575 575
576 if ( mHoliday) { 576 if ( mHoliday) {
577 if ( currentPalette == 1 ) return; 577 if ( currentPalette == 1 ) return;
578 mLabel->setPalette( QPalette ( mHolidayPalette.color( QPalette::Normal,QColorGroup::Base),mHolidayPalette.color(QPalette::Normal,QColorGroup::Base ) )); 578 mLabel->setPalette( QPalette ( mHolidayPalette.color( QPalette::Normal,QColorGroup::Base),mHolidayPalette.color(QPalette::Normal,QColorGroup::Base ) ));
579 setPalette( mHolidayPalette ); 579 setPalette( mHolidayPalette );
580 //mLabel->setPalette( mHolidayPalette ); 580 //mLabel->setPalette( mHolidayPalette );
581 currentPalette = 1; 581 currentPalette = 1;
582 582
583 } else { 583 } else {
584 if ( mPrimary ) { 584 if ( mPrimary ) {
585 if ( currentPalette == 2 ) return; 585 if ( currentPalette == 2 ) return;
586 mLabel->setPalette( QPalette ( mPrimaryPalette.color( QPalette::Normal,QColorGroup::Base),mPrimaryPalette.color(QPalette::Normal,QColorGroup::Base ) )); 586 mLabel->setPalette( QPalette ( mPrimaryPalette.color( QPalette::Normal,QColorGroup::Base),mPrimaryPalette.color(QPalette::Normal,QColorGroup::Base ) ));
587 //mLabel->setPalette( mPrimaryPalette ); 587 //mLabel->setPalette( mPrimaryPalette );
588 setPalette( mPrimaryPalette ); 588 setPalette( mPrimaryPalette );
589 currentPalette = 2; 589 currentPalette = 2;
590 590
591 } else { 591 } else {
592 if ( currentPalette == 3 ) return; 592 if ( currentPalette == 3 ) return;
593 setPalette( mNonPrimaryPalette ); 593 setPalette( mNonPrimaryPalette );
594 mLabel->setPalette( QPalette ( mNonPrimaryPalette.color( QPalette::Normal,QColorGroup::Base),mNonPrimaryPalette.color(QPalette::Normal,QColorGroup::Base ) )); 594 mLabel->setPalette( QPalette ( mNonPrimaryPalette.color( QPalette::Normal,QColorGroup::Base),mNonPrimaryPalette.color(QPalette::Normal,QColorGroup::Base ) ));
595 //mLabel->setPalette( mNonPrimaryPalette );; 595 //mLabel->setPalette( mNonPrimaryPalette );;
596 currentPalette = 3; 596 currentPalette = 3;
597 } 597 }
598 } 598 }
599 //QPalette pal = palette(); 599 //QPalette pal = palette();
600 600
601 //mLabel->setPalette( QPalette ( pal.color( QPalette::Normal,QColorGroup::Base),pal.color(QPalette::Normal,QColorGroup::Base ) )); 601 //mLabel->setPalette( QPalette ( pal.color( QPalette::Normal,QColorGroup::Base),pal.color(QPalette::Normal,QColorGroup::Base ) ));
602} 602}
603QPalette MonthViewCell::getPalette () 603QPalette MonthViewCell::getPalette ()
604{ 604{
605 if ( !KOPrefs::instance()->mMonthViewUsesDayColors ) 605 if ( !KOPrefs::instance()->mMonthViewUsesDayColors )
606 return mStandardPalette; 606 return mStandardPalette;
607 if ( mHoliday) { 607 if ( mHoliday) {
608 return mHolidayPalette ; 608 return mHolidayPalette ;
609 } else { 609 } else {
610 if ( mPrimary ) { 610 if ( mPrimary ) {
611 return mPrimaryPalette ; 611 return mPrimaryPalette ;
612 } 612 }
613 } 613 }
614 return mNonPrimaryPalette; 614 return mNonPrimaryPalette;
615} 615}
616bool MonthViewCell::isPrimary() const 616bool MonthViewCell::isPrimary() const
617{ 617{
618 return mPrimary; 618 return mPrimary;
619} 619}
620 620
621void MonthViewCell::setHoliday( bool holiday ) 621void MonthViewCell::setHoliday( bool holiday )
622{ 622{
623 mHoliday = holiday; 623 mHoliday = holiday;
624 //setMyPalette(); 624 //setMyPalette();
625} 625}
626 626
627void MonthViewCell::setHoliday( const QString &holiday ) 627void MonthViewCell::setHoliday( const QString &holiday )
628{ 628{
629 mHolidayString = holiday; 629 mHolidayString = holiday;
630 630
631 if ( !holiday.isEmpty() ) { 631 if ( !holiday.isEmpty() ) {
632 setHoliday( true ); 632 setHoliday( true );
633 } 633 }
634} 634}
635 635
636void MonthViewCell::startUpdateCell() 636void MonthViewCell::startUpdateCell()
637{ 637{
638 blockSignals( true ); 638 blockSignals( true );
639 mdayCount = 0; 639 mdayCount = 0;
640 setFocusPolicy(NoFocus); 640 setFocusPolicy(NoFocus);
641 if ( !mMonthView->isUpdatePossible() ) 641 if ( !mMonthView->isUpdatePossible() )
642 return; 642 return;
643 MonthViewItem *mitem = (MonthViewItem*) firstItem (); 643 MonthViewItem *mitem = (MonthViewItem*) firstItem ();
644 while ( mitem ) { 644 while ( mitem ) {
645 mitem->setBlockRepaint( true ); 645 mitem->setBlockRepaint( true );
646 mitem = (MonthViewItem *)mitem->next(); 646 mitem = (MonthViewItem *)mitem->next();
647 } 647 }
648 if ( mAvailItemList.count() > 20 ) { 648 if ( mAvailItemList.count() > 20 ) {
649 mAvailItemList.setAutoDelete( true ); 649 mAvailItemList.setAutoDelete( true );
650 mAvailItemList.clear(); 650 mAvailItemList.clear();
651 mAvailItemList.setAutoDelete( false ); 651 mAvailItemList.setAutoDelete( false );
652 clear(); 652 clear();
653 } 653 }
654 654
655 setPrimary( mDate.month()%2 ); 655 setPrimary( mDate.month()%2 );
656 setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays); 656 setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays);
657 if ( mDate == QDate::currentDate() ) { 657 if ( mDate == QDate::currentDate() ) {
658 setLineWidth( 3 ); 658 setLineWidth( 3 );
659 } else { 659 } else {
660 setLineWidth( 1 ); 660 setLineWidth( 1 );
661 } 661 }
662 MonthViewItem* CurrentAvailItem = (MonthViewItem*) firstItem (); 662 MonthViewItem* CurrentAvailItem = (MonthViewItem*) firstItem ();
663 //clear(); 663 //clear();
664 while ( CurrentAvailItem ) { 664 while ( CurrentAvailItem ) {
665 MonthViewItem *item = CurrentAvailItem; 665 MonthViewItem *item = CurrentAvailItem;
666 //item->setHighlightedFalse(); 666 //item->setHighlightedFalse();
667 item->recycle( 0, ""); 667 item->recycle( 0, "");
668 CurrentAvailItem = (MonthViewItem *)item->next(); 668 CurrentAvailItem = (MonthViewItem *)item->next();
669 mAvailItemList.append( item ); 669 mAvailItemList.append( item );
670 takeItem ( item ); 670 takeItem ( item );
671 } 671 }
672 672
673#ifdef DESKTOP_VERSION 673#ifdef DESKTOP_VERSION
674 QToolTip::remove(this); 674 QToolTip::remove(this);
675#endif 675#endif
676 mToolTip.clear(); 676 mToolTip.clear();
677 //qApp->processEvents(); 677 //qApp->processEvents();
678#if 0 678#if 0
679 if ( !mHolidayString.isEmpty() ) { 679 if ( !mHolidayString.isEmpty() ) {
680 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString ); 680 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString );
681 item->setPalette( mHolidayPalette ); 681 item->setPalette( mHolidayPalette );
682 insertItem( item ); 682 insertItem( item );
683 mToolTip.append ( mHolidayString ); 683 mToolTip.append ( mHolidayString );
684 } 684 }
685#endif 685#endif
686} 686}
687 687
688int MonthViewCell::insertEvent(Event *event) 688int MonthViewCell::insertEvent(Event *event)
689{ 689{
690 bool useToolTips = true; 690 bool useToolTips = true;
691#ifndef DESKTOP_VERSION 691#ifndef DESKTOP_VERSION
692 useToolTips = false; 692 useToolTips = false;
693#endif 693#endif
694 QString mToolTipText; 694 QString mToolTipText;
695 setFocusPolicy(WheelFocus); 695 setFocusPolicy(WheelFocus);
696 if ( !(event->doesRecur() == Recurrence::rNone) ) { 696 if ( !(event->doesRecur() == Recurrence::rNone) ) {
697 if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily ) 697 if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily )
698 return mdayCount; 698 return mdayCount;
699 else 699 else
700 if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly ) 700 if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly )
701 return mdayCount; 701 return mdayCount;
702 } 702 }
703 703
704 if ( event->isHoliday()) { 704 if ( event->isHoliday()) {
705 setHoliday( true ); 705 setHoliday( true );
706 if ( mDate.dayOfWeek() == 7 ) 706 if ( mDate.dayOfWeek() == 7 )
707 setLineWidth( 3 ); 707 setLineWidth( 3 );
708 } 708 }
709 QString text; 709 QString text;
710 int multiday = 0;// 1 = start, 2 = midddle, 3 = end day 710 int multiday = 0;// 1 = start, 2 = midddle, 3 = end day
711 if (event->isMultiDay()) { 711 if (event->isMultiDay()) {
712 QString prefix = "<->";multiday = 2; 712 QString prefix = "<->";multiday = 2;
713 QString time; 713 QString time;
714 if ( event->doesRecur() ) { 714 if ( event->doesRecur() ) {
715 if ( event->recursOn( mDate) ) { 715 if ( event->recursOn( mDate) ) {
716 prefix ="->" ;multiday = 1; 716 prefix ="->" ;multiday = 1;
717 } 717 }
718 else { 718 else {
719 int days = event->dtStart().date().daysTo ( event->dtEnd().date() ); 719 int days = event->dtStart().date().daysTo ( event->dtEnd().date() );
720 if ( event->recursOn( mDate.addDays( -days)) ) { 720 if ( event->recursOn( mDate.addDays( -days)) ) {
721 prefix ="<-" ;multiday = 3; 721 prefix ="<-" ;multiday = 3;
722 } 722 }
723 } 723 }
724 724
725 } else { 725 } else {
726 if (mDate == event->dtStart().date()) { 726 if (mDate == event->dtStart().date()) {
727 prefix ="->" ;multiday = 1; 727 prefix ="->" ;multiday = 1;
728 } else if (mDate == event->dtEnd().date()) { 728 } else if (mDate == event->dtEnd().date()) {
729 prefix ="<-" ;multiday = 3; 729 prefix ="<-" ;multiday = 3;
730 } 730 }
731 } 731 }
732 if ( !event->doesFloat() ) { 732 if ( !event->doesFloat() ) {
733 if ( mDate == event->dtStart().date () ) 733 if ( mDate == event->dtStart().date () )
734 time = KGlobal::locale()->formatTime(event->dtStart().time())+" "; 734 time = KGlobal::locale()->formatTime(event->dtStart().time())+" ";
735 else if ( mDate == event->dtEnd().date () ) 735 else if ( mDate == event->dtEnd().date () )
736 time = KGlobal::locale()->formatTime(event->dtEnd().time())+" "; 736 time = KGlobal::locale()->formatTime(event->dtEnd().time())+" ";
737 737
738 } 738 }
739 text = time + event->summary(); 739 text = time + event->summary();
740 if ( useToolTips ) 740 if ( useToolTips ) {
741 mToolTipText += prefix + text; 741 mToolTipText += prefix + text;
742 if ( event->doesFloat() ) {
743 mToolTipText += i18n(" (Duration: %1 days)" ).arg ( event->dtStart().daysTo(event->dtEnd())+1);
744
745 }
746 }
742 } else { 747 } else {
743 if (event->doesFloat()) { 748 if (event->doesFloat()) {
744 text = event->summary(); 749 text = event->summary();
745 if ( useToolTips ) 750 if ( useToolTips )
746 mToolTipText += text; 751 mToolTipText += text;
747 } 752 }
748 else { 753 else {
749 text = KGlobal::locale()->formatTime(event->dtStart().time()); 754 text = KGlobal::locale()->formatTime(event->dtStart().time());
750 text += " " + event->summary(); 755 text += " " + event->summary();
751 if ( useToolTips ) 756 if ( useToolTips )
752 mToolTipText += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary(); 757 mToolTipText += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary();
753 } 758 }
754 } 759 }
755 if ( useToolTips && ! event->location().isEmpty() ) { 760 if ( useToolTips && ! event->location().isEmpty() ) {
756 mToolTipText += " (" + event->location() +")"; 761 mToolTipText += " (" + event->location() +")";
757 } 762 }
758 MonthViewItem *item ; 763 MonthViewItem *item ;
759 764
760 if ( mAvailItemList.count() ) { 765 if ( mAvailItemList.count() ) {
761 item = mAvailItemList.first(); 766 item = mAvailItemList.first();
762 mAvailItemList.remove( item ); 767 mAvailItemList.remove( item );
763 item->recycle( event, text ); 768 item->recycle( event, text );
764 } else { 769 } else {
765 item = new MonthViewItem( event, text ); 770 item = new MonthViewItem( event, text );
766 } 771 }
767 772
768 QPalette pal; 773 QPalette pal;
769 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 774 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
770 QStringList categories = event->categories(); 775 QStringList categories = event->categories();
771 QString cat = categories.first(); 776 QString cat = categories.first();
772 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 777 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
773 pal = getPalette(); 778 pal = getPalette();
774 if (cat.isEmpty()) { 779 if (cat.isEmpty()) {
775 //pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); 780 //pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
776 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->defaultColor( event->calID() )); 781 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->defaultColor( event->calID() ));
777 } else { 782 } else {
778 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); 783 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
779 } 784 }
780 785
781 } else { 786 } else {
782 if (cat.isEmpty()) { 787 if (cat.isEmpty()) {
783 //pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); 788 //pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
784 pal = QPalette( KOPrefs::instance()->defaultColor( event->calID() ), KOPrefs::instance()->defaultColor( event->calID() )); 789 pal = QPalette( KOPrefs::instance()->defaultColor( event->calID() ), KOPrefs::instance()->defaultColor( event->calID() ));
785 } else { 790 } else {
786 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); 791 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
787 } 792 }
788 } 793 }
789 794
790 } else { 795 } else {
791 pal = mStandardPalette ; 796 pal = mStandardPalette ;
792 } 797 }
793 pal.setColor(QColorGroup::Highlight, KOPrefs::instance()->mHighlightColor); 798 pal.setColor(QColorGroup::Highlight, KOPrefs::instance()->mHighlightColor);
794 item->setPalette( pal ); 799 item->setPalette( pal );
795 item->setRecur( event->doesRecur() ); 800 item->setRecur( event->doesRecur() );
796 item->setAlarm( event->isAlarmEnabled() && multiday < 2 && event->alarmEnabled() ); 801 item->setAlarm( event->isAlarmEnabled() && multiday < 2 && event->alarmEnabled() );
797 item->setMoreInfo( event->description().length() > 0 ); 802 item->setMoreInfo( event->description().length() > 0 );
798#ifdef DESKTOP_VERSION 803#ifdef DESKTOP_VERSION
799 Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails, 804 Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails,
800 KOPrefs::instance()->email()); 805 KOPrefs::instance()->email());
801 if ( me != 0 ) { 806 if ( me != 0 ) {
802 if ( me->status() == Attendee::NeedsAction && me->RSVP()) 807 if ( me->status() == Attendee::NeedsAction && me->RSVP())
803 item->setReply(true && multiday < 2); 808 item->setReply(true && multiday < 2);
804 else 809 else
805 item->setReply(false); 810 item->setReply(false);
806 } else 811 } else
807 item->setReply(false); 812 item->setReply(false);
808#endif 813#endif
809 814
810 item->setMultiDay( multiday ); 815 item->setMultiDay( multiday );
811 if ( multiday ) { 816 if ( multiday ) {
812 insertItem( item ,mdayCount); 817 insertItem( item ,mdayCount);
813 ++mdayCount; 818 ++mdayCount;
814 } else { 819 } else {
815 uint i = mdayCount; 820 uint i = mdayCount;
816 uint pos = mdayCount; 821 uint pos = mdayCount;
817 uint itcount = count(); 822 uint itcount = count();
818 if ( itcount > 1000 ) { 823 if ( itcount > 1000 ) {
819 qDebug("KO: Bug in MonthViewCell::insertEvent %u ", itcount); 824 qDebug("KO: Bug in MonthViewCell::insertEvent %u ", itcount);
820 itcount = 0; 825 itcount = 0;
821 } 826 }
822 for ( i = pos; i < itcount;++i ) { 827 for ( i = pos; i < itcount;++i ) {
823 // qDebug("i %d mday %u count %d ",i,itcount,mdayCount ); 828 // qDebug("i %d mday %u count %d ",i,itcount,mdayCount );
824 QListBoxItem* it = this->item ( i ); 829 QListBoxItem* it = this->item ( i );
825 if ( it && text < it->text() ) { 830 if ( it && text < it->text() ) {
826 pos = i; 831 pos = i;
827 break; 832 break;
828 } 833 }
829 ++pos; 834 ++pos;
830 } 835 }
831 insertItem( item ,pos); 836 insertItem( item ,pos);
832 } 837 }
833 if ( useToolTips ) { 838 if ( useToolTips ) {
834 mToolTip.append( mToolTipText ); 839 mToolTip.append( mToolTipText );
835 } 840 }
836 return mdayCount; 841 return mdayCount;
837} 842}
838void MonthViewCell::insertTodo(Todo *todo) 843void MonthViewCell::insertTodo(Todo *todo)
839{ 844{
840 setFocusPolicy(WheelFocus); 845 setFocusPolicy(WheelFocus);
841 QString text; 846 QString text;
842 if (todo->hasDueDate()) { 847 if (todo->hasDueDate()) {
843 if (!todo->doesFloat()) { 848 if (!todo->doesFloat()) {
844 text += KGlobal::locale()->formatTime(todo->dtDue().time()); 849 text += KGlobal::locale()->formatTime(todo->dtDue().time());
845 text += " "; 850 text += " ";
846 } 851 }
847 } 852 }
848 text += todo->summary(); 853 text += todo->summary();
849 MonthViewItem *item ; 854 MonthViewItem *item ;
850 if ( mAvailItemList.count() ) { 855 if ( mAvailItemList.count() ) {
851 item = mAvailItemList.first(); 856 item = mAvailItemList.first();
852 mAvailItemList.remove( item ); 857 mAvailItemList.remove( item );
853 item->recycle( todo, text ); 858 item->recycle( todo, text );
854 } else { 859 } else {
855 item = new MonthViewItem( todo, text ); 860 item = new MonthViewItem( todo, text );
856 } 861 }
857 //MonthViewItem *item = new MonthViewItem( todo, mDate, text ); 862 //MonthViewItem *item = new MonthViewItem( todo, mDate, text );
858 //item->setPalette( mStandardPalette ); 863 //item->setPalette( mStandardPalette );
859 QPalette pal; 864 QPalette pal;
860 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 865 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
861 QStringList categories = todo->categories(); 866 QStringList categories = todo->categories();
862 QString cat = categories.first(); 867 QString cat = categories.first();
863 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 868 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
864 pal = getPalette(); 869 pal = getPalette();
865 if (cat.isEmpty()) { 870 if (cat.isEmpty()) {
866 //pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); 871 //pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
867 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->defaultColor( todo->calID() )); 872 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->defaultColor( todo->calID() ));
868 } else { 873 } else {
869 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); 874 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
870 } 875 }
871 876
872 } else { 877 } else {
873 if (cat.isEmpty()) { 878 if (cat.isEmpty()) {
874 //pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); 879 //pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
875 pal = QPalette(KOPrefs::instance()->defaultColor( todo->calID() ), KOPrefs::instance()->defaultColor( todo->calID() )); 880 pal = QPalette(KOPrefs::instance()->defaultColor( todo->calID() ), KOPrefs::instance()->defaultColor( todo->calID() ));
876 } else { 881 } else {
877 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); 882 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
878 } 883 }
879 } 884 }
880 885
881 } else { 886 } else {
882 pal = mStandardPalette ; 887 pal = mStandardPalette ;
883 } 888 }
884 pal.setColor(QColorGroup::Highlight, KOPrefs::instance()->mHighlightColor); 889 pal.setColor(QColorGroup::Highlight, KOPrefs::instance()->mHighlightColor);
885 item->setPalette( pal ); 890 item->setPalette( pal );
886 item->setRecur( todo->doesRecur() ); 891 item->setRecur( todo->doesRecur() );
887 item->setAlarm( todo->isAlarmEnabled() && todo->alarmEnabled() ); 892 item->setAlarm( todo->isAlarmEnabled() && todo->alarmEnabled() );
888 item->setMoreInfo( todo->description().length() > 0 ); 893 item->setMoreInfo( todo->description().length() > 0 );
889 insertItem( item , count()); 894 insertItem( item , count());
890#ifdef DESKTOP_VERSION 895#ifdef DESKTOP_VERSION
891 mToolTip.append( text ); 896 mToolTip.append( text );
892#endif 897#endif
893} 898}
894void MonthViewCell::repaintfinishUpdateCell() 899void MonthViewCell::repaintfinishUpdateCell()
895{ 900{
896 MonthViewItem *mitem = (MonthViewItem*) firstItem (); 901 MonthViewItem *mitem = (MonthViewItem*) firstItem ();
897 while ( mitem ) { 902 while ( mitem ) {
898 mitem->setBlockRepaint( false ); 903 mitem->setBlockRepaint( false );
899 updateItem ( mitem ); 904 updateItem ( mitem );
900 mitem = (MonthViewItem *)mitem->next(); 905 mitem = (MonthViewItem *)mitem->next();
901 } 906 }
902 blockSignals( false ); 907 blockSignals( false );
903} 908}
904void MonthViewCell::finishUpdateCell() 909void MonthViewCell::finishUpdateCell()
905{ 910{
906 911
907 912
908 913
909#ifdef DESKTOP_VERSION 914#ifdef DESKTOP_VERSION
910 if (mToolTip.count() > 0 ) { 915 if (mToolTip.count() > 0 ) {
911 mToolTip.sort(); 916 mToolTip.sort();
912 QToolTip::add(this,mToolTip.join("\n"),toolTipGroup(),""); 917 QToolTip::add(this,mToolTip.join("\n"),toolTipGroup(),"");
913 } 918 }
914#endif 919#endif
915 //sort(); 920 //sort();
916 //setMyPalette(); 921 //setMyPalette();
917 setMyPalette(); 922 setMyPalette();
918 923
919 resizeEvent( 0 ); 924 resizeEvent( 0 );
920 925
921} 926}
922void MonthViewCell::updateCell() 927void MonthViewCell::updateCell()
923{ 928{
924 if ( !mMonthView->isUpdatePossible() ) 929 if ( !mMonthView->isUpdatePossible() )
925 return; 930 return;
926 startUpdateCell(); 931 startUpdateCell();
927 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2); 932 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
928 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true ); 933 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true );
929 Event *event; 934 Event *event;
930 for( event = events.first(); event; event = events.next() ) { // for event 935 for( event = events.first(); event; event = events.next() ) { // for event
931 insertEvent(event); 936 insertEvent(event);
932 } 937 }
933 // insert due todos 938 // insert due todos
934 QPtrList<Todo> todos = mMonthView->calendar()->todos( mDate ); 939 QPtrList<Todo> todos = mMonthView->calendar()->todos( mDate );
935 Todo *todo; 940 Todo *todo;
936 for(todo = todos.first(); todo; todo = todos.next()) { 941 for(todo = todos.first(); todo; todo = todos.next()) {
937 insertTodo( todo ); 942 insertTodo( todo );
938 } 943 }
939 finishUpdateCell(); 944 finishUpdateCell();
940 // if ( isVisible()) 945 // if ( isVisible())
941 //qApp->processEvents(); 946 //qApp->processEvents();
942} 947}
943 948
944void MonthViewCell::updateConfig( bool bigFont ) // = false 949void MonthViewCell::updateConfig( bool bigFont ) // = false
945{ 950{
946 951
947 if ( bigFont ) { 952 if ( bigFont ) {
948 QFont fo = KOPrefs::instance()->mMonthViewFont; 953 QFont fo = KOPrefs::instance()->mMonthViewFont;
949 int ps = fo.pointSize() + 2; 954 int ps = fo.pointSize() + 2;
950 if ( ps < 18 ) 955 if ( ps < 18 )
951 ps += 2; 956 ps += 2;
952 fo.setPointSize( ps ); 957 fo.setPointSize( ps );
953 setFont( fo ); 958 setFont( fo );
954 } else 959 } else
955 setFont( KOPrefs::instance()->mMonthViewFont ); 960 setFont( KOPrefs::instance()->mMonthViewFont );
956 961
957 QFontMetrics fm( font() ); 962 QFontMetrics fm( font() );
958 mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 ); 963 mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 );
959 mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 ); 964 mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 );
960 mHolidayPalette = mStandardPalette; 965 mHolidayPalette = mStandardPalette;
961 mPrimaryPalette = mStandardPalette; 966 mPrimaryPalette = mStandardPalette;
962 mNonPrimaryPalette = mStandardPalette; 967 mNonPrimaryPalette = mStandardPalette;
963 if ( KOPrefs::instance()->mMonthViewUsesDayColors ) { 968 if ( KOPrefs::instance()->mMonthViewUsesDayColors ) {
964 mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor ); 969 mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor );
965 mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor ); 970 mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor );
966 mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark()); 971 mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark());
967 mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark()); 972 mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark());
968 mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor); 973 mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor);
969 mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor); 974 mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor);
970 mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark()); 975 mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark());
971 mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor); 976 mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor);
972 mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor); 977 mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor);
973 } 978 }
974 //updateCell(); 979 //updateCell();
975} 980}
976 981
977void MonthViewCell::enableScrollBars( bool enabled ) 982void MonthViewCell::enableScrollBars( bool enabled )
978{ 983{
979 984
980 return; 985 return;
981 if ( enabled ) { 986 if ( enabled ) {
982 QListBoxItem *fi = firstItem (); 987 QListBoxItem *fi = firstItem ();
983 if (fi ) { 988 if (fi ) {
984 int ihei = fi->height( this ); 989 int ihei = fi->height( this );
985 int hei = numRows () * ihei; 990 int hei = numRows () * ihei;
986 if ( hei < height() - horizontalScrollBar()->height () ) { 991 if ( hei < height() - horizontalScrollBar()->height () ) {
987 setVScrollBarMode(QScrollView::AlwaysOff); 992 setVScrollBarMode(QScrollView::AlwaysOff);
988 } 993 }
989 else 994 else
990 setVScrollBarMode(QScrollView::Auto); 995 setVScrollBarMode(QScrollView::Auto);
991 if ( ihei *3 > height() ) { 996 if ( ihei *3 > height() ) {
992 setHScrollBarMode(QScrollView::AlwaysOff); 997 setHScrollBarMode(QScrollView::AlwaysOff);
993 } 998 }
994 else { 999 else {
995 setHScrollBarMode(QScrollView::Auto); 1000 setHScrollBarMode(QScrollView::Auto);
996 } 1001 }
997 } else { 1002 } else {
998 setVScrollBarMode(QScrollView::Auto); 1003 setVScrollBarMode(QScrollView::Auto);
999 setHScrollBarMode(QScrollView::Auto); 1004 setHScrollBarMode(QScrollView::Auto);
1000 } 1005 }
1001 } else { 1006 } else {
1002 setVScrollBarMode(QScrollView::AlwaysOff); 1007 setVScrollBarMode(QScrollView::AlwaysOff);
1003 setHScrollBarMode(QScrollView::AlwaysOff); 1008 setHScrollBarMode(QScrollView::AlwaysOff);
1004 } 1009 }
1005} 1010}
1006 1011
1007Incidence *MonthViewCell::selectedIncidence() 1012Incidence *MonthViewCell::selectedIncidence()
1008{ 1013{
1009 int index = currentItem(); 1014 int index = currentItem();
1010 if ( index < 0 ) return 0; 1015 if ( index < 0 ) return 0;
1011 1016
1012 MonthViewItem *mitem = 1017 MonthViewItem *mitem =
1013 static_cast<MonthViewItem *>( item( index ) ); 1018 static_cast<MonthViewItem *>( item( index ) );
1014 1019
1015 if ( !mitem ) return 0; 1020 if ( !mitem ) return 0;
1016 1021
1017 return mitem->incidence(); 1022 return mitem->incidence();
1018} 1023}
1019 1024
1020QDate MonthViewCell::selectedIncidenceDate() 1025QDate MonthViewCell::selectedIncidenceDate()
1021{ 1026{
1022 QDate qd; 1027 QDate qd;
1023 int index = currentItem(); 1028 int index = currentItem();
1024 if ( index < 0 ) return qd; 1029 if ( index < 0 ) return qd;
1025 return mDate; 1030 return mDate;
1026} 1031}
1027 1032
1028void MonthViewCell::deselect() 1033void MonthViewCell::deselect()
1029{ 1034{
1030 clearSelection(); 1035 clearSelection();
1031 enableScrollBars( false ); 1036 enableScrollBars( false );
1032 // updateCell(); 1037 // updateCell();
1033} 1038}
1034void MonthViewCell::select() 1039void MonthViewCell::select()
1035{ 1040{
1036 ;// updateCell(); 1041 ;// updateCell();
1037} 1042}
1038 1043
1039void MonthViewCell::resizeEvent ( QResizeEvent * e ) 1044void MonthViewCell::resizeEvent ( QResizeEvent * e )
1040{ 1045{
1041 if ( !mMonthView->isUpdatePossible() ) 1046 if ( !mMonthView->isUpdatePossible() )
1042 return; 1047 return;
1043 //qDebug("++++++++++++++MonthViewCell::resizeEvent %d %d ", width(), height()); 1048 //qDebug("++++++++++++++MonthViewCell::resizeEvent %d %d ", width(), height());
1044 deselect(); 1049 deselect();
1045 mLabel->setMaximumHeight( height() - lineWidth()*2 ); 1050 mLabel->setMaximumHeight( height() - lineWidth()*2 );
1046 1051
1047 QString text; 1052 QString text;
1048 //mLabel->setText( text ); 1053 //mLabel->setText( text );
1049 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog; 1054 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog;
1050 if ( KOPrefs::instance()->mMonthViewWeek || KOGlobals::self()->calendarSystem()->day( mDate ) == 1 || (mDate.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) { 1055 if ( KOPrefs::instance()->mMonthViewWeek || KOGlobals::self()->calendarSystem()->day( mDate ) == 1 || (mDate.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) {
1051 text = KOGlobals::self()->calendarSystem()->monthName( mDate, true ) + " " + QString::number( mDate.day() ); 1056 text = KOGlobals::self()->calendarSystem()->monthName( mDate, true ) + " " + QString::number( mDate.day() );
1052 mLabel->resize( mLabelBigSize ); 1057 mLabel->resize( mLabelBigSize );
1053 } else { 1058 } else {
1054 mLabel->resize( mLabelSize ); 1059 mLabel->resize( mLabelSize );
1055 text = QString::number( mDate.day() ); 1060 text = QString::number( mDate.day() );
1056 } 1061 }
1057 mLabel->setText( text ); 1062 mLabel->setText( text );
1058 1063
1059 int size = height() - mLabel->height() - lineWidth()-1; 1064 int size = height() - mLabel->height() - lineWidth()-1;
1060 //qDebug("LW %d ", lineWidth()); 1065 //qDebug("LW %d ", lineWidth());
1061 if ( size > 0 ) 1066 if ( size > 0 )
1062 verticalScrollBar()->setMaximumHeight( size ); 1067 verticalScrollBar()->setMaximumHeight( size );
1063 size = width() - mLabel->width() -lineWidth()-1; 1068 size = width() - mLabel->width() -lineWidth()-1;
1064 if ( size > 0 ) 1069 if ( size > 0 )
1065 horizontalScrollBar()->setMaximumWidth( size ); 1070 horizontalScrollBar()->setMaximumWidth( size );
1066 mLabel->move( width()-lineWidth() - mLabel->width(), height()-lineWidth() - mLabel->height() ); 1071 mLabel->move( width()-lineWidth() - mLabel->width(), height()-lineWidth() - mLabel->height() );
1067 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2); 1072 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
1068 // mItemList->resize ( width(), height () ); 1073 // mItemList->resize ( width(), height () );
1069 if ( e ) 1074 if ( e )
1070 KNoScrollListBox::resizeEvent ( e ); 1075 KNoScrollListBox::resizeEvent ( e );
1071} 1076}
1072 1077
1073void MonthViewCell::defaultAction( QListBoxItem *item ) 1078void MonthViewCell::defaultAction( QListBoxItem *item )
1074{ 1079{
1075 1080
1076 if ( !item ) { 1081 if ( !item ) {
1077 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) ); 1082 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
1078 emit newEventSignal( dt ); 1083 emit newEventSignal( dt );
1079 return; 1084 return;
1080 } 1085 }
1081 1086
1082 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item ); 1087 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
1083 Incidence *incidence = eventItem->incidence(); 1088 Incidence *incidence = eventItem->incidence();
1084 if ( incidence ) mMonthView->defaultAction( incidence ); 1089 if ( incidence ) mMonthView->defaultAction( incidence );
1085} 1090}
1086void MonthViewCell::showDay() 1091void MonthViewCell::showDay()
1087{ 1092{
1088 emit showDaySignal( date() ); 1093 emit showDaySignal( date() );
1089} 1094}
1090void MonthViewCell::newEvent() 1095void MonthViewCell::newEvent()
1091{ 1096{
1092 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) ); 1097 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
1093 emit newEventSignal( dt ); 1098 emit newEventSignal( dt );
1094} 1099}
1095void MonthViewCell::cellClicked( QListBoxItem *item ) 1100void MonthViewCell::cellClicked( QListBoxItem *item )
1096{ 1101{
1097 mMonthView->setSelectedCell( this ); 1102 mMonthView->setSelectedCell( this );
1098 if ( item == 0 ) { 1103 if ( item == 0 ) {
1099 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) ); 1104 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
1100 emit newEventSignal( dt ); 1105 emit newEventSignal( dt );
1101 return; 1106 return;
1102 } 1107 }
1103 1108
1104} 1109}
1105 1110
1106void MonthViewCell::contextMenu( QListBoxItem *item ) 1111void MonthViewCell::contextMenu( QListBoxItem *item )
1107{ 1112{
1108 mMonthView->setPopupCell( this ); 1113 mMonthView->setPopupCell( this );
1109 if ( !item ) { 1114 if ( !item ) {
1110 mMonthView->showContextMenu( 0 ); 1115 mMonthView->showContextMenu( 0 );
1111 return; 1116 return;
1112 } 1117 }
1113 //selection( item ); 1118 //selection( item );
1114 //qApp->processEvents(); 1119 //qApp->processEvents();
1115 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item ); 1120 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
1116 Incidence *incidence = eventItem->incidence(); 1121 Incidence *incidence = eventItem->incidence();
1117 if ( incidence ) { 1122 if ( incidence ) {
1118 mBlockDeselect = true; 1123 mBlockDeselect = true;
1119 mMonthView->showContextMenu( incidence ); 1124 mMonthView->showContextMenu( incidence );
1120 } 1125 }
1121} 1126}
1122 1127
1123void MonthViewCell::selection( QListBoxItem *item ) 1128void MonthViewCell::selection( QListBoxItem *item )
1124{ 1129{
1125 if ( !item ) { 1130 if ( !item ) {
1126 emit highlightIncidence( 0 , this, 0 ); 1131 emit highlightIncidence( 0 , this, 0 );
1127 return; 1132 return;
1128 } 1133 }
1129 MonthViewItem * it = (static_cast<MonthViewItem *>( item )); 1134 MonthViewItem * it = (static_cast<MonthViewItem *>( item ));
1130 emit highlightIncidence( it->incidence(), this, it->multiDay() ); 1135 emit highlightIncidence( it->incidence(), this, it->multiDay() );
1131 mMonthView->setSelectedCell( this ); 1136 mMonthView->setSelectedCell( this );
1132} 1137}
1133 1138
1134void MonthViewCell::deHighLight() 1139void MonthViewCell::deHighLight()
1135{ 1140{
1136 MonthViewItem *mitem = (MonthViewItem*) firstItem (); 1141 MonthViewItem *mitem = (MonthViewItem*) firstItem ();
1137 while ( mitem ) { 1142 while ( mitem ) {
1138 if ( mitem->setHighlightedFalse() ) 1143 if ( mitem->setHighlightedFalse() )
1139 updateItem ( mitem ); 1144 updateItem ( mitem );
1140 mitem = (MonthViewItem *)mitem->next(); 1145 mitem = (MonthViewItem *)mitem->next();
1141 } 1146 }
1142} 1147}
1143// returns true if no inc found 1148// returns true if no inc found
1144bool MonthViewCell::doHighLight( Incidence * inc ) 1149bool MonthViewCell::doHighLight( Incidence * inc )
1145{ 1150{
1146 1151
1147 MonthViewItem *mitem = (MonthViewItem*) firstItem (); 1152 MonthViewItem *mitem = (MonthViewItem*) firstItem ();
1148 while ( mitem ) { 1153 while ( mitem ) {
1149 if ( mitem->incidence() == inc ) { 1154 if ( mitem->incidence() == inc ) {
1150 if ( mitem->setHighlighted( inc ) ) 1155 if ( mitem->setHighlighted( inc ) )
1151 updateItem ( mitem ); 1156 updateItem ( mitem );
1152 return false; 1157 return false;
1153 } 1158 }
1154 mitem = (MonthViewItem *)mitem->next(); 1159 mitem = (MonthViewItem *)mitem->next();
1155 } 1160 }
1156 return true; 1161 return true;
1157} 1162}
1158// ******************************************************************************* 1163// *******************************************************************************
1159// ******************************************************************************* 1164// *******************************************************************************
1160// ******************************************************************************* 1165// *******************************************************************************
1161 1166
1162 1167
1163KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name) 1168KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
1164 : KOEventView( calendar, parent, name ), 1169 : KOEventView( calendar, parent, name ),
1165 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ), 1170 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ),
1166 mWidthLongDayLabel( 0 ), mSelectedCell( 0 ) 1171 mWidthLongDayLabel( 0 ), mSelectedCell( 0 )
1167{ 1172{
1168 mFlagKeyPressed = false; 1173 mFlagKeyPressed = false;
1169 mShortDayLabelsM = false; 1174 mShortDayLabelsM = false;
1170 mShortDayLabelsW = false; 1175 mShortDayLabelsW = false;
1171 skipResize = false; 1176 skipResize = false;
1172 clPending = true; 1177 clPending = true;
1173 mPopupCell = 0; 1178 mPopupCell = 0;
1174 mNavigatorBar = new NavigatorBar( QDate::currentDate(), this, "useBigPixmaps" ); 1179 mNavigatorBar = new NavigatorBar( QDate::currentDate(), this, "useBigPixmaps" );
1175 mWidStack = new QWidgetStack( this ); 1180 mWidStack = new QWidgetStack( this );
1176 QVBoxLayout* hb = new QVBoxLayout( this ); 1181 QVBoxLayout* hb = new QVBoxLayout( this );
1177 mMonthView = new QWidget( mWidStack ); 1182 mMonthView = new QWidget( mWidStack );
1178 mWeekView = new QWidget( mWidStack ); 1183 mWeekView = new QWidget( mWidStack );
1179#if QT_VERSION >= 0x030000 1184#if QT_VERSION >= 0x030000
1180 mWidStack->addWidget(mMonthView ); 1185 mWidStack->addWidget(mMonthView );
1181 mWidStack->addWidget(mWeekView ); 1186 mWidStack->addWidget(mWeekView );
1182#else 1187#else
1183 mWidStack->addWidget( mMonthView, 1 ); 1188 mWidStack->addWidget( mMonthView, 1 );
1184 mWidStack->addWidget( mWeekView , 1 ); 1189 mWidStack->addWidget( mWeekView , 1 );
1185#endif 1190#endif
1186 hb->addWidget( mNavigatorBar ); 1191 hb->addWidget( mNavigatorBar );
1187 hb->addWidget( mWidStack ); 1192 hb->addWidget( mWidStack );
1188 mShowWeekView = KOPrefs::instance()->mMonthViewWeek; 1193 mShowWeekView = KOPrefs::instance()->mMonthViewWeek;
1189 updatePossible = false; 1194 updatePossible = false;
1190 //updatePossible = true; 1195 //updatePossible = true;
1191 mCells.setAutoDelete( true ); 1196 mCells.setAutoDelete( true );
1192 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; 1197 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
1193 mDayLabels.resize( mDaysPerWeek ); 1198 mDayLabels.resize( mDaysPerWeek );
1194 mDayLabelsW.resize( mDaysPerWeek ); 1199 mDayLabelsW.resize( mDaysPerWeek );
1195 QFont bfont = font(); 1200 QFont bfont = font();
1196 if ( QApplication::desktop()->width() < 650 ) { 1201 if ( QApplication::desktop()->width() < 650 ) {
1197 bfont.setPointSize( bfont.pointSize() - 2 ); 1202 bfont.setPointSize( bfont.pointSize() - 2 );
1198 } 1203 }
1199 bfont.setBold( true ); 1204 bfont.setBold( true );
1200 int i; 1205 int i;
1201 1206
1202 for( i = 0; i < mDaysPerWeek; i++ ) { 1207 for( i = 0; i < mDaysPerWeek; i++ ) {
1203 QLabel *label = new QLabel( mMonthView ); 1208 QLabel *label = new QLabel( mMonthView );
1204 label->setFont(bfont); 1209 label->setFont(bfont);
1205 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 1210 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
1206 label->setLineWidth(1); 1211 label->setLineWidth(1);
1207 label->setAlignment(AlignCenter); 1212 label->setAlignment(AlignCenter);
1208 mDayLabels.insert( i, label ); 1213 mDayLabels.insert( i, label );
1209 label = new QLabel( mWeekView ); 1214 label = new QLabel( mWeekView );
1210 label->setFont(bfont); 1215 label->setFont(bfont);
1211 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 1216 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
1212 label->setLineWidth(1); 1217 label->setLineWidth(1);
1213 label->setAlignment(AlignCenter); 1218 label->setAlignment(AlignCenter);
1214 mDayLabelsW.insert( i, label ); 1219 mDayLabelsW.insert( i, label );
1215 } 1220 }
1216 1221
1217 bfont.setBold( false ); 1222 bfont.setBold( false );
1218 mWeekLabels.resize( mNumWeeks+1 ); 1223 mWeekLabels.resize( mNumWeeks+1 );
1219 mWeekLabelsW.resize( 2 ); 1224 mWeekLabelsW.resize( 2 );
1220 for( i = 0; i < mNumWeeks+1; i++ ) { 1225 for( i = 0; i < mNumWeeks+1; i++ ) {
1221 KOWeekButton *label = new KOWeekButton( mMonthView ); 1226 KOWeekButton *label = new KOWeekButton( mMonthView );
1222 label->setFocusPolicy(NoFocus); 1227 label->setFocusPolicy(NoFocus);
1223 label->setFont(bfont); 1228 label->setFont(bfont);
1224 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) ); 1229 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) );
1225 label->setFlat(true); 1230 label->setFlat(true);
1226 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed")); 1231 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed"));
1227 //label->setFrameStyle(QFrame::Panel|QFrame::Raised); 1232 //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
1228 //label->setLineWidth(1); 1233 //label->setLineWidth(1);
1229 //label->setAlignment(AlignCenter); 1234 //label->setAlignment(AlignCenter);
1230 mWeekLabels.insert( i, label ); 1235 mWeekLabels.insert( i, label );
1231 } 1236 }
1232 mWeekLabels[mNumWeeks]->setText( i18n("W")); 1237 mWeekLabels[mNumWeeks]->setText( i18n("W"));
1233 mWeekLabels[mNumWeeks]->setFocusPolicy(WheelFocus); 1238 mWeekLabels[mNumWeeks]->setFocusPolicy(WheelFocus);
1234 QWhatsThis::add(mWeekLabels[mNumWeeks],i18n("Click on this to\nselect week number")); 1239 QWhatsThis::add(mWeekLabels[mNumWeeks],i18n("Click on this to\nselect week number"));
1235 1240
1236 for( i = 0; i < 1+1; i++ ) { 1241 for( i = 0; i < 1+1; i++ ) {
1237 KOWeekButton *label = new KOWeekButton( mWeekView ); 1242 KOWeekButton *label = new KOWeekButton( mWeekView );
1238 label->setFocusPolicy(NoFocus); 1243 label->setFocusPolicy(NoFocus);
1239 label->setFont(bfont); 1244 label->setFont(bfont);
1240 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) ); 1245 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) );
1241 label->setFlat(true); 1246 label->setFlat(true);
1242 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed")); 1247 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed"));
1243 //label->setFrameStyle(QFrame::Panel|QFrame::Raised); 1248 //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
1244 //label->setLineWidth(1); 1249 //label->setLineWidth(1);
1245 //label->setAlignment(AlignCenter); 1250 //label->setAlignment(AlignCenter);
1246 mWeekLabelsW.insert( i, label ); 1251 mWeekLabelsW.insert( i, label );
1247 } 1252 }
1248 mWeekLabelsW[1]->setText( i18n("W")); 1253 mWeekLabelsW[1]->setText( i18n("W"));
1249 mWeekLabelsW[1]->setFocusPolicy(WheelFocus); 1254 mWeekLabelsW[1]->setFocusPolicy(WheelFocus);
1250 1255
1251 1256
1252 int row, col; 1257 int row, col;
1253 mCells.resize( mNumCells ); 1258 mCells.resize( mNumCells );
1254 for( row = 0; row < mNumWeeks; ++row ) { 1259 for( row = 0; row < mNumWeeks; ++row ) {
1255 for( col = 0; col < mDaysPerWeek; ++col ) { 1260 for( col = 0; col < mDaysPerWeek; ++col ) {
1256 MonthViewCell *cell = new MonthViewCell( this, mMonthView ); 1261 MonthViewCell *cell = new MonthViewCell( this, mMonthView );
1257 mCells.insert( row * mDaysPerWeek + col, cell ); 1262 mCells.insert( row * mDaysPerWeek + col, cell );
1258 1263
1259 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 1264 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
1260 SLOT( defaultAction( Incidence * ) ) ); 1265 SLOT( defaultAction( Incidence * ) ) );
1261 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 1266 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
1262 SIGNAL( newEventSignal( QDateTime ) ) ); 1267 SIGNAL( newEventSignal( QDateTime ) ) );
1263 connect( cell, SIGNAL( showDaySignal( QDate ) ), 1268 connect( cell, SIGNAL( showDaySignal( QDate ) ),
1264 SIGNAL( showDaySignal( QDate ) ) ); 1269 SIGNAL( showDaySignal( QDate ) ) );
1265 connect( cell, SIGNAL( nextCell() ), 1270 connect( cell, SIGNAL( nextCell() ),
1266 SLOT( nextCell() ) ); 1271 SLOT( nextCell() ) );
1267 connect( cell, SIGNAL( prevCell() ), 1272 connect( cell, SIGNAL( prevCell() ),
1268 SLOT( prevCell() ) ); 1273 SLOT( prevCell() ) );
1269 connect( cell, SIGNAL( highlightIncidence( Incidence * , MonthViewCell *, int ) ), 1274 connect( cell, SIGNAL( highlightIncidence( Incidence * , MonthViewCell *, int ) ),
1270 SLOT( incidenceHighlighted( Incidence *, MonthViewCell *, int ) )); 1275 SLOT( incidenceHighlighted( Incidence *, MonthViewCell *, int ) ));
1271 } 1276 }
1272 } 1277 }
1273 mCellsW.resize( mDaysPerWeek ); 1278 mCellsW.resize( mDaysPerWeek );
1274 for( col = 0; col < mDaysPerWeek; ++col ) { 1279 for( col = 0; col < mDaysPerWeek; ++col ) {
1275 MonthViewCell *cell = new MonthViewCell( this, mWeekView ); 1280 MonthViewCell *cell = new MonthViewCell( this, mWeekView );
1276 mCellsW.insert( col, cell ); 1281 mCellsW.insert( col, cell );
1277 1282
1278 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 1283 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
1279 SLOT( defaultAction( Incidence * ) ) ); 1284 SLOT( defaultAction( Incidence * ) ) );
1280 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 1285 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
1281 SIGNAL( newEventSignal( QDateTime ) ) ); 1286 SIGNAL( newEventSignal( QDateTime ) ) );
1282 connect( cell, SIGNAL( showDaySignal( QDate ) ), 1287 connect( cell, SIGNAL( showDaySignal( QDate ) ),
1283 SIGNAL( showDaySignal( QDate ) ) ); 1288 SIGNAL( showDaySignal( QDate ) ) );
1284 connect( cell, SIGNAL( nextCell() ), 1289 connect( cell, SIGNAL( nextCell() ),
1285 SLOT( nextCell() ) ); 1290 SLOT( nextCell() ) );
1286 connect( cell, SIGNAL( prevCell() ), 1291 connect( cell, SIGNAL( prevCell() ),
1287 SLOT( prevCell() ) ); 1292 SLOT( prevCell() ) );
1288 connect( cell, SIGNAL( highlightIncidence( Incidence * , MonthViewCell *, int ) ), 1293 connect( cell, SIGNAL( highlightIncidence( Incidence * , MonthViewCell *, int ) ),
1289 SLOT( incidenceHighlighted( Incidence *, MonthViewCell *, int ) )); 1294 SLOT( incidenceHighlighted( Incidence *, MonthViewCell *, int ) ));
1290 cell->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont ); 1295 cell->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont );
1291 } 1296 }
1292 1297
1293 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) ); 1298 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) );
1294 mContextMenu = eventPopup(); 1299 mContextMenu = eventPopup();
1295 mContextMenu->addAdditionalItem(QIconSet(QPixmap()), 1300 mContextMenu->addAdditionalItem(QIconSet(QPixmap()),
1296 i18n("New Event..."),this, 1301 i18n("New Event..."),this,
1297 SLOT(slotNewEvent()),false); 1302 SLOT(slotNewEvent()),false);
1298 mContextMenu->addAdditionalItem(QIconSet(QPixmap()), 1303 mContextMenu->addAdditionalItem(QIconSet(QPixmap()),
1299 i18n("New Todo..."),this, 1304 i18n("New Todo..."),this,
1300 SLOT(slotNewTodo()),false); 1305 SLOT(slotNewTodo()),false);
1301 mContextMenu->addAdditionalItem(QIconSet(QPixmap()), 1306 mContextMenu->addAdditionalItem(QIconSet(QPixmap()),
1302 i18n("Journal"),this, 1307 i18n("Journal"),this,
1303 SLOT(slotEditJournal()),false); 1308 SLOT(slotEditJournal()),false);
1304 1309
1305 connect (mContextMenu ,SIGNAL(categoryChanged( Incidence * )),this, 1310 connect (mContextMenu ,SIGNAL(categoryChanged( Incidence * )),this,
1306 SLOT( catChanged( Incidence * ) )); 1311 SLOT( catChanged( Incidence * ) ));
1307 1312
1308 1313
1309 QString pathString = ""; 1314 QString pathString = "";
1310 if ( !KOPrefs::instance()->mToolBarMiniIcons ) { 1315 if ( !KOPrefs::instance()->mToolBarMiniIcons ) {
1311 if ( QApplication::desktop()->width() < 480 ) 1316 if ( QApplication::desktop()->width() < 480 )
1312 pathString += "icons16/"; 1317 pathString += "icons16/";
1313 } else 1318 } else
1314 pathString += "iconsmini/"; 1319 pathString += "iconsmini/";
1315 mNewItemMenu = new QPopupMenu( this ); 1320 mNewItemMenu = new QPopupMenu( this );
1316 mNewItemMenu->insertItem( SmallIcon( pathString +"newevent" ), i18n("New Event..."),this, SLOT(slotNewEvent())); 1321 mNewItemMenu->insertItem( SmallIcon( pathString +"newevent" ), i18n("New Event..."),this, SLOT(slotNewEvent()));
1317 mNewItemMenu->insertItem( SmallIcon( pathString +"newtodo" ),i18n("New Todo..."),this,SLOT(slotNewTodo()),false); 1322 mNewItemMenu->insertItem( SmallIcon( pathString +"newtodo" ),i18n("New Todo..."),this,SLOT(slotNewTodo()),false);
1318 mNewItemMenu->insertItem( SmallIcon( pathString +"journal" ),i18n("Journal"),this,SLOT(slotEditJournal()),false); 1323 mNewItemMenu->insertItem( SmallIcon( pathString +"journal" ),i18n("Journal"),this,SLOT(slotEditJournal()),false);
1319 1324
1320 // updateConfig(); //useless here... 1325 // updateConfig(); //useless here...
1321 // ... but we need mWidthLongDayLabel computed 1326 // ... but we need mWidthLongDayLabel computed
1322 QFontMetrics fontmetric(mDayLabels[0]->font()); 1327 QFontMetrics fontmetric(mDayLabels[0]->font());
1323 mWidthLongDayLabel = 0; 1328 mWidthLongDayLabel = 0;
1324 for (int i = 0; i < 7; i++) { 1329 for (int i = 0; i < 7; i++) {
1325 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1)); 1330 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1));
1326 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width; 1331 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width;
1327 } 1332 }
1328 1333
1329 //mWeekLabels[mNumWeeks]->setText( i18n("W")); 1334 //mWeekLabels[mNumWeeks]->setText( i18n("W"));
1330 1335
1331#if 0 1336#if 0
1332 if ( mShowWeekView ) 1337 if ( mShowWeekView )
1333 mWidStack->raiseWidget( mWeekView ); 1338 mWidStack->raiseWidget( mWeekView );
1334 else 1339 else
1335 mWidStack->raiseWidget( mMonthView ); 1340 mWidStack->raiseWidget( mMonthView );
1336#endif 1341#endif
1337 1342
1338 emit incidenceSelected( 0 ); 1343 emit incidenceSelected( 0 );
1339 1344
1340 mComputeLayoutTimer = new QTimer( this ); 1345 mComputeLayoutTimer = new QTimer( this );
1341 connect (mComputeLayoutTimer ,SIGNAL(timeout()), this, SLOT ( slotComputeLayout())); 1346 connect (mComputeLayoutTimer ,SIGNAL(timeout()), this, SLOT ( slotComputeLayout()));
1342 1347
1343 1348
1344#ifndef DESKTOP_VERSION 1349#ifndef DESKTOP_VERSION
1345 resize( QApplication::desktop()->size() ); 1350 resize( QApplication::desktop()->size() );
1346#else 1351#else
1347 resize(640, 480 ); 1352 resize(640, 480 );
1348 updatePossible = true; 1353 updatePossible = true;
1349#endif 1354#endif
1350 computeLayout(); 1355 computeLayout();
1351 1356
1352 if ( mShowWeekView ) 1357 if ( mShowWeekView )
1353 mWidStack->raiseWidget( mWeekView ); 1358 mWidStack->raiseWidget( mWeekView );
1354 else 1359 else
1355 mWidStack->raiseWidget( mMonthView ); 1360 mWidStack->raiseWidget( mMonthView );
1356} 1361}
1357 1362
1358KOMonthView::~KOMonthView() 1363KOMonthView::~KOMonthView()
1359{ 1364{
1360 delete mContextMenu; 1365 delete mContextMenu;
1361} 1366}
1362 1367
1363void KOMonthView::catChanged( Incidence * ) 1368void KOMonthView::catChanged( Incidence * )
1364{ 1369{
1365 updateView(); 1370 updateView();
1366} 1371}
1367void KOMonthView::incidenceHighlighted( Incidence * inc , MonthViewCell* mc, int mday ) 1372void KOMonthView::incidenceHighlighted( Incidence * inc , MonthViewCell* mc, int mday )
1368{ 1373{
1369 static Incidence * lastInc = 0; 1374 static Incidence * lastInc = 0;
1370 static MonthViewCell * lastCell = 0; 1375 static MonthViewCell * lastCell = 0;
1371 1376
1372 if ( lastInc == inc && lastCell == mc ) 1377 if ( lastInc == inc && lastCell == mc )
1373 return; 1378 return;
1374 lastInc = inc; 1379 lastInc = inc;
1375 lastCell = mc; 1380 lastCell = mc;
1376 //qDebug("KOMonthView::incidenceHighlighted %d %d %d", inc, mc, mday ); 1381 //qDebug("KOMonthView::incidenceHighlighted %d %d %d", inc, mc, mday );
1377 1382
1378 bool weekview = false; 1383 bool weekview = false;
1379 uint index = 0; 1384 uint index = 0;
1380 for (uint i = 0; i < mCellsW.count(); ++i) { 1385 for (uint i = 0; i < mCellsW.count(); ++i) {
1381 if ( mCellsW[i] == mc ) { 1386 if ( mCellsW[i] == mc ) {
1382 weekview = true; 1387 weekview = true;
1383 index = i; 1388 index = i;
1384 break; 1389 break;
1385 } 1390 }
1386 } 1391 }
1387 QPtrVector<MonthViewCell> *cells; 1392 QPtrVector<MonthViewCell> *cells;
1388 if ( weekview ) 1393 if ( weekview )
1389 cells = &mCellsW; 1394 cells = &mCellsW;
1390 else { 1395 else {
1391 for (uint i = 0; i < mCells.count(); ++i) { 1396 for (uint i = 0; i < mCells.count(); ++i) {
1392 if ( mCells[i] == mc ) { 1397 if ( mCells[i] == mc ) {
1393 index = i; 1398 index = i;
1394 break; 1399 break;
1395 } 1400 }
1396 } 1401 }
1397 cells = &mCells; 1402 cells = &mCells;
1398 } 1403 }
1399 for (uint i = 0; i < (*cells).count(); ++i) { 1404 for (uint i = 0; i < (*cells).count(); ++i) {
1400 (*cells)[i]->deHighLight(); 1405 (*cells)[i]->deHighLight();
1401 } 1406 }
1402 if ( ! inc ) 1407 if ( ! inc )
1403 return; 1408 return;
1404 1409
1405 uint count = (*cells).count(); 1410 uint count = (*cells).count();
1406 bool goLeft = (mday > 1 && index > 0); 1411 bool goLeft = (mday > 1 && index > 0);
1407 bool goRight = (mday < 3 && mday > 0 && index < count -1); 1412 bool goRight = (mday < 3 && mday > 0 && index < count -1);
1408 for (uint iii = 1; iii < count; ++iii) { 1413 for (uint iii = 1; iii < count; ++iii) {
1409 if ( goLeft ) { 1414 if ( goLeft ) {
1410 int left = index - iii; 1415 int left = index - iii;
1411 if ( left >= 0 ) { 1416 if ( left >= 0 ) {
1412 if ( (*cells)[(uint)left]->doHighLight(inc) ) 1417 if ( (*cells)[(uint)left]->doHighLight(inc) )
1413 goLeft = false; 1418 goLeft = false;
1414 } else 1419 } else
1415 goLeft = false; 1420 goLeft = false;
1416 } 1421 }
1417 if ( goRight ) { 1422 if ( goRight ) {
1418 uint right = index + iii; 1423 uint right = index + iii;
1419 if ( right < count ) { 1424 if ( right < count ) {
1420 if ( (*cells)[right]->doHighLight(inc) ) 1425 if ( (*cells)[right]->doHighLight(inc) )
1421 goRight = false; 1426 goRight = false;
1422 1427
1423 } else 1428 } else
1424 goRight = false; 1429 goRight = false;
1425 } 1430 }
1426 1431
1427 } 1432 }
1428#if 0 1433#if 0
1429 if ( mday > 1 && index > 0 ) 1434 if ( mday > 1 && index > 0 )
1430 for (int i = index-1; i >= 0; --i) { 1435 for (int i = index-1; i >= 0; --i) {
1431 //qDebug("index %d iii %d ", index, i); 1436 //qDebug("index %d iii %d ", index, i);
1432 if ( (*cells)[(uint)i]->doHighLight(inc) ) 1437 if ( (*cells)[(uint)i]->doHighLight(inc) )
1433 break; 1438 break;
1434 } 1439 }
1435 if ( mday < 3 && mday > 0 && index < (*cells).count()-1) 1440 if ( mday < 3 && mday > 0 && index < (*cells).count()-1)
1436 for (uint i = index+1; i < (*cells).count(); ++i) { 1441 for (uint i = index+1; i < (*cells).count(); ++i) {
1437 if ( (*cells)[i]->doHighLight(inc) ) 1442 if ( (*cells)[i]->doHighLight(inc) )
1438 break; 1443 break;
1439 } 1444 }
1440#endif 1445#endif
1441 1446
1442} 1447}
1443void KOMonthView::selectInternalWeekNum ( int n ) 1448void KOMonthView::selectInternalWeekNum ( int n )
1444{ 1449{
1445 switchView(); 1450 switchView();
1446 if ( !KOPrefs::instance()->mMonthViewWeek ) 1451 if ( !KOPrefs::instance()->mMonthViewWeek )
1447 emit selectMonth (); 1452 emit selectMonth ();
1448 else 1453 else
1449 emit selectWeekNum ( n ); 1454 emit selectWeekNum ( n );
1450} 1455}
1451 1456
1452int KOMonthView::currentWeek() 1457int KOMonthView::currentWeek()
1453{ 1458{
1454 if ( mShowWeekView ) 1459 if ( mShowWeekView )
1455 return mWeekLabelsW[0]->getWeekNum(); 1460 return mWeekLabelsW[0]->getWeekNum();
1456 return mWeekLabels[0]->getWeekNum(); 1461 return mWeekLabels[0]->getWeekNum();
1457} 1462}
1458void KOMonthView::switchView() 1463void KOMonthView::switchView()
1459{ 1464{
1460 if ( selectedCell( ) ) 1465 if ( selectedCell( ) )
1461 selectedCell()->deselect(); 1466 selectedCell()->deselect();
1462 mShowWeekView = !mShowWeekView; 1467 mShowWeekView = !mShowWeekView;
1463 KOPrefs::instance()->mMonthViewWeek = mShowWeekView; 1468 KOPrefs::instance()->mMonthViewWeek = mShowWeekView;
1464 if ( clPending ) { 1469 if ( clPending ) {
1465 computeLayout(); 1470 computeLayout();
1466 updateConfig(); 1471 updateConfig();
1467 } 1472 }
1468 if ( mShowWeekView ) 1473 if ( mShowWeekView )
1469 mWidStack->raiseWidget( mWeekView ); 1474 mWidStack->raiseWidget( mWeekView );
1470 else 1475 else
1471 mWidStack->raiseWidget( mMonthView ); 1476 mWidStack->raiseWidget( mMonthView );
1472 clPending = false; 1477 clPending = false;
1473} 1478}
1474 1479
1475int KOMonthView::maxDatesHint() 1480int KOMonthView::maxDatesHint()
1476{ 1481{
1477 return mNumCells; 1482 return mNumCells;
1478} 1483}
1479 1484
1480int KOMonthView::currentDateCount() 1485int KOMonthView::currentDateCount()
1481{ 1486{
1482 return mNumCells; 1487 return mNumCells;
1483} 1488}
1484 1489
1485QPtrList<Incidence> KOMonthView::selectedIncidences() 1490QPtrList<Incidence> KOMonthView::selectedIncidences()
1486{ 1491{
1487 QPtrList<Incidence> selected; 1492 QPtrList<Incidence> selected;
1488 1493
1489 if ( mSelectedCell ) { 1494 if ( mSelectedCell ) {
1490 Incidence *incidence = mSelectedCell->selectedIncidence(); 1495 Incidence *incidence = mSelectedCell->selectedIncidence();
1491 if ( incidence ) selected.append( incidence ); 1496 if ( incidence ) selected.append( incidence );
1492 } 1497 }
1493 1498
1494 return selected; 1499 return selected;
1495} 1500}
1496 1501
1497DateList KOMonthView::selectedDates() 1502DateList KOMonthView::selectedDates()
1498{ 1503{
1499 DateList selected; 1504 DateList selected;
1500 1505
1501 if ( mSelectedCell ) { 1506 if ( mSelectedCell ) {
1502 QDate qd = mSelectedCell->selectedIncidenceDate(); 1507 QDate qd = mSelectedCell->selectedIncidenceDate();
1503 if ( qd.isValid() ) selected.append( qd ); 1508 if ( qd.isValid() ) selected.append( qd );
1504 } 1509 }
1505 1510
1506 return selected; 1511 return selected;
1507} 1512}
1508#if 0 1513#if 0
1509void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd, 1514void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd,
1510 const QDate &td) 1515 const QDate &td)
1511{ 1516{
1512#ifndef KORG_NOPRINTER 1517#ifndef KORG_NOPRINTER
1513 calPrinter->preview(CalPrinter::Month, fd, td); 1518 calPrinter->preview(CalPrinter::Month, fd, td);
1514#endif 1519#endif
1515} 1520}
1516#endif 1521#endif
1517void KOMonthView::updateConfig() 1522void KOMonthView::updateConfig()
1518{ 1523{
1519 1524
1520 int mWeekStartsMonday = KGlobal::locale()->weekStartsMonday(); 1525 int mWeekStartsMonday = KGlobal::locale()->weekStartsMonday();
1521 1526
1522 if ( mShowWeekView || KOPrefs::instance()->mMonthViewSatSunTog ) { 1527 if ( mShowWeekView || KOPrefs::instance()->mMonthViewSatSunTog ) {
1523 mWeekStartsMonday = true; 1528 mWeekStartsMonday = true;
1524 } 1529 }
1525 QFontMetrics fontmetric(mDayLabels[0]->font()); 1530 QFontMetrics fontmetric(mDayLabels[0]->font());
1526 mWidthLongDayLabel = 0; 1531 mWidthLongDayLabel = 0;
1527 1532
1528 for (int i = 0; i < 7; i++) { 1533 for (int i = 0; i < 7; i++) {
1529 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1)); 1534 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1));
1530 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width; 1535 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width;
1531 } 1536 }
1532 bool temp = mShowSatSunComp ; 1537 bool temp = mShowSatSunComp ;
1533 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; 1538 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
1534 if ( ! mShowWeekView ) { 1539 if ( ! mShowWeekView ) {
1535 if ( temp != KOPrefs::instance()->mMonthViewSatSunTog ) 1540 if ( temp != KOPrefs::instance()->mMonthViewSatSunTog )
1536 computeLayout(); 1541 computeLayout();
1537 } else 1542 } else
1538 doComputeLayoutWeek(); 1543 doComputeLayoutWeek();
1539 updateDayLabels(); 1544 updateDayLabels();
1540 //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks); 1545 //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks);
1541 //int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks; 1546 //int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks;
1542 //resizeEvent( 0 ); 1547 //resizeEvent( 0 );
1543 for (uint i = 0; i < mCells.count(); ++i) { 1548 for (uint i = 0; i < mCells.count(); ++i) {
1544 mCells[i]->updateConfig(); 1549 mCells[i]->updateConfig();
1545 } 1550 }
1546 1551
1547 for (uint i = 0; i < mCellsW.count(); ++i) { 1552 for (uint i = 0; i < mCellsW.count(); ++i) {
1548 mCellsW[i]->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont); 1553 mCellsW[i]->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont);
1549 } 1554 }
1550#ifdef DESKTOP_VERSION 1555#ifdef DESKTOP_VERSION
1551 MonthViewCell::toolTipGroup()->setEnabled(KOPrefs::instance()->mEnableToolTips); 1556 MonthViewCell::toolTipGroup()->setEnabled(KOPrefs::instance()->mEnableToolTips);
1552#endif 1557#endif
1553 updateView(); 1558 updateView();
1554} 1559}
1555 1560
1556void KOMonthView::updateDayLabels() 1561void KOMonthView::updateDayLabels()
1557{ 1562{
1558 1563
1559 QPtrVector<QLabel> *mDayLabelsT; 1564 QPtrVector<QLabel> *mDayLabelsT;
1560 1565
1561 mDayLabelsT = &mDayLabelsW; 1566 mDayLabelsT = &mDayLabelsW;
1562 for (int i = 0; i < 7; i++) { 1567 for (int i = 0; i < 7; i++) {
1563 { 1568 {
1564 bool show = mShortDayLabelsW; 1569 bool show = mShortDayLabelsW;
1565 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() ) 1570 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() )
1566 show = true; 1571 show = true;
1567 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show)); 1572 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show));
1568 } 1573 }
1569 } 1574 }
1570 mDayLabelsT = &mDayLabels; 1575 mDayLabelsT = &mDayLabels;
1571 for (int i = 0; i < 7; i++) { 1576 for (int i = 0; i < 7; i++) {
1572 if (KGlobal::locale()->weekStartsMonday() || KOPrefs::instance()->mMonthViewSatSunTog ) { 1577 if (KGlobal::locale()->weekStartsMonday() || KOPrefs::instance()->mMonthViewSatSunTog ) {
1573 bool show = mShortDayLabelsM; 1578 bool show = mShortDayLabelsM;
1574 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() ) 1579 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() )
1575 show = true; 1580 show = true;
1576 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show)); 1581 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show));
1577 } else { 1582 } else {
1578 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabelsM)); 1583 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabelsM));
1579 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabelsM)); 1584 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabelsM));
1580 1585
1581 } 1586 }
1582 } 1587 }
1583 1588
1584} 1589}
1585 1590
1586void KOMonthView::clearList() 1591void KOMonthView::clearList()
1587{ 1592{
1588 unsigned int i; 1593 unsigned int i;
1589 for( i = 0; i < mCells.size(); ++i ) { 1594 for( i = 0; i < mCells.size(); ++i ) {
1590 mCells[i]->clear(); 1595 mCells[i]->clear();
1591 } 1596 }
1592 for( i = 0; i < mCellsW.size(); ++i ) { 1597 for( i = 0; i < mCellsW.size(); ++i ) {
1593 mCellsW[i]->clear(); 1598 mCellsW[i]->clear();
1594 } 1599 }
1595} 1600}
1596void KOMonthView::showDates(const QDate &start, const QDate &) 1601void KOMonthView::showDates(const QDate &start, const QDate &)
1597{ 1602{
1598 // kdDebug() << "KOMonthView::showDates(): " << start.toString() << endl; 1603 // kdDebug() << "KOMonthView::showDates(): " << start.toString() << endl;
1599 1604
1600 QPtrVector<MonthViewCell> *cells; 1605 QPtrVector<MonthViewCell> *cells;
1601 QPtrVector<QLabel> *dayLabels; 1606 QPtrVector<QLabel> *dayLabels;
1602 QPtrVector<KOWeekButton> *weekLabels; 1607 QPtrVector<KOWeekButton> *weekLabels;
1603 uint weekNum = 6; 1608 uint weekNum = 6;
1604 mStartDate = start; 1609 mStartDate = start;
1605 if ( mShowWeekView ) { 1610 if ( mShowWeekView ) {
1606 weekNum = 1; 1611 weekNum = 1;
1607 cells = &mCellsW; 1612 cells = &mCellsW;
1608 dayLabels = &mDayLabelsW; 1613 dayLabels = &mDayLabelsW;
1609 weekLabels = &mWeekLabelsW; 1614 weekLabels = &mWeekLabelsW;
1610 if ( !KGlobal::locale()->weekStartsMonday() ) { 1615 if ( !KGlobal::locale()->weekStartsMonday() ) {
1611 mStartDate = mStartDate.addDays( 1 ); 1616 mStartDate = mStartDate.addDays( 1 );
1612 } 1617 }
1613 } else { 1618 } else {
1614 cells = &mCells; 1619 cells = &mCells;
1615 dayLabels = &mDayLabels; 1620 dayLabels = &mDayLabels;
1616 weekLabels = &mWeekLabels; 1621 weekLabels = &mWeekLabels;
1617 } 1622 }
1618 1623
1619 int mWeekStartsMonday = KGlobal::locale()->weekStartsMonday(); 1624 int mWeekStartsMonday = KGlobal::locale()->weekStartsMonday();
1620 1625
1621 if ( mShowWeekView || KOPrefs::instance()->mMonthViewSatSunTog ) { 1626 if ( mShowWeekView || KOPrefs::instance()->mMonthViewSatSunTog ) {
1622 mWeekStartsMonday = true; 1627 mWeekStartsMonday = true;
1623 } 1628 }
1624 int startWeekDay = mWeekStartsMonday ? 1 : 7; 1629 int startWeekDay = mWeekStartsMonday ? 1 : 7;
1625 1630
1626 while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) { 1631 while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) {
1627 mStartDate = mStartDate.addDays( -1 ); 1632 mStartDate = mStartDate.addDays( -1 );
1628 } 1633 }
1629 uint i; 1634 uint i;
1630 for( i = 0; i < (*cells).size(); ++i ) { 1635 for( i = 0; i < (*cells).size(); ++i ) {
1631 QDate date = mStartDate.addDays( i ); 1636 QDate date = mStartDate.addDays( i );
1632 (*cells)[i]->setDate( date ); 1637 (*cells)[i]->setDate( date );
1633 1638
1634#ifndef KORG_NOPLUGINS 1639#ifndef KORG_NOPLUGINS
1635 // add holiday, if present 1640 // add holiday, if present
1636 QString hstring(KOCore::self()->holiday(date)); 1641 QString hstring(KOCore::self()->holiday(date));
1637 (*cells)[i]->setHoliday( hstring ); 1642 (*cells)[i]->setHoliday( hstring );
1638#endif 1643#endif
1639 1644
1640 } 1645 }
1641 QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 ); 1646 QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 );
1642 for( i = 0; i < weekNum; ++i ) { 1647 for( i = 0; i < weekNum; ++i ) {
1643 int wno; 1648 int wno;
1644 // remember, according to ISO 8601, the first week of the year is the 1649 // remember, according to ISO 8601, the first week of the year is the
1645 // first week that contains a thursday. Thus we must subtract off 4, 1650 // first week that contains a thursday. Thus we must subtract off 4,
1646 // not just 1. 1651 // not just 1.
1647 int dayOfYear = date.dayOfYear(); 1652 int dayOfYear = date.dayOfYear();
1648 if (dayOfYear % 7 != 0) 1653 if (dayOfYear % 7 != 0)
1649 wno = dayOfYear / 7 + 1; 1654 wno = dayOfYear / 7 + 1;
1650 else 1655 else
1651 wno =dayOfYear / 7; 1656 wno =dayOfYear / 7;
1652 (*weekLabels)[i]->setWeekNum( wno ); 1657 (*weekLabels)[i]->setWeekNum( wno );
1653 date = date.addDays( 7 ); 1658 date = date.addDays( 7 );
1654 } 1659 }
1655 updateView(); 1660 updateView();
1656} 1661}
1657 1662
1658void KOMonthView::showEvents(QPtrList<Event>) 1663void KOMonthView::showEvents(QPtrList<Event>)
1659{ 1664{
1660 qDebug("KOMonthView::selectEvents is not implemented yet. "); 1665 qDebug("KOMonthView::selectEvents is not implemented yet. ");
1661} 1666}
1662 1667
1663void KOMonthView::changeEventDisplay(Event *, int) 1668void KOMonthView::changeEventDisplay(Event *, int)
1664{ 1669{
1665 // this should be re-written to be much more efficient, but this 1670 // this should be re-written to be much more efficient, but this
1666 // quick-and-dirty-hack gets the job done for right now. 1671 // quick-and-dirty-hack gets the job done for right now.
1667 //qDebug("KOMonthView::changeEventDisplay "); 1672 //qDebug("KOMonthView::changeEventDisplay ");
1668 updateView(); 1673 updateView();
1669} 1674}
1670 1675
1671void KOMonthView::updateView() 1676void KOMonthView::updateView()
1672{ 1677{
1673 1678
1674 if ( !updatePossible ) 1679 if ( !updatePossible )
1675 return; 1680 return;
1676 //qDebug("UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU "); 1681 //qDebug("UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU ");
1677 //QTime ti; 1682 //QTime ti;
1678 //ti.start(); 1683 //ti.start();
1679 clearSelection(); 1684 clearSelection();
1680 QPtrVector<MonthViewCell> *cells; 1685 QPtrVector<MonthViewCell> *cells;
1681 if ( mShowWeekView ) { 1686 if ( mShowWeekView ) {
1682 cells = &mCellsW; 1687 cells = &mCellsW;
1683 } else { 1688 } else {
1684 cells = &mCells; 1689 cells = &mCells;
1685 } 1690 }
1686#if 1 1691#if 1
1687 int i; 1692 int i;
1688 int timeSpan = (*cells).size()-1; 1693 int timeSpan = (*cells).size()-1;
1689 if ( KOPrefs::instance()->mMonthViewWeek ) 1694 if ( KOPrefs::instance()->mMonthViewWeek )
1690 timeSpan = 6; 1695 timeSpan = 6;
1691 for( i = 0; i < timeSpan + 1; ++i ) { 1696 for( i = 0; i < timeSpan + 1; ++i ) {
1692 (*cells)[i]->startUpdateCell(); 1697 (*cells)[i]->startUpdateCell();
1693 } 1698 }
1694 1699
1695 QPtrList<Event> events = calendar()->events(); 1700 QPtrList<Event> events = calendar()->events();
1696 Event *event; 1701 Event *event;
1697 QDateTime dt; 1702 QDateTime dt;
1698 QDate endDate = mStartDate.addDays( timeSpan ); 1703 QDate endDate = mStartDate.addDays( timeSpan );
1699 for( event = events.first(); event; event = events.next() ) { // for event 1704 for( event = events.first(); event; event = events.next() ) { // for event
1700 if ( event->doesRecur() ) { 1705 if ( event->doesRecur() ) {
1701 bool last; 1706 bool last;
1702 QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last ); 1707 QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last );
1703 QDateTime incidenceEnd; 1708 QDateTime incidenceEnd;
1704 int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() ); 1709 int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() );
1705 bool invalid = false; 1710 bool invalid = false;
1706 while( true ) { 1711 while( true ) {
1707 if ( incidenceStart.isValid() ) { 1712 if ( incidenceStart.isValid() ) {
1708 incidenceEnd = incidenceStart.addDays( eventlen ); 1713 incidenceEnd = incidenceStart.addDays( eventlen );
1709 int st = incidenceStart.date().daysTo( endDate ); 1714 int st = incidenceStart.date().daysTo( endDate );
1710 if ( st >= 0 ) { // start before timeend 1715 if ( st >= 0 ) { // start before timeend
1711 int end = mStartDate.daysTo( incidenceEnd.date() ); 1716 int end = mStartDate.daysTo( incidenceEnd.date() );
1712 if ( end >= 0 ) { // end after timestart --- got one! 1717 if ( end >= 0 ) { // end after timestart --- got one!
1713 //normalize 1718 //normalize
1714 st = timeSpan - st; 1719 st = timeSpan - st;
1715 if ( st < 0 ) st = 0; 1720 if ( st < 0 ) st = 0;
1716 if ( end > timeSpan ) end = timeSpan; 1721 if ( end > timeSpan ) end = timeSpan;
1717 int iii; 1722 int iii;
1718 //qDebug("found %s %d %d ",event->summary().latin1(), st, end ); 1723 //qDebug("found %s %d %d ",event->summary().latin1(), st, end );
1719 for ( iii = st;iii<= end;++iii) 1724 for ( iii = st;iii<= end;++iii)
1720 (*cells)[iii]->insertEvent( event ); 1725 (*cells)[iii]->insertEvent( event );
1721 } 1726 }
1722 } 1727 }
1723 } else { 1728 } else {
1724 if ( invalid ) 1729 if ( invalid )
1725 break; 1730 break;
1726 invalid = true; 1731 invalid = true;
1727 //qDebug("invalid %s", event->summary().latin1()); 1732 //qDebug("invalid %s", event->summary().latin1());
1728 incidenceStart = QDateTime( mStartDate ).addSecs( -2 );; 1733 incidenceStart = QDateTime( mStartDate ).addSecs( -2 );;
1729 } 1734 }
1730 if ( last ) 1735 if ( last )
1731 break; 1736 break;
1732 bool ok; 1737 bool ok;
1733 incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok ); 1738 incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok );
1734 if ( ! ok ) 1739 if ( ! ok )
1735 break; 1740 break;
1736 if ( incidenceStart.date() > endDate ) 1741 if ( incidenceStart.date() > endDate )
1737 break; 1742 break;
1738 } 1743 }
1739 } else { // no recur 1744 } else { // no recur
1740 if ( !KOPrefs::instance()->mShowSyncEvents && event->uid().left(2) == QString("la") ) 1745 if ( !KOPrefs::instance()->mShowSyncEvents && event->uid().left(2) == QString("la") )
1741 if ( event->uid().left(15) == QString("last-syncEvent-") ) 1746 if ( event->uid().left(15) == QString("last-syncEvent-") )
1742 continue; 1747 continue;
1743 int st = event->dtStart().date().daysTo( endDate ); 1748 int st = event->dtStart().date().daysTo( endDate );
1744 if ( st >= 0 ) { // start before timeend 1749 if ( st >= 0 ) { // start before timeend
1745 int end = mStartDate.daysTo( event->dtEnd().date() ); 1750 int end = mStartDate.daysTo( event->dtEnd().date() );
1746 if ( end >= 0 ) { // end after timestart --- got one! 1751 if ( end >= 0 ) { // end after timestart --- got one!
1747 //normalize 1752 //normalize
1748 st = timeSpan - st; 1753 st = timeSpan - st;
1749 if ( st < 0 ) st = 0; 1754 if ( st < 0 ) st = 0;
1750 if ( end > timeSpan ) end = timeSpan; 1755 if ( end > timeSpan ) end = timeSpan;
1751 int iii; 1756 int iii;
1752 for ( iii = st;iii<= end;++iii) 1757 for ( iii = st;iii<= end;++iii)
1753 (*cells)[iii]->insertEvent( event ); 1758 (*cells)[iii]->insertEvent( event );
1754 } 1759 }
1755 } 1760 }
1756 } 1761 }
1757 } 1762 }
1758 // insert due todos 1763 // insert due todos
1759 QPtrList<Todo> todos = calendar()->todos( ); 1764 QPtrList<Todo> todos = calendar()->todos( );
1760 Todo *todo; 1765 Todo *todo;
1761 for(todo = todos.first(); todo; todo = todos.next()) { 1766 for(todo = todos.first(); todo; todo = todos.next()) {
1762 //insertTodo( todo ); 1767 //insertTodo( todo );
1763 if ( todo->hasDueDate() ) { 1768 if ( todo->hasDueDate() ) {
1764 int day = mStartDate.daysTo( todo->dtDue().date() ); 1769 int day = mStartDate.daysTo( todo->dtDue().date() );
1765 if ( day >= 0 && day < timeSpan + 1) { 1770 if ( day >= 0 && day < timeSpan + 1) {
1766 (*cells)[day]->insertTodo( todo ); 1771 (*cells)[day]->insertTodo( todo );
1767 } 1772 }
1768 } 1773 }
1769 } 1774 }
1770 1775
1771 for( i = 0; i < timeSpan+1; ++i ) { 1776 for( i = 0; i < timeSpan+1; ++i ) {
1772 (*cells)[i]->finishUpdateCell(); 1777 (*cells)[i]->finishUpdateCell();
1773 } 1778 }
1774 processSelectionChange(); 1779 processSelectionChange();
1775 //qApp->processEvents(); 1780 //qApp->processEvents();
1776 for( i = 0; i < timeSpan+1; ++i ) { 1781 for( i = 0; i < timeSpan+1; ++i ) {
1777 //(*cells)[i]->repaintfinishUpdateCell(); 1782 //(*cells)[i]->repaintfinishUpdateCell();
1778 QTimer::singleShot( 0, (*cells)[i], SLOT ( repaintfinishUpdateCell() ) ); 1783 QTimer::singleShot( 0, (*cells)[i], SLOT ( repaintfinishUpdateCell() ) );
1779 } 1784 }
1780 setKeyBFocus(); 1785 setKeyBFocus();
1781#else 1786#else
1782 // old code 1787 // old code
1783 //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ "); 1788 //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ");
1784 int i; 1789 int i;
1785 for( i = 0; i < (*cells).count(); ++i ) { 1790 for( i = 0; i < (*cells).count(); ++i ) {
1786 (*cells)[i]->updateCell(); 1791 (*cells)[i]->updateCell();
1787 } 1792 }
1788 1793
1789 //qDebug("KOMonthView::updateView() "); 1794 //qDebug("KOMonthView::updateView() ");
1790 processSelectionChange(); 1795 processSelectionChange();
1791 // qDebug("---------------------------------------------------------------------+ "); 1796 // qDebug("---------------------------------------------------------------------+ ");
1792 (*cells)[0]->setFocus(); 1797 (*cells)[0]->setFocus();
1793#endif 1798#endif
1794 1799
1795 //qDebug("update time %d ", ti.elapsed()); 1800 //qDebug("update time %d ", ti.elapsed());
1796} 1801}
1797 1802
1798void KOMonthView::setKeyBoardFocus() 1803void KOMonthView::setKeyBoardFocus()
1799{ 1804{
1800 //qDebug("KOMonthView::setKeyBoardFocus() "); 1805 //qDebug("KOMonthView::setKeyBoardFocus() ");
1801 bool shootAgain = false; 1806 bool shootAgain = false;
1802 if ( mShowWeekView ) { 1807 if ( mShowWeekView ) {
1803 shootAgain = !mWeekLabelsW[1]->hasFocus(); 1808 shootAgain = !mWeekLabelsW[1]->hasFocus();
1804 mWeekLabelsW[1]->setFocus(); 1809 mWeekLabelsW[1]->setFocus();
1805 } 1810 }
1806 else { 1811 else {
1807 shootAgain = !mWeekLabels[mNumWeeks]->hasFocus(); 1812 shootAgain = !mWeekLabels[mNumWeeks]->hasFocus();
1808 mWeekLabels[mNumWeeks]->setFocus(); 1813 mWeekLabels[mNumWeeks]->setFocus();
1809 } 1814 }
1810 --mKBFcounter; 1815 --mKBFcounter;
1811 if ( shootAgain && mKBFcounter > 0 ) { 1816 if ( shootAgain && mKBFcounter > 0 ) {
1812 QTimer::singleShot( 50, this, SLOT ( setKeyBoardFocus() ) ); 1817 QTimer::singleShot( 50, this, SLOT ( setKeyBoardFocus() ) );
1813 } 1818 }
1814} 1819}
1815void KOMonthView::setKeyBFocus() 1820void KOMonthView::setKeyBFocus()
1816{ 1821{
1817 //qDebug("KOMonthView::setKeyBFocus() "); 1822 //qDebug("KOMonthView::setKeyBFocus() ");
1818 mKBFcounter = 10; 1823 mKBFcounter = 10;
1819 QTimer::singleShot( 0, this, SLOT ( setKeyBoardFocus() ) ); 1824 QTimer::singleShot( 0, this, SLOT ( setKeyBoardFocus() ) );
1820} 1825}
1821void KOMonthView::resizeEvent(QResizeEvent * e) 1826void KOMonthView::resizeEvent(QResizeEvent * e)
1822{ 1827{
1823 //qDebug("KOMonthView::resizeEvent %d %d -- %d %d ", e->size().width(), e->size().height(), e->oldSize().width(), e->oldSize().height()); 1828 //qDebug("KOMonthView::resizeEvent %d %d -- %d %d ", e->size().width(), e->size().height(), e->oldSize().width(), e->oldSize().height());
1824 if ( isVisible() ) { 1829 if ( isVisible() ) {
1825 //qDebug("KOMonthView::isVisible "); 1830 //qDebug("KOMonthView::isVisible ");
1826 slotComputeLayout(); 1831 slotComputeLayout();
1827 } else 1832 } else
1828 mComputeLayoutTimer->start( 100 ); 1833 mComputeLayoutTimer->start( 100 );
1829 if ( e ) 1834 if ( e )
1830 KOEventView::resizeEvent( e ); 1835 KOEventView::resizeEvent( e );
1831} 1836}
1832 1837
1833void KOMonthView::slotComputeLayout() 1838void KOMonthView::slotComputeLayout()
1834{ 1839{
1835 mComputeLayoutTimer->stop(); 1840 mComputeLayoutTimer->stop();
1836 //qDebug("KOMonthView::Post - resizeEvent %d %d ", width(), height() ); 1841 //qDebug("KOMonthView::Post - resizeEvent %d %d ", width(), height() );
1837 computeLayout(); 1842 computeLayout();
1838 clPending = true; 1843 clPending = true;
1839 setKeyBFocus(); 1844 setKeyBFocus();
1840} 1845}
1841 1846
1842void KOMonthView::doComputeLayoutWeek() 1847void KOMonthView::doComputeLayoutWeek()
1843{ 1848{
1844 1849
1845 int daysToShow; 1850 int daysToShow;
1846 bool combinedSatSun = false; 1851 bool combinedSatSun = false;
1847 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { 1852 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) {
1848 daysToShow = 6; 1853 daysToShow = 6;
1849 combinedSatSun = true; 1854 combinedSatSun = true;
1850 } 1855 }
1851 int wid = width();//e 1856 int wid = width();//e
1852 int hei = height()-1-mNavigatorBar->height(); 1857 int hei = height()-1-mNavigatorBar->height();
1853#ifdef DESKTOP_VERSION 1858#ifdef DESKTOP_VERSION
1854 if ( !KOPrefs::instance()->mMonthViewWeekRowlayout ) { 1859 if ( !KOPrefs::instance()->mMonthViewWeekRowlayout ) {
1855 daysToShow = 2; 1860 daysToShow = 2;
1856 } else 1861 } else
1857#endif 1862#endif
1858 { 1863 {
1859 if ( wid < hei + 40 ) 1864 if ( wid < hei + 40 )
1860 daysToShow = 2; 1865 daysToShow = 2;
1861 else 1866 else
1862 daysToShow = 3; 1867 daysToShow = 3;
1863 } 1868 }
1864 bool landscape = (daysToShow == 3); 1869 bool landscape = (daysToShow == 3);
1865 mShowSatSunComp = true; 1870 mShowSatSunComp = true;
1866 combinedSatSun = true; 1871 combinedSatSun = true;
1867 1872
1868 //qDebug("KOMonthView::computeLayout() WWW ------------------------------------ "); 1873 //qDebug("KOMonthView::computeLayout() WWW ------------------------------------ ");
1869 QFontMetrics fm ( mWeekLabels[0]->font() ); 1874 QFontMetrics fm ( mWeekLabels[0]->font() );
1870 int weeklabelwid = fm.width( "888" ); 1875 int weeklabelwid = fm.width( "888" );
1871 wid -= weeklabelwid; 1876 wid -= weeklabelwid;
1872 1877
1873 int colWid = wid / daysToShow; 1878 int colWid = wid / daysToShow;
1874 int dayLabelHei = mDayLabelsW[0]->sizeHint().height(); 1879 int dayLabelHei = mDayLabelsW[0]->sizeHint().height();
1875 int cellHei = (hei - (5- daysToShow )*dayLabelHei) /(5- daysToShow ); 1880 int cellHei = (hei - (5- daysToShow )*dayLabelHei) /(5- daysToShow );
1876 int colModulo = wid % daysToShow; 1881 int colModulo = wid % daysToShow;
1877 int rowModulo = (hei- (5- daysToShow )*dayLabelHei) % daysToShow-1; 1882 int rowModulo = (hei- (5- daysToShow )*dayLabelHei) % daysToShow-1;
1878 //qDebug("rowmod %d ", rowModulo); 1883 //qDebug("rowmod %d ", rowModulo);
1879 int i; 1884 int i;
1880 int x,y,w,h; 1885 int x,y,w,h;
1881 x= 0; 1886 x= 0;
1882 y= 0; 1887 y= 0;
1883 w = colWid; 1888 w = colWid;
1884 h = dayLabelHei ; 1889 h = dayLabelHei ;
1885 for ( i = 0; i < 7; i++) { 1890 for ( i = 0; i < 7; i++) {
1886 if ( i && !( i % daysToShow) && i < 6) { 1891 if ( i && !( i % daysToShow) && i < 6) {
1887 y += hei/(5-daysToShow); 1892 y += hei/(5-daysToShow);
1888 x = 0; 1893 x = 0;
1889 w = colWid; 1894 w = colWid;
1890 } 1895 }
1891 if ( ((i) % daysToShow) >= daysToShow-colModulo ) { 1896 if ( ((i) % daysToShow) >= daysToShow-colModulo ) {
1892 ++w; 1897 ++w;
1893 } 1898 }
1894 int xC,yC,wC,hC; 1899 int xC,yC,wC,hC;
1895 if ( i >= 5 ) { 1900 if ( i >= 5 ) {
1896 int wi = width() - x - weeklabelwid; 1901 int wi = width() - x - weeklabelwid;
1897 if ( i == 5 ) { 1902 if ( i == 5 ) {
1898 xC = x+weeklabelwid; 1903 xC = x+weeklabelwid;
1899 yC = y; 1904 yC = y;
1900 wC = wi/2+wi%2; 1905 wC = wi/2+wi%2;
1901 hC = h; 1906 hC = h;
1902 } else { 1907 } else {
1903 xC = x+weeklabelwid; 1908 xC = x+weeklabelwid;
1904 yC = y; 1909 yC = y;
1905 wC = wi; 1910 wC = wi;
1906 hC = h; 1911 hC = h;
1907 } 1912 }
1908 x = x - w + wi - (wi/2 ); 1913 x = x - w + wi - (wi/2 );
1909 } 1914 }
1910 else { 1915 else {
1911 int wi = w; 1916 int wi = w;
1912 if ( !(( i+1) % daysToShow)) { 1917 if ( !(( i+1) % daysToShow)) {
1913 wi = width() - x - weeklabelwid; 1918 wi = width() - x - weeklabelwid;
1914 } 1919 }
1915 xC = x+weeklabelwid; 1920 xC = x+weeklabelwid;
1916 yC = y; 1921 yC = y;
1917 wC = wi; 1922 wC = wi;
1918 hC = h; 1923 hC = h;
1919 } 1924 }
1920 mDayLabelsW[mapWeekLayout(i,landscape)]->setGeometry( xC,yC,wC,hC); 1925 mDayLabelsW[mapWeekLayout(i,landscape)]->setGeometry( xC,yC,wC,hC);
1921 1926
1922 1927
1923 x += w; 1928 x += w;
1924 } 1929 }
1925 x= 0; 1930 x= 0;
1926 y= dayLabelHei; 1931 y= dayLabelHei;
1927 w = colWid; 1932 w = colWid;
1928 h = cellHei; 1933 h = cellHei;
1929 int max = 0; 1934 int max = 0;
1930 int w_count = mCellsW.count(); 1935 int w_count = mCellsW.count();
1931 for ( i = 0; i < w_count; ++i) { 1936 for ( i = 0; i < w_count; ++i) {
1932 if ( i > 6 ) { 1937 if ( i > 6 ) {
1933 mCellsW[i]->hide(); 1938 mCellsW[i]->hide();
1934 continue; 1939 continue;
1935 } 1940 }
1936 1941
1937 w = colWid; 1942 w = colWid;
1938 if ( ((i) % daysToShow) >= daysToShow-colModulo ) { 1943 if ( ((i) % daysToShow) >= daysToShow-colModulo ) {
1939 ++w; 1944 ++w;
1940 } 1945 }
1941 if ( i == (daysToShow-1-rowModulo)*7) 1946 if ( i == (daysToShow-1-rowModulo)*7)
1942 ++h; 1947 ++h;
1943 1948
1944 int xC,yC,wC,hC; 1949 int xC,yC,wC,hC;
1945 if ( i >= 5 ) { 1950 if ( i >= 5 ) {
1946 if ( i ==5 ) { 1951 if ( i ==5 ) {
1947 max = h/2; 1952 max = h/2;
1948 xC = x+weeklabelwid; 1953 xC = x+weeklabelwid;
1949 yC = y; 1954 yC = y;
1950 wC = w; 1955 wC = w;
1951 hC = max; 1956 hC = max;
1952 x -= w ;y += h/2; 1957 x -= w ;y += h/2;
1953 } else { 1958 } else {
1954 if ( ((i-1) % daysToShow) >= daysToShow-colModulo ) { 1959 if ( ((i-1) % daysToShow) >= daysToShow-colModulo ) {
1955 ++w; 1960 ++w;
1956 } 1961 }
1957 max = h-h/2; 1962 max = h-h/2;
1958 xC = x+weeklabelwid; 1963 xC = x+weeklabelwid;
1959 yC = y; 1964 yC = y;
1960 wC = w; 1965 wC = w;
1961 hC = max; 1966 hC = max;
1962 y -= h/2; 1967 y -= h/2;
1963 } 1968 }
1964 } else { 1969 } else {
1965 max = h; 1970 max = h;
1966 xC = x+weeklabelwid; 1971 xC = x+weeklabelwid;
1967 yC = y; 1972 yC = y;
1968 wC = w; 1973 wC = w;
1969 hC = h; 1974 hC = h;
1970 } 1975 }
1971 mCellsW[mapWeekLayout(i,landscape)]->setGeometry ( xC,yC,wC,hC ); 1976 mCellsW[mapWeekLayout(i,landscape)]->setGeometry ( xC,yC,wC,hC );
1972 1977
1973 1978
1974 x += w; 1979 x += w;
1975 if ( x + w/2 > wid ) { 1980 if ( x + w/2 > wid ) {
1976 x = 0; 1981 x = 0;
1977 y += h+dayLabelHei ; 1982 y += h+dayLabelHei ;
1978 } 1983 }
1979 //mCellsW[i]->dateLabel()->setMaximumHeight( max - mCellsW[i]->lineWidth()*2 ); 1984 //mCellsW[i]->dateLabel()->setMaximumHeight( max - mCellsW[i]->lineWidth()*2 );
1980 } 1985 }
1981 y= dayLabelHei; 1986 y= dayLabelHei;
1982 h = cellHei ; 1987 h = cellHei ;
1983 mWeekLabelsW[0]->setGeometry( 0,y,weeklabelwid,hei-dayLabelHei); 1988 mWeekLabelsW[0]->setGeometry( 0,y,weeklabelwid,hei-dayLabelHei);
1984 mWeekLabelsW[1]->setGeometry( 0,0,weeklabelwid,dayLabelHei); 1989 mWeekLabelsW[1]->setGeometry( 0,0,weeklabelwid,dayLabelHei);
1985 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height()); 1990 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height());
1986 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height()); 1991 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height());
1987 mShortDayLabelsW = mDayLabelsW[0]->width()-2 < mWidthLongDayLabel ; 1992 mShortDayLabelsW = mDayLabelsW[0]->width()-2 < mWidthLongDayLabel ;
1988 updateDayLabels(); 1993 updateDayLabels();
1989 //bool forceUpdate = !updatePossible; 1994 //bool forceUpdate = !updatePossible;
1990 updatePossible = true; 1995 updatePossible = true;
1991 //mWeekLabels[mNumWeeks]->setText( i18n("M")); 1996 //mWeekLabels[mNumWeeks]->setText( i18n("M"));
1992 //if ( forceUpdate ) 1997 //if ( forceUpdate )
1993 // updateView(); 1998 // updateView();
1994} 1999}
1995void KOMonthView::computeLayoutWeek() 2000void KOMonthView::computeLayoutWeek()
1996{ 2001{
1997 static int lastWid = 0; 2002 static int lastWid = 0;
1998 static int lastHei = 0; 2003 static int lastHei = 0;
1999 int tWid = topLevelWidget()->size().width(); 2004 int tWid = topLevelWidget()->size().width();
2000 int tHei = topLevelWidget()->size().height(); 2005 int tHei = topLevelWidget()->size().height();
2001 int wid = width();//e 2006 int wid = width();//e
2002 int hei = height()-1-mNavigatorBar->height(); 2007 int hei = height()-1-mNavigatorBar->height();
2003 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) 2008 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei )
2004 return; 2009 return;
2005 2010
2006 if ( lastWid == width() && lastHei == height() ) { 2011 if ( lastWid == width() && lastHei == height() ) {
2007 //qDebug("KOListWeekView::No compute layout needed "); 2012 //qDebug("KOListWeekView::No compute layout needed ");
2008 return; 2013 return;
2009 } 2014 }
2010 lastWid = width(); 2015 lastWid = width();
2011 lastHei = height(); 2016 lastHei = height();
2012 doComputeLayoutWeek(); 2017 doComputeLayoutWeek();
2013} 2018}
2014int KOMonthView::mapWeekLayout( int index, bool landscape ) 2019int KOMonthView::mapWeekLayout( int index, bool landscape )
2015{ 2020{
2016 if ( KOPrefs::instance()->mMonthViewWeekRowlayout ) 2021 if ( KOPrefs::instance()->mMonthViewWeekRowlayout )
2017 return index; 2022 return index;
2018 int diff = 0; 2023 int diff = 0;
2019 if ( !landscape ) diff = 1; 2024 if ( !landscape ) diff = 1;
2020 switch( index ) { 2025 switch( index ) {
2021 case 0: 2026 case 0:
2022 case 5: 2027 case 5:
2023 case 6: 2028 case 6:
2024 return index; 2029 return index;
2025 break; 2030 break;
2026 case 1: 2031 case 1:
2027 return 2+diff; 2032 return 2+diff;
2028 break; 2033 break;
2029 case 2: 2034 case 2:
2030 return 4-(3*diff); 2035 return 4-(3*diff);
2031 break; 2036 break;
2032 case 3: 2037 case 3:
2033 return 1+(3*diff); 2038 return 1+(3*diff);
2034 break; 2039 break;
2035 case 4: 2040 case 4:
2036 return 3-diff; 2041 return 3-diff;
2037 break; 2042 break;
2038 default: 2043 default:
2039 qDebug("KO: Error in mapping week layout "); 2044 qDebug("KO: Error in mapping week layout ");
2040 return index; 2045 return index;
2041 break; 2046 break;
2042 } 2047 }
2043 return index; 2048 return index;
2044} 2049}
2045void KOMonthView::computeLayout() 2050void KOMonthView::computeLayout()
2046{ 2051{
2047 2052
2048 2053
2049 static int lastWid = 0; 2054 static int lastWid = 0;
2050 static int lastHei = 0; 2055 static int lastHei = 0;
2051 2056
2052 if ( mShowWeekView ){ 2057 if ( mShowWeekView ){
2053 computeLayoutWeek(); 2058 computeLayoutWeek();
2054 return; 2059 return;
2055 } 2060 }
2056 int daysToShow = 7; 2061 int daysToShow = 7;
2057 bool combinedSatSun = false; 2062 bool combinedSatSun = false;
2058 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { 2063 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) {
2059 daysToShow = 6; 2064 daysToShow = 6;
2060 combinedSatSun = true; 2065 combinedSatSun = true;
2061 } 2066 }
2062 int tWid = topLevelWidget()->size().width(); 2067 int tWid = topLevelWidget()->size().width();
2063 int tHei = topLevelWidget()->size().height(); 2068 int tHei = topLevelWidget()->size().height();
2064 2069
2065 int wid = width();//e 2070 int wid = width();//e
2066 int hei = height()-1-mNavigatorBar->height(); 2071 int hei = height()-1-mNavigatorBar->height();
2067 2072
2068 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) { 2073 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) {
2069 return; 2074 return;
2070 } 2075 }
2071 if ( lastWid == width() && lastHei == height() ){ 2076 if ( lastWid == width() && lastHei == height() ){
2072 //qDebug("KOMonthview::No compute layout needed "); 2077 //qDebug("KOMonthview::No compute layout needed ");
2073 return; 2078 return;
2074 } 2079 }
2075 2080
2076 lastWid = width(); 2081 lastWid = width();
2077 lastHei = height(); 2082 lastHei = height();
2078 //qDebug("KOMonthView::computeLayout() MMM ------------------- "); 2083 //qDebug("KOMonthView::computeLayout() MMM ------------------- ");
2079 QFontMetrics fm ( mWeekLabels[0]->font() ); 2084 QFontMetrics fm ( mWeekLabels[0]->font() );
2080 int weeklabelwid = fm.width( "888" ); 2085 int weeklabelwid = fm.width( "888" );
2081 wid -= weeklabelwid; 2086 wid -= weeklabelwid;
2082 2087
2083 int colWid = wid / daysToShow; 2088 int colWid = wid / daysToShow;
2084 int dayLabelHei = mDayLabels[0]->sizeHint().height(); 2089 int dayLabelHei = mDayLabels[0]->sizeHint().height();
2085 int cellHei = (hei - dayLabelHei) /6; 2090 int cellHei = (hei - dayLabelHei) /6;
2086 int colModulo = wid % daysToShow; 2091 int colModulo = wid % daysToShow;
2087 int rowModulo = (hei- dayLabelHei) % 6; 2092 int rowModulo = (hei- dayLabelHei) % 6;
2088 //qDebug("rowmod %d ", rowModulo); 2093 //qDebug("rowmod %d ", rowModulo);
2089 int i; 2094 int i;
2090 int x,y,w,h; 2095 int x,y,w,h;
2091 x= 0; 2096 x= 0;
2092 y= 0; 2097 y= 0;
2093 w = colWid; 2098 w = colWid;
2094 h = dayLabelHei ; 2099 h = dayLabelHei ;
2095 for ( i = 0; i < 7; i++) { 2100 for ( i = 0; i < 7; i++) {
2096 if ( i == daysToShow-colModulo ) 2101 if ( i == daysToShow-colModulo )
2097 ++w; 2102 ++w;
2098 if ( combinedSatSun ) { 2103 if ( combinedSatSun ) {
2099 if ( i >= daysToShow-1 ) { 2104 if ( i >= daysToShow-1 ) {
2100 2105
2101 if ( i == 6 ) 2106 if ( i == 6 )
2102 mDayLabels[i]->setGeometry( x+weeklabelwid,y,width()-x-weeklabelwid,h); 2107 mDayLabels[i]->setGeometry( x+weeklabelwid,y,width()-x-weeklabelwid,h);
2103 else 2108 else
2104 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w/2,h); 2109 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w/2,h);
2105 x -= w/2 ; 2110 x -= w/2 ;
2106 } 2111 }
2107 else 2112 else
2108 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h); 2113 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h);
2109 } else 2114 } else
2110 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h); 2115 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h);
2111 x += w; 2116 x += w;
2112 } 2117 }
2113 x= 0; 2118 x= 0;
2114 y= dayLabelHei; 2119 y= dayLabelHei;
2115 w = colWid; 2120 w = colWid;
2116 h = cellHei ; 2121 h = cellHei ;
2117 int max = 0; 2122 int max = 0;
2118 int mc_count = mCells.count(); 2123 int mc_count = mCells.count();
2119 for ( i = 0; i < mc_count; ++i) { 2124 for ( i = 0; i < mc_count; ++i) {
2120 //qDebug("iii %d ", i); 2125 //qDebug("iii %d ", i);
2121 w = colWid; 2126 w = colWid;
2122 if ( ((i) % 7) >= 7-colModulo ) { 2127 if ( ((i) % 7) >= 7-colModulo ) {
2123 ++w; 2128 ++w;
2124 } 2129 }
2125 if ( i == (6-rowModulo)*7) 2130 if ( i == (6-rowModulo)*7)
2126 ++h; 2131 ++h;
2127 if ( combinedSatSun ) { 2132 if ( combinedSatSun ) {
2128 if ( (i)%7 >= daysToShow-1 ) { 2133 if ( (i)%7 >= daysToShow-1 ) {
2129 if ( (i)%7 == daysToShow-1 ) { 2134 if ( (i)%7 == daysToShow-1 ) {
2130 w = width()-x-weeklabelwid; 2135 w = width()-x-weeklabelwid;
2131 max = h/2; 2136 max = h/2;
2132 mCells[i]->setGeometry ( x+weeklabelwid,y,w,max ); 2137 mCells[i]->setGeometry ( x+weeklabelwid,y,w,max );
2133 x -= w ;y += h/2; 2138 x -= w ;y += h/2;
2134 } else { 2139 } else {
2135 w = width()-x-weeklabelwid; 2140 w = width()-x-weeklabelwid;
2136 max = h-h/2; 2141 max = h-h/2;
2137 mCells[i]->setGeometry ( x+weeklabelwid,y,w,max ); 2142 mCells[i]->setGeometry ( x+weeklabelwid,y,w,max );
2138 y -= h/2; 2143 y -= h/2;
2139 } 2144 }
2140 } else { 2145 } else {
2141 max = h; 2146 max = h;
2142 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h ); 2147 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h );
2143 } 2148 }
2144 2149
2145 } 2150 }
2146 else { 2151 else {
2147 max = h; 2152 max = h;
2148 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h ); 2153 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h );
2149 } 2154 }
2150 x += w; 2155 x += w;
2151 if ( x + w/2 > wid ) { 2156 if ( x + w/2 > wid ) {
2152 x = 0; 2157 x = 0;
2153 y += h; 2158 y += h;
2154 } 2159 }
2155 //mCells[i]->dateLabel()->setMaximumHeight( max- mCells[i]->lineWidth()*2 ); 2160 //mCells[i]->dateLabel()->setMaximumHeight( max- mCells[i]->lineWidth()*2 );
2156 } 2161 }
2157 y= dayLabelHei; 2162 y= dayLabelHei;
2158 h = cellHei ; 2163 h = cellHei ;
2159 for ( i = 0; i < 6; i++) { 2164 for ( i = 0; i < 6; i++) {
2160 if ( i == (6-rowModulo)) 2165 if ( i == (6-rowModulo))
2161 ++h; 2166 ++h;
2162 mWeekLabels[i]->setGeometry( 0,y,weeklabelwid,h); 2167 mWeekLabels[i]->setGeometry( 0,y,weeklabelwid,h);
2163 y += h; 2168 y += h;
2164 } 2169 }
2165 mWeekLabels[6]->setGeometry( 0,0,weeklabelwid,dayLabelHei); 2170 mWeekLabels[6]->setGeometry( 0,0,weeklabelwid,dayLabelHei);
2166 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height()); 2171 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height());
2167 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height()); 2172 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height());
2168 mShortDayLabelsM = mDayLabels[0]->width()-2 < mWidthLongDayLabel ; 2173 mShortDayLabelsM = mDayLabels[0]->width()-2 < mWidthLongDayLabel ;
2169 updateDayLabels(); 2174 updateDayLabels();
2170 //bool forceUpdate = !updatePossible; 2175 //bool forceUpdate = !updatePossible;
2171 updatePossible = true; 2176 updatePossible = true;
2172 //mWeekLabels[mNumWeeks]->setText( i18n("W")); 2177 //mWeekLabels[mNumWeeks]->setText( i18n("W"));
2173} 2178}
2174 2179
2175void KOMonthView::showContextMenu( Incidence *incidence ) 2180void KOMonthView::showContextMenu( Incidence *incidence )
2176{ 2181{
2177 if( incidence ) 2182 if( incidence )
2178 mContextMenu->showIncidencePopup(incidence); 2183 mContextMenu->showIncidencePopup(incidence);
2179 else { 2184 else {
2180 //qDebug("KOMonthView::showContextMenu "); 2185 //qDebug("KOMonthView::showContextMenu ");
2181 mNewItemMenu->popup(QCursor::pos()); 2186 mNewItemMenu->popup(QCursor::pos());
2182 } 2187 }
2183 /* 2188 /*
2184 if( incidence && incidence->typeID() == eventID ) { 2189 if( incidence && incidence->typeID() == eventID ) {
2185 Event *event = static_cast<Event *>(incidence); 2190 Event *event = static_cast<Event *>(incidence);
2186 mContextMenu->showEventPopup(event); 2191 mContextMenu->showEventPopup(event);
2187 } else { 2192 } else {
2188 kdDebug() << "MonthView::showContextMenu(): cast failed." << endl; 2193 kdDebug() << "MonthView::showContextMenu(): cast failed." << endl;
2189 } 2194 }
2190 */ 2195 */
2191} 2196}
2192MonthViewCell * KOMonthView::selectedCell( ) 2197MonthViewCell * KOMonthView::selectedCell( )
2193{ 2198{
2194 return mSelectedCell; 2199 return mSelectedCell;
2195} 2200}
2196void KOMonthView::setSelectedCell( MonthViewCell *cell ) 2201void KOMonthView::setSelectedCell( MonthViewCell *cell )
2197{ 2202{
2198 //qDebug("KOMonthView::setSelectedCell %d", cell); 2203 //qDebug("KOMonthView::setSelectedCell %d", cell);
2199 if ( mSelectedCell && mSelectedCell != cell ) { 2204 if ( mSelectedCell && mSelectedCell != cell ) {
2200 MonthViewCell * mvc = mSelectedCell; 2205 MonthViewCell * mvc = mSelectedCell;
2201 mSelectedCell = cell; 2206 mSelectedCell = cell;
2202 mvc->deselect(); 2207 mvc->deselect();
2203 } else 2208 } else
2204 mSelectedCell = cell; 2209 mSelectedCell = cell;
2205 // if ( mSelectedCell ) 2210 // if ( mSelectedCell )
2206 // mSelectedCell->select(); 2211 // mSelectedCell->select();
2207 if ( !mSelectedCell ) 2212 if ( !mSelectedCell )
2208 emit incidenceSelected( 0 ); 2213 emit incidenceSelected( 0 );
2209 else 2214 else
2210 emit incidenceSelected( mSelectedCell->selectedIncidence() ); 2215 emit incidenceSelected( mSelectedCell->selectedIncidence() );
2211} 2216}
2212 2217
2213void KOMonthView::processSelectionChange() 2218void KOMonthView::processSelectionChange()
2214{ 2219{
2215 QPtrList<Incidence> incidences = selectedIncidences(); 2220 QPtrList<Incidence> incidences = selectedIncidences();
2216 if (incidences.count() > 0) { 2221 if (incidences.count() > 0) {
2217 emit incidenceSelected( incidences.first() ); 2222 emit incidenceSelected( incidences.first() );
2218 } else { 2223 } else {
2219 emit incidenceSelected( 0 ); 2224 emit incidenceSelected( 0 );
2220 clearSelection(); 2225 clearSelection();
2221 } 2226 }
2222} 2227}
2223 2228
2224void KOMonthView::clearSelection() 2229void KOMonthView::clearSelection()
2225{ 2230{
2226 if ( mSelectedCell ) { 2231 if ( mSelectedCell ) {
2227 mSelectedCell->deselect(); 2232 mSelectedCell->deselect();
2228 mSelectedCell = 0; 2233 mSelectedCell = 0;
2229 } 2234 }
2230} 2235}
2231 2236
2232void KOMonthView::keyReleaseEvent ( QKeyEvent * e) 2237void KOMonthView::keyReleaseEvent ( QKeyEvent * e)
2233{ 2238{
2234 if ( !e->isAutoRepeat() ) { 2239 if ( !e->isAutoRepeat() ) {
2235 mFlagKeyPressed = false; 2240 mFlagKeyPressed = false;
2236 } 2241 }
2237} 2242}
2238 2243
2239void KOMonthView::keyPressEvent ( QKeyEvent * e ) 2244void KOMonthView::keyPressEvent ( QKeyEvent * e )
2240{ 2245{
2241 2246
2242 qApp->processEvents(); 2247 qApp->processEvents();
2243 if ( e->isAutoRepeat() && !mFlagKeyPressed ) { 2248 if ( e->isAutoRepeat() && !mFlagKeyPressed ) {
2244 //e->ignore(); 2249 //e->ignore();
2245 e->accept(); 2250 e->accept();
2246 return; 2251 return;
2247 } 2252 }
2248 if (! e->isAutoRepeat() ) 2253 if (! e->isAutoRepeat() )
2249 mFlagKeyPressed = true; 2254 mFlagKeyPressed = true;
2250 switch(e->key()) { 2255 switch(e->key()) {
2251 case Key_Up: 2256 case Key_Up:
2252 { 2257 {
2253 if ( mShowWeekView ) { 2258 if ( mShowWeekView ) {
2254 emit selectWeekNum ( currentWeek() - 1 ); 2259 emit selectWeekNum ( currentWeek() - 1 );
2255 } 2260 }
2256 else { 2261 else {
2257 emit prevMonth(); 2262 emit prevMonth();
2258 } 2263 }
2259 } 2264 }
2260 e->accept(); 2265 e->accept();
2261 break; 2266 break;
2262 case Key_Down: 2267 case Key_Down:
2263 { 2268 {
2264 if ( mShowWeekView ) { 2269 if ( mShowWeekView ) {
2265 emit selectWeekNum ( currentWeek() +1); 2270 emit selectWeekNum ( currentWeek() +1);
2266 } 2271 }
2267 else { 2272 else {
2268 emit nextMonth(); 2273 emit nextMonth();
2269 } 2274 }
2270 2275
2271 } 2276 }
2272 e->accept(); 2277 e->accept();
2273 break; 2278 break;
2274 case Key_Return: 2279 case Key_Return:
2275 case Key_Enter: 2280 case Key_Enter:
2276 { 2281 {
2277 selectInternalWeekNum ( currentWeek() ); 2282 selectInternalWeekNum ( currentWeek() );