summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koeditorgeneralevent.cpp8
-rw-r--r--korganizer/komonthview.cpp2
-rw-r--r--korganizer/kotodoviewitem.cpp10
-rw-r--r--korganizer/kowhatsnextview.cpp6
4 files changed, 15 insertions, 11 deletions
diff --git a/korganizer/koeditorgeneralevent.cpp b/korganizer/koeditorgeneralevent.cpp
index adc733b..2a49528 100644
--- a/korganizer/koeditorgeneralevent.cpp
+++ b/korganizer/koeditorgeneralevent.cpp
@@ -1,427 +1,427 @@
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 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <qtooltip.h> 24#include <qtooltip.h>
25#include <qlayout.h> 25#include <qlayout.h>
26#include <qvbox.h> 26#include <qvbox.h>
27#include <qbuttongroup.h> 27#include <qbuttongroup.h>
28#include <qvgroupbox.h> 28#include <qvgroupbox.h>
29#include <qwidgetstack.h> 29#include <qwidgetstack.h>
30#include <qdatetime.h> 30#include <qdatetime.h>
31 31
32#include <kdebug.h> 32#include <kdebug.h>
33#include <kglobal.h> 33#include <kglobal.h>
34#include <klocale.h> 34#include <klocale.h>
35#include <kiconloader.h> 35#include <kiconloader.h>
36#include <kmessagebox.h> 36#include <kmessagebox.h>
37#include <kfiledialog.h> 37#include <kfiledialog.h>
38#include <kstandarddirs.h> 38#include <kstandarddirs.h>
39 39
40#include <libkcal/event.h> 40#include <libkcal/event.h>
41 41
42#include <libkdepim/kdateedit.h> 42#include <libkdepim/kdateedit.h>
43 43
44#include "koprefs.h" 44#include "koprefs.h"
45 45
46#include "koeditorgeneralevent.h" 46#include "koeditorgeneralevent.h"
47#include "kolocationbox.h" 47#include "kolocationbox.h"
48 48
49KOEditorGeneralEvent::KOEditorGeneralEvent(QObject* parent, 49KOEditorGeneralEvent::KOEditorGeneralEvent(QObject* parent,
50 const char* name) : 50 const char* name) :
51 KOEditorGeneral( parent, name) 51 KOEditorGeneral( parent, name)
52{ 52{
53 mTemplate = false; 53 mTemplate = false;
54 connect(this,SIGNAL(dateTimesChanged(QDateTime,QDateTime)), 54 connect(this,SIGNAL(dateTimesChanged(QDateTime,QDateTime)),
55 SLOT(setDuration())); 55 SLOT(setDuration()));
56 connect(this,SIGNAL(dateTimesChanged(QDateTime,QDateTime)), 56 connect(this,SIGNAL(dateTimesChanged(QDateTime,QDateTime)),
57 SLOT(emitDateTimeStr())); 57 SLOT(emitDateTimeStr()));
58} 58}
59 59
60KOEditorGeneralEvent::~KOEditorGeneralEvent() 60KOEditorGeneralEvent::~KOEditorGeneralEvent()
61{ 61{
62} 62}
63 63
64void KOEditorGeneralEvent::finishSetup() 64void KOEditorGeneralEvent::finishSetup()
65{ 65{
66 66
67 //disabled 67 //disabled
68// QWidget::setTabOrder( mSummaryEdit, mLocationEdit ); 68// QWidget::setTabOrder( mSummaryEdit, mLocationEdit );
69// QWidget::setTabOrder( mLocationEdit, mStartDateEdit ); 69// QWidget::setTabOrder( mLocationEdit, mStartDateEdit );
70// QWidget::setTabOrder( mStartDateEdit, mStartTimeEdit ); 70// QWidget::setTabOrder( mStartDateEdit, mStartTimeEdit );
71// QWidget::setTabOrder( mStartTimeEdit, mEndDateEdit ); 71// QWidget::setTabOrder( mStartTimeEdit, mEndDateEdit );
72// QWidget::setTabOrder( mEndDateEdit, mEndTimeEdit ); 72// QWidget::setTabOrder( mEndDateEdit, mEndTimeEdit );
73// QWidget::setTabOrder( mEndTimeEdit, mNoTimeButton ); 73// QWidget::setTabOrder( mEndTimeEdit, mNoTimeButton );
74// QWidget::setTabOrder( mNoTimeButton, mAlarmButton ); 74// QWidget::setTabOrder( mNoTimeButton, mAlarmButton );
75// QWidget::setTabOrder( mAlarmButton, mAlarmTimeEdit ); 75// QWidget::setTabOrder( mAlarmButton, mAlarmTimeEdit );
76// QWidget::setTabOrder( mFreeTimeCombo, mCategoriesButton ); 76// QWidget::setTabOrder( mFreeTimeCombo, mCategoriesButton );
77// QWidget::setTabOrder( mCategoriesButton, mSecrecyCombo ); 77// QWidget::setTabOrder( mCategoriesButton, mSecrecyCombo );
78// QWidget::setTabOrder( mSecrecyCombo, mDescriptionEdit ); 78// QWidget::setTabOrder( mSecrecyCombo, mDescriptionEdit );
79 79
80 80
81 81
82 mSummaryEdit->load(KOLocationBox::SUMMARYEVENT); 82 mSummaryEdit->load(KOLocationBox::SUMMARYEVENT);
83 mSummaryEdit->setFocus(); 83 mSummaryEdit->setFocus();
84} 84}
85 85
86void KOEditorGeneralEvent::initTime(QWidget *parent,QBoxLayout *topLayout) 86void KOEditorGeneralEvent::initTime(QWidget *parent,QBoxLayout *topLayout)
87{ 87{
88 QBoxLayout *timeLayout = new QVBoxLayout(topLayout); 88 QBoxLayout *timeLayout = new QVBoxLayout(topLayout);
89 89
90 QGroupBox *timeGroupBox = new QGroupBox(1,QGroupBox::Horizontal, 90 QGroupBox *timeGroupBox = new QGroupBox(1,QGroupBox::Horizontal,
91 i18n("Date && Time"),parent); 91 i18n("Date && Time"),parent);
92 timeLayout->addWidget(timeGroupBox); 92 timeLayout->addWidget(timeGroupBox);
93 93
94 timeGroupBox->layout()->setSpacing( 0 ); 94 timeGroupBox->layout()->setSpacing( 0 );
95 timeGroupBox->layout()->setMargin( 5 ); 95 timeGroupBox->layout()->setMargin( 5 );
96 QFrame *timeBoxFrame = new QFrame(timeGroupBox); 96 QFrame *timeBoxFrame = new QFrame(timeGroupBox);
97 97
98 QGridLayout *layoutTimeBox = new QGridLayout(timeBoxFrame,2,3); 98 QGridLayout *layoutTimeBox = new QGridLayout(timeBoxFrame,2,3);
99 layoutTimeBox->setSpacing(topLayout->spacing()); 99 layoutTimeBox->setSpacing(topLayout->spacing());
100 100
101 mStartDateLabel = new QLabel(i18n("Start:"),timeBoxFrame); 101 mStartDateLabel = new QLabel(i18n("Start:"),timeBoxFrame);
102 layoutTimeBox->addWidget(mStartDateLabel,0,0); 102 layoutTimeBox->addWidget(mStartDateLabel,0,0);
103 103
104 mStartDateEdit = new KDateEdit(timeBoxFrame); 104 mStartDateEdit = new KDateEdit(timeBoxFrame);
105 layoutTimeBox->addWidget(mStartDateEdit,0,1); 105 layoutTimeBox->addWidget(mStartDateEdit,0,1);
106 106
107 mStartTimeEdit = new KOTimeEdit(timeBoxFrame); 107 mStartTimeEdit = new KOTimeEdit(timeBoxFrame);
108 layoutTimeBox->addWidget(mStartTimeEdit,0,2); 108 layoutTimeBox->addWidget(mStartTimeEdit,0,2);
109 109
110 110
111 mEndDateLabel = new QLabel(i18n("End:"),timeBoxFrame); 111 mEndDateLabel = new QLabel(i18n("End:"),timeBoxFrame);
112 layoutTimeBox->addWidget(mEndDateLabel,1,0); 112 layoutTimeBox->addWidget(mEndDateLabel,1,0);
113 113
114 mEndDateEdit = new KDateEdit(timeBoxFrame); 114 mEndDateEdit = new KDateEdit(timeBoxFrame);
115 layoutTimeBox->addWidget(mEndDateEdit,1,1); 115 layoutTimeBox->addWidget(mEndDateEdit,1,1);
116 116
117 mEndTimeEdit = new KOTimeEdit(timeBoxFrame); 117 mEndTimeEdit = new KOTimeEdit(timeBoxFrame);
118 layoutTimeBox->addWidget(mEndTimeEdit,1,2); 118 layoutTimeBox->addWidget(mEndTimeEdit,1,2);
119 QWidget* duration = new QWidget( timeBoxFrame ); 119 QWidget* duration = new QWidget( timeBoxFrame );
120 QHBoxLayout *flagsBox = new QHBoxLayout( duration ); 120 QHBoxLayout *flagsBox = new QHBoxLayout( duration );
121 mNoTimeButton = new QCheckBox(i18n("All day event"),duration); 121 mNoTimeButton = new QCheckBox(i18n("All day event"),duration);
122 flagsBox->addWidget(mNoTimeButton); 122 flagsBox->addWidget(mNoTimeButton);
123 connect(mNoTimeButton, SIGNAL(toggled(bool)),SLOT(dontAssociateTime(bool))); 123 connect(mNoTimeButton, SIGNAL(toggled(bool)),SLOT(dontAssociateTime(bool)));
124 mDurationLabel = new QLabel( duration ); 124 mDurationLabel = new QLabel( duration );
125 // if ( KOPrefs::instance()->mCompactDialogs ) { 125 // if ( KOPrefs::instance()->mCompactDialogs ) {
126 //layoutTimeBox->addMultiCellWidget( mDurationLabel, 3, 3, 0, 3 ); 126 //layoutTimeBox->addMultiCellWidget( mDurationLabel, 3, 3, 0, 3 );
127 //} else { 127 //} else {
128 flagsBox->addWidget( mDurationLabel ); 128 flagsBox->addWidget( mDurationLabel );
129 //} 129 //}
130 flagsBox->setStretchFactor(mDurationLabel, 10 ); 130 flagsBox->setStretchFactor(mDurationLabel, 10 );
131 mDurationLabel->setAlignment( AlignRight | AlignVCenter); 131 mDurationLabel->setAlignment( AlignRight | AlignVCenter);
132 layoutTimeBox->addMultiCellWidget( duration, 2, 2, 0, 3 ); 132 layoutTimeBox->addMultiCellWidget( duration, 2, 2, 0, 3 );
133 133
134 // time widgets are checked if they contain a valid time 134 // time widgets are checked if they contain a valid time
135 connect(mStartTimeEdit, SIGNAL(timeChanged(QTime)), 135 connect(mStartTimeEdit, SIGNAL(timeChanged(QTime)),
136 this, SLOT(startTimeChanged(QTime))); 136 this, SLOT(startTimeChanged(QTime)));
137 connect(mEndTimeEdit, SIGNAL(timeChanged(QTime)), 137 connect(mEndTimeEdit, SIGNAL(timeChanged(QTime)),
138 this, SLOT(endTimeChanged(QTime))); 138 this, SLOT(endTimeChanged(QTime)));
139 139
140 // date widgets are checked if they contain a valid date 140 // date widgets are checked if they contain a valid date
141 connect(mStartDateEdit, SIGNAL(dateChanged(QDate)), 141 connect(mStartDateEdit, SIGNAL(dateChanged(QDate)),
142 this, SLOT(startDateChanged(QDate))); 142 this, SLOT(startDateChanged(QDate)));
143 connect(mEndDateEdit, SIGNAL(dateChanged(QDate)), 143 connect(mEndDateEdit, SIGNAL(dateChanged(QDate)),
144 this, SLOT(endDateChanged(QDate))); 144 this, SLOT(endDateChanged(QDate)));
145} 145}
146 146
147void KOEditorGeneralEvent::initClass(QWidget *parent,QBoxLayout *topLayout) 147void KOEditorGeneralEvent::initClass(QWidget *parent,QBoxLayout *topLayout)
148{ 148{
149 QBoxLayout *classLayout = new QHBoxLayout(topLayout); 149 QBoxLayout *classLayout = new QHBoxLayout(topLayout);
150 150
151 QLabel *freeTimeLabel = new QLabel(i18n("Show time as:"),parent); 151 QLabel *freeTimeLabel = new QLabel(i18n("Show time as:"),parent);
152 classLayout->addWidget(freeTimeLabel); 152 classLayout->addWidget(freeTimeLabel);
153 153
154 mFreeTimeCombo = new QComboBox(false, parent); 154 mFreeTimeCombo = new QComboBox(false, parent);
155 mFreeTimeCombo->insertItem(i18n("Busy")); 155 mFreeTimeCombo->insertItem(i18n("Busy"));
156 mFreeTimeCombo->insertItem(i18n("Free")); 156 mFreeTimeCombo->insertItem(i18n("Free"));
157 classLayout->addWidget(mFreeTimeCombo); 157 classLayout->addWidget(mFreeTimeCombo);
158} 158}
159 159
160void KOEditorGeneralEvent::timeStuffDisable(bool disable) 160void KOEditorGeneralEvent::timeStuffDisable(bool disable)
161{ 161{
162 mStartTimeEdit->setEnabled( !disable ); 162 mStartTimeEdit->setEnabled( !disable );
163 mEndTimeEdit->setEnabled( !disable ); 163 mEndTimeEdit->setEnabled( !disable );
164 164
165 setDuration(); 165 setDuration();
166 emitDateTimeStr(); 166 emitDateTimeStr();
167} 167}
168 168
169void KOEditorGeneralEvent::dontAssociateTime(bool noTime) 169void KOEditorGeneralEvent::dontAssociateTime(bool noTime)
170{ 170{
171 timeStuffDisable(noTime); 171 timeStuffDisable(noTime);
172 //if(alarmButton->isChecked()) alarmStuffDisable(noTime); 172 //if(alarmButton->isChecked()) alarmStuffDisable(noTime);
173 allDayChanged(noTime); 173 allDayChanged(noTime);
174} 174}
175 175
176void KOEditorGeneralEvent::setDateTimes(QDateTime start, QDateTime end) 176void KOEditorGeneralEvent::setDateTimes(QDateTime start, QDateTime end)
177{ 177{
178// kdDebug() << "KOEditorGeneralEvent::setDateTimes(): Start DateTime: " << start.toString() << endl; 178// kdDebug() << "KOEditorGeneralEvent::setDateTimes(): Start DateTime: " << start.toString() << endl;
179 if ( !mTemplate ) 179 if ( !mTemplate )
180 mStartDateEdit->setDate(start.date()); 180 mStartDateEdit->setDate(start.date());
181 // KTimeEdit seems to emit some signals when setTime() is called. 181 // KTimeEdit seems to emit some signals when setTime() is called.
182 mStartTimeEdit->blockSignals( true ); 182 mStartTimeEdit->blockSignals( true );
183 mStartTimeEdit->setTime(start.time()); 183 mStartTimeEdit->setTime(start.time());
184 mStartTimeEdit->blockSignals( false ); 184 mStartTimeEdit->blockSignals( false );
185 if ( !mTemplate ) 185 if ( !mTemplate )
186 mEndDateEdit->setDate(end.date()); 186 mEndDateEdit->setDate(end.date());
187 mEndTimeEdit->setTime(end.time()); 187 mEndTimeEdit->setTime(end.time());
188 188
189 mCurrStartDateTime = start; 189 mCurrStartDateTime = start;
190 mCurrEndDateTime = end; 190 mCurrEndDateTime = end;
191 191
192 setDuration(); 192 setDuration();
193 emitDateTimeStr(); 193 emitDateTimeStr();
194} 194}
195 195
196void KOEditorGeneralEvent::startTimeChanged(QTime newtime) 196void KOEditorGeneralEvent::startTimeChanged(QTime newtime)
197{ 197{
198 kdDebug() << "KOEditorGeneralEvent::startTimeChanged() " << newtime.toString() << endl; 198 kdDebug() << "KOEditorGeneralEvent::startTimeChanged() " << newtime.toString() << endl;
199 199
200 int secsep = mCurrStartDateTime.secsTo(mCurrEndDateTime); 200 int secsep = mCurrStartDateTime.secsTo(mCurrEndDateTime);
201 201
202 mCurrStartDateTime.setTime(newtime); 202 mCurrStartDateTime.setTime(newtime);
203 203
204 // adjust end time so that the event has the same duration as before. 204 // adjust end time so that the event has the same duration as before.
205 mCurrEndDateTime = mCurrStartDateTime.addSecs(secsep); 205 mCurrEndDateTime = mCurrStartDateTime.addSecs(secsep);
206 mEndTimeEdit->setTime(mCurrEndDateTime.time()); 206 mEndTimeEdit->setTime(mCurrEndDateTime.time());
207 mEndDateEdit->setDate(mCurrEndDateTime.date()); 207 mEndDateEdit->setDate(mCurrEndDateTime.date());
208 208
209 emit dateTimesChanged(mCurrStartDateTime,mCurrEndDateTime); 209 emit dateTimesChanged(mCurrStartDateTime,mCurrEndDateTime);
210} 210}
211 211
212void KOEditorGeneralEvent::endTimeChanged(QTime newtime) 212void KOEditorGeneralEvent::endTimeChanged(QTime newtime)
213{ 213{
214// kdDebug() << "KOEditorGeneralEvent::endTimeChanged " << newtime.toString() << endl; 214// kdDebug() << "KOEditorGeneralEvent::endTimeChanged " << newtime.toString() << endl;
215 215
216 QDateTime newdt(mCurrEndDateTime.date(), newtime); 216 QDateTime newdt(mCurrEndDateTime.date(), newtime);
217 mCurrEndDateTime = newdt; 217 mCurrEndDateTime = newdt;
218 218
219 emit dateTimesChanged(mCurrStartDateTime,mCurrEndDateTime); 219 emit dateTimesChanged(mCurrStartDateTime,mCurrEndDateTime);
220} 220}
221 221
222void KOEditorGeneralEvent::startDateChanged(QDate newdate) 222void KOEditorGeneralEvent::startDateChanged(QDate newdate)
223{ 223{
224 int daysep = mCurrStartDateTime.daysTo(mCurrEndDateTime); 224 int daysep = mCurrStartDateTime.daysTo(mCurrEndDateTime);
225 225
226 mCurrStartDateTime.setDate(newdate); 226 mCurrStartDateTime.setDate(newdate);
227 227
228 // adjust end date so that the event has the same duration as before 228 // adjust end date so that the event has the same duration as before
229 mCurrEndDateTime.setDate(mCurrStartDateTime.date().addDays(daysep)); 229 mCurrEndDateTime.setDate(mCurrStartDateTime.date().addDays(daysep));
230 mEndDateEdit->setDate(mCurrEndDateTime.date()); 230 mEndDateEdit->setDate(mCurrEndDateTime.date());
231 231
232 emit dateTimesChanged(mCurrStartDateTime,mCurrEndDateTime); 232 emit dateTimesChanged(mCurrStartDateTime,mCurrEndDateTime);
233} 233}
234 234
235void KOEditorGeneralEvent::endDateChanged(QDate newdate) 235void KOEditorGeneralEvent::endDateChanged(QDate newdate)
236{ 236{
237 QDateTime newdt(newdate, mCurrEndDateTime.time()); 237 QDateTime newdt(newdate, mCurrEndDateTime.time());
238 238
239 if(newdt < mCurrStartDateTime) { 239 if(newdt < mCurrStartDateTime) {
240 // oops, we can't let that happen. 240 // oops, we can't let that happen.
241 newdt = mCurrStartDateTime; 241 newdt = mCurrStartDateTime;
242 mEndDateEdit->setDate(newdt.date()); 242 mEndDateEdit->setDate(newdt.date());
243 mEndTimeEdit->setTime(newdt.time()); 243 mEndTimeEdit->setTime(newdt.time());
244 } 244 }
245 mCurrEndDateTime = newdt; 245 mCurrEndDateTime = newdt;
246 246
247 emit dateTimesChanged(mCurrStartDateTime,mCurrEndDateTime); 247 emit dateTimesChanged(mCurrStartDateTime,mCurrEndDateTime);
248} 248}
249 249
250void KOEditorGeneralEvent::setDefaults(QDateTime from,QDateTime to,bool allDay) 250void KOEditorGeneralEvent::setDefaults(QDateTime from,QDateTime to,bool allDay)
251{ 251{
252 mSummaryEdit->load(KOLocationBox::SUMMARYEVENT); 252 mSummaryEdit->load(KOLocationBox::SUMMARYEVENT);
253 mLocationEdit->load(KOLocationBox::LOCATION); 253 mLocationEdit->load(KOLocationBox::LOCATION);
254 KOEditorGeneral::setDefaults(allDay); 254 KOEditorGeneral::setDefaults(allDay);
255 255
256 mNoTimeButton->setChecked(allDay); 256 mNoTimeButton->setChecked(allDay);
257 timeStuffDisable(allDay); 257 timeStuffDisable(allDay);
258 mFreeTimeCombo->setCurrentItem( 0 ); 258 mFreeTimeCombo->setCurrentItem( 0 );
259 setDateTimes(from,to); 259 setDateTimes(from,to);
260} 260}
261 261
262void KOEditorGeneralEvent::readEvent( Event *event, bool tmpl ) 262void KOEditorGeneralEvent::readEvent( Event *event, bool tmpl )
263{ 263{
264 QString tmpStr; 264 QString tmpStr;
265 265
266 mTemplate = tmpl; 266 mTemplate = tmpl;
267 // the rest is for the events only 267 // the rest is for the events only
268 mNoTimeButton->setChecked(event->doesFloat()); 268 mNoTimeButton->setChecked(event->doesFloat());
269 timeStuffDisable(event->doesFloat()); 269 timeStuffDisable(event->doesFloat());
270 270
271 setDateTimes(event->dtStart(),event->dtEnd()); 271 setDateTimes(event->dtStart(),event->dtEnd());
272 272
273 mTemplate = false; 273 mTemplate = false;
274 switch( event->transparency() ) { 274 switch( event->transparency() ) {
275 case Event::Transparent: 275 case Event::Transparent:
276 mFreeTimeCombo->setCurrentItem(1); 276 mFreeTimeCombo->setCurrentItem(1);
277 break; 277 break;
278 case Event::Opaque: 278 case Event::Opaque:
279 mFreeTimeCombo->setCurrentItem(0); 279 mFreeTimeCombo->setCurrentItem(0);
280 break; 280 break;
281 } 281 }
282 282
283 mSummaryEdit->load(KOLocationBox::SUMMARYEVENT); 283 mSummaryEdit->load(KOLocationBox::SUMMARYEVENT);
284 mLocationEdit->load(KOLocationBox::LOCATION); 284 mLocationEdit->load(KOLocationBox::LOCATION);
285 readIncidence(event); 285 readIncidence(event);
286} 286}
287 287
288void KOEditorGeneralEvent::writeEvent(Event *event) 288void KOEditorGeneralEvent::writeEvent(Event *event)
289{ 289{
290// kdDebug() << "KOEditorGeneralEvent::writeEvent()" << endl; 290// kdDebug() << "KOEditorGeneralEvent::writeEvent()" << endl;
291 291
292 writeIncidence(event); 292 writeIncidence(event);
293 293
294 QDate tmpDate; 294 QDate tmpDate;
295 QTime tmpTime; 295 QTime tmpTime;
296 QDateTime tmpDT; 296 QDateTime tmpDT;
297 297
298 // temp. until something better happens. 298 // temp. until something better happens.
299 QString tmpStr; 299 QString tmpStr;
300 300
301 if (mNoTimeButton->isChecked()) { 301 if (mNoTimeButton->isChecked()) {
302 event->setFloats(true); 302 event->setFloats(true);
303 // need to change this. 303 // need to change this.
304 tmpDate = mStartDateEdit->date(); 304 tmpDate = mStartDateEdit->date();
305 tmpTime.setHMS(0,0,0); 305 tmpTime.setHMS(0,0,0);
306 tmpDT.setDate(tmpDate); 306 tmpDT.setDate(tmpDate);
307 tmpDT.setTime(tmpTime); 307 tmpDT.setTime(tmpTime);
308 event->setDtStart(tmpDT); 308 event->setDtStart(tmpDT);
309 309
310 tmpDate = mEndDateEdit->date(); 310 tmpDate = mEndDateEdit->date();
311 tmpTime.setHMS(0,0,0); 311 tmpTime.setHMS(0,0,0);
312 tmpDT.setDate(tmpDate); 312 tmpDT.setDate(tmpDate);
313 tmpDT.setTime(tmpTime); 313 tmpDT.setTime(tmpTime);
314 event->setDtEnd(tmpDT); 314 event->setDtEnd(tmpDT);
315 } else { 315 } else {
316 event->setFloats(false); 316 event->setFloats(false);
317 317
318 // set date/time end 318 // set date/time end
319 tmpDate = mEndDateEdit->date(); 319 tmpDate = mEndDateEdit->date();
320 tmpTime = mEndTimeEdit->getTime(); 320 tmpTime = mEndTimeEdit->getTime();
321 tmpDT.setDate(tmpDate); 321 tmpDT.setDate(tmpDate);
322 tmpDT.setTime(tmpTime); 322 tmpDT.setTime(tmpTime);
323 event->setDtEnd(tmpDT); 323 event->setDtEnd(tmpDT);
324 324
325 // set date/time start 325 // set date/time start
326 tmpDate = mStartDateEdit->date(); 326 tmpDate = mStartDateEdit->date();
327 tmpTime = mStartTimeEdit->getTime(); 327 tmpTime = mStartTimeEdit->getTime();
328 tmpDT.setDate(tmpDate); 328 tmpDT.setDate(tmpDate);
329 tmpDT.setTime(tmpTime); 329 tmpDT.setTime(tmpTime);
330 event->setDtStart(tmpDT); 330 event->setDtStart(tmpDT);
331 } // check for float 331 } // check for float
332 mSummaryEdit->save(KOLocationBox::SUMMARYEVENT); 332 mSummaryEdit->save(KOLocationBox::SUMMARYEVENT);
333 333
334 event->setTransparency(mFreeTimeCombo->currentItem() > 0 334 event->setTransparency(mFreeTimeCombo->currentItem() > 0
335 ? KCal::Event::Transparent 335 ? KCal::Event::Transparent
336 : KCal::Event::Opaque); 336 : KCal::Event::Opaque);
337 337
338// kdDebug() << "KOEditorGeneralEvent::writeEvent() done" << endl; 338// kdDebug() << "KOEditorGeneralEvent::writeEvent() done" << endl;
339} 339}
340 340
341void KOEditorGeneralEvent::setDuration() 341void KOEditorGeneralEvent::setDuration()
342{ 342{
343 QString tmpStr = "", catStr; 343 QString tmpStr = "", catStr;
344 int hourdiff, minutediff; 344 int hourdiff, minutediff;
345 // end<date is an accepted temporary state while typing, but don't show 345 // end<date is an accepted temporary state while typing, but don't show
346 // any duration if this happens 346 // any duration if this happens
347 if(mCurrEndDateTime >= mCurrStartDateTime) { 347 if(mCurrEndDateTime >= mCurrStartDateTime) {
348 348
349 if (mNoTimeButton->isChecked()) { 349 if (mNoTimeButton->isChecked()) {
350 int daydiff = mCurrStartDateTime.date().daysTo(mCurrEndDateTime.date()) + 1; 350 int daydiff = mCurrStartDateTime.date().daysTo(mCurrEndDateTime.date()) + 1;
351 tmpStr = i18n("Duration: "); 351 tmpStr = i18n("Duration: ");
352 tmpStr.append(i18n("1 Day","%n Days",daydiff)); 352 tmpStr.append(i18n("1 Day","%n Days",daydiff));
353 } else { 353 } else {
354 int secto = mCurrStartDateTime.secsTo( mCurrEndDateTime ); 354 int secto = mCurrStartDateTime.secsTo( mCurrEndDateTime );
355 hourdiff = secto / 3600; 355 hourdiff = secto / 3600;
356 minutediff = (secto/60 ) % 60; 356 minutediff = (secto/60 ) % 60;
357 if (hourdiff || minutediff){ 357 if (hourdiff || minutediff){
358 tmpStr = i18n("Duration: "); 358 tmpStr = i18n("Duration: ");
359 if (hourdiff){ 359 if (hourdiff){
360 catStr = i18n("1 h","%n h",hourdiff); 360 catStr = i18n("1 h","%n h",hourdiff);
361 tmpStr.append(catStr); 361 tmpStr.append(catStr);
362 } 362 }
363 if (hourdiff && minutediff){ 363 if (hourdiff && minutediff){
364 tmpStr += i18n(", "); 364 tmpStr += i18n(", ");
365 } 365 }
366 if (minutediff){ 366 if (minutediff){
367 catStr = i18n("1 min","%n min",minutediff); 367 catStr = i18n("1 min","%n min",minutediff);
368 tmpStr += catStr; 368 tmpStr += catStr;
369 } 369 }
370 } else tmpStr = ""; 370 } else tmpStr = "";
371 } 371 }
372 } 372 }
373 mDurationLabel->setText(tmpStr); 373 mDurationLabel->setText(tmpStr);
374} 374}
375 375
376void KOEditorGeneralEvent::emitDateTimeStr() 376void KOEditorGeneralEvent::emitDateTimeStr()
377{ 377{
378 KLocale *l = KGlobal::locale(); 378 KLocale *l = KGlobal::locale();
379 379
380 QString from,to; 380 QString from,to;
381 if (mNoTimeButton->isChecked()) { 381 if (mNoTimeButton->isChecked()) {
382 from = l->formatDate(mCurrStartDateTime.date()); 382 from = l->formatDate(mCurrStartDateTime.date());
383 to = l->formatDate(mCurrEndDateTime.date()); 383 to = l->formatDate(mCurrEndDateTime.date());
384 } else { 384 } else {
385 from = l->formatDateTime(mCurrStartDateTime); 385 from = l->formatDateTime(mCurrStartDateTime);
386 to = l->formatDateTime(mCurrEndDateTime); 386 to = l->formatDateTime(mCurrEndDateTime);
387 } 387 }
388 388
389 QString str = i18n("From: %1 To: %2 %3").arg(from).arg(to) 389 QString str = i18n("From: %1 To: %2 %3").arg(from).arg(to)
390 .arg(mDurationLabel->text()); 390 .arg(mDurationLabel->text());
391 391
392 emit dateTimeStrChanged(str); 392 emit dateTimeStrChanged(str);
393} 393}
394 394
395bool KOEditorGeneralEvent::validateInput() 395bool KOEditorGeneralEvent::validateInput()
396{ 396{
397 397
398 if (!mStartDateEdit->inputIsValid()) { 398 if (!mStartDateEdit->inputIsValid()) {
399 KMessageBox::sorry( 0, 399 KMessageBox::sorry( 0,
400 i18n("Please specify a valid start date, for example '%1'.") 400 i18n("Please specify a valid start date,\nfor example '%1'.")
401 .arg( KGlobal::locale()->formatDate( QDate::currentDate() ) ) ); 401 .arg( KGlobal::locale()->formatDate( QDate::currentDate(), true ) ) );
402 return false; 402 return false;
403 } 403 }
404 404
405 if (!mEndDateEdit->inputIsValid()) { 405 if (!mEndDateEdit->inputIsValid()) {
406 KMessageBox::sorry( 0, 406 KMessageBox::sorry( 0,
407 i18n("Please specify a valid end date, for example '%1'.") 407 i18n("Please specify a valid end date,\nfor example '%1'.")
408 .arg( KGlobal::locale()->formatDate( QDate::currentDate() ) ) ); 408 .arg( KGlobal::locale()->formatDate( QDate::currentDate(), true ) ) );
409 return false; 409 return false;
410 } 410 }
411 411
412 QDateTime startDt,endDt; 412 QDateTime startDt,endDt;
413 startDt.setDate(mStartDateEdit->date()); 413 startDt.setDate(mStartDateEdit->date());
414 endDt.setDate(mEndDateEdit->date()); 414 endDt.setDate(mEndDateEdit->date());
415 if (!mNoTimeButton->isChecked()) { 415 if (!mNoTimeButton->isChecked()) {
416 startDt.setTime(mStartTimeEdit->getTime()); 416 startDt.setTime(mStartTimeEdit->getTime());
417 endDt.setTime(mEndTimeEdit->getTime()); 417 endDt.setTime(mEndTimeEdit->getTime());
418 } 418 }
419 419
420 if (startDt > endDt) { 420 if (startDt > endDt) {
421 KMessageBox::sorry(0,i18n("The event ends before it starts.\n" 421 KMessageBox::sorry(0,i18n("The event ends before it starts.\n"
422 "Please correct dates and times.")); 422 "Please correct dates and times."));
423 return false; 423 return false;
424 } 424 }
425 425
426 return KOEditorGeneral::validateInput(); 426 return KOEditorGeneral::validateInput();
427} 427}
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index da81586..f595d35 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -1,1610 +1,1610 @@
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 mWT = new KNOWhatsThis(this); 85 mWT = new KNOWhatsThis(this);
86} 86}
87KNoScrollListBox::~KNoScrollListBox() 87KNoScrollListBox::~KNoScrollListBox()
88{ 88{
89 89
90} 90}
91QString KNoScrollListBox::getWhatsThisText(QPoint p) 91QString KNoScrollListBox::getWhatsThisText(QPoint p)
92{ 92{
93 QListBoxItem* item = itemAt ( p ); 93 QListBoxItem* item = itemAt ( p );
94 if ( ! item ) { 94 if ( ! item ) {
95 return i18n("Click in the cell\nto add an event!"); 95 return i18n("Click in the cell\nto add an event!");
96 } 96 }
97 return KIncidenceFormatter::instance()->getFormattedText(((MonthViewItem*) item)->incidence()); 97 return KIncidenceFormatter::instance()->getFormattedText(((MonthViewItem*) item)->incidence());
98} 98}
99void KNoScrollListBox::keyPressEvent(QKeyEvent *e) 99void KNoScrollListBox::keyPressEvent(QKeyEvent *e)
100{ 100{
101 101
102 switch(e->key()) { 102 switch(e->key()) {
103 case Key_Right: 103 case Key_Right:
104 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 104 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
105 { 105 {
106 e->ignore(); 106 e->ignore();
107 return; 107 return;
108 } 108 }
109 scrollBy(10,0); 109 scrollBy(10,0);
110 break; 110 break;
111 case Key_Left: 111 case Key_Left:
112 if (e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 112 if (e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
113 { 113 {
114 e->ignore(); 114 e->ignore();
115 return; 115 return;
116 } 116 }
117 scrollBy(-10,0); 117 scrollBy(-10,0);
118 break; 118 break;
119 case Key_Up: 119 case Key_Up:
120 if( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton) { 120 if( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton) {
121 e->ignore(); 121 e->ignore();
122 break; 122 break;
123 } 123 }
124 setCurrentItem((currentItem()+count()-1)%count()); 124 setCurrentItem((currentItem()+count()-1)%count());
125 if(!itemVisible(currentItem())) { 125 if(!itemVisible(currentItem())) {
126 if((unsigned int) currentItem() == (count()-1)) { 126 if((unsigned int) currentItem() == (count()-1)) {
127 setTopItem(currentItem()-numItemsVisible()+1); 127 setTopItem(currentItem()-numItemsVisible()+1);
128 } else { 128 } else {
129 setTopItem(topItem()-1); 129 setTopItem(topItem()-1);
130 } 130 }
131 } 131 }
132 break; 132 break;
133 case Key_Down: 133 case Key_Down:
134 if(e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton) { 134 if(e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton) {
135 e->ignore(); 135 e->ignore();
136 break; 136 break;
137 } 137 }
138 setCurrentItem((currentItem()+1)%count()); 138 setCurrentItem((currentItem()+1)%count());
139 if(!itemVisible(currentItem())) { 139 if(!itemVisible(currentItem())) {
140 if(currentItem() == 0) { 140 if(currentItem() == 0) {
141 setTopItem(0); 141 setTopItem(0);
142 } else { 142 } else {
143 setTopItem(topItem()+1); 143 setTopItem(topItem()+1);
144 } 144 }
145 } 145 }
146 break; 146 break;
147 case Key_I: 147 case Key_I:
148 QTimer::singleShot( 11, this, SLOT ( oneDown() ) ); 148 QTimer::singleShot( 11, this, SLOT ( oneDown() ) );
149 e->ignore(); 149 e->ignore();
150 break; 150 break;
151 case Key_Shift: 151 case Key_Shift:
152 emit shiftDown(); 152 emit shiftDown();
153 break; 153 break;
154 default: 154 default:
155 e->ignore(); 155 e->ignore();
156 break; 156 break;
157 } 157 }
158} 158}
159 159
160void KNoScrollListBox::oneDown() 160void KNoScrollListBox::oneDown()
161{ 161{
162 setCurrentItem((currentItem()+1)%count()); 162 setCurrentItem((currentItem()+1)%count());
163 if(!itemVisible(currentItem())) { 163 if(!itemVisible(currentItem())) {
164 if(currentItem() == 0) { 164 if(currentItem() == 0) {
165 setTopItem(0); 165 setTopItem(0);
166 } else { 166 } else {
167 setTopItem(topItem()+1); 167 setTopItem(topItem()+1);
168 } 168 }
169 } 169 }
170} 170}
171void KNoScrollListBox::keyReleaseEvent(QKeyEvent *e) 171void KNoScrollListBox::keyReleaseEvent(QKeyEvent *e)
172{ 172{
173 switch(e->key()) { 173 switch(e->key()) {
174 case Key_Shift: 174 case Key_Shift:
175 emit shiftUp(); 175 emit shiftUp();
176 break; 176 break;
177 default: 177 default:
178 break; 178 break;
179 } 179 }
180} 180}
181 181
182void KNoScrollListBox::mousePressEvent(QMouseEvent *e) 182void KNoScrollListBox::mousePressEvent(QMouseEvent *e)
183{ 183{
184 QListBox::mousePressEvent(e); 184 QListBox::mousePressEvent(e);
185 185
186 if(e->button() == RightButton) { 186 if(e->button() == RightButton) {
187 emit rightClick(); 187 emit rightClick();
188 } 188 }
189} 189}
190 190
191MonthViewItem::MonthViewItem( Incidence *incidence, QDate qd, const QString & s) 191MonthViewItem::MonthViewItem( Incidence *incidence, QDate qd, const QString & s)
192 : QListBoxItem() 192 : QListBoxItem()
193{ 193{
194 setText( s ); 194 setText( s );
195 195
196 mIncidence = incidence; 196 mIncidence = incidence;
197 mDate = qd; 197 mDate = qd;
198 // QWhatsThis::add(this,KIncidenceFormatter::instance()->getFormattedText( mIncidence )); 198 // QWhatsThis::add(this,KIncidenceFormatter::instance()->getFormattedText( mIncidence ));
199 mRecur = false; 199 mRecur = false;
200 mAlarm = false; 200 mAlarm = false;
201 mReply = false; 201 mReply = false;
202 mInfo = false; 202 mInfo = false;
203} 203}
204 204
205void MonthViewItem::paint(QPainter *p) 205void MonthViewItem::paint(QPainter *p)
206{ 206{
207#if QT_VERSION >= 0x030000 207#if QT_VERSION >= 0x030000
208 bool sel = isSelected(); 208 bool sel = isSelected();
209#else 209#else
210 bool sel = selected(); 210 bool sel = selected();
211#endif 211#endif
212 212
213 213
214 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) 214 if (KOPrefs::instance()->mMonthViewUsesCategoryColor)
215 { 215 {
216 p->setBackgroundColor( palette().color( QPalette::Normal, \ 216 p->setBackgroundColor( palette().color( QPalette::Normal, \
217 sel ? QColorGroup::Highlight : QColorGroup::Background ) ); 217 sel ? QColorGroup::Highlight : QColorGroup::Background ) );
218 p->eraseRect( 0, 0, listBox()->maxItemWidth(), height( listBox() ) ); 218 p->eraseRect( 0, 0, listBox()->maxItemWidth(), height( listBox() ) );
219 } 219 }
220 int x = 1; 220 int x = 1;
221 int y = 3;//(height() - mRecurPixmap.height()) /2; 221 int y = 3;//(height() - mRecurPixmap.height()) /2;
222 int size = PIXMAP_SIZE; 222 int size = PIXMAP_SIZE;
223 if ( QApplication::desktop()->width() < 300 ) 223 if ( QApplication::desktop()->width() < 300 )
224 size = 3; 224 size = 3;
225 if ( KOPrefs::instance()->mMonthShowIcons ) { 225 if ( KOPrefs::instance()->mMonthShowIcons ) {
226 if ( mInfo ) { 226 if ( mInfo ) {
227 p->fillRect ( x, y,size,size, Qt::darkGreen ); 227 p->fillRect ( x, y,size,size, Qt::darkGreen );
228 x += size + 1; 228 x += size + 1;
229 } 229 }
230 if ( mRecur ) { 230 if ( mRecur ) {
231 p->fillRect ( x, y,size,size, Qt::blue ); 231 p->fillRect ( x, y,size,size, Qt::blue );
232 x += size + 1; 232 x += size + 1;
233 } 233 }
234 if ( mAlarm ) { 234 if ( mAlarm ) {
235 p->fillRect ( x, y,size,size, Qt::red ); 235 p->fillRect ( x, y,size,size, Qt::red );
236 x += size + 1; 236 x += size + 1;
237 } 237 }
238 if ( mReply ) { 238 if ( mReply ) {
239 p->fillRect ( x, y,size,size, Qt::yellow ); 239 p->fillRect ( x, y,size,size, Qt::yellow );
240 x += size + 1; 240 x += size + 1;
241 } 241 }
242 } 242 }
243 QFontMetrics fm = p->fontMetrics(); 243 QFontMetrics fm = p->fontMetrics();
244 int yPos; 244 int yPos;
245 int pmheight = size; 245 int pmheight = size;
246 if( pmheight < fm.height() ) 246 if( pmheight < fm.height() )
247 yPos = fm.ascent() + fm.leading()/2; 247 yPos = fm.ascent() + fm.leading()/2;
248 else 248 else
249 yPos = pmheight/2 - fm.height()/2 + fm.ascent(); 249 yPos = pmheight/2 - fm.height()/2 + fm.ascent();
250 p->setPen( palette().color( QPalette::Normal, sel ? \ 250 p->setPen( palette().color( QPalette::Normal, sel ? \
251 QColorGroup::HighlightedText : QColorGroup::Foreground ) ); 251 QColorGroup::HighlightedText : QColorGroup::Foreground ) );
252 p->drawText( x, yPos, text() ); 252 p->drawText( x, yPos, text() );
253 if ( mIncidence->cancelled() ) { 253 if ( mIncidence->cancelled() ) {
254 int wid = fm.width( text() ); 254 int wid = fm.width( text() );
255 p->drawLine( x, yPos- fm.height()/2+3,x+wid, yPos- fm.height()/2 +3); 255 p->drawLine( x, yPos- fm.height()/2+3,x+wid, yPos- fm.height()/2 +3);
256 } 256 }
257 257
258} 258}
259 259
260int MonthViewItem::height(const QListBox *lb) const 260int MonthViewItem::height(const QListBox *lb) const
261{ 261{
262 return lb->fontMetrics().lineSpacing()+1; 262 return lb->fontMetrics().lineSpacing()+1;
263} 263}
264 264
265int MonthViewItem::width(const QListBox *lb) const 265int MonthViewItem::width(const QListBox *lb) const
266{ 266{
267 int size = PIXMAP_SIZE; 267 int size = PIXMAP_SIZE;
268 if ( QApplication::desktop()->width() < 300 ) 268 if ( QApplication::desktop()->width() < 300 )
269 size = 3; 269 size = 3;
270 int x = 1; 270 int x = 1;
271 if ( mInfo ) { 271 if ( mInfo ) {
272 x += size + 1; 272 x += size + 1;
273 } 273 }
274 if( mRecur ) { 274 if( mRecur ) {
275 x += size+1; 275 x += size+1;
276 } 276 }
277 if( mAlarm ) { 277 if( mAlarm ) {
278 x += size+1; 278 x += size+1;
279 } 279 }
280 if( mReply ) { 280 if( mReply ) {
281 x += size+1; 281 x += size+1;
282 } 282 }
283 283
284 return( x + lb->fontMetrics().width( text() ) + 1 ); 284 return( x + lb->fontMetrics().width( text() ) + 1 );
285} 285}
286 286
287 287
288MonthViewCell::MonthViewCell( KOMonthView *parent,QWidget* par ) 288MonthViewCell::MonthViewCell( KOMonthView *parent,QWidget* par )
289 : QWidget( par ), 289 : QWidget( par ),
290 mMonthView( parent ) 290 mMonthView( parent )
291{ 291{
292 292
293 QVBoxLayout *topLayout = new QVBoxLayout( this ); 293 QVBoxLayout *topLayout = new QVBoxLayout( this );
294 294
295 // mLabel = new QLabel( this );QPushButton 295 // mLabel = new QLabel( this );QPushButton
296 mLabel = new QPushButton( this ); 296 mLabel = new QPushButton( this );
297 //mLabel->setFrameStyle( QFrame::Panel | QFrame::Plain ); 297 //mLabel->setFrameStyle( QFrame::Panel | QFrame::Plain );
298 //mLabel->setLineWidth( 1 ); 298 //mLabel->setLineWidth( 1 );
299 //mLabel->setAlignment( AlignCenter ); 299 //mLabel->setAlignment( AlignCenter );
300 mLabel->setFlat( true ); 300 mLabel->setFlat( true );
301 mLabel->setFocusPolicy(NoFocus); 301 mLabel->setFocusPolicy(NoFocus);
302 mItemList = new KNoScrollListBox( this ); 302 mItemList = new KNoScrollListBox( this );
303 mItemList->setMinimumSize( 10, 10 ); 303 mItemList->setMinimumSize( 10, 10 );
304 mItemList->setFrameStyle( QFrame::Panel | QFrame::Plain ); 304 mItemList->setFrameStyle( QFrame::Panel | QFrame::Plain );
305 mItemList->setLineWidth( 1 ); 305 mItemList->setLineWidth( 1 );
306 topLayout->addWidget( mItemList ); 306 topLayout->addWidget( mItemList );
307 mLabel->raise(); 307 mLabel->raise();
308 // QColor( 0,0,255 ) QColor( 160,1600,255 ) 308 // QColor( 0,0,255 ) QColor( 160,1600,255 )
309 mStandardPalette = palette(); 309 mStandardPalette = palette();
310 mStandardPalette.setColor(QColorGroup::Base, mStandardPalette.color( QPalette::Normal, QColorGroup::Background ) ); 310 mStandardPalette.setColor(QColorGroup::Base, mStandardPalette.color( QPalette::Normal, QColorGroup::Background ) );
311 311
312 enableScrollBars( false ); 312 enableScrollBars( false );
313 updateConfig(); 313 updateConfig();
314 //connect( mLabel, SIGNAL( clicked( )), SLOT( newEvent() )); 314 //connect( mLabel, SIGNAL( clicked( )), SLOT( newEvent() ));
315 connect( mLabel, SIGNAL( clicked( )), SLOT( showDay() )); 315 connect( mLabel, SIGNAL( clicked( )), SLOT( showDay() ));
316 connect( mItemList, SIGNAL( doubleClicked( QListBoxItem *) ), 316 connect( mItemList, SIGNAL( doubleClicked( QListBoxItem *) ),
317 SLOT( defaultAction( QListBoxItem * ) ) ); 317 SLOT( defaultAction( QListBoxItem * ) ) );
318 connect( mItemList, SIGNAL( rightButtonPressed( QListBoxItem *, 318 connect( mItemList, SIGNAL( rightButtonPressed( QListBoxItem *,
319 const QPoint &) ), 319 const QPoint &) ),
320 SLOT( contextMenu( QListBoxItem * ) ) ); 320 SLOT( contextMenu( QListBoxItem * ) ) );
321 connect( mItemList, SIGNAL( highlighted( QListBoxItem *) ), 321 connect( mItemList, SIGNAL( highlighted( QListBoxItem *) ),
322 SLOT( selection( QListBoxItem * ) ) ); 322 SLOT( selection( QListBoxItem * ) ) );
323 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ), 323 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ),
324 SLOT( cellClicked( QListBoxItem * ) ) ); 324 SLOT( cellClicked( QListBoxItem * ) ) );
325 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ), 325 connect( mItemList, SIGNAL( clicked( QListBoxItem * ) ),
326 SLOT( selection( QListBoxItem * ) ) ); 326 SLOT( selection( QListBoxItem * ) ) );
327} 327}
328#ifdef DESKTOP_VERSION 328#ifdef DESKTOP_VERSION
329QToolTipGroup *MonthViewCell::toolTipGroup() 329QToolTipGroup *MonthViewCell::toolTipGroup()
330{ 330{
331 if (!mToolTipGroup) mToolTipGroup = new QToolTipGroup(0); 331 if (!mToolTipGroup) mToolTipGroup = new QToolTipGroup(0);
332 return mToolTipGroup; 332 return mToolTipGroup;
333} 333}
334#endif 334#endif
335 335
336void MonthViewCell::setDate( const QDate &date ) 336void MonthViewCell::setDate( const QDate &date )
337{ 337{
338 // kdDebug() << "MonthViewCell::setDate(): " << date.toString() << endl; 338 // kdDebug() << "MonthViewCell::setDate(): " << date.toString() << endl;
339 mDate = date; 339 mDate = date;
340 340
341 341
342 342
343 //resizeEvent( 0 ); 343 //resizeEvent( 0 );
344} 344}
345 345
346QDate MonthViewCell::date() const 346QDate MonthViewCell::date() const
347{ 347{
348 return mDate; 348 return mDate;
349} 349}
350 350
351void MonthViewCell::setPrimary( bool primary ) 351void MonthViewCell::setPrimary( bool primary )
352{ 352{
353 mPrimary = primary; 353 mPrimary = primary;
354 //setMyPalette(); 354 //setMyPalette();
355} 355}
356void MonthViewCell::setMyPalette() 356void MonthViewCell::setMyPalette()
357{ 357{
358 358
359 if ( mHoliday) { 359 if ( mHoliday) {
360 setPalette( mHolidayPalette ); 360 setPalette( mHolidayPalette );
361 } else { 361 } else {
362 if ( mPrimary ) { 362 if ( mPrimary ) {
363 setPalette( mPrimaryPalette ); 363 setPalette( mPrimaryPalette );
364 } else { 364 } else {
365 setPalette( mNonPrimaryPalette ); 365 setPalette( mNonPrimaryPalette );
366 } 366 }
367 } 367 }
368 QPalette pal = palette(); 368 QPalette pal = palette();
369 369
370 mLabel->setPalette( QPalette ( pal.color( QPalette::Normal,QColorGroup::Base),pal.color(QPalette::Normal,QColorGroup::Base ) )); 370 mLabel->setPalette( QPalette ( pal.color( QPalette::Normal,QColorGroup::Base),pal.color(QPalette::Normal,QColorGroup::Base ) ));
371} 371}
372QPalette MonthViewCell::getPalette () 372QPalette MonthViewCell::getPalette ()
373{ 373{
374 if ( !KOPrefs::instance()->mMonthViewUsesDayColors ) 374 if ( !KOPrefs::instance()->mMonthViewUsesDayColors )
375 return mStandardPalette; 375 return mStandardPalette;
376 if ( mHoliday) { 376 if ( mHoliday) {
377 return mHolidayPalette ; 377 return mHolidayPalette ;
378 } else { 378 } else {
379 if ( mPrimary ) { 379 if ( mPrimary ) {
380 return mPrimaryPalette ; 380 return mPrimaryPalette ;
381 } 381 }
382 } 382 }
383 return mNonPrimaryPalette; 383 return mNonPrimaryPalette;
384} 384}
385bool MonthViewCell::isPrimary() const 385bool MonthViewCell::isPrimary() const
386{ 386{
387 return mPrimary; 387 return mPrimary;
388} 388}
389 389
390void MonthViewCell::setHoliday( bool holiday ) 390void MonthViewCell::setHoliday( bool holiday )
391{ 391{
392 mHoliday = holiday; 392 mHoliday = holiday;
393 //setMyPalette(); 393 //setMyPalette();
394} 394}
395 395
396void MonthViewCell::setHoliday( const QString &holiday ) 396void MonthViewCell::setHoliday( const QString &holiday )
397{ 397{
398 mHolidayString = holiday; 398 mHolidayString = holiday;
399 399
400 if ( !holiday.isEmpty() ) { 400 if ( !holiday.isEmpty() ) {
401 setHoliday( true ); 401 setHoliday( true );
402 } 402 }
403} 403}
404void MonthViewCell::keyPressEvent ( QKeyEvent * e ) 404void MonthViewCell::keyPressEvent ( QKeyEvent * e )
405{ 405{
406 406
407 e->ignore(); 407 e->ignore();
408 408
409} 409}
410 410
411void MonthViewCell::startUpdateCell() 411void MonthViewCell::startUpdateCell()
412{ 412{
413 413
414 mItemList->setFocusPolicy(NoFocus); 414 mItemList->setFocusPolicy(NoFocus);
415 if ( !mMonthView->isUpdatePossible() ) 415 if ( !mMonthView->isUpdatePossible() )
416 return; 416 return;
417 417
418 /* 418 /*
419 if ( !isVisible() ){ 419 if ( !isVisible() ){
420 return; 420 return;
421 } 421 }
422 */ 422 */
423 // qDebug("MonthViewCell::updateCell() "); 423 // qDebug("MonthViewCell::updateCell() ");
424 setPrimary( mDate.month()%2 ); 424 setPrimary( mDate.month()%2 );
425 setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays); 425 setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays);
426 if ( mDate == QDate::currentDate() ) { 426 if ( mDate == QDate::currentDate() ) {
427 mItemList->setLineWidth( 3 ); 427 mItemList->setLineWidth( 3 );
428 } else { 428 } else {
429 mItemList->setLineWidth( 1 ); 429 mItemList->setLineWidth( 1 );
430 } 430 }
431 mItemList->clear(); 431 mItemList->clear();
432 432
433#ifdef DESKTOP_VERSION 433#ifdef DESKTOP_VERSION
434 QToolTip::remove(this); 434 QToolTip::remove(this);
435#endif 435#endif
436 mToolTip = ""; 436 mToolTip = "";
437 //qApp->processEvents(); 437 //qApp->processEvents();
438 if ( !mHolidayString.isEmpty() ) { 438 if ( !mHolidayString.isEmpty() ) {
439 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString ); 439 MonthViewItem *item = new MonthViewItem( 0, mDate, mHolidayString );
440 item->setPalette( mHolidayPalette ); 440 item->setPalette( mHolidayPalette );
441 mItemList->insertItem( item ); 441 mItemList->insertItem( item );
442 mToolTip += mHolidayString+"\n"; 442 mToolTip += mHolidayString+"\n";
443 } 443 }
444} 444}
445 445
446void MonthViewCell::insertEvent(Event *event) 446void MonthViewCell::insertEvent(Event *event)
447{ 447{
448 448
449 mItemList->setFocusPolicy(WheelFocus); 449 mItemList->setFocusPolicy(WheelFocus);
450 if ( !(event->doesRecur() == Recurrence::rNone) ) { 450 if ( !(event->doesRecur() == Recurrence::rNone) ) {
451 if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily ) 451 if ( !KOPrefs::instance()->mMonthDailyRecur && event->doesRecur() == Recurrence::rDaily )
452 return; 452 return;
453 else 453 else
454 if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly ) 454 if ( !KOPrefs::instance()->mMonthWeeklyRecur && event->doesRecur() == Recurrence::rWeekly )
455 return; 455 return;
456 } 456 }
457 457
458 if ( event->categories().contains("Holiday") || 458 if ( event->categories().contains("Holiday") ||
459 event->categories().contains(i18n("Holiday"))) { 459 event->categories().contains(i18n("Holiday"))) {
460 setHoliday( true ); 460 setHoliday( true );
461 if ( mDate.dayOfWeek() == 7 ) 461 if ( mDate.dayOfWeek() == 7 )
462 mItemList->setLineWidth( 3 ); 462 mItemList->setLineWidth( 3 );
463 } 463 }
464 QString text; 464 QString text;
465 if (event->isMultiDay()) { 465 if (event->isMultiDay()) {
466 QString prefix = "<->"; 466 QString prefix = "<->";
467 if ( event->doesRecur() ) { 467 if ( event->doesRecur() ) {
468 if ( event->recursOn( mDate) ) 468 if ( event->recursOn( mDate) )
469 prefix ="->" ; 469 prefix ="->" ;
470 else { 470 else {
471 int days = event->dtStart().date().daysTo ( event->dtEnd().date() ); 471 int days = event->dtStart().date().daysTo ( event->dtEnd().date() );
472 if ( event->recursOn( mDate.addDays( -days)) ) 472 if ( event->recursOn( mDate.addDays( -days)) )
473 prefix ="<-" ; 473 prefix ="<-" ;
474 } 474 }
475 475
476 } else { 476 } else {
477 if (mDate == event->dtStart().date()) { 477 if (mDate == event->dtStart().date()) {
478 prefix ="->" ; 478 prefix ="->" ;
479 } else if (mDate == event->dtEnd().date()) { 479 } else if (mDate == event->dtEnd().date()) {
480 prefix ="<-" ; 480 prefix ="<-" ;
481 } 481 }
482 } 482 }
483 if ( !event->doesFloat() ) { 483 if ( !event->doesFloat() ) {
484 if ( mDate == event->dtStart().date () ) 484 if ( mDate == event->dtStart().date () )
485 prefix += KGlobal::locale()->formatTime(event->dtStart().time())+" "; 485 prefix += KGlobal::locale()->formatTime(event->dtStart().time())+" ";
486 else if ( mDate == event->dtEnd().date () ) 486 else if ( mDate == event->dtEnd().date () )
487 prefix += KGlobal::locale()->formatTime(event->dtEnd().time())+" "; 487 prefix += KGlobal::locale()->formatTime(event->dtEnd().time())+" ";
488 488
489 } 489 }
490 text = prefix + event->summary(); 490 text = prefix + event->summary();
491 mToolTip += text; 491 mToolTip += text;
492 } else { 492 } else {
493 if (event->doesFloat()) { 493 if (event->doesFloat()) {
494 text = event->summary(); 494 text = event->summary();
495 mToolTip += text; 495 mToolTip += text;
496 } 496 }
497 else { 497 else {
498 text = KGlobal::locale()->formatTime(event->dtStart().time()); 498 text = KGlobal::locale()->formatTime(event->dtStart().time());
499 text += " " + event->summary(); 499 text += " " + event->summary();
500 mToolTip += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary(); 500 mToolTip += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary();
501 } 501 }
502 } 502 }
503 503
504 MonthViewItem *item = new MonthViewItem( event, mDate, text ); 504 MonthViewItem *item = new MonthViewItem( event, mDate, text );
505 QPalette pal; 505 QPalette pal;
506 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 506 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
507 QStringList categories = event->categories(); 507 QStringList categories = event->categories();
508 QString cat = categories.first(); 508 QString cat = categories.first();
509 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 509 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
510 pal = getPalette(); 510 pal = getPalette();
511 if (cat.isEmpty()) { 511 if (cat.isEmpty()) {
512 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); 512 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
513 } else { 513 } else {
514 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); 514 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
515 } 515 }
516 516
517 } else { 517 } else {
518 if (cat.isEmpty()) { 518 if (cat.isEmpty()) {
519 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); 519 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
520 } else { 520 } else {
521 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); 521 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
522 } 522 }
523 } 523 }
524 524
525 } else { 525 } else {
526 pal = mStandardPalette ; 526 pal = mStandardPalette ;
527 } 527 }
528 item->setPalette( pal ); 528 item->setPalette( pal );
529 item->setRecur( event->recurrence()->doesRecur() ); 529 item->setRecur( event->recurrence()->doesRecur() );
530 item->setAlarm( event->isAlarmEnabled() ); 530 item->setAlarm( event->isAlarmEnabled() );
531 item->setMoreInfo( event->description().length() > 0 ); 531 item->setMoreInfo( event->description().length() > 0 );
532#ifdef DESKTOP_VERSION 532#ifdef DESKTOP_VERSION
533 Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails, 533 Attendee *me = event->attendeeByMails(KOPrefs::instance()->mAdditionalMails,
534 KOPrefs::instance()->email()); 534 KOPrefs::instance()->email());
535 if ( me != 0 ) { 535 if ( me != 0 ) {
536 if ( me->status() == Attendee::NeedsAction && me->RSVP()) 536 if ( me->status() == Attendee::NeedsAction && me->RSVP())
537 item->setReply(true); 537 item->setReply(true);
538 else 538 else
539 item->setReply(false); 539 item->setReply(false);
540 } else 540 } else
541 item->setReply(false); 541 item->setReply(false);
542#endif 542#endif
543 mItemList->insertItem( item ); 543 mItemList->insertItem( item );
544 mToolTip += "\n"; 544 mToolTip += "\n";
545} 545}
546void MonthViewCell::insertTodo(Todo *todo) 546void MonthViewCell::insertTodo(Todo *todo)
547{ 547{
548 mItemList->setFocusPolicy(WheelFocus); 548 mItemList->setFocusPolicy(WheelFocus);
549 QString text; 549 QString text;
550 if (todo->hasDueDate()) { 550 if (todo->hasDueDate()) {
551 if (!todo->doesFloat()) { 551 if (!todo->doesFloat()) {
552 text += KGlobal::locale()->formatTime(todo->dtDue().time()); 552 text += KGlobal::locale()->formatTime(todo->dtDue().time());
553 text += " "; 553 text += " ";
554 } 554 }
555 } 555 }
556 text += i18n("Td: %1").arg(todo->summary()); 556 text += i18n("T: %1").arg(todo->summary());
557 557
558 MonthViewItem *item = new MonthViewItem( todo, mDate, text ); 558 MonthViewItem *item = new MonthViewItem( todo, mDate, text );
559 //item->setPalette( mStandardPalette ); 559 //item->setPalette( mStandardPalette );
560 QPalette pal; 560 QPalette pal;
561 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) { 561 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) {
562 QStringList categories = todo->categories(); 562 QStringList categories = todo->categories();
563 QString cat = categories.first(); 563 QString cat = categories.first();
564 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) { 564 if ( KOPrefs::instance()->mMonthViewUsesForegroundColor ) {
565 pal = getPalette(); 565 pal = getPalette();
566 if (cat.isEmpty()) { 566 if (cat.isEmpty()) {
567 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor); 567 pal.setColor(QColorGroup::Foreground,KOPrefs::instance()->mEventColor);
568 } else { 568 } else {
569 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat))); 569 pal.setColor(QColorGroup::Foreground, *(KOPrefs::instance()->categoryColor(cat)));
570 } 570 }
571 571
572 } else { 572 } else {
573 if (cat.isEmpty()) { 573 if (cat.isEmpty()) {
574 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor); 574 pal = QPalette(KOPrefs::instance()->mEventColor, KOPrefs::instance()->mEventColor);
575 } else { 575 } else {
576 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat))); 576 pal = QPalette(*(KOPrefs::instance()->categoryColor(cat)), *(KOPrefs::instance()->categoryColor(cat)));
577 } 577 }
578 } 578 }
579 579
580 } else { 580 } else {
581 pal = mStandardPalette ; 581 pal = mStandardPalette ;
582 } 582 }
583 item->setPalette( pal ); 583 item->setPalette( pal );
584 mItemList->insertItem( item ); 584 mItemList->insertItem( item );
585 mToolTip += text+"\n"; 585 mToolTip += text+"\n";
586} 586}
587void MonthViewCell::finishUpdateCell() 587void MonthViewCell::finishUpdateCell()
588{ 588{
589#ifdef DESKTOP_VERSION 589#ifdef DESKTOP_VERSION
590 if (mToolTip != "") 590 if (mToolTip != "")
591 QToolTip::add(this,mToolTip,toolTipGroup(),""); 591 QToolTip::add(this,mToolTip,toolTipGroup(),"");
592#endif 592#endif
593 mItemList->sort(); 593 mItemList->sort();
594 //setMyPalette(); 594 //setMyPalette();
595 setMyPalette(); 595 setMyPalette();
596 QString text; 596 QString text;
597 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog; 597 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog;
598 if ( KOPrefs::instance()->mMonthViewWeek || KOGlobals::self()->calendarSystem()->day( mDate ) == 1 || (mDate.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) { 598 if ( KOPrefs::instance()->mMonthViewWeek || KOGlobals::self()->calendarSystem()->day( mDate ) == 1 || (mDate.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) {
599 text = KOGlobals::self()->calendarSystem()->monthName( mDate, true ) + " "; 599 text = KOGlobals::self()->calendarSystem()->monthName( mDate, true ) + " ";
600 mLabel->resize( mLabelBigSize ); 600 mLabel->resize( mLabelBigSize );
601 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) ); 601 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) );
602 } else { 602 } else {
603 mLabel->resize( mLabelSize ); 603 mLabel->resize( mLabelSize );
604 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) ); 604 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) );
605 } 605 }
606 606
607 mLabel->setText( text ); 607 mLabel->setText( text );
608 resizeEvent( 0 ); 608 resizeEvent( 0 );
609} 609}
610void MonthViewCell::updateCell() 610void MonthViewCell::updateCell()
611{ 611{
612 qDebug("MonthViewCell::updateCell() "); 612 qDebug("MonthViewCell::updateCell() ");
613 if ( !mMonthView->isUpdatePossible() ) 613 if ( !mMonthView->isUpdatePossible() )
614 return; 614 return;
615 startUpdateCell(); 615 startUpdateCell();
616 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2); 616 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
617 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true ); 617 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true );
618 Event *event; 618 Event *event;
619 for( event = events.first(); event; event = events.next() ) { // for event 619 for( event = events.first(); event; event = events.next() ) { // for event
620 insertEvent(event); 620 insertEvent(event);
621 } 621 }
622 // insert due todos 622 // insert due todos
623 QPtrList<Todo> todos = mMonthView->calendar()->todos( mDate ); 623 QPtrList<Todo> todos = mMonthView->calendar()->todos( mDate );
624 Todo *todo; 624 Todo *todo;
625 for(todo = todos.first(); todo; todo = todos.next()) { 625 for(todo = todos.first(); todo; todo = todos.next()) {
626 insertTodo( todo ); 626 insertTodo( todo );
627 } 627 }
628 finishUpdateCell(); 628 finishUpdateCell();
629 // if ( isVisible()) 629 // if ( isVisible())
630 //qApp->processEvents(); 630 //qApp->processEvents();
631} 631}
632 632
633void MonthViewCell::updateConfig( bool bigFont ) // = false 633void MonthViewCell::updateConfig( bool bigFont ) // = false
634{ 634{
635 635
636 if ( bigFont ) { 636 if ( bigFont ) {
637 QFont fo = KOPrefs::instance()->mMonthViewFont; 637 QFont fo = KOPrefs::instance()->mMonthViewFont;
638 int ps = fo.pointSize() + 2; 638 int ps = fo.pointSize() + 2;
639 if ( ps < 18 ) 639 if ( ps < 18 )
640 ps += 2; 640 ps += 2;
641 fo.setPointSize( ps ); 641 fo.setPointSize( ps );
642 setFont( fo ); 642 setFont( fo );
643 } else 643 } else
644 setFont( KOPrefs::instance()->mMonthViewFont ); 644 setFont( KOPrefs::instance()->mMonthViewFont );
645 645
646 QFontMetrics fm( font() ); 646 QFontMetrics fm( font() );
647 mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 ); 647 mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 );
648 mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 ); 648 mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 );
649 mHolidayPalette = mStandardPalette; 649 mHolidayPalette = mStandardPalette;
650 mPrimaryPalette = mStandardPalette; 650 mPrimaryPalette = mStandardPalette;
651 mNonPrimaryPalette = mStandardPalette; 651 mNonPrimaryPalette = mStandardPalette;
652 if ( KOPrefs::instance()->mMonthViewUsesDayColors ) { 652 if ( KOPrefs::instance()->mMonthViewUsesDayColors ) {
653 mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor ); 653 mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor );
654 mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor ); 654 mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor );
655 mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark()); 655 mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark());
656 mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark()); 656 mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark());
657 mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor); 657 mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor);
658 mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor); 658 mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor);
659 mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark()); 659 mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark());
660 mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor); 660 mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor);
661 mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor); 661 mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor);
662 } 662 }
663 //updateCell(); 663 //updateCell();
664} 664}
665 665
666void MonthViewCell::enableScrollBars( bool enabled ) 666void MonthViewCell::enableScrollBars( bool enabled )
667{ 667{
668 if ( enabled ) { 668 if ( enabled ) {
669 mItemList->setVScrollBarMode(QScrollView::Auto); 669 mItemList->setVScrollBarMode(QScrollView::Auto);
670 mItemList->setHScrollBarMode(QScrollView::Auto); 670 mItemList->setHScrollBarMode(QScrollView::Auto);
671 } else { 671 } else {
672 mItemList->setVScrollBarMode(QScrollView::AlwaysOff); 672 mItemList->setVScrollBarMode(QScrollView::AlwaysOff);
673 mItemList->setHScrollBarMode(QScrollView::AlwaysOff); 673 mItemList->setHScrollBarMode(QScrollView::AlwaysOff);
674 } 674 }
675} 675}
676 676
677Incidence *MonthViewCell::selectedIncidence() 677Incidence *MonthViewCell::selectedIncidence()
678{ 678{
679 int index = mItemList->currentItem(); 679 int index = mItemList->currentItem();
680 if ( index < 0 ) return 0; 680 if ( index < 0 ) return 0;
681 681
682 MonthViewItem *item = 682 MonthViewItem *item =
683 static_cast<MonthViewItem *>( mItemList->item( index ) ); 683 static_cast<MonthViewItem *>( mItemList->item( index ) );
684 684
685 if ( !item ) return 0; 685 if ( !item ) return 0;
686 686
687 return item->incidence(); 687 return item->incidence();
688} 688}
689 689
690QDate MonthViewCell::selectedIncidenceDate() 690QDate MonthViewCell::selectedIncidenceDate()
691{ 691{
692 QDate qd; 692 QDate qd;
693 int index = mItemList->currentItem(); 693 int index = mItemList->currentItem();
694 if ( index < 0 ) return qd; 694 if ( index < 0 ) return qd;
695 695
696 MonthViewItem *item = 696 MonthViewItem *item =
697 static_cast<MonthViewItem *>( mItemList->item( index ) ); 697 static_cast<MonthViewItem *>( mItemList->item( index ) );
698 698
699 if ( !item ) return qd; 699 if ( !item ) return qd;
700 700
701 return item->incidenceDate(); 701 return item->incidenceDate();
702} 702}
703 703
704void MonthViewCell::deselect() 704void MonthViewCell::deselect()
705{ 705{
706 mItemList->clearSelection(); 706 mItemList->clearSelection();
707 enableScrollBars( false ); 707 enableScrollBars( false );
708 // updateCell(); 708 // updateCell();
709} 709}
710void MonthViewCell::select() 710void MonthViewCell::select()
711{ 711{
712 ;// updateCell(); 712 ;// updateCell();
713} 713}
714 714
715void MonthViewCell::resizeEvent ( QResizeEvent * ) 715void MonthViewCell::resizeEvent ( QResizeEvent * )
716{ 716{
717 if ( !mMonthView->isUpdatePossible() ) 717 if ( !mMonthView->isUpdatePossible() )
718 return; 718 return;
719 719
720 int size = height() - mLabel->height() - 2; 720 int size = height() - mLabel->height() - 2;
721 if ( size > 0 ) 721 if ( size > 0 )
722 mItemList->verticalScrollBar()->setMaximumHeight( size ); 722 mItemList->verticalScrollBar()->setMaximumHeight( size );
723 size = width() - mLabel->width() -2; 723 size = width() - mLabel->width() -2;
724 if ( size > 0 ) 724 if ( size > 0 )
725 mItemList->horizontalScrollBar()->setMaximumWidth( size ); 725 mItemList->horizontalScrollBar()->setMaximumWidth( size );
726 mLabel->move( width()-mItemList->lineWidth() - mLabel->width(), height()-mItemList->lineWidth() - mLabel->height() ); 726 mLabel->move( width()-mItemList->lineWidth() - mLabel->width(), height()-mItemList->lineWidth() - mLabel->height() );
727 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2); 727 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
728} 728}
729 729
730void MonthViewCell::defaultAction( QListBoxItem *item ) 730void MonthViewCell::defaultAction( QListBoxItem *item )
731{ 731{
732 if ( !item ) return; 732 if ( !item ) return;
733 733
734 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item ); 734 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
735 Incidence *incidence = eventItem->incidence(); 735 Incidence *incidence = eventItem->incidence();
736 if ( incidence ) mMonthView->defaultAction( incidence ); 736 if ( incidence ) mMonthView->defaultAction( incidence );
737} 737}
738void MonthViewCell::showDay() 738void MonthViewCell::showDay()
739{ 739{
740 emit showDaySignal( date() ); 740 emit showDaySignal( date() );
741} 741}
742void MonthViewCell::newEvent() 742void MonthViewCell::newEvent()
743{ 743{
744 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) ); 744 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
745 emit newEventSignal( dt ); 745 emit newEventSignal( dt );
746} 746}
747void MonthViewCell::cellClicked( QListBoxItem *item ) 747void MonthViewCell::cellClicked( QListBoxItem *item )
748{ 748{
749 static QListBoxItem * lastClicked = 0; 749 static QListBoxItem * lastClicked = 0;
750 if ( item == 0 ) { 750 if ( item == 0 ) {
751 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) ); 751 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
752 emit newEventSignal( dt ); 752 emit newEventSignal( dt );
753 return; 753 return;
754 } 754 }
755 /* 755 /*
756 if ( lastClicked ) 756 if ( lastClicked )
757 if ( ! item ) { 757 if ( ! item ) {
758 if ( lastClicked->listBox() != item->listBox() ) 758 if ( lastClicked->listBox() != item->listBox() )
759 lastClicked->listBox()->clearSelection(); 759 lastClicked->listBox()->clearSelection();
760 } 760 }
761 */ 761 */
762 762
763 mMonthView->setSelectedCell( this ); 763 mMonthView->setSelectedCell( this );
764 if( KOPrefs::instance()->mEnableMonthScroll || KOPrefs::instance()->mMonthViewWeek ) enableScrollBars( true ); 764 if( KOPrefs::instance()->mEnableMonthScroll || KOPrefs::instance()->mMonthViewWeek ) enableScrollBars( true );
765 select(); 765 select();
766} 766}
767 767
768void MonthViewCell::contextMenu( QListBoxItem *item ) 768void MonthViewCell::contextMenu( QListBoxItem *item )
769{ 769{
770 if ( !item ) return; 770 if ( !item ) return;
771 771
772 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item ); 772 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
773 Incidence *incidence = eventItem->incidence(); 773 Incidence *incidence = eventItem->incidence();
774 if ( incidence ) mMonthView->showContextMenu( incidence ); 774 if ( incidence ) mMonthView->showContextMenu( incidence );
775} 775}
776 776
777void MonthViewCell::selection( QListBoxItem *item ) 777void MonthViewCell::selection( QListBoxItem *item )
778{ 778{
779 if ( !item ) return; 779 if ( !item ) return;
780 780
781 mMonthView->setSelectedCell( this ); 781 mMonthView->setSelectedCell( this );
782} 782}
783 783
784 784
785// ******************************************************************************* 785// *******************************************************************************
786// ******************************************************************************* 786// *******************************************************************************
787// ******************************************************************************* 787// *******************************************************************************
788 788
789 789
790KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name) 790KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
791 : KOEventView( calendar, parent, name ), 791 : KOEventView( calendar, parent, name ),
792 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ), 792 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ),
793 mWidthLongDayLabel( 0 ), mSelectedCell( 0 ) 793 mWidthLongDayLabel( 0 ), mSelectedCell( 0 )
794{ 794{
795 mShortDayLabelsM = false; 795 mShortDayLabelsM = false;
796 mShortDayLabelsW = false; 796 mShortDayLabelsW = false;
797 skipResize = false; 797 skipResize = false;
798 clPending = true; 798 clPending = true;
799 mNavigatorBar = new NavigatorBar( QDate::currentDate(), this, "useBigPixmaps" ); 799 mNavigatorBar = new NavigatorBar( QDate::currentDate(), this, "useBigPixmaps" );
800 mWidStack = new QWidgetStack( this ); 800 mWidStack = new QWidgetStack( this );
801 QVBoxLayout* hb = new QVBoxLayout( this ); 801 QVBoxLayout* hb = new QVBoxLayout( this );
802 mMonthView = new QWidget( mWidStack ); 802 mMonthView = new QWidget( mWidStack );
803 mWeekView = new QWidget( mWidStack ); 803 mWeekView = new QWidget( mWidStack );
804#if QT_VERSION >= 0x030000 804#if QT_VERSION >= 0x030000
805 mWidStack->addWidget(mMonthView ); 805 mWidStack->addWidget(mMonthView );
806 mWidStack->addWidget(mWeekView ); 806 mWidStack->addWidget(mWeekView );
807#else 807#else
808 mWidStack->addWidget( mMonthView, 1 ); 808 mWidStack->addWidget( mMonthView, 1 );
809 mWidStack->addWidget( mWeekView , 1 ); 809 mWidStack->addWidget( mWeekView , 1 );
810#endif 810#endif
811 hb->addWidget( mNavigatorBar ); 811 hb->addWidget( mNavigatorBar );
812 hb->addWidget( mWidStack ); 812 hb->addWidget( mWidStack );
813 mWeekStartsMonday = KGlobal::locale()->weekStartsMonday(); 813 mWeekStartsMonday = KGlobal::locale()->weekStartsMonday();
814 mShowWeekView = KOPrefs::instance()->mMonthViewWeek; 814 mShowWeekView = KOPrefs::instance()->mMonthViewWeek;
815 if ( mShowWeekView ) 815 if ( mShowWeekView )
816 mWeekStartsMonday = true; 816 mWeekStartsMonday = true;
817 updatePossible = false; 817 updatePossible = false;
818 //updatePossible = true; 818 //updatePossible = true;
819 mCells.setAutoDelete( true ); 819 mCells.setAutoDelete( true );
820 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; 820 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
821 mDayLabels.resize( mDaysPerWeek ); 821 mDayLabels.resize( mDaysPerWeek );
822 mDayLabelsW.resize( mDaysPerWeek ); 822 mDayLabelsW.resize( mDaysPerWeek );
823 QFont bfont = font(); 823 QFont bfont = font();
824 if ( QApplication::desktop()->width() < 650 ) { 824 if ( QApplication::desktop()->width() < 650 ) {
825 bfont.setPointSize( bfont.pointSize() - 2 ); 825 bfont.setPointSize( bfont.pointSize() - 2 );
826 } 826 }
827 bfont.setBold( true ); 827 bfont.setBold( true );
828 int i; 828 int i;
829 829
830 for( i = 0; i < mDaysPerWeek; i++ ) { 830 for( i = 0; i < mDaysPerWeek; i++ ) {
831 QLabel *label = new QLabel( mMonthView ); 831 QLabel *label = new QLabel( mMonthView );
832 label->setFont(bfont); 832 label->setFont(bfont);
833 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 833 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
834 label->setLineWidth(1); 834 label->setLineWidth(1);
835 label->setAlignment(AlignCenter); 835 label->setAlignment(AlignCenter);
836 mDayLabels.insert( i, label ); 836 mDayLabels.insert( i, label );
837 label = new QLabel( mWeekView ); 837 label = new QLabel( mWeekView );
838 label->setFont(bfont); 838 label->setFont(bfont);
839 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 839 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
840 label->setLineWidth(1); 840 label->setLineWidth(1);
841 label->setAlignment(AlignCenter); 841 label->setAlignment(AlignCenter);
842 mDayLabelsW.insert( i, label ); 842 mDayLabelsW.insert( i, label );
843 } 843 }
844 844
845 bfont.setBold( false ); 845 bfont.setBold( false );
846 mWeekLabels.resize( mNumWeeks+1 ); 846 mWeekLabels.resize( mNumWeeks+1 );
847 mWeekLabelsW.resize( 2 ); 847 mWeekLabelsW.resize( 2 );
848 for( i = 0; i < mNumWeeks+1; i++ ) { 848 for( i = 0; i < mNumWeeks+1; i++ ) {
849 KOWeekButton *label = new KOWeekButton( mMonthView ); 849 KOWeekButton *label = new KOWeekButton( mMonthView );
850 label->setFocusPolicy(NoFocus); 850 label->setFocusPolicy(NoFocus);
851 label->setFont(bfont); 851 label->setFont(bfont);
852 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) ); 852 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) );
853 label->setFlat(true); 853 label->setFlat(true);
854 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed")); 854 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed"));
855 //label->setFrameStyle(QFrame::Panel|QFrame::Raised); 855 //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
856 //label->setLineWidth(1); 856 //label->setLineWidth(1);
857 //label->setAlignment(AlignCenter); 857 //label->setAlignment(AlignCenter);
858 mWeekLabels.insert( i, label ); 858 mWeekLabels.insert( i, label );
859 } 859 }
860 mWeekLabels[mNumWeeks]->setText( i18n("W")); 860 mWeekLabels[mNumWeeks]->setText( i18n("W"));
861 QWhatsThis::add(mWeekLabels[mNumWeeks],i18n("Click on this to\nselect week number")); 861 QWhatsThis::add(mWeekLabels[mNumWeeks],i18n("Click on this to\nselect week number"));
862 862
863 for( i = 0; i < 1+1; i++ ) { 863 for( i = 0; i < 1+1; i++ ) {
864 KOWeekButton *label = new KOWeekButton( mWeekView ); 864 KOWeekButton *label = new KOWeekButton( mWeekView );
865 label->setFocusPolicy(NoFocus); 865 label->setFocusPolicy(NoFocus);
866 label->setFont(bfont); 866 label->setFont(bfont);
867 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) ); 867 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) );
868 label->setFlat(true); 868 label->setFlat(true);
869 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed")); 869 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed"));
870 //label->setFrameStyle(QFrame::Panel|QFrame::Raised); 870 //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
871 //label->setLineWidth(1); 871 //label->setLineWidth(1);
872 //label->setAlignment(AlignCenter); 872 //label->setAlignment(AlignCenter);
873 mWeekLabelsW.insert( i, label ); 873 mWeekLabelsW.insert( i, label );
874 } 874 }
875 mWeekLabelsW[1]->setText( i18n("W")); 875 mWeekLabelsW[1]->setText( i18n("W"));
876 876
877 877
878 int row, col; 878 int row, col;
879 mCells.resize( mNumCells ); 879 mCells.resize( mNumCells );
880 for( row = 0; row < mNumWeeks; ++row ) { 880 for( row = 0; row < mNumWeeks; ++row ) {
881 for( col = 0; col < mDaysPerWeek; ++col ) { 881 for( col = 0; col < mDaysPerWeek; ++col ) {
882 MonthViewCell *cell = new MonthViewCell( this, mMonthView ); 882 MonthViewCell *cell = new MonthViewCell( this, mMonthView );
883 mCells.insert( row * mDaysPerWeek + col, cell ); 883 mCells.insert( row * mDaysPerWeek + col, cell );
884 884
885 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 885 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
886 SLOT( defaultAction( Incidence * ) ) ); 886 SLOT( defaultAction( Incidence * ) ) );
887 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 887 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
888 SIGNAL( newEventSignal( QDateTime ) ) ); 888 SIGNAL( newEventSignal( QDateTime ) ) );
889 connect( cell, SIGNAL( showDaySignal( QDate ) ), 889 connect( cell, SIGNAL( showDaySignal( QDate ) ),
890 SIGNAL( showDaySignal( QDate ) ) ); 890 SIGNAL( showDaySignal( QDate ) ) );
891 } 891 }
892 } 892 }
893 mCellsW.resize( mDaysPerWeek ); 893 mCellsW.resize( mDaysPerWeek );
894 for( col = 0; col < mDaysPerWeek; ++col ) { 894 for( col = 0; col < mDaysPerWeek; ++col ) {
895 MonthViewCell *cell = new MonthViewCell( this, mWeekView ); 895 MonthViewCell *cell = new MonthViewCell( this, mWeekView );
896 mCellsW.insert( col, cell ); 896 mCellsW.insert( col, cell );
897 897
898 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 898 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
899 SLOT( defaultAction( Incidence * ) ) ); 899 SLOT( defaultAction( Incidence * ) ) );
900 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 900 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
901 SIGNAL( newEventSignal( QDateTime ) ) ); 901 SIGNAL( newEventSignal( QDateTime ) ) );
902 connect( cell, SIGNAL( showDaySignal( QDate ) ), 902 connect( cell, SIGNAL( showDaySignal( QDate ) ),
903 SIGNAL( showDaySignal( QDate ) ) ); 903 SIGNAL( showDaySignal( QDate ) ) );
904 cell->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont ); 904 cell->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont );
905 } 905 }
906 906
907 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) ); 907 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) );
908 mContextMenu = eventPopup(); 908 mContextMenu = eventPopup();
909 // updateConfig(); //useless here... 909 // updateConfig(); //useless here...
910 // ... but we need mWidthLongDayLabel computed 910 // ... but we need mWidthLongDayLabel computed
911 QFontMetrics fontmetric(mDayLabels[0]->font()); 911 QFontMetrics fontmetric(mDayLabels[0]->font());
912 mWidthLongDayLabel = 0; 912 mWidthLongDayLabel = 0;
913 for (int i = 0; i < 7; i++) { 913 for (int i = 0; i < 7; i++) {
914 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1)); 914 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1));
915 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width; 915 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width;
916 } 916 }
917 917
918 //mWeekLabels[mNumWeeks]->setText( i18n("W")); 918 //mWeekLabels[mNumWeeks]->setText( i18n("W"));
919 919
920#if 0 920#if 0
921 if ( mShowWeekView ) 921 if ( mShowWeekView )
922 mWidStack->raiseWidget( mWeekView ); 922 mWidStack->raiseWidget( mWeekView );
923 else 923 else
924 mWidStack->raiseWidget( mMonthView ); 924 mWidStack->raiseWidget( mMonthView );
925#endif 925#endif
926 926
927 emit incidenceSelected( 0 ); 927 emit incidenceSelected( 0 );
928#ifndef DESKTOP_VERSION 928#ifndef DESKTOP_VERSION
929 resize( QApplication::desktop()->size() ); 929 resize( QApplication::desktop()->size() );
930#else 930#else
931 resize(640, 480 ); 931 resize(640, 480 );
932 updatePossible = true; 932 updatePossible = true;
933#endif 933#endif
934 computeLayout(); 934 computeLayout();
935 935
936 if ( mShowWeekView ) 936 if ( mShowWeekView )
937 mWidStack->raiseWidget( mWeekView ); 937 mWidStack->raiseWidget( mWeekView );
938 else 938 else
939 mWidStack->raiseWidget( mMonthView ); 939 mWidStack->raiseWidget( mMonthView );
940} 940}
941 941
942KOMonthView::~KOMonthView() 942KOMonthView::~KOMonthView()
943{ 943{
944 delete mContextMenu; 944 delete mContextMenu;
945} 945}
946 946
947void KOMonthView::selectInternalWeekNum ( int n ) 947void KOMonthView::selectInternalWeekNum ( int n )
948{ 948{
949 switchView(); 949 switchView();
950 emit selectWeekNum ( n ); 950 emit selectWeekNum ( n );
951} 951}
952 952
953int KOMonthView::currentWeek() 953int KOMonthView::currentWeek()
954{ 954{
955 if ( mShowWeekView ) 955 if ( mShowWeekView )
956 return mWeekLabelsW[0]->getWeekNum(); 956 return mWeekLabelsW[0]->getWeekNum();
957 return mWeekLabels[0]->getWeekNum(); 957 return mWeekLabels[0]->getWeekNum();
958} 958}
959void KOMonthView::switchView() 959void KOMonthView::switchView()
960{ 960{
961 961
962 if ( selectedCell( ) ) 962 if ( selectedCell( ) )
963 selectedCell()->deselect(); 963 selectedCell()->deselect();
964 mShowWeekView = !mShowWeekView; 964 mShowWeekView = !mShowWeekView;
965 KOPrefs::instance()->mMonthViewWeek = mShowWeekView; 965 KOPrefs::instance()->mMonthViewWeek = mShowWeekView;
966 if ( clPending ) { 966 if ( clPending ) {
967 computeLayout(); 967 computeLayout();
968 updateConfig(); 968 updateConfig();
969 } 969 }
970 if ( mShowWeekView ) 970 if ( mShowWeekView )
971 mWidStack->raiseWidget( mWeekView ); 971 mWidStack->raiseWidget( mWeekView );
972 else 972 else
973 mWidStack->raiseWidget( mMonthView ); 973 mWidStack->raiseWidget( mMonthView );
974 clPending = false; 974 clPending = false;
975} 975}
976 976
977int KOMonthView::maxDatesHint() 977int KOMonthView::maxDatesHint()
978{ 978{
979 return mNumCells; 979 return mNumCells;
980} 980}
981 981
982int KOMonthView::currentDateCount() 982int KOMonthView::currentDateCount()
983{ 983{
984 return mNumCells; 984 return mNumCells;
985} 985}
986 986
987QPtrList<Incidence> KOMonthView::selectedIncidences() 987QPtrList<Incidence> KOMonthView::selectedIncidences()
988{ 988{
989 QPtrList<Incidence> selected; 989 QPtrList<Incidence> selected;
990 990
991 if ( mSelectedCell ) { 991 if ( mSelectedCell ) {
992 Incidence *incidence = mSelectedCell->selectedIncidence(); 992 Incidence *incidence = mSelectedCell->selectedIncidence();
993 if ( incidence ) selected.append( incidence ); 993 if ( incidence ) selected.append( incidence );
994 } 994 }
995 995
996 return selected; 996 return selected;
997} 997}
998 998
999DateList KOMonthView::selectedDates() 999DateList KOMonthView::selectedDates()
1000{ 1000{
1001 DateList selected; 1001 DateList selected;
1002 1002
1003 if ( mSelectedCell ) { 1003 if ( mSelectedCell ) {
1004 QDate qd = mSelectedCell->selectedIncidenceDate(); 1004 QDate qd = mSelectedCell->selectedIncidenceDate();
1005 if ( qd.isValid() ) selected.append( qd ); 1005 if ( qd.isValid() ) selected.append( qd );
1006 } 1006 }
1007 1007
1008 return selected; 1008 return selected;
1009} 1009}
1010 1010
1011void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd, 1011void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd,
1012 const QDate &td) 1012 const QDate &td)
1013{ 1013{
1014#ifndef KORG_NOPRINTER 1014#ifndef KORG_NOPRINTER
1015 calPrinter->preview(CalPrinter::Month, fd, td); 1015 calPrinter->preview(CalPrinter::Month, fd, td);
1016#endif 1016#endif
1017} 1017}
1018 1018
1019void KOMonthView::updateConfig() 1019void KOMonthView::updateConfig()
1020{ 1020{
1021 1021
1022 mWeekStartsMonday = KGlobal::locale()->weekStartsMonday(); 1022 mWeekStartsMonday = KGlobal::locale()->weekStartsMonday();
1023 1023
1024 if ( mShowWeekView ) { 1024 if ( mShowWeekView ) {
1025 mWeekStartsMonday = true; 1025 mWeekStartsMonday = true;
1026 } 1026 }
1027 QFontMetrics fontmetric(mDayLabels[0]->font()); 1027 QFontMetrics fontmetric(mDayLabels[0]->font());
1028 mWidthLongDayLabel = 0; 1028 mWidthLongDayLabel = 0;
1029 1029
1030 for (int i = 0; i < 7; i++) { 1030 for (int i = 0; i < 7; i++) {
1031 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1)); 1031 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1));
1032 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width; 1032 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width;
1033 } 1033 }
1034 bool temp = mShowSatSunComp ; 1034 bool temp = mShowSatSunComp ;
1035 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; 1035 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
1036 if ( ! mShowWeekView ) { 1036 if ( ! mShowWeekView ) {
1037 if ( temp != KOPrefs::instance()->mMonthViewSatSunTog ) 1037 if ( temp != KOPrefs::instance()->mMonthViewSatSunTog )
1038 computeLayout(); 1038 computeLayout();
1039 } 1039 }
1040 updateDayLabels(); 1040 updateDayLabels();
1041 //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks); 1041 //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks);
1042 //int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks; 1042 //int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks;
1043 //resizeEvent( 0 ); 1043 //resizeEvent( 0 );
1044 for (uint i = 0; i < mCells.count(); ++i) { 1044 for (uint i = 0; i < mCells.count(); ++i) {
1045 mCells[i]->updateConfig(); 1045 mCells[i]->updateConfig();
1046 } 1046 }
1047 1047
1048 for (uint i = 0; i < mCellsW.count(); ++i) { 1048 for (uint i = 0; i < mCellsW.count(); ++i) {
1049 mCellsW[i]->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont); 1049 mCellsW[i]->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont);
1050 } 1050 }
1051#ifdef DESKTOP_VERSION 1051#ifdef DESKTOP_VERSION
1052 MonthViewCell::toolTipGroup()->setEnabled(KOPrefs::instance()->mEnableToolTips); 1052 MonthViewCell::toolTipGroup()->setEnabled(KOPrefs::instance()->mEnableToolTips);
1053#endif 1053#endif
1054 updateView(); 1054 updateView();
1055} 1055}
1056 1056
1057void KOMonthView::updateDayLabels() 1057void KOMonthView::updateDayLabels()
1058{ 1058{
1059 1059
1060 QPtrVector<QLabel> *mDayLabelsT; 1060 QPtrVector<QLabel> *mDayLabelsT;
1061 1061
1062 mDayLabelsT = &mDayLabelsW; 1062 mDayLabelsT = &mDayLabelsW;
1063 for (int i = 0; i < 7; i++) { 1063 for (int i = 0; i < 7; i++) {
1064 if (mWeekStartsMonday) { 1064 if (mWeekStartsMonday) {
1065 bool show = mShortDayLabelsW; 1065 bool show = mShortDayLabelsW;
1066 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() ) 1066 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() )
1067 show = true; 1067 show = true;
1068 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show)); 1068 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show));
1069 } else { 1069 } else {
1070 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabelsW)); 1070 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabelsW));
1071 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabelsW)); 1071 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabelsW));
1072 1072
1073 } 1073 }
1074 } 1074 }
1075 mDayLabelsT = &mDayLabels; 1075 mDayLabelsT = &mDayLabels;
1076 for (int i = 0; i < 7; i++) { 1076 for (int i = 0; i < 7; i++) {
1077 if (mWeekStartsMonday) { 1077 if (mWeekStartsMonday) {
1078 bool show = mShortDayLabelsM; 1078 bool show = mShortDayLabelsM;
1079 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() ) 1079 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() )
1080 show = true; 1080 show = true;
1081 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show)); 1081 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show));
1082 } else { 1082 } else {
1083 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabelsM)); 1083 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabelsM));
1084 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabelsM)); 1084 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabelsM));
1085 1085
1086 } 1086 }
1087 } 1087 }
1088 1088
1089} 1089}
1090 1090
1091void KOMonthView::showDates(const QDate &start, const QDate &) 1091void KOMonthView::showDates(const QDate &start, const QDate &)
1092{ 1092{
1093 // kdDebug() << "KOMonthView::showDates(): " << start.toString() << endl; 1093 // kdDebug() << "KOMonthView::showDates(): " << start.toString() << endl;
1094 1094
1095 QPtrVector<MonthViewCell> *cells; 1095 QPtrVector<MonthViewCell> *cells;
1096 QPtrVector<QLabel> *dayLabels; 1096 QPtrVector<QLabel> *dayLabels;
1097 QPtrVector<KOWeekButton> *weekLabels; 1097 QPtrVector<KOWeekButton> *weekLabels;
1098 int weekNum = 6; 1098 int weekNum = 6;
1099 if ( mShowWeekView ) { 1099 if ( mShowWeekView ) {
1100 weekNum = 1; 1100 weekNum = 1;
1101 cells = &mCellsW; 1101 cells = &mCellsW;
1102 dayLabels = &mDayLabelsW; 1102 dayLabels = &mDayLabelsW;
1103 weekLabels = &mWeekLabelsW; 1103 weekLabels = &mWeekLabelsW;
1104 } else { 1104 } else {
1105 cells = &mCells; 1105 cells = &mCells;
1106 dayLabels = &mDayLabels; 1106 dayLabels = &mDayLabels;
1107 weekLabels = &mWeekLabels; 1107 weekLabels = &mWeekLabels;
1108 } 1108 }
1109 1109
1110 mStartDate = start; 1110 mStartDate = start;
1111 1111
1112 int startWeekDay = mWeekStartsMonday ? 1 : 7; 1112 int startWeekDay = mWeekStartsMonday ? 1 : 7;
1113 1113
1114 while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) { 1114 while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) {
1115 mStartDate = mStartDate.addDays( -1 ); 1115 mStartDate = mStartDate.addDays( -1 );
1116 } 1116 }
1117 1117
1118 bool primary = false; 1118 bool primary = false;
1119 uint i; 1119 uint i;
1120 for( i = 0; i < (*cells).size(); ++i ) { 1120 for( i = 0; i < (*cells).size(); ++i ) {
1121 QDate date = mStartDate.addDays( i ); 1121 QDate date = mStartDate.addDays( i );
1122 (*cells)[i]->setDate( date ); 1122 (*cells)[i]->setDate( date );
1123 1123
1124#ifndef KORG_NOPLUGINS 1124#ifndef KORG_NOPLUGINS
1125 // add holiday, if present 1125 // add holiday, if present
1126 QString hstring(KOCore::self()->holiday(date)); 1126 QString hstring(KOCore::self()->holiday(date));
1127 (*cells)[i]->setHoliday( hstring ); 1127 (*cells)[i]->setHoliday( hstring );
1128#endif 1128#endif
1129 1129
1130 } 1130 }
1131 QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 ); 1131 QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 );
1132 for( i = 0; i < weekNum; ++i ) { 1132 for( i = 0; i < weekNum; ++i ) {
1133 int wno; 1133 int wno;
1134 // remember, according to ISO 8601, the first week of the year is the 1134 // remember, according to ISO 8601, the first week of the year is the
1135 // first week that contains a thursday. Thus we must subtract off 4, 1135 // first week that contains a thursday. Thus we must subtract off 4,
1136 // not just 1. 1136 // not just 1.
1137 int dayOfYear = date.dayOfYear(); 1137 int dayOfYear = date.dayOfYear();
1138 if (dayOfYear % 7 != 0) 1138 if (dayOfYear % 7 != 0)
1139 wno = dayOfYear / 7 + 1; 1139 wno = dayOfYear / 7 + 1;
1140 else 1140 else
1141 wno =dayOfYear / 7; 1141 wno =dayOfYear / 7;
1142 (*weekLabels)[i]->setWeekNum( wno ); 1142 (*weekLabels)[i]->setWeekNum( wno );
1143 date = date.addDays( 7 ); 1143 date = date.addDays( 7 );
1144 } 1144 }
1145 updateView(); 1145 updateView();
1146} 1146}
1147 1147
1148void KOMonthView::showEvents(QPtrList<Event>) 1148void KOMonthView::showEvents(QPtrList<Event>)
1149{ 1149{
1150 qDebug("KOMonthView::selectEvents is not implemented yet. "); 1150 qDebug("KOMonthView::selectEvents is not implemented yet. ");
1151} 1151}
1152 1152
1153void KOMonthView::changeEventDisplay(Event *, int) 1153void KOMonthView::changeEventDisplay(Event *, int)
1154{ 1154{
1155 // this should be re-written to be much more efficient, but this 1155 // this should be re-written to be much more efficient, but this
1156 // quick-and-dirty-hack gets the job done for right now. 1156 // quick-and-dirty-hack gets the job done for right now.
1157 updateView(); 1157 updateView();
1158} 1158}
1159 1159
1160void KOMonthView::updateView() 1160void KOMonthView::updateView()
1161{ 1161{
1162 1162
1163 if ( !updatePossible ) 1163 if ( !updatePossible )
1164 return; 1164 return;
1165 //QTime ti; 1165 //QTime ti;
1166 //ti.start(); 1166 //ti.start();
1167 QPtrVector<MonthViewCell> *cells; 1167 QPtrVector<MonthViewCell> *cells;
1168 if ( mShowWeekView ) { 1168 if ( mShowWeekView ) {
1169 cells = &mCellsW; 1169 cells = &mCellsW;
1170 } else { 1170 } else {
1171 cells = &mCells; 1171 cells = &mCells;
1172 } 1172 }
1173#if 1 1173#if 1
1174 int i; 1174 int i;
1175 int timeSpan = (*cells).size()-1; 1175 int timeSpan = (*cells).size()-1;
1176 if ( KOPrefs::instance()->mMonthViewWeek ) 1176 if ( KOPrefs::instance()->mMonthViewWeek )
1177 timeSpan = 6; 1177 timeSpan = 6;
1178 for( i = 0; i < timeSpan + 1; ++i ) { 1178 for( i = 0; i < timeSpan + 1; ++i ) {
1179 (*cells)[i]->startUpdateCell(); 1179 (*cells)[i]->startUpdateCell();
1180 } 1180 }
1181 1181
1182 QPtrList<Event> events = calendar()->events(); 1182 QPtrList<Event> events = calendar()->events();
1183 Event *event; 1183 Event *event;
1184 QDateTime dt; 1184 QDateTime dt;
1185 bool ok; 1185 bool ok;
1186 QDate endDate = mStartDate.addDays( timeSpan ); 1186 QDate endDate = mStartDate.addDays( timeSpan );
1187 for( event = events.first(); event; event = events.next() ) { // for event 1187 for( event = events.first(); event; event = events.next() ) { // for event
1188 if ( event->doesRecur() ) { 1188 if ( event->doesRecur() ) {
1189 bool last; 1189 bool last;
1190 QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last ); 1190 QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last );
1191 QDateTime incidenceEnd; 1191 QDateTime incidenceEnd;
1192 int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() ); 1192 int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() );
1193 bool invalid = false; 1193 bool invalid = false;
1194 while( true ) { 1194 while( true ) {
1195 if ( incidenceStart.isValid() ) { 1195 if ( incidenceStart.isValid() ) {
1196 incidenceEnd = incidenceStart.addDays( eventlen ); 1196 incidenceEnd = incidenceStart.addDays( eventlen );
1197 int st = incidenceStart.date().daysTo( endDate ); 1197 int st = incidenceStart.date().daysTo( endDate );
1198 if ( st >= 0 ) { // start before timeend 1198 if ( st >= 0 ) { // start before timeend
1199 int end = mStartDate.daysTo( incidenceEnd.date() ); 1199 int end = mStartDate.daysTo( incidenceEnd.date() );
1200 if ( end >= 0 ) { // end after timestart --- got one! 1200 if ( end >= 0 ) { // end after timestart --- got one!
1201 //normalize 1201 //normalize
1202 st = timeSpan - st; 1202 st = timeSpan - st;
1203 if ( st < 0 ) st = 0; 1203 if ( st < 0 ) st = 0;
1204 if ( end > timeSpan ) end = timeSpan; 1204 if ( end > timeSpan ) end = timeSpan;
1205 int iii; 1205 int iii;
1206 //qDebug("found %s %d %d ",event->summary().latin1(), st, end ); 1206 //qDebug("found %s %d %d ",event->summary().latin1(), st, end );
1207 for ( iii = st;iii<= end;++iii) 1207 for ( iii = st;iii<= end;++iii)
1208 (*cells)[iii]->insertEvent( event ); 1208 (*cells)[iii]->insertEvent( event );
1209 } 1209 }
1210 } 1210 }
1211 } else { 1211 } else {
1212 if ( invalid ) 1212 if ( invalid )
1213 break; 1213 break;
1214 invalid = true; 1214 invalid = true;
1215 //qDebug("invalid %s", event->summary().latin1()); 1215 //qDebug("invalid %s", event->summary().latin1());
1216 incidenceStart = QDateTime( mStartDate ).addSecs( -2 );; 1216 incidenceStart = QDateTime( mStartDate ).addSecs( -2 );;
1217 } 1217 }
1218 if ( last ) 1218 if ( last )
1219 break; 1219 break;
1220 bool ok; 1220 bool ok;
1221 incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok ); 1221 incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok );
1222 if ( ! ok ) 1222 if ( ! ok )
1223 break; 1223 break;
1224 if ( incidenceStart.date() > endDate ) 1224 if ( incidenceStart.date() > endDate )
1225 break; 1225 break;
1226 } 1226 }
1227 } else { // no recur 1227 } else { // no recur
1228 int st = event->dtStart().date().daysTo( endDate ); 1228 int st = event->dtStart().date().daysTo( endDate );
1229 if ( st >= 0 ) { // start before timeend 1229 if ( st >= 0 ) { // start before timeend
1230 int end = mStartDate.daysTo( event->dtEnd().date() ); 1230 int end = mStartDate.daysTo( event->dtEnd().date() );
1231 if ( end >= 0 ) { // end after timestart --- got one! 1231 if ( end >= 0 ) { // end after timestart --- got one!
1232 //normalize 1232 //normalize
1233 st = timeSpan - st; 1233 st = timeSpan - st;
1234 if ( st < 0 ) st = 0; 1234 if ( st < 0 ) st = 0;
1235 if ( end > timeSpan ) end = timeSpan; 1235 if ( end > timeSpan ) end = timeSpan;
1236 int iii; 1236 int iii;
1237 for ( iii = st;iii<= end;++iii) 1237 for ( iii = st;iii<= end;++iii)
1238 (*cells)[iii]->insertEvent( event ); 1238 (*cells)[iii]->insertEvent( event );
1239 } 1239 }
1240 } 1240 }
1241 } 1241 }
1242 } 1242 }
1243 // insert due todos 1243 // insert due todos
1244 QPtrList<Todo> todos = calendar()->todos( ); 1244 QPtrList<Todo> todos = calendar()->todos( );
1245 Todo *todo; 1245 Todo *todo;
1246 for(todo = todos.first(); todo; todo = todos.next()) { 1246 for(todo = todos.first(); todo; todo = todos.next()) {
1247 //insertTodo( todo ); 1247 //insertTodo( todo );
1248 if ( todo->hasDueDate() ) { 1248 if ( todo->hasDueDate() ) {
1249 int day = mStartDate.daysTo( todo->dtDue().date() ); 1249 int day = mStartDate.daysTo( todo->dtDue().date() );
1250 if ( day >= 0 && day < timeSpan + 1) { 1250 if ( day >= 0 && day < timeSpan + 1) {
1251 (*cells)[day]->insertTodo( todo ); 1251 (*cells)[day]->insertTodo( todo );
1252 } 1252 }
1253 } 1253 }
1254 } 1254 }
1255 1255
1256 for( i = 0; i < timeSpan+1; ++i ) { 1256 for( i = 0; i < timeSpan+1; ++i ) {
1257 (*cells)[i]->finishUpdateCell(); 1257 (*cells)[i]->finishUpdateCell();
1258 } 1258 }
1259 processSelectionChange(); 1259 processSelectionChange();
1260 (*cells)[0]->setFocus(); 1260 (*cells)[0]->setFocus();
1261 1261
1262 1262
1263#else 1263#else
1264 // old code 1264 // old code
1265 //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ "); 1265 //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ");
1266 int i; 1266 int i;
1267 for( i = 0; i < (*cells).count(); ++i ) { 1267 for( i = 0; i < (*cells).count(); ++i ) {
1268 (*cells)[i]->updateCell(); 1268 (*cells)[i]->updateCell();
1269 } 1269 }
1270 1270
1271 //qDebug("KOMonthView::updateView() "); 1271 //qDebug("KOMonthView::updateView() ");
1272 processSelectionChange(); 1272 processSelectionChange();
1273 // qDebug("---------------------------------------------------------------------+ "); 1273 // qDebug("---------------------------------------------------------------------+ ");
1274 (*cells)[0]->setFocus(); 1274 (*cells)[0]->setFocus();
1275#endif 1275#endif
1276 1276
1277 //qDebug("update time %d ", ti.elapsed()); 1277 //qDebug("update time %d ", ti.elapsed());
1278} 1278}
1279 1279
1280void KOMonthView::resizeEvent(QResizeEvent * e) 1280void KOMonthView::resizeEvent(QResizeEvent * e)
1281{ 1281{
1282 //qDebug("KOMonthView::resizeEvent %d %d -- %d %d ", e->size().width(), e->size().height(), e->oldSize().width(), e->oldSize().height()); 1282 //qDebug("KOMonthView::resizeEvent %d %d -- %d %d ", e->size().width(), e->size().height(), e->oldSize().width(), e->oldSize().height());
1283 computeLayout(); 1283 computeLayout();
1284 clPending = true; 1284 clPending = true;
1285 if ( mShowWeekView ) 1285 if ( mShowWeekView )
1286 mCellsW[0]->setFocus(); 1286 mCellsW[0]->setFocus();
1287 else 1287 else
1288 mCells[0]->setFocus(); 1288 mCells[0]->setFocus();
1289} 1289}
1290void KOMonthView::computeLayoutWeek() 1290void KOMonthView::computeLayoutWeek()
1291{ 1291{
1292 static int lastWid = 0; 1292 static int lastWid = 0;
1293 static int lastHei = 0; 1293 static int lastHei = 0;
1294 int daysToShow; 1294 int daysToShow;
1295 bool combinedSatSun = false; 1295 bool combinedSatSun = false;
1296 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { 1296 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) {
1297 daysToShow = 6; 1297 daysToShow = 6;
1298 combinedSatSun = true; 1298 combinedSatSun = true;
1299 } 1299 }
1300 int tWid = topLevelWidget()->size().width(); 1300 int tWid = topLevelWidget()->size().width();
1301 int tHei = topLevelWidget()->size().height(); 1301 int tHei = topLevelWidget()->size().height();
1302 1302
1303 int wid = width();//e 1303 int wid = width();//e
1304 int hei = height()-1-mNavigatorBar->height(); 1304 int hei = height()-1-mNavigatorBar->height();
1305 1305
1306 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) 1306 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei )
1307 return; 1307 return;
1308 1308
1309 if ( lastWid == width() && lastHei == height() ) 1309 if ( lastWid == width() && lastHei == height() )
1310 return; 1310 return;
1311 lastWid = width(); 1311 lastWid = width();
1312 lastHei = height(); 1312 lastHei = height();
1313 1313
1314 1314
1315 if ( wid < hei ) 1315 if ( wid < hei )
1316 daysToShow = 2; 1316 daysToShow = 2;
1317 else 1317 else
1318 daysToShow = 3; 1318 daysToShow = 3;
1319 mShowSatSunComp = true; 1319 mShowSatSunComp = true;
1320 combinedSatSun = true; 1320 combinedSatSun = true;
1321 1321
1322 //qDebug("KOMonthView::computeLayout() WWW ------------------------------------ "); 1322 //qDebug("KOMonthView::computeLayout() WWW ------------------------------------ ");
1323 QFontMetrics fm ( mWeekLabels[0]->font() ); 1323 QFontMetrics fm ( mWeekLabels[0]->font() );
1324 int weeklabelwid = fm.width( "888" ); 1324 int weeklabelwid = fm.width( "888" );
1325 wid -= weeklabelwid; 1325 wid -= weeklabelwid;
1326 1326
1327 int colWid = wid / daysToShow; 1327 int colWid = wid / daysToShow;
1328 int lastCol = wid - ( colWid*6 ); 1328 int lastCol = wid - ( colWid*6 );
1329 int dayLabelHei = mDayLabelsW[0]->sizeHint().height(); 1329 int dayLabelHei = mDayLabelsW[0]->sizeHint().height();
1330 int cellHei = (hei - (5- daysToShow )*dayLabelHei) /(5- daysToShow ); 1330 int cellHei = (hei - (5- daysToShow )*dayLabelHei) /(5- daysToShow );
1331 int colModulo = wid % daysToShow; 1331 int colModulo = wid % daysToShow;
1332 int rowModulo = (hei- (5- daysToShow )*dayLabelHei) % daysToShow-1; 1332 int rowModulo = (hei- (5- daysToShow )*dayLabelHei) % daysToShow-1;
1333 //qDebug("rowmod %d ", rowModulo); 1333 //qDebug("rowmod %d ", rowModulo);
1334 int i; 1334 int i;
1335 int x,y,w,h; 1335 int x,y,w,h;
1336 x= 0; 1336 x= 0;
1337 y= 0; 1337 y= 0;
1338 w = colWid; 1338 w = colWid;
1339 h = dayLabelHei ; 1339 h = dayLabelHei ;
1340 for ( i = 0; i < 7; i++) { 1340 for ( i = 0; i < 7; i++) {
1341 if ( i && !( i % daysToShow) && i < 6) { 1341 if ( i && !( i % daysToShow) && i < 6) {
1342 y += hei/(5-daysToShow); 1342 y += hei/(5-daysToShow);
1343 x = 0; 1343 x = 0;
1344 w = colWid; 1344 w = colWid;
1345 } 1345 }
1346 if ( ((i) % daysToShow) >= daysToShow-colModulo ) { 1346 if ( ((i) % daysToShow) >= daysToShow-colModulo ) {
1347 ++w; 1347 ++w;
1348 } 1348 }
1349 if ( i >= 5 ) { 1349 if ( i >= 5 ) {
1350 mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,w/2+w%2,h); 1350 mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,w/2+w%2,h);
1351 x -= (w/2 ); 1351 x -= (w/2 );
1352 } 1352 }
1353 else 1353 else
1354 mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,w,h); 1354 mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,w,h);
1355 x += w; 1355 x += w;
1356 } 1356 }
1357 x= 0; 1357 x= 0;
1358 y= dayLabelHei; 1358 y= dayLabelHei;
1359 w = colWid; 1359 w = colWid;
1360 h = cellHei; 1360 h = cellHei;
1361 for ( i = 0; i < mCellsW.count(); ++i) { 1361 for ( i = 0; i < mCellsW.count(); ++i) {
1362 if ( i > 6 ) { 1362 if ( i > 6 ) {
1363 mCellsW[i]->hide(); 1363 mCellsW[i]->hide();
1364 continue; 1364 continue;
1365 } 1365 }
1366 1366
1367 w = colWid; 1367 w = colWid;
1368 if ( ((i) % daysToShow) >= daysToShow-colModulo ) { 1368 if ( ((i) % daysToShow) >= daysToShow-colModulo ) {
1369 ++w; 1369 ++w;
1370 } 1370 }
1371 if ( i == (daysToShow-1-rowModulo)*7) 1371 if ( i == (daysToShow-1-rowModulo)*7)
1372 ++h; 1372 ++h;
1373 1373
1374 if ( i >= 5 ) { 1374 if ( i >= 5 ) {
1375 if ( i ==5 ) { 1375 if ( i ==5 ) {
1376 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h/2 ); 1376 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h/2 );
1377 x -= w ;y += h/2; 1377 x -= w ;y += h/2;
1378 } else { 1378 } else {
1379 if ( ((i-1) % daysToShow) >= daysToShow-colModulo ) { 1379 if ( ((i-1) % daysToShow) >= daysToShow-colModulo ) {
1380 ++w; 1380 ++w;
1381 } 1381 }
1382 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h-h/2 ); 1382 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h-h/2 );
1383 y -= h/2; 1383 y -= h/2;
1384 } 1384 }
1385 } else 1385 } else
1386 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h ); 1386 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h );
1387 1387
1388 1388
1389 x += w; 1389 x += w;
1390 if ( x + w/2 > wid ) { 1390 if ( x + w/2 > wid ) {
1391 x = 0; 1391 x = 0;
1392 y += h+dayLabelHei ; 1392 y += h+dayLabelHei ;
1393 } 1393 }
1394 } 1394 }
1395 y= dayLabelHei; 1395 y= dayLabelHei;
1396 h = cellHei ; 1396 h = cellHei ;
1397 mWeekLabelsW[0]->setGeometry( 0,y,weeklabelwid,hei-dayLabelHei); 1397 mWeekLabelsW[0]->setGeometry( 0,y,weeklabelwid,hei-dayLabelHei);
1398 mWeekLabelsW[1]->setGeometry( 0,0,weeklabelwid,dayLabelHei); 1398 mWeekLabelsW[1]->setGeometry( 0,0,weeklabelwid,dayLabelHei);
1399 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height()); 1399 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height());
1400 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height()); 1400 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height());
1401 mShortDayLabelsW = mDayLabelsW[0]->width()-2 < mWidthLongDayLabel ; 1401 mShortDayLabelsW = mDayLabelsW[0]->width()-2 < mWidthLongDayLabel ;
1402 updateDayLabels(); 1402 updateDayLabels();
1403 //bool forceUpdate = !updatePossible; 1403 //bool forceUpdate = !updatePossible;
1404 updatePossible = true; 1404 updatePossible = true;
1405 //mWeekLabels[mNumWeeks]->setText( i18n("M")); 1405 //mWeekLabels[mNumWeeks]->setText( i18n("M"));
1406 //if ( forceUpdate ) 1406 //if ( forceUpdate )
1407 // updateView(); 1407 // updateView();
1408} 1408}
1409void KOMonthView::computeLayout() 1409void KOMonthView::computeLayout()
1410{ 1410{
1411 1411
1412 1412
1413 static int lastWid = 0; 1413 static int lastWid = 0;
1414 static int lastHei = 0; 1414 static int lastHei = 0;
1415 1415
1416 if ( mShowWeekView ){ 1416 if ( mShowWeekView ){
1417 computeLayoutWeek(); 1417 computeLayoutWeek();
1418 return; 1418 return;
1419 } 1419 }
1420 int daysToShow = 7; 1420 int daysToShow = 7;
1421 bool combinedSatSun = false; 1421 bool combinedSatSun = false;
1422 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { 1422 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) {
1423 daysToShow = 6; 1423 daysToShow = 6;
1424 combinedSatSun = true; 1424 combinedSatSun = true;
1425 } 1425 }
1426 int tWid = topLevelWidget()->size().width(); 1426 int tWid = topLevelWidget()->size().width();
1427 int tHei = topLevelWidget()->size().height(); 1427 int tHei = topLevelWidget()->size().height();
1428 1428
1429 int wid = width();//e 1429 int wid = width();//e
1430 int hei = height()-1-mNavigatorBar->height(); 1430 int hei = height()-1-mNavigatorBar->height();
1431 1431
1432 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) { 1432 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) {
1433 return; 1433 return;
1434 } 1434 }
1435 if ( lastWid == width() && lastHei == height() ){ 1435 if ( lastWid == width() && lastHei == height() ){
1436 return; 1436 return;
1437 } 1437 }
1438 1438
1439 lastWid = width(); 1439 lastWid = width();
1440 lastHei = height(); 1440 lastHei = height();
1441 //qDebug("KOMonthView::computeLayout() MMM ------------------------------------ "); 1441 //qDebug("KOMonthView::computeLayout() MMM ------------------------------------ ");
1442 QFontMetrics fm ( mWeekLabels[0]->font() ); 1442 QFontMetrics fm ( mWeekLabels[0]->font() );
1443 int weeklabelwid = fm.width( "888" ); 1443 int weeklabelwid = fm.width( "888" );
1444 wid -= weeklabelwid; 1444 wid -= weeklabelwid;
1445 1445
1446 int colWid = wid / daysToShow; 1446 int colWid = wid / daysToShow;
1447 int lastCol = wid - ( colWid*6 ); 1447 int lastCol = wid - ( colWid*6 );
1448 int dayLabelHei = mDayLabels[0]->sizeHint().height(); 1448 int dayLabelHei = mDayLabels[0]->sizeHint().height();
1449 int cellHei = (hei - dayLabelHei) /6; 1449 int cellHei = (hei - dayLabelHei) /6;
1450 int colModulo = wid % daysToShow; 1450 int colModulo = wid % daysToShow;
1451 int rowModulo = (hei- dayLabelHei) % 6; 1451 int rowModulo = (hei- dayLabelHei) % 6;
1452 //qDebug("rowmod %d ", rowModulo); 1452 //qDebug("rowmod %d ", rowModulo);
1453 int i; 1453 int i;
1454 int x,y,w,h; 1454 int x,y,w,h;
1455 x= 0; 1455 x= 0;
1456 y= 0; 1456 y= 0;
1457 w = colWid; 1457 w = colWid;
1458 h = dayLabelHei ; 1458 h = dayLabelHei ;
1459 for ( i = 0; i < 7; i++) { 1459 for ( i = 0; i < 7; i++) {
1460 if ( i == daysToShow-colModulo ) 1460 if ( i == daysToShow-colModulo )
1461 ++w; 1461 ++w;
1462 if ( combinedSatSun ) { 1462 if ( combinedSatSun ) {
1463 if ( i >= daysToShow-1 ) { 1463 if ( i >= daysToShow-1 ) {
1464 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w/2,h); 1464 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w/2,h);
1465 x -= w/2 ; 1465 x -= w/2 ;
1466 } 1466 }
1467 else 1467 else
1468 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h); 1468 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h);
1469 } else 1469 } else
1470 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h); 1470 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h);
1471 x += w; 1471 x += w;
1472 } 1472 }
1473 x= 0; 1473 x= 0;
1474 y= dayLabelHei; 1474 y= dayLabelHei;
1475 w = colWid; 1475 w = colWid;
1476 h = cellHei ; 1476 h = cellHei ;
1477 for ( i = 0; i < mCells.count(); ++i) { 1477 for ( i = 0; i < mCells.count(); ++i) {
1478 //qDebug("iii %d ", i); 1478 //qDebug("iii %d ", i);
1479 w = colWid; 1479 w = colWid;
1480 if ( ((i) % 7) >= 7-colModulo ) { 1480 if ( ((i) % 7) >= 7-colModulo ) {
1481 ++w; 1481 ++w;
1482 } 1482 }
1483 if ( i == (6-rowModulo)*7) 1483 if ( i == (6-rowModulo)*7)
1484 ++h; 1484 ++h;
1485 if ( combinedSatSun ) { 1485 if ( combinedSatSun ) {
1486 if ( (i)%7 >= daysToShow-1 ) { 1486 if ( (i)%7 >= daysToShow-1 ) {
1487 if ( (i)%7 == daysToShow-1 ) { 1487 if ( (i)%7 == daysToShow-1 ) {
1488 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h/2 ); 1488 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h/2 );
1489 x -= w ;y += h/2; 1489 x -= w ;y += h/2;
1490 } else { 1490 } else {
1491 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h-h/2 ); 1491 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h-h/2 );
1492 y -= h/2; 1492 y -= h/2;
1493 } 1493 }
1494 } else 1494 } else
1495 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h ); 1495 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h );
1496 1496
1497 } 1497 }
1498 else 1498 else
1499 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h ); 1499 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h );
1500 x += w; 1500 x += w;
1501 if ( x + w/2 > wid ) { 1501 if ( x + w/2 > wid ) {
1502 x = 0; 1502 x = 0;
1503 y += h; 1503 y += h;
1504 } 1504 }
1505 } 1505 }
1506 y= dayLabelHei; 1506 y= dayLabelHei;
1507 h = cellHei ; 1507 h = cellHei ;
1508 for ( i = 0; i < 6; i++) { 1508 for ( i = 0; i < 6; i++) {
1509 if ( i == (6-rowModulo)) 1509 if ( i == (6-rowModulo))
1510 ++h; 1510 ++h;
1511 mWeekLabels[i]->setGeometry( 0,y,weeklabelwid,h); 1511 mWeekLabels[i]->setGeometry( 0,y,weeklabelwid,h);
1512 y += h; 1512 y += h;
1513 } 1513 }
1514 mWeekLabels[6]->setGeometry( 0,0,weeklabelwid,dayLabelHei); 1514 mWeekLabels[6]->setGeometry( 0,0,weeklabelwid,dayLabelHei);
1515 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height()); 1515 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height());
1516 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height()); 1516 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height());
1517 mShortDayLabelsM = mDayLabels[0]->width()-2 < mWidthLongDayLabel ; 1517 mShortDayLabelsM = mDayLabels[0]->width()-2 < mWidthLongDayLabel ;
1518 updateDayLabels(); 1518 updateDayLabels();
1519 //bool forceUpdate = !updatePossible; 1519 //bool forceUpdate = !updatePossible;
1520 updatePossible = true; 1520 updatePossible = true;
1521 //mWeekLabels[mNumWeeks]->setText( i18n("W")); 1521 //mWeekLabels[mNumWeeks]->setText( i18n("W"));
1522} 1522}
1523 1523
1524void KOMonthView::showContextMenu( Incidence *incidence ) 1524void KOMonthView::showContextMenu( Incidence *incidence )
1525{ 1525{
1526 mContextMenu->showIncidencePopup(incidence); 1526 mContextMenu->showIncidencePopup(incidence);
1527 /* 1527 /*
1528 if( incidence && incidence->type() == "Event" ) { 1528 if( incidence && incidence->type() == "Event" ) {
1529 Event *event = static_cast<Event *>(incidence); 1529 Event *event = static_cast<Event *>(incidence);
1530 mContextMenu->showEventPopup(event); 1530 mContextMenu->showEventPopup(event);
1531 } else { 1531 } else {
1532 kdDebug() << "MonthView::showContextMenu(): cast failed." << endl; 1532 kdDebug() << "MonthView::showContextMenu(): cast failed." << endl;
1533 } 1533 }
1534 */ 1534 */
1535} 1535}
1536MonthViewCell * KOMonthView::selectedCell( ) 1536MonthViewCell * KOMonthView::selectedCell( )
1537{ 1537{
1538 return mSelectedCell; 1538 return mSelectedCell;
1539} 1539}
1540void KOMonthView::setSelectedCell( MonthViewCell *cell ) 1540void KOMonthView::setSelectedCell( MonthViewCell *cell )
1541{ 1541{
1542 // qDebug("KOMonthView::setSelectedCell "); 1542 // qDebug("KOMonthView::setSelectedCell ");
1543 if ( mSelectedCell && mSelectedCell != cell ) { 1543 if ( mSelectedCell && mSelectedCell != cell ) {
1544 MonthViewCell * mvc = mSelectedCell; 1544 MonthViewCell * mvc = mSelectedCell;
1545 mSelectedCell = cell; 1545 mSelectedCell = cell;
1546 mvc->deselect(); 1546 mvc->deselect();
1547 } else 1547 } else
1548 mSelectedCell = cell; 1548 mSelectedCell = cell;
1549 // if ( mSelectedCell ) 1549 // if ( mSelectedCell )
1550 // mSelectedCell->select(); 1550 // mSelectedCell->select();
1551 if ( !mSelectedCell ) 1551 if ( !mSelectedCell )
1552 emit incidenceSelected( 0 ); 1552 emit incidenceSelected( 0 );
1553 else 1553 else
1554 emit incidenceSelected( mSelectedCell->selectedIncidence() ); 1554 emit incidenceSelected( mSelectedCell->selectedIncidence() );
1555} 1555}
1556 1556
1557void KOMonthView::processSelectionChange() 1557void KOMonthView::processSelectionChange()
1558{ 1558{
1559 QPtrList<Incidence> incidences = selectedIncidences(); 1559 QPtrList<Incidence> incidences = selectedIncidences();
1560 if (incidences.count() > 0) { 1560 if (incidences.count() > 0) {
1561 emit incidenceSelected( incidences.first() ); 1561 emit incidenceSelected( incidences.first() );
1562 } else { 1562 } else {
1563 emit incidenceSelected( 0 ); 1563 emit incidenceSelected( 0 );
1564 } 1564 }
1565} 1565}
1566 1566
1567void KOMonthView::clearSelection() 1567void KOMonthView::clearSelection()
1568{ 1568{
1569 if ( mSelectedCell ) { 1569 if ( mSelectedCell ) {
1570 mSelectedCell->deselect(); 1570 mSelectedCell->deselect();
1571 mSelectedCell = 0; 1571 mSelectedCell = 0;
1572 } 1572 }
1573} 1573}
1574void KOMonthView::keyPressEvent ( QKeyEvent * e ) 1574void KOMonthView::keyPressEvent ( QKeyEvent * e )
1575{ 1575{
1576 //qDebug("KOMonthView::keyPressEvent "); 1576 //qDebug("KOMonthView::keyPressEvent ");
1577 switch(e->key()) { 1577 switch(e->key()) {
1578 case Key_Up: 1578 case Key_Up:
1579 { 1579 {
1580 emit prevMonth(); 1580 emit prevMonth();
1581 if ( mShowWeekView ) 1581 if ( mShowWeekView )
1582 mCellsW[0]->setFocus(); 1582 mCellsW[0]->setFocus();
1583 else 1583 else
1584 mCells[0]->setFocus(); 1584 mCells[0]->setFocus();
1585 } 1585 }
1586 e->accept(); 1586 e->accept();
1587 break; 1587 break;
1588 case Key_Down: 1588 case Key_Down:
1589 { 1589 {
1590 emit nextMonth(); 1590 emit nextMonth();
1591 if ( mShowWeekView ) 1591 if ( mShowWeekView )
1592 mCellsW[0]->setFocus(); 1592 mCellsW[0]->setFocus();
1593 else 1593 else
1594 mCells[0]->setFocus(); 1594 mCells[0]->setFocus();
1595 1595
1596 } 1596 }
1597 e->accept(); 1597 e->accept();
1598 break; 1598 break;
1599 case Key_Return: 1599 case Key_Return:
1600 case Key_Enter: 1600 case Key_Enter:
1601 { 1601 {
1602 selectInternalWeekNum ( currentWeek() ); 1602 selectInternalWeekNum ( currentWeek() );
1603 } 1603 }
1604 e->accept(); 1604 e->accept();
1605 break; 1605 break;
1606 default: 1606 default:
1607 e->ignore(); 1607 e->ignore();
1608 break; 1608 break;
1609 } 1609 }
1610} 1610}
diff --git a/korganizer/kotodoviewitem.cpp b/korganizer/kotodoviewitem.cpp
index 44db209..0e847c2 100644
--- a/korganizer/kotodoviewitem.cpp
+++ b/korganizer/kotodoviewitem.cpp
@@ -1,461 +1,461 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19 19
20#include <klocale.h> 20#include <klocale.h>
21#include <kdebug.h> 21#include <kdebug.h>
22#include <qapp.h> 22#include <qapp.h>
23 23
24#include <kiconloader.h> 24#include <kiconloader.h>
25#include "kotodoviewitem.h" 25#include "kotodoviewitem.h"
26#include "kotodoview.h" 26#include "kotodoview.h"
27#include "koprefs.h" 27#include "koprefs.h"
28 28
29KOTodoViewItem::KOTodoViewItem( QListView *parent, Todo *todo, KOTodoView *kotodo) 29KOTodoViewItem::KOTodoViewItem( QListView *parent, Todo *todo, KOTodoView *kotodo)
30 : QCheckListItem( parent , "", CheckBox ), mTodo( todo ), mTodoView( kotodo ) 30 : QCheckListItem( parent , "", CheckBox ), mTodo( todo ), mTodoView( kotodo )
31{ 31{
32 construct(); 32 construct();
33} 33}
34 34
35KOTodoViewItem::KOTodoViewItem( KOTodoViewItem *parent, Todo *todo, KOTodoView *kotodo ) 35KOTodoViewItem::KOTodoViewItem( KOTodoViewItem *parent, Todo *todo, KOTodoView *kotodo )
36 : QCheckListItem( parent, "", CheckBox ), mTodo( todo ), mTodoView( kotodo ) 36 : QCheckListItem( parent, "", CheckBox ), mTodo( todo ), mTodoView( kotodo )
37{ 37{
38 construct(); 38 construct();
39} 39}
40 40
41QString KOTodoViewItem::key(int column,bool) const 41QString KOTodoViewItem::key(int column,bool) const
42{ 42{
43 QMap<int,QString>::ConstIterator it = mKeyMap.find(column); 43 QMap<int,QString>::ConstIterator it = mKeyMap.find(column);
44 if (it == mKeyMap.end()) { 44 if (it == mKeyMap.end()) {
45 return text(column).lower(); 45 return text(column).lower();
46 } else { 46 } else {
47 return *it; 47 return *it;
48 } 48 }
49} 49}
50 50
51void KOTodoViewItem:: setup() 51void KOTodoViewItem:: setup()
52{ 52{
53 53
54 int h = 20; 54 int h = 20;
55 if ( listView () ) { 55 if ( listView () ) {
56 QFontMetrics fm ( listView ()->font () ); 56 QFontMetrics fm ( listView ()->font () );
57 h = fm.height(); 57 h = fm.height();
58 } 58 }
59 setHeight( h ); 59 setHeight( h );
60 60
61} 61}
62void KOTodoViewItem::setSortKey(int column,const QString &key) 62void KOTodoViewItem::setSortKey(int column,const QString &key)
63{ 63{
64 mKeyMap.insert(column,key); 64 mKeyMap.insert(column,key);
65} 65}
66 66
67#if QT_VERSION >= 0x030000 67#if QT_VERSION >= 0x030000
68void KOTodoViewItem::paintBranches(QPainter *p,const QColorGroup & cg,int w, 68void KOTodoViewItem::paintBranches(QPainter *p,const QColorGroup & cg,int w,
69 int y,int h) 69 int y,int h)
70{ 70{
71 QListViewItem::paintBranches(p,cg,w,y,h); 71 QListViewItem::paintBranches(p,cg,w,y,h);
72} 72}
73#else 73#else
74#endif 74#endif
75 75
76void KOTodoViewItem::construct() 76void KOTodoViewItem::construct()
77{ 77{
78 // qDebug("KOTodoViewItem::construct() "); 78 // qDebug("KOTodoViewItem::construct() ");
79 m_init = true; 79 m_init = true;
80 QString keyd = "=="; 80 QString keyd = "==";
81 QString keyt = "=="; 81 QString keyt = "==";
82 QString skeyd = "=="; 82 QString skeyd = "==";
83 QString skeyt = "=="; 83 QString skeyt = "==";
84 84
85 setOn(mTodo->isCompleted()); 85 setOn(mTodo->isCompleted());
86 setText(0,mTodo->summary()); 86 setText(0,mTodo->summary());
87 setText(1,QString::number(mTodo->priority())); 87 setText(1,QString::number(mTodo->priority()));
88 setText(2,i18n("%1 %").arg(QString::number(mTodo->percentComplete()))); 88 setText(2,i18n("%1 %").arg(QString::number(mTodo->percentComplete())));
89 if (mTodo->percentComplete()<100) { 89 if (mTodo->percentComplete()<100) {
90 if (mTodo->isCompleted()) setSortKey(2,QString::number(999)); 90 if (mTodo->isCompleted()) setSortKey(2,QString::number(999));
91 else setSortKey(2,QString::number(mTodo->percentComplete())); 91 else setSortKey(2,QString::number(mTodo->percentComplete()));
92 } 92 }
93 else { 93 else {
94 if (mTodo->isCompleted()) setSortKey(2,QString::number(999)); 94 if (mTodo->isCompleted()) setSortKey(2,QString::number(999));
95 else setSortKey(2,QString::number(99)); 95 else setSortKey(2,QString::number(99));
96 } 96 }
97 if (mTodo->hasDueDate()) { 97 if (mTodo->hasDueDate()) {
98 setText(3, mTodo->dtDueDateStr()); 98 setText(3, mTodo->dtDueDateStr());
99 QDate d = mTodo->dtDue().date(); 99 QDate d = mTodo->dtDue().date();
100 keyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); 100 keyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
101 // setSortKey(3,keyd); 101 // setSortKey(3,keyd);
102 if (mTodo->doesFloat()) { 102 if (mTodo->doesFloat()) {
103 setText(4,""); 103 setText(4,"");
104 } 104 }
105 else { 105 else {
106 setText(4,mTodo->dtDueTimeStr()); 106 setText(4,mTodo->dtDueTimeStr());
107 QTime t = mTodo->dtDue().time(); 107 QTime t = mTodo->dtDue().time();
108 keyt.sprintf("%02d%02d",t.hour(),t.minute()); 108 keyt.sprintf("%02d%02d",t.hour(),t.minute());
109 //setSortKey(4,keyt); 109 //setSortKey(4,keyt);
110 } 110 }
111 } else { 111 } else {
112 setText(3,""); 112 setText(3,"");
113 setText(4,""); 113 setText(4,"");
114 } 114 }
115 setSortKey(3,keyd); 115 setSortKey(3,keyd);
116 setSortKey(4,keyt); 116 setSortKey(4,keyt);
117 117
118 if (mTodo->isCompleted()) setSortKey(1,"6" + QString::number(mTodo->priority())+keyd+keyt); 118 if (mTodo->isCompleted()) setSortKey(1,"6" + QString::number(mTodo->priority())+keyd+keyt);
119 else setSortKey(1,QString::number(mTodo->priority())+keyd+keyt); 119 else setSortKey(1,QString::number(mTodo->priority())+keyd+keyt);
120 120
121 121
122 122
123 if (mTodo->hasStartDate()) { 123 if (mTodo->hasStartDate()) {
124 setText(5, mTodo->dtStartDateStr()); 124 setText(5, mTodo->dtStartDateStr());
125 QDate d = mTodo->dtStart().date(); 125 QDate d = mTodo->dtStart().date();
126 skeyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); 126 skeyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
127 127
128 if (mTodo->doesFloat()) { 128 if (mTodo->doesFloat()) {
129 setText(6,""); 129 setText(6,"");
130 } 130 }
131 else { 131 else {
132 setText(6,mTodo->dtStartTimeStr()); 132 setText(6,mTodo->dtStartTimeStr());
133 QTime t = mTodo->dtStart().time(); 133 QTime t = mTodo->dtStart().time();
134 skeyt.sprintf("%02d%02d",t.hour(),t.minute()); 134 skeyt.sprintf("%02d%02d",t.hour(),t.minute());
135 135
136 } 136 }
137 } else { 137 } else {
138 setText(5,""); 138 setText(5,"");
139 setText(6,""); 139 setText(6,"");
140 } 140 }
141 setSortKey(5,skeyd); 141 setSortKey(5,skeyd);
142 setSortKey(6,skeyt); 142 setSortKey(6,skeyt);
143 143
144 setText(7,mTodo->cancelled() ? i18n("Yes") : i18n("No")); 144 setText(7,mTodo->cancelled() ? i18n("Yes") : i18n("No"));
145 setText(8,mTodo->categoriesStr()); 145 setText(8,mTodo->categoriesStr());
146 146
147#if 0 147#if 0
148 // Find sort id in description. It's the text behind the last '#' character 148 // Find sort id in description. It's the text behind the last '#' character
149 // found in the description. White spaces are removed from beginning and end 149 // found in the description. White spaces are removed from beginning and end
150 // of sort id. 150 // of sort id.
151 int pos = mTodo->description().findRev('#'); 151 int pos = mTodo->description().findRev('#');
152 if (pos < 0) { 152 if (pos < 0) {
153 setText(6,""); 153 setText(6,"");
154 } else { 154 } else {
155 QString str = mTodo->description().mid(pos+1); 155 QString str = mTodo->description().mid(pos+1);
156 str.stripWhiteSpace(); 156 str.stripWhiteSpace();
157 setText(6,str); 157 setText(6,str);
158 } 158 }
159#endif 159#endif
160 160
161 m_known = false; 161 m_known = false;
162 m_init = false; 162 m_init = false;
163 163
164 setMyPixmap(); 164 setMyPixmap();
165 165
166} 166}
167void KOTodoViewItem::setMyPixmap() 167void KOTodoViewItem::setMyPixmap()
168{ 168{
169 int size = 5; 169 int size = 5;
170 QPixmap pixi = QPixmap( 1, 1 ); 170 QPixmap pixi = QPixmap( 1, 1 );
171 // if ( !mTodo->isCompleted() && mTodo->hasDueDate() && mTodo->dtDue() < QDateTime::currentDateTime() ) { 171 // if ( !mTodo->isCompleted() && mTodo->hasDueDate() && mTodo->dtDue() < QDateTime::currentDateTime() ) {
172// pixi = SmallIcon("redcross16"); 172// pixi = SmallIcon("redcross16");
173// } else { 173// } else {
174 QPainter p; 174 QPainter p;
175 175
176 int pixSize = 0; 176 int pixSize = 0;
177 QPixmap pPix = QPixmap( size, size ); 177 QPixmap pPix = QPixmap( size, size );
178 if ( mTodo->description().length() > 0 ) { 178 if ( mTodo->description().length() > 0 ) {
179 pixi.resize(size, pixSize+size); 179 pixi.resize(size, pixSize+size);
180 pPix.fill( Qt::darkGreen ); 180 pPix.fill( Qt::darkGreen );
181 p.begin( &pixi ); 181 p.begin( &pixi );
182 p. drawPixmap ( 0, pixSize, pPix); 182 p. drawPixmap ( 0, pixSize, pPix);
183 p.end(); 183 p.end();
184 pixSize += size; 184 pixSize += size;
185 } 185 }
186 if ( mTodo->isAlarmEnabled() ) { 186 if ( mTodo->isAlarmEnabled() ) {
187 pixi.resize(size, pixSize+size); 187 pixi.resize(size, pixSize+size);
188 pPix.fill( Qt::red ); 188 pPix.fill( Qt::red );
189 p.begin( &pixi ); 189 p.begin( &pixi );
190 p. drawPixmap ( 0, pixSize, pPix); 190 p. drawPixmap ( 0, pixSize, pPix);
191 p.end(); 191 p.end();
192 pixSize += size; 192 pixSize += size;
193 } 193 }
194 // } 194 // }
195 if ( pixi.width() > 1 ) { 195 if ( pixi.width() > 1 ) {
196 setPixmap ( 0,pixi ) ; 196 setPixmap ( 0,pixi ) ;
197 } else { 197 } else {
198 setPixmap ( 0,QPixmap() ) ; 198 setPixmap ( 0,QPixmap() ) ;
199 } 199 }
200} 200}
201void KOTodoViewItem::stateChange(bool state) 201void KOTodoViewItem::stateChange(bool state)
202{ 202{
203 // qDebug("KOTodoViewItem::stateChange "); 203 // qDebug("KOTodoViewItem::stateChange ");
204 // do not change setting on startup 204 // do not change setting on startup
205 if ( m_init ) return; 205 if ( m_init ) return;
206 if (isOn()!=state) { 206 if (isOn()!=state) {
207 setOn(state); 207 setOn(state);
208 //qDebug("SETON "); 208 //qDebug("SETON ");
209 return; 209 return;
210 } 210 }
211 if ( mTodo->isCompleted() == state ) { 211 if ( mTodo->isCompleted() == state ) {
212 //qDebug("STATECHANGE:nothing to do "); 212 //qDebug("STATECHANGE:nothing to do ");
213 return; 213 return;
214 } 214 }
215 QString keyd = "=="; 215 QString keyd = "==";
216 QString keyt = "=="; 216 QString keyt = "==";
217 //qDebug("KOTodoViewItem::stateChange %s ", text(0).latin1()); 217 //qDebug("KOTodoViewItem::stateChange %s ", text(0).latin1());
218 mTodo->setCompleted(state); 218 mTodo->setCompleted(state);
219 if (state) mTodo->setCompleted(QDateTime::currentDateTime()); 219 if (state) mTodo->setCompleted(QDateTime::currentDateTime());
220 220
221 if (mTodo->hasDueDate()) { 221 if (mTodo->hasDueDate()) {
222 setText(3, mTodo->dtDueDateStr()); 222 setText(3, mTodo->dtDueDateStr());
223 QDate d = mTodo->dtDue().date(); 223 QDate d = mTodo->dtDue().date();
224 keyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); 224 keyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
225 setSortKey(3,keyd); 225 setSortKey(3,keyd);
226 if (mTodo->doesFloat()) { 226 if (mTodo->doesFloat()) {
227 setText(4,""); 227 setText(4,"");
228 } 228 }
229 else { 229 else {
230 setText(4,mTodo->dtDueTimeStr()); 230 setText(4,mTodo->dtDueTimeStr());
231 QTime t = mTodo->dtDue().time(); 231 QTime t = mTodo->dtDue().time();
232 keyt.sprintf("%02d%02d",t.hour(),t.minute()); 232 keyt.sprintf("%02d%02d",t.hour(),t.minute());
233 setSortKey(4,keyt); 233 setSortKey(4,keyt);
234 } 234 }
235 } 235 }
236 if (mTodo->isCompleted()) setSortKey(1,QString::number(9)+keyd+keyt); 236 if (mTodo->isCompleted()) setSortKey(1,QString::number(9)+keyd+keyt);
237 else setSortKey(1,QString::number(mTodo->priority())+keyd+keyt); 237 else setSortKey(1,QString::number(mTodo->priority())+keyd+keyt);
238 238
239 setText(2,i18n("%1 %").arg(QString::number(mTodo->percentComplete()))); 239 setText(2,i18n("%1 %").arg(QString::number(mTodo->percentComplete())));
240 if (mTodo->percentComplete()<100) { 240 if (mTodo->percentComplete()<100) {
241 if (mTodo->isCompleted()) setSortKey(2,QString::number(999)); 241 if (mTodo->isCompleted()) setSortKey(2,QString::number(999));
242 else setSortKey(2,QString::number(mTodo->percentComplete())); 242 else setSortKey(2,QString::number(mTodo->percentComplete()));
243 } 243 }
244 else { 244 else {
245 if (mTodo->isCompleted()) setSortKey(2,QString::number(999)); 245 if (mTodo->isCompleted()) setSortKey(2,QString::number(999));
246 else setSortKey(2,QString::number(99)); 246 else setSortKey(2,QString::number(99));
247 } 247 }
248 if ( state ) { 248 if ( state ) {
249 QListViewItem * myChild = firstChild(); 249 QListViewItem * myChild = firstChild();
250 KOTodoViewItem *item; 250 KOTodoViewItem *item;
251 while( myChild ) { 251 while( myChild ) {
252 //qDebug("stateCH "); 252 //qDebug("stateCH ");
253 item = static_cast<KOTodoViewItem*>(myChild); 253 item = static_cast<KOTodoViewItem*>(myChild);
254 item->stateChange(state); 254 item->stateChange(state);
255 myChild = myChild->nextSibling(); 255 myChild = myChild->nextSibling();
256 } 256 }
257 } else { 257 } else {
258 QListViewItem * myChild = parent(); 258 QListViewItem * myChild = parent();
259 if ( myChild ) 259 if ( myChild )
260 (static_cast<KOTodoViewItem*>(myChild))->stateChange(state); 260 (static_cast<KOTodoViewItem*>(myChild))->stateChange(state);
261 } 261 }
262 mTodoView->modified(true); 262 mTodoView->modified(true);
263 setMyPixmap(); 263 setMyPixmap();
264 mTodoView->setTodoModified( mTodo ); 264 mTodoView->setTodoModified( mTodo );
265} 265}
266 266
267bool KOTodoViewItem::isAlternate() 267bool KOTodoViewItem::isAlternate()
268{ 268{
269 269
270 KOTodoListView *lv = static_cast<KOTodoListView *>(listView()); 270 KOTodoListView *lv = static_cast<KOTodoListView *>(listView());
271 if (lv && lv->alternateBackground().isValid()) 271 if (lv && lv->alternateBackground().isValid())
272 { 272 {
273 KOTodoViewItem *above = 0; 273 KOTodoViewItem *above = 0;
274 above = dynamic_cast<KOTodoViewItem *>(itemAbove()); 274 above = static_cast<KOTodoViewItem *>(itemAbove());
275 m_known = above ? above->m_known : true; 275 m_known = above ? above->m_known : true;
276 if (m_known) 276 if (m_known)
277 { 277 {
278 m_odd = above ? !above->m_odd : false; 278 m_odd = above ? !above->m_odd : false;
279 } 279 }
280 else 280 else
281 { 281 {
282 KOTodoViewItem *item; 282 KOTodoViewItem *item;
283 bool previous = true; 283 bool previous = true;
284 if (QListViewItem::parent()) 284 if (QListViewItem::parent())
285 { 285 {
286 item = dynamic_cast<KOTodoViewItem *>(QListViewItem::parent()); 286 item = static_cast<KOTodoViewItem *>(QListViewItem::parent());
287 if (item) 287 if (item)
288 previous = item->m_odd; 288 previous = item->m_odd;
289 item = dynamic_cast<KOTodoViewItem *>(QListViewItem::parent()->firstChild()); 289 item = static_cast<KOTodoViewItem *>(QListViewItem::parent()->firstChild());
290 } 290 }
291 else 291 else
292 { 292 {
293 item = dynamic_cast<KOTodoViewItem *>(lv->firstChild()); 293 item = static_cast<KOTodoViewItem *>(lv->firstChild());
294 } 294 }
295 295
296 while(item) 296 while(item)
297 { 297 {
298 item->m_odd = previous = !previous; 298 item->m_odd = previous = !previous;
299 item->m_known = true; 299 item->m_known = true;
300 item = dynamic_cast<KOTodoViewItem *>(item->nextSibling()); 300 item = static_cast<KOTodoViewItem *>(item->nextSibling());
301 } 301 }
302 } 302 }
303 return m_odd; 303 return m_odd;
304 } 304 }
305 return false; 305 return false;
306} 306}
307 307
308void KOTodoViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment) 308void KOTodoViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment)
309{ 309{
310 QColorGroup _cg = cg; 310 QColorGroup _cg = cg;
311 QColorGroup::ColorRole role; 311 QColorGroup::ColorRole role;
312 if ( KOPrefs::instance()->mTodoViewUsesForegroundColor ) 312 if ( KOPrefs::instance()->mTodoViewUsesForegroundColor )
313 role = QColorGroup::Text; 313 role = QColorGroup::Text;
314 else 314 else
315 role = QColorGroup::Base; 315 role = QColorGroup::Base;
316 //#ifndef KORG_NOLVALTERNATION 316 //#ifndef KORG_NOLVALTERNATION
317 if (isAlternate()) 317 if (isAlternate())
318 _cg.setColor(QColorGroup::Base, static_cast< KOTodoListView* >(listView())->alternateBackground()); 318 _cg.setColor(QColorGroup::Base, static_cast< KOTodoListView* >(listView())->alternateBackground());
319 bool setColor = KOPrefs::instance()->mTodoViewUsesCatColors; 319 bool setColor = KOPrefs::instance()->mTodoViewUsesCatColors;
320 QColor colorToSet; 320 QColor colorToSet;
321 if ( setColor ) { 321 if ( setColor ) {
322 QStringList categories = mTodo->categories(); 322 QStringList categories = mTodo->categories();
323 QString cat = categories.first(); 323 QString cat = categories.first();
324 if ( !cat.isEmpty()) { 324 if ( !cat.isEmpty()) {
325 colorToSet = *(KOPrefs::instance()->categoryColor(cat) ); 325 colorToSet = *(KOPrefs::instance()->categoryColor(cat) );
326 } else 326 } else
327 setColor = false; 327 setColor = false;
328 } 328 }
329 329
330 int odue = mTodo->hasDueSubTodo( !isOpen()); 330 int odue = mTodo->hasDueSubTodo( !isOpen());
331 if (odue == 2) { 331 if (odue == 2) {
332 colorToSet = KOPrefs::instance()->mTodoOverdueColor; 332 colorToSet = KOPrefs::instance()->mTodoOverdueColor;
333 setColor = true; 333 setColor = true;
334 } else if ( odue == 1 ) { 334 } else if ( odue == 1 ) {
335 colorToSet = KOPrefs::instance()->mTodoDueTodayColor; 335 colorToSet = KOPrefs::instance()->mTodoDueTodayColor;
336 setColor = true; 336 setColor = true;
337 } 337 }
338 338
339 339
340 if ( setColor ) { 340 if ( setColor ) {
341 _cg.setColor(role,colorToSet ); 341 _cg.setColor(role,colorToSet );
342 if ( role == QColorGroup::Base) { 342 if ( role == QColorGroup::Base) {
343 int rgb = colorToSet.red(); 343 int rgb = colorToSet.red();
344 rgb += colorToSet.blue()/2; 344 rgb += colorToSet.blue()/2;
345 rgb += colorToSet.green(); 345 rgb += colorToSet.green();
346 if ( rgb < 200 ) 346 if ( rgb < 200 )
347 _cg.setColor(QColorGroup::Text,Qt::white ); 347 _cg.setColor(QColorGroup::Text,Qt::white );
348 } 348 }
349 } 349 }
350 //#endif 350 //#endif
351 if ( column > 0 ){ 351 if ( column > 0 ){
352 if ( column == 2 && !KOPrefs::instance()->mTodoViewShowsPercentage ) { 352 if ( column == 2 && !KOPrefs::instance()->mTodoViewShowsPercentage ) {
353 p->save(); 353 p->save();
354 int progress = (int)(( (width-6)*mTodo->percentComplete())/100.0 + 0.5); 354 int progress = (int)(( (width-6)*mTodo->percentComplete())/100.0 + 0.5);
355 355
356 p->fillRect( 0, 0, width, height(), _cg.base() ); // background 356 p->fillRect( 0, 0, width, height(), _cg.base() ); // background
357 // p->setPen(Qt::black ); //border 357 // p->setPen(Qt::black ); //border
358 // p->setBrush( KOPrefs::instance()->mHighlightColorKGlobalSettings::baseColor() ); //filling 358 // p->setBrush( KOPrefs::instance()->mHighlightColorKGlobalSettings::baseColor() ); //filling
359 QColor fc = KOPrefs::instance()->mHighlightColor; 359 QColor fc = KOPrefs::instance()->mHighlightColor;
360 if ( mTodo->percentComplete() == 100 ) 360 if ( mTodo->percentComplete() == 100 )
361 fc = darkGreen; 361 fc = darkGreen;
362 p->drawRect( 2, 2, width-4, height()-4); 362 p->drawRect( 2, 2, width-4, height()-4);
363 p->fillRect( 3, 3, progress, height()-6, 363 p->fillRect( 3, 3, progress, height()-6,
364 fc ); 364 fc );
365 p->restore(); 365 p->restore();
366 } else { 366 } else {
367 QCheckListItem::paintCell(p, _cg, column, width, alignment); 367 QCheckListItem::paintCell(p, _cg, column, width, alignment);
368 } 368 }
369 return; 369 return;
370 } 370 }
371 371
372 int align = alignment; 372 int align = alignment;
373 373
374 if ( !p ) 374 if ( !p )
375 return; 375 return;
376 376
377 p->fillRect( 0, 0, width, height(), _cg.brush( QColorGroup::Base ) ); 377 p->fillRect( 0, 0, width, height(), _cg.brush( QColorGroup::Base ) );
378 378
379 QListView *lv = listView(); 379 QListView *lv = listView();
380 if ( !lv ) 380 if ( !lv )
381 return; 381 return;
382 int marg = 2;//lv->itemMargin(); 382 int marg = 2;//lv->itemMargin();
383 int r = 0; 383 int r = 0;
384 QCheckListItem::Type myType = QCheckListItem::CheckBox; 384 QCheckListItem::Type myType = QCheckListItem::CheckBox;
385 int BoxSize = 20; 385 int BoxSize = 20;
386 int boxOffset = 2; 386 int boxOffset = 2;
387 int xOffset = 2; 387 int xOffset = 2;
388 if (qApp->desktop()->width() < 300 ) { 388 if (qApp->desktop()->width() < 300 ) {
389 BoxSize = 14; 389 BoxSize = 14;
390 boxOffset = -1; 390 boxOffset = -1;
391 xOffset = 1; 391 xOffset = 1;
392 // marg = 0; 392 // marg = 0;
393 } 393 }
394 if ( height() < BoxSize ) { 394 if ( height() < BoxSize ) {
395 boxOffset = boxOffset - ((BoxSize - height())/2) ; 395 boxOffset = boxOffset - ((BoxSize - height())/2) ;
396 // qDebug("boxOffset %d height %d", boxOffset, height() ); 396 // qDebug("boxOffset %d height %d", boxOffset, height() );
397 BoxSize = height(); 397 BoxSize = height();
398 398
399 } 399 }
400 //bool winStyle = lv->style() == WindowsStyle; 400 //bool winStyle = lv->style() == WindowsStyle;
401 401
402 int lineStart = 5; 402 int lineStart = 5;
403 if ( myType == Controller ) { 403 if ( myType == Controller ) {
404 if ( !pixmap( 0 ) ) 404 if ( !pixmap( 0 ) )
405 r += BoxSize + 4; 405 r += BoxSize + 4;
406 } else { 406 } else {
407 ASSERT( lv ); //### 407 ASSERT( lv ); //###
408 //QFontMetrics fm( lv->font() ); 408 //QFontMetrics fm( lv->font() );
409 //int d = fm.height(); 409 //int d = fm.height();
410 int x = 0; 410 int x = 0;
411 int y = (height() - BoxSize) / 2; 411 int y = (height() - BoxSize) / 2;
412 //p->setPen( QPen( _cg.text(), winStyle ? 2 : 1 ) ); 412 //p->setPen( QPen( _cg.text(), winStyle ? 2 : 1 ) );
413 if ( myType == CheckBox ) { 413 if ( myType == CheckBox ) {
414 if ( isEnabled() ) 414 if ( isEnabled() )
415 p->setPen( QPen( _cg.text(), 1 ) ); 415 p->setPen( QPen( _cg.text(), 1 ) );
416 else 416 else
417 p->setPen( QPen( listView()->palette().color( QPalette::Disabled, QColorGroup::Text ), 1 ) ); 417 p->setPen( QPen( listView()->palette().color( QPalette::Disabled, QColorGroup::Text ), 1 ) );
418 p->drawRect( x+marg, y+2, BoxSize-4, BoxSize-4 ); 418 p->drawRect( x+marg, y+2, BoxSize-4, BoxSize-4 );
419 lineStart = x+marg; 419 lineStart = x+marg;
420 ///////////////////// 420 /////////////////////
421 x++; 421 x++;
422 y++; 422 y++;
423 if ( isOn() ) { 423 if ( isOn() ) {
424 QPointArray a( 7*2 ); 424 QPointArray a( 7*2 );
425 int i, xx, yy; 425 int i, xx, yy;
426 xx = x+xOffset+marg+(boxOffset/2); 426 xx = x+xOffset+marg+(boxOffset/2);
427 yy = y+5+boxOffset; 427 yy = y+5+boxOffset;
428 for ( i=0; i<3; i++ ) { 428 for ( i=0; i<3; i++ ) {
429 a.setPoint( 2*i, xx, yy ); 429 a.setPoint( 2*i, xx, yy );
430 a.setPoint( 2*i+1, xx, yy+2 ); 430 a.setPoint( 2*i+1, xx, yy+2 );
431 // qDebug(" "); 431 // qDebug(" ");
432 xx++; yy++; 432 xx++; yy++;
433 } 433 }
434 yy -= 2; 434 yy -= 2;
435 for ( i=3; i<7; i++ ) { 435 for ( i=3; i<7; i++ ) {
436 a.setPoint( 2*i, xx, yy ); 436 a.setPoint( 2*i, xx, yy );
437 a.setPoint( 2*i+1, xx, yy+2 ); 437 a.setPoint( 2*i+1, xx, yy+2 );
438 xx++; yy--; 438 xx++; yy--;
439 } 439 }
440 p->setPen( darkGreen ); 440 p->setPen( darkGreen );
441 p->drawLineSegments( a ); 441 p->drawLineSegments( a );
442 } 442 }
443 //////////////////////// 443 ////////////////////////
444 } 444 }
445 r += BoxSize + 4; 445 r += BoxSize + 4;
446 } 446 }
447 447
448 p->translate( r, 0 ); 448 p->translate( r, 0 );
449 p->setPen( QPen( _cg.text() ) ); 449 p->setPen( QPen( _cg.text() ) );
450 QListViewItem::paintCell( p, _cg, column, width - r, align ); 450 QListViewItem::paintCell( p, _cg, column, width - r, align );
451 if ( mTodo->cancelled () ) { 451 if ( mTodo->cancelled () ) {
452 p->setPen( black ); 452 p->setPen( black );
453 QRect br = p->boundingRect( 1,1,1,1,0,mTodo->summary() ); 453 QRect br = p->boundingRect( 1,1,1,1,0,mTodo->summary() );
454 int wid = br.width() +lineStart; 454 int wid = br.width() +lineStart;
455 if ( wid > width-3 ) 455 if ( wid > width-3 )
456 wid = width-3; 456 wid = width-3;
457 p->drawLine( lineStart, height()/2+1, wid, height()/2+1 ); 457 p->drawLine( lineStart, height()/2+1, wid, height()/2+1 );
458 458
459 } 459 }
460 460
461} 461}
diff --git a/korganizer/kowhatsnextview.cpp b/korganizer/kowhatsnextview.cpp
index 10665f4..391b3bb 100644
--- a/korganizer/kowhatsnextview.cpp
+++ b/korganizer/kowhatsnextview.cpp
@@ -1,764 +1,768 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19 19
20#include <qlayout.h> 20#include <qlayout.h>
21#include <qtextbrowser.h> 21#include <qtextbrowser.h>
22#include <qtextcodec.h> 22#include <qtextcodec.h>
23#include <qfileinfo.h> 23#include <qfileinfo.h>
24#include <qlabel.h> 24#include <qlabel.h>
25 25
26#include <qapplication.h> 26#include <qapplication.h>
27#ifdef DESKTOP_VERSION 27#ifdef DESKTOP_VERSION
28#include <qpaintdevicemetrics.h> 28#include <qpaintdevicemetrics.h>
29#endif 29#endif
30#include <kglobal.h> 30#include <kglobal.h>
31#include <klocale.h> 31#include <klocale.h>
32#include <kdebug.h> 32#include <kdebug.h>
33#include <kiconloader.h> 33#include <kiconloader.h>
34#include <kmessagebox.h> 34#include <kmessagebox.h>
35 35
36#include <libkcal/calendar.h> 36#include <libkcal/calendar.h>
37 37
38#ifndef KORG_NOPRINTER 38#ifndef KORG_NOPRINTER
39#include "calprinter.h" 39#include "calprinter.h"
40#endif 40#endif
41#include "koglobals.h" 41#include "koglobals.h"
42#include "koprefs.h" 42#include "koprefs.h"
43#include "koeventviewerdialog.h" 43#include "koeventviewerdialog.h"
44#include <qstylesheet.h> 44#include <qstylesheet.h>
45#include "kowhatsnextview.h" 45#include "kowhatsnextview.h"
46using namespace KOrg; 46using namespace KOrg;
47 47
48void WhatsNextTextBrowser::setSource(const QString& n) 48void WhatsNextTextBrowser::setSource(const QString& n)
49{ 49{
50 50
51 if (n.startsWith("event:")) { 51 if (n.startsWith("event:")) {
52 emit showIncidence(n); 52 emit showIncidence(n);
53 return; 53 return;
54 } else if (n.startsWith("todo:")) { 54 } else if (n.startsWith("todo:")) {
55 emit showIncidence(n); 55 emit showIncidence(n);
56 return; 56 return;
57 } else { 57 } else {
58 QTextBrowser::setSource(n); 58 QTextBrowser::setSource(n);
59 } 59 }
60} 60}
61void WhatsNextTextBrowser::printMe() 61void WhatsNextTextBrowser::printMe()
62{ 62{
63#ifdef DESKTOP_VERSION 63#ifdef DESKTOP_VERSION
64 QPrinter printer; 64 QPrinter printer;
65 if (!printer.setup() ) 65 if (!printer.setup() )
66 return; 66 return;
67 QPainter p; 67 QPainter p;
68 p.begin ( &printer ); 68 p.begin ( &printer );
69 QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer ); 69 QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer );
70 float dx, dy; 70 float dx, dy;
71 int wid = (m.width() * 9)/10; 71 int wid = (m.width() * 9)/10;
72 dx = (float) wid/(float)contentsWidth (); 72 dx = (float) wid/(float)contentsWidth ();
73 dy = (float)(m.height()) / (float)contentsHeight (); 73 dy = (float)(m.height()) / (float)contentsHeight ();
74 float scale; 74 float scale;
75 // scale to fit the width or height of the paper 75 // scale to fit the width or height of the paper
76 if ( dx < dy ) 76 if ( dx < dy )
77 scale = dx; 77 scale = dx;
78 else 78 else
79 scale = dy; 79 scale = dy;
80 p.translate( m.width()/10,0 ); 80 p.translate( m.width()/10,0 );
81 p.scale( scale, scale ); 81 p.scale( scale, scale );
82 drawContents ( &p, 0,0, contentsWidth (), contentsHeight () ); 82 drawContents ( &p, 0,0, contentsWidth (), contentsHeight () );
83 p.end(); 83 p.end();
84#endif 84#endif
85} 85}
86 86
87KOWhatsNextView::KOWhatsNextView(Calendar *calendar, QWidget *parent, 87KOWhatsNextView::KOWhatsNextView(Calendar *calendar, QWidget *parent,
88 const char *name) 88 const char *name)
89 : KOrg::BaseView(calendar, parent, name) 89 : KOrg::BaseView(calendar, parent, name)
90{ 90{
91 // mDateLabel = 91 // mDateLabel =
92 // new QLabel(KGlobal::locale()->formatDate(QDate::currentDate()),this); 92 // new QLabel(KGlobal::locale()->formatDate(QDate::currentDate()),this);
93 // mDateLabel->setMargin(2); 93 // mDateLabel->setMargin(2);
94 // mDateLabel->setAlignment(AlignCenter); 94 // mDateLabel->setAlignment(AlignCenter);
95 setFont( KOPrefs::instance()->mWhatsNextFont ); 95 setFont( KOPrefs::instance()->mWhatsNextFont );
96 mView = new WhatsNextTextBrowser(this); 96 mView = new WhatsNextTextBrowser(this);
97 connect(mView,SIGNAL(showIncidence(const QString &)),SLOT(showIncidence(const QString &))); 97 connect(mView,SIGNAL(showIncidence(const QString &)),SLOT(showIncidence(const QString &)));
98 QStyleSheet* stsh = mView->styleSheet(); 98 QStyleSheet* stsh = mView->styleSheet();
99 QStyleSheetItem * style ; 99 QStyleSheetItem * style ;
100 style = stsh->item ("h2" ); 100 style = stsh->item ("h2" );
101 if ( style ) { 101 if ( style ) {
102 style->setMargin(QStyleSheetItem::MarginAll,0); 102 style->setMargin(QStyleSheetItem::MarginAll,0);
103 } 103 }
104 style = stsh->item ("h3" ); 104 style = stsh->item ("h3" );
105 if ( style ) { 105 if ( style ) {
106 style->setMargin(QStyleSheetItem::MarginAll,0); 106 style->setMargin(QStyleSheetItem::MarginAll,0);
107 } 107 }
108 mEventViewer = 0; 108 mEventViewer = 0;
109 109
110 QBoxLayout *topLayout = new QVBoxLayout(this); 110 QBoxLayout *topLayout = new QVBoxLayout(this);
111 // topLayout->addWidget(mDateLabel); 111 // topLayout->addWidget(mDateLabel);
112 topLayout->addWidget(mView); 112 topLayout->addWidget(mView);
113 mTimer = new QTimer( this ); 113 mTimer = new QTimer( this );
114 connect(mTimer,SIGNAL( timeout() ),this, SLOT(updateView())); 114 connect(mTimer,SIGNAL( timeout() ),this, SLOT(updateView()));
115 115
116 connect(mView->horizontalScrollBar (),SIGNAL( sliderReleased () ),this, SLOT(restartTimer())); 116 connect(mView->horizontalScrollBar (),SIGNAL( sliderReleased () ),this, SLOT(restartTimer()));
117 connect(mView->verticalScrollBar (),SIGNAL( sliderReleased () ),this, SLOT(restartTimer())); 117 connect(mView->verticalScrollBar (),SIGNAL( sliderReleased () ),this, SLOT(restartTimer()));
118} 118}
119 119
120KOWhatsNextView::~KOWhatsNextView() 120KOWhatsNextView::~KOWhatsNextView()
121{ 121{
122} 122}
123 123
124int KOWhatsNextView::maxDatesHint() 124int KOWhatsNextView::maxDatesHint()
125{ 125{
126 return 0; 126 return 0;
127} 127}
128 128
129int KOWhatsNextView::currentDateCount() 129int KOWhatsNextView::currentDateCount()
130{ 130{
131 return 0; 131 return 0;
132} 132}
133 133
134QPtrList<Incidence> KOWhatsNextView::selectedIncidences() 134QPtrList<Incidence> KOWhatsNextView::selectedIncidences()
135{ 135{
136 QPtrList<Incidence> eventList; 136 QPtrList<Incidence> eventList;
137 137
138 return eventList; 138 return eventList;
139} 139}
140 140
141void KOWhatsNextView::printMe() 141void KOWhatsNextView::printMe()
142{ 142{
143#ifdef DESKTOP_VERSION 143#ifdef DESKTOP_VERSION
144 mView->printMe(); 144 mView->printMe();
145#endif 145#endif
146} 146}
147void KOWhatsNextView::printPreview(CalPrinter *calPrinter, const QDate &fd, 147void KOWhatsNextView::printPreview(CalPrinter *calPrinter, const QDate &fd,
148 const QDate &td) 148 const QDate &td)
149{ 149{
150#ifndef KORG_NOPRINTER 150#ifndef KORG_NOPRINTER
151 calPrinter->preview(CalPrinter::Day, fd, td); 151 calPrinter->preview(CalPrinter::Day, fd, td);
152#endif 152#endif
153} 153}
154void KOWhatsNextView::updateConfig() 154void KOWhatsNextView::updateConfig()
155{ 155{
156 setFont( KOPrefs::instance()->mWhatsNextFont ); 156 setFont( KOPrefs::instance()->mWhatsNextFont );
157 updateView(); 157 updateView();
158 158
159} 159}
160void KOWhatsNextView::showEvent ( QShowEvent * e ) 160void KOWhatsNextView::showEvent ( QShowEvent * e )
161{ 161{
162 //qDebug("KOWhatsNextView::showEvent "); 162 //qDebug("KOWhatsNextView::showEvent ");
163 restartTimer(); 163 restartTimer();
164 QWidget::showEvent ( e ); 164 QWidget::showEvent ( e );
165} 165}
166void KOWhatsNextView::hideEvent ( QHideEvent * e) 166void KOWhatsNextView::hideEvent ( QHideEvent * e)
167{ 167{
168 //qDebug(" KOWhatsNextView::hideEvent"); 168 //qDebug(" KOWhatsNextView::hideEvent");
169 mTimer->stop(); 169 mTimer->stop();
170 QWidget::hideEvent ( e ); 170 QWidget::hideEvent ( e );
171} 171}
172void KOWhatsNextView::restartTimer() 172void KOWhatsNextView::restartTimer()
173{ 173{
174 //qDebug("KOWhatsNextView::restartTimer() "); 174 //qDebug("KOWhatsNextView::restartTimer() ");
175 mTimer->start( 300000 ); 175 mTimer->start( 300000 );
176 //mTimer->start( 5000 ); 176 //mTimer->start( 5000 );
177} 177}
178void KOWhatsNextView::updateView() 178void KOWhatsNextView::updateView()
179{ 179{
180 //qDebug("KOWhatsNextView::updateView() "); 180 //qDebug("KOWhatsNextView::updateView() ");
181 if ( mTimer->isActive() ) 181 if ( mTimer->isActive() )
182 restartTimer(); 182 restartTimer();
183 //qDebug("KOWhatsNextView::updateView() "); 183 //qDebug("KOWhatsNextView::updateView() ");
184 // mDateLabel->setText(KGlobal::locale()->formatDate(QDate::currentDate())); 184 // mDateLabel->setText(KGlobal::locale()->formatDate(QDate::currentDate()));
185 KIconLoader kil("korganizer"); 185 KIconLoader kil("korganizer");
186 QString ipath;// = new QString(); 186 QString ipath;// = new QString();
187 // kil.loadIcon("korganizer",KIcon::NoGroup,32,KIcon::DefaultState,&ipath); 187 // kil.loadIcon("korganizer",KIcon::NoGroup,32,KIcon::DefaultState,&ipath);
188 //<big><big><strong>" + date + "</strong></big></big>\n"; 188 //<big><big><strong>" + date + "</strong></big></big>\n";
189 mText = "<table width=\"100%\">\n"; 189 mText = "<table width=\"100%\">\n";
190 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>"; 190 //mText += "<tr bgcolor=\"#3679AD\"><td><h2>";
191#ifdef DESKTOP_VERSION 191#ifdef DESKTOP_VERSION
192 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h1>"; 192 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h1>";
193#else 193#else
194 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h2>"; 194 mText += "<tr bgcolor=\"#5699CD\"><td align=\"center\"><h2>";
195#endif 195#endif
196 // mText += "<img src=\""; 196 // mText += "<img src=\"";
197 // mText += ipath; 197 // mText += ipath;
198 // mText += "\">"; 198 // mText += "\">";
199 mEventDate = QDate::currentDate(); 199 mEventDate = QDate::currentDate();
200#ifdef DESKTOP_VERSION 200#ifdef DESKTOP_VERSION
201 mText += "<font color=\"#FFFFFF\"> <em>" + KGlobal::locale()->formatDate( mEventDate , false )+"</em></font></h1>"; 201 mText += "<font color=\"#FFFFFF\"> <em>" + KGlobal::locale()->formatDate( mEventDate , false )+"</em></font></h1>";
202#else 202#else
203 mText += "<font color=\"#FFFFFF\"> <em>" + KGlobal::locale()->formatDate( mEventDate , false )+"</em></font></h2>"; 203 mText += "<font color=\"#FFFFFF\"> <em>" + KGlobal::locale()->formatDate( mEventDate , false )+"</em></font></h2>";
204#endif 204#endif
205 mText += "</td></tr>\n<tr bgcolor=\"#EAF8FA\"><td>"; 205 mText += "</td></tr>\n<tr bgcolor=\"#EAF8FA\"><td>";
206 int iii; 206 int iii;
207 mTodos.clear(); 207 mTodos.clear();
208 QPtrList<Event> events; 208 QPtrList<Event> events;
209 QPtrList<Todo> todos = calendar()->todos(); 209 QPtrList<Todo> todos = calendar()->todos();
210 Todo * todo; 210 Todo * todo;
211 //mText += "<h2>" + i18n("Events: ") + "</h2>\n"; 211 //mText += "<h2>" + i18n("Events: ") + "</h2>\n";
212 int daysToShow = KOPrefs::instance()->mWhatsNextDays ; 212 int daysToShow = KOPrefs::instance()->mWhatsNextDays ;
213 bool itemAdded = false; 213 bool itemAdded = false;
214 for ( iii = 0; iii < daysToShow; ++iii ) { 214 for ( iii = 0; iii < daysToShow; ++iii ) {
215 QString date; 215 QString date;
216 itemAdded = false; 216 itemAdded = false;
217 events = calendar()->events( mEventDate, true ); 217 events = calendar()->events( mEventDate, true );
218 218
219 if ( iii == 0 ) { // today !!! 219 if ( iii == 0 ) { // today !!!
220 todo = todos.first(); 220 todo = todos.first();
221 while(todo) { 221 while(todo) {
222 if ( !todo->isCompleted() &&todo->hasDueDate() && todo->dtDue().date() < mEventDate ) { 222 if ( !todo->isCompleted() &&todo->hasDueDate() && todo->dtDue().date() < mEventDate ) {
223 if ( ! itemAdded ) { 223 if ( ! itemAdded ) {
224 appendDay ( iii, mEventDate ); 224 appendDay ( iii, mEventDate );
225 //itemAdded = true; 225 //itemAdded = true;
226 226
227 } //bool reply=false, bool notRed = true, bool appendTable = false); 227 } //bool reply=false, bool notRed = true, bool appendTable = false);
228 appendEvent(todo, false, false, !itemAdded ); 228 appendEvent(todo, false, false, !itemAdded );
229 itemAdded = true; 229 itemAdded = true;
230 } 230 }
231 todo = todos.next(); 231 todo = todos.next();
232 } 232 }
233 } 233 }
234 234
235 235
236 if (events.count() > 0) { 236 if (events.count() > 0) {
237 // mText += "<p></p>"; 237 // mText += "<p></p>";
238 // kil.loadIcon("month",KIcon::NoGroup,22,KIcon::DefaultState,&ipath); 238 // kil.loadIcon("month",KIcon::NoGroup,22,KIcon::DefaultState,&ipath);
239 // mText += "<h2>"; 239 // mText += "<h2>";
240 //mText += " <img src=\""; 240 //mText += " <img src=\"";
241 //mText += ipath; 241 //mText += ipath;
242 //mText += "\">"; 242 //mText += "\">";
243 if ( ! itemAdded ) { 243 if ( ! itemAdded ) {
244 appendDay ( iii, mEventDate ); 244 appendDay ( iii, mEventDate );
245 245
246 } 246 }
247 // for first day (iii == 0) 247 // for first day (iii == 0)
248 // we may have syncevents, or events in the past, which maybe should not be diaplayed 248 // we may have syncevents, or events in the past, which maybe should not be diaplayed
249 // for that reason we cannot append <table> in appendDay () for iii == 0 249 // for that reason we cannot append <table> in appendDay () for iii == 0
250 // we must append it in the first successful call of appendEvent() 250 // we must append it in the first successful call of appendEvent()
251 Event *ev = events.first(); 251 Event *ev = events.first();
252 while(ev) { 252 while(ev) {
253 //qDebug("+++++event append %s", ev->summary().latin1()); 253 //qDebug("+++++event append %s", ev->summary().latin1());
254 if ( true /*!ev->recurrence()->doesRecur() || ev->recursOn( mEventDate)*/) { 254 if ( true /*!ev->recurrence()->doesRecur() || ev->recursOn( mEventDate)*/) {
255 if ( appendEvent(ev, false , iii!= 0,!itemAdded ) ) 255 if ( appendEvent(ev, false , iii!= 0,!itemAdded ) )
256 itemAdded = true; 256 itemAdded = true;
257 } 257 }
258 ev = events.next(); 258 ev = events.next();
259 } 259 }
260 260
261 //mText += "</table>\n"; 261 //mText += "</table>\n";
262 } 262 }
263 263
264 todo = todos.first(); 264 todo = todos.first();
265 while(todo) { 265 while(todo) {
266 if ( !todo->isCompleted() &&todo->hasDueDate() && todo->dtDue().date() == mEventDate ) { 266 if ( !todo->isCompleted() &&todo->hasDueDate() && todo->dtDue().date() == mEventDate ) {
267 if ( ! itemAdded ) { 267 if ( ! itemAdded ) {
268 appendDay ( iii, mEventDate ); 268 appendDay ( iii, mEventDate );
269 //itemAdded = true; 269 //itemAdded = true;
270 } 270 }
271 appendEvent(todo, false , iii!= 0,!itemAdded); 271 appendEvent(todo, false , iii!= 0,!itemAdded);
272 itemAdded = true; 272 itemAdded = true;
273 } 273 }
274 todo = todos.next(); 274 todo = todos.next();
275 } 275 }
276 if ( !itemAdded && iii == 0 ) { 276 if ( !itemAdded && iii == 0 ) {
277 // appendDay ( iii, mEventDate ); 277 // appendDay ( iii, mEventDate );
278 //mText += "<table>"; 278 //mText += "<table>";
279 // mText += "<b><font color=\"#000080\"><em>"+i18n("No event, nothing to do.") +"</em></font></b>\n"; 279 // mText += "<b><font color=\"#000080\"><em>"+i18n("No event, nothing to do.") +"</em></font></b>\n";
280 mText += "<h3 align=\"center\"><font color=\"#008000\"><em>"+i18n("No event, nothing to do.") +"</em></font></h3>\n"; 280 mText += "<h3 align=\"center\"><font color=\"#008000\"><em>"+i18n("No event, nothing to do.") +"</em></font></h3>\n";
281 //mText +="</table>"; 281 //mText +="</table>";
282 } 282 }
283 if ( itemAdded ) 283 if ( itemAdded )
284 mText += "</table>\n"; 284 mText += "</table>\n";
285 mEventDate = mEventDate.addDays( 1 ); 285 mEventDate = mEventDate.addDays( 1 );
286 } 286 }
287 287
288 int topmostPrios = KOPrefs::instance()->mWhatsNextPrios; 288 int topmostPrios = KOPrefs::instance()->mWhatsNextPrios;
289 if (todos.count() > 0 && topmostPrios > 0 ) { 289 if (todos.count() > 0 && topmostPrios > 0 ) {
290 // kil.loadIcon("todo",KIcon::NoGroup,22,KIcon::DefaultState,&ipath); 290 // kil.loadIcon("todo",KIcon::NoGroup,22,KIcon::DefaultState,&ipath);
291 // mText += "<h2>"; 291 // mText += "<h2>";
292 //<img src=\""; 292 //<img src=\"";
293 // mText += ipath; 293 // mText += ipath;
294 // mText += "\">"; 294 // mText += "\">";
295 // mText += i18n("Overdue To-Do:") + "</h2>\n"; 295 // mText += i18n("Overdue To-Do:") + "</h2>\n";
296 296
297 //mText += "<ul>\n"; 297 //mText += "<ul>\n";
298 bool gotone = false; 298 bool gotone = false;
299 int priority = 1; 299 int priority = 1;
300 int priosFound = 0; 300 int priosFound = 0;
301#ifdef DESKTOP_VERSION 301#ifdef DESKTOP_VERSION
302 mText +="<p></p>"; 302 mText +="<p></p>";
303#endif 303#endif
304 304
305 mText +="<h2><em><font color=\"#000080\">" + i18n("Incomplete Todo:") + "</font></em></h2>\n"; 305 mText +="<h2><em><font color=\"#000080\">" + i18n("Incomplete Todo:") + "</font></em></h2>\n";
306 mText += "<ul>\n"; 306 mText += "<ul>\n";
307 while (!gotone && priority<6) { 307 while (!gotone && priority<6) {
308 todo = todos.first(); 308 todo = todos.first();
309 while(todo) { 309 while(todo) {
310 if (!todo->isCompleted() && (todo->priority() == priority) ) { 310 if (!todo->isCompleted() && (todo->priority() == priority) ) {
311 if ( appendTodo(todo) ) 311 if ( appendTodo(todo) )
312 gotone = true; 312 gotone = true;
313 } 313 }
314 todo = todos.next(); 314 todo = todos.next();
315 } 315 }
316 if ( gotone ) { 316 if ( gotone ) {
317 gotone = false; 317 gotone = false;
318 ++priosFound; 318 ++priosFound;
319 if ( priosFound == topmostPrios ) 319 if ( priosFound == topmostPrios )
320 break; 320 break;
321 } 321 }
322 priority++; 322 priority++;
323 // kdDebug() << "adding the todos..." << endl; 323 // kdDebug() << "adding the todos..." << endl;
324 } 324 }
325 mText += "</ul>\n"; 325 mText += "</ul>\n";
326 } 326 }
327 327
328 int replys = 0; 328 int replys = 0;
329 events = calendar()->events(QDate::currentDate(), QDate(2975,12,6)); 329 events = calendar()->events(QDate::currentDate(), QDate(2975,12,6));
330 if (events.count() > 0) { 330 if (events.count() > 0) {
331 Event *ev = events.first(); 331 Event *ev = events.first();
332 while(ev) { 332 while(ev) {
333 Attendee *me = ev->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 333 Attendee *me = ev->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
334 if (me!=0) { 334 if (me!=0) {
335 if (me->status()==Attendee::NeedsAction && me->RSVP()) { 335 if (me->status()==Attendee::NeedsAction && me->RSVP()) {
336 if (replys == 0) { 336 if (replys == 0) {
337 mText += "<p></p>"; 337 mText += "<p></p>";
338 // kil.loadIcon("reply",KIcon::NoGroup,22,KIcon::DefaultState,&ipath); 338 // kil.loadIcon("reply",KIcon::NoGroup,22,KIcon::DefaultState,&ipath);
339 //mText += "<h2>"; 339 //mText += "<h2>";
340 //<img src=\""; 340 //<img src=\"";
341 // mText += ipath; 341 // mText += ipath;
342 // mText += "\">"; 342 // mText += "\">";
343 //mText += i18n("Events and To-Dos that need a reply:") + "</h2>\n"; 343 //mText += i18n("Events and To-Dos that need a reply:") + "</h2>\n";
344 mText +="<h2><em><font color=\"#000080\">" + i18n("Events and To-Dos that need a reply:") + "</font></em></h2>\n"; 344 mText +="<h2><em><font color=\"#000080\">" + i18n("Events and To-Dos that need a reply:") + "</font></em></h2>\n";
345 mText += "<table>\n"; 345 mText += "<table>\n";
346 } 346 }
347 replys++; 347 replys++;
348 appendEvent(ev,true); 348 appendEvent(ev,true);
349 } 349 }
350 } 350 }
351 ev = events.next(); 351 ev = events.next();
352 } 352 }
353 } 353 }
354 todos = calendar()->todos(); 354 todos = calendar()->todos();
355 if (todos.count() > 0) { 355 if (todos.count() > 0) {
356 Todo *to = todos.first(); 356 Todo *to = todos.first();
357 while(to) { 357 while(to) {
358 if ( !to->isCompleted() ){ 358 if ( !to->isCompleted() ){
359 Attendee *me = to->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email()); 359 Attendee *me = to->attendeeByMails(KOPrefs::instance()->mAdditionalMails,KOPrefs::instance()->email());
360 if (me!=0) { 360 if (me!=0) {
361 if (me->status()==Attendee::NeedsAction && me->RSVP()) { 361 if (me->status()==Attendee::NeedsAction && me->RSVP()) {
362 if (replys == 0) { 362 if (replys == 0) {
363 mText +="<h2><em><font color=\"#000080\">" + i18n("Events and To-Dos that need a reply:") + "</font></em></h2>\n"; 363 mText +="<h2><em><font color=\"#000080\">" + i18n("Events and To-Dos that need a reply:") + "</font></em></h2>\n";
364 mText += "<table>\n"; 364 mText += "<table>\n";
365 } 365 }
366 replys++; 366 replys++;
367 appendEvent(to, true); 367 appendEvent(to, true);
368 } 368 }
369 } 369 }
370 } 370 }
371 to = todos.next(); 371 to = todos.next();
372 } 372 }
373 } 373 }
374 if (replys > 0 ) mText += "</table>\n"; 374 if (replys > 0 ) mText += "</table>\n";
375 375
376 376
377 mText += "</td></tr>\n</table>\n"; 377 mText += "</td></tr>\n</table>\n";
378 378
379 mView->setText(mText); 379 mView->setText(mText);
380 mView->setFocus(); 380 mView->setFocus();
381 381
382 // QPixmap bPix = SmallIcon( "back" ); 382 // QPixmap bPix = SmallIcon( "back" );
383 // qDebug("xxxxxxxxxxxxxxxxxxxxx "); 383 // qDebug("xxxxxxxxxxxxxxxxxxxxx ");
384 // QWidget* test = new QWidget(); 384 // QWidget* test = new QWidget();
385 // test->setBackgroundMode(FixedPixmap ); 385 // test->setBackgroundMode(FixedPixmap );
386 // test->setBackgroundPixmap ( bPix ); 386 // test->setBackgroundPixmap ( bPix );
387 // test->resize( 300, 400 ); 387 // test->resize( 300, 400 );
388 // test->show(); 388 // test->show();
389 // mView->setBackgroundMode(FixedPixmap ); 389 // mView->setBackgroundMode(FixedPixmap );
390 // mView->setBackgroundPixmap ( bPix ); 390 // mView->setBackgroundPixmap ( bPix );
391 // qDebug("%s ",mText.latin1()); 391 // qDebug("%s ",mText.latin1());
392} 392}
393 393
394void KOWhatsNextView::appendDay( int i, QDate eventDate ) 394void KOWhatsNextView::appendDay( int i, QDate eventDate )
395{ 395{
396 QString date; 396 QString date;
397 QString day = KGlobal::locale()->formatDate( eventDate , KOPrefs::instance()->mShortDateInViewer); 397 QString day = KGlobal::locale()->formatDate( eventDate , KOPrefs::instance()->mShortDateInViewer);
398 if ( ! KOPrefs::instance()->mShortDateInViewer && QApplication::desktop()->width() < 320 ) { 398 if ( ! KOPrefs::instance()->mShortDateInViewer && QApplication::desktop()->width() < 320 ) {
399 if ( i == 0 ) { 399 if ( i == 0 ) {
400 //mText += "<table>\n"; 400 //mText += "<table>\n";
401 return;//date = "<em><font color=\"#008000\"><em>" + day+"</font></em>"; 401 return;//date = "<em><font color=\"#008000\"><em>" + day+"</font></em>";
402 } 402 }
403 else if ( i == 1 ) 403 else if ( i == 1 )
404 date = "<em><font color=\"#000080\">" + day + "</font></em>" ; 404 date = "<em><font color=\"#000080\">" + day + "</font></em>" ;
405 else date = "<em><font color=\"#000080\">" + day + "</font></em>"; 405 else date = "<em><font color=\"#000080\">" + day + "</font></em>";
406 mText += "<h2>" + date + "</h2>\n"; 406 mText += "<h2>" + date + "</h2>\n";
407 //mText += "<big><big><strong>" + date + "</strong></big></big>\n"; 407 //mText += "<big><big><strong>" + date + "</strong></big></big>\n";
408 mText += "<table>\n"; 408 mText += "<table>\n";
409 409
410 410
411 411
412 } else { 412 } else {
413 if ( i == 0 ) { 413 if ( i == 0 ) {
414 //mText += "<table>\n"; 414 //mText += "<table>\n";
415 return;// date = "<font color=\"#008000\"><em>" +i18n("Today: ") +"</em>" + day+"</font>"; 415 return;// date = "<font color=\"#008000\"><em>" +i18n("Today: ") +"</em>" + day+"</font>";
416 } 416 }
417 417
418#ifdef DESKTOP_VERSION 418#ifdef DESKTOP_VERSION
419 else if ( i == 1 ) { 419 else if ( i == 1 ) {
420 date = "<h2><em><font color=\"#000080\">" + i18n("Tomorrow: ") + day +"</font></em></h2>" ; 420 date = "<h2><em><font color=\"#000080\">" + i18n("Tomorrow: ") + day +"</font></em></h2>" ;
421 } 421 }
422 else date = "<h2><em><font color=\"#000080\">" + i18n("In %1 days: ").arg( i ) +day + "</font></em></h2>"; 422 else date = "<h2><em><font color=\"#000080\">" + i18n("In %1 days: ").arg( i ) +day + "</font></em></h2>";
423#else 423#else
424 else if ( i == 1 ) { 424 else if ( i == 1 ) {
425 date = "<em><font color=\"#000080\">" + i18n("Tomorrow: ") + day +"</font></em>" ; 425 date = "<em><font color=\"#000080\">" + i18n("Tomorrow: ") + day +"</font></em>" ;
426 } 426 }
427 else date = "<em><font color=\"#000080\">" + i18n("In %1 days: ").arg( i ) +day + "</font></em>"; 427 else date = "<em><font color=\"#000080\">" + i18n("In %1 days: ").arg( i ) +day + "</font></em>";
428 428
429#endif 429#endif
430 mText += "<h2>" + date + "</h2>\n"; 430 mText += "<h2>" + date + "</h2>\n";
431 //mText += "<big><big><strong>" + date + "</strong></big></big>\n"; 431 //mText += "<big><big><strong>" + date + "</strong></big></big>\n";
432 mText += "<table>\n"; 432 mText += "<table>\n";
433 } 433 }
434} 434}
435 435
436 436
437void KOWhatsNextView::showDates(const QDate &, const QDate &) 437void KOWhatsNextView::showDates(const QDate &, const QDate &)
438{ 438{
439 updateView(); 439 updateView();
440} 440}
441 441
442void KOWhatsNextView::showEvents(QPtrList<Event>) 442void KOWhatsNextView::showEvents(QPtrList<Event>)
443{ 443{
444} 444}
445 445
446void KOWhatsNextView::changeEventDisplay(Event *, int action) 446void KOWhatsNextView::changeEventDisplay(Event *, int action)
447{ 447{
448 switch(action) { 448 switch(action) {
449 case KOGlobals::EVENTADDED: 449 case KOGlobals::EVENTADDED:
450 updateView(); 450 updateView();
451 break; 451 break;
452 case KOGlobals::EVENTEDITED: 452 case KOGlobals::EVENTEDITED:
453 updateView(); 453 updateView();
454 break; 454 break;
455 case KOGlobals::EVENTDELETED: 455 case KOGlobals::EVENTDELETED:
456 updateView(); 456 updateView();
457 break; 457 break;
458 default: 458 default:
459 updateView(); 459 updateView();
460 kdDebug() << "KOWhatsNextView::changeEventDisplay(): Illegal action " << action << endl; 460 kdDebug() << "KOWhatsNextView::changeEventDisplay(): Illegal action " << action << endl;
461 } 461 }
462} 462}
463 463
464bool KOWhatsNextView::appendEvent(Incidence *ev, bool reply, bool notRed, bool appendTable ) 464bool KOWhatsNextView::appendEvent(Incidence *ev, bool reply, bool notRed, bool appendTable )
465{ 465{
466 if ( !KOPrefs::instance()->mShowSyncEvents && ev->uid().left(15) == QString("last-syncEvent-") ) 466 if ( !KOPrefs::instance()->mShowSyncEvents && ev->uid().left(15) == QString("last-syncEvent-") )
467 return false; 467 return false;
468 QDateTime cdt = QDateTime::currentDateTime(); 468 QDateTime cdt = QDateTime::currentDateTime();
469 QDateTime noc; 469 QDateTime noc;
470 QString tempText; 470 QString tempText;
471 if ( appendTable && !notRed ) { 471 if ( appendTable && !notRed ) {
472 tempText = "<table>"; 472 tempText = "<table>";
473 } 473 }
474 bool ok = true; 474 bool ok = true;
475 if ( reply ) { 475 if ( reply ) {
476 noc = ev->getNextOccurence( cdt, &ok ); 476 noc = ev->getNextOccurence( cdt, &ok );
477 if (! ok && ev->type() == "Event") 477 if (! ok && ev->type() == "Event")
478 return false; 478 return false;
479 } 479 }
480 bool bDay = false; 480 bool bDay = false;
481 if ( ev->categories().contains( i18n("Birthday") ) || ev->categories().contains( i18n("Anniversary") ) ) 481 if ( ev->categories().contains( i18n("Birthday") ) || ev->categories().contains( i18n("Anniversary") ) )
482 bDay = true; 482 bDay = true;
483 tempText += "<tr><td><b>"; 483 tempText += "<tr><td><b>";
484 if (ev->type()=="Event") { 484 if (ev->type()=="Event") {
485 if (reply) { 485 if (reply) {
486 if (!ev->doesFloat()) 486 if (!ev->doesFloat())
487 tempText += KGlobal::locale()->formatDateTime( noc , KOPrefs::instance()->mShortDateInViewer) +": "; 487 tempText += KGlobal::locale()->formatDateTime( noc , KOPrefs::instance()->mShortDateInViewer) +": ";
488 else 488 else
489 tempText += KGlobal::locale()->formatDate( noc.date() , KOPrefs::instance()->mShortDateInViewer) +": "; 489 tempText += KGlobal::locale()->formatDate( noc.date() , KOPrefs::instance()->mShortDateInViewer) +": ";
490 490
491 } else { 491 } else {
492 if (!ev->doesFloat()) { 492 if (!ev->doesFloat()) {
493 Event *event = static_cast<Event *>(ev); 493 Event *event = static_cast<Event *>(ev);
494 QDateTime st,end; 494 QDateTime st,end;
495 if ( event->recurrence()->doesRecur() ) { 495 if ( event->recurrence()->doesRecur() ) {
496 QDate recDate= mEventDate; 496 QDate recDate= mEventDate;
497 int days = event->dtStart().date().daysTo (event->dtEnd().date() ); 497 int days = event->dtStart().date().daysTo (event->dtEnd().date() );
498 while ( ! event->recursOn( recDate ) ) { 498 while ( ! event->recursOn( recDate ) ) {
499 recDate = recDate.addDays( -1 ); 499 recDate = recDate.addDays( -1 );
500 500
501 } 501 }
502 st = QDateTime ( recDate, event->dtStart().time() ); 502 st = QDateTime ( recDate, event->dtStart().time() );
503 end = QDateTime ( recDate.addDays( days ), event->dtEnd().time() ); 503 end = QDateTime ( recDate.addDays( days ), event->dtEnd().time() );
504 } 504 }
505 else { 505 else {
506 st = event->dtStart(); 506 st = event->dtStart();
507 end = event->dtEnd(); 507 end = event->dtEnd();
508 } 508 }
509 509
510 510
511 QString dateText; 511 QString dateText;
512 // qDebug("%s %s %s %s ", mEventDate.toString().latin1(),event->summary().latin1(), st .toString().latin1(),end.toString().latin1() ); 512 // qDebug("%s %s %s %s ", mEventDate.toString().latin1(),event->summary().latin1(), st .toString().latin1(),end.toString().latin1() );
513 if ( st.date() < mEventDate ) 513 if ( st.date() < mEventDate )
514 dateText = "++:++-"; 514 dateText = "++:++-";
515 else 515 else
516 dateText = event->dtStartTimeStr() + "-"; 516 dateText = event->dtStartTimeStr() + "-";
517 if ( end.date() > mEventDate ) 517 if ( end.date() > mEventDate )
518 dateText += "++:++"; 518 dateText += "++:++";
519 else 519 else
520 dateText += event->dtEndTimeStr(); 520 dateText += event->dtEndTimeStr();
521 if ( notRed ) 521 if ( notRed )
522 tempText += dateText; 522 tempText += dateText;
523 else { 523 else {
524 if ( end < cdt ) { 524 if ( end < cdt ) {
525 if ( !KOPrefs::instance()->mWNViewShowsPast ) 525 if ( !KOPrefs::instance()->mWNViewShowsPast )
526 return false; 526 return false;
527 tempText += "<font color=\"#F00000\">" + dateText + "</font>"; 527 tempText += "<font color=\"#F00000\">" + dateText + "</font>";
528 } 528 }
529 else if ( st < cdt ) 529 else if ( st < cdt )
530 tempText += "<font color=\"#008000\">" + dateText + "</font>"; 530 tempText += "<font color=\"#008000\">" + dateText + "</font>";
531 else 531 else
532 tempText += dateText; 532 tempText += dateText;
533 533
534 } 534 }
535 535
536 } else { 536 } else {
537 if ( bDay ) { 537 if ( bDay ) {
538 538
539 if ( ev->categories().contains( i18n("Birthday") )) 539 if ( ev->categories().contains( i18n("Birthday") ))
540 tempText += "<font color=\"#F00000\">" + i18n("Birthday") +":</font>"; 540 tempText += "<font color=\"#F00000\">" + i18n("Birthday") +":</font>";
541 else 541 else
542 tempText += "<font color=\"#F00000\">" + i18n("Anniversary")+":</font>"; 542 tempText += "<font color=\"#F00000\">" + i18n("Anniversary")+":</font>";
543 } else { 543 } else {
544 tempText += i18n("Allday:"); 544 tempText += i18n("Allday:");
545 } 545 }
546 546
547 } 547 }
548 } 548 }
549 } else { 549 } else {
550 mTodos.append( ev ); 550 mTodos.append( ev );
551 tempText += i18n("ToDo:"); 551 tempText += i18n("ToDo:");
552 if (reply) { 552 if (reply) {
553 tempText += " "; 553 tempText += " ";
554 if ( noc != cdt ) { 554 if ( noc != cdt ) {
555 tempText += KGlobal::locale()->formatDate( noc.date() , KOPrefs::instance()->mShortDateInViewer) +": "; 555 tempText += KGlobal::locale()->formatDate( noc.date() , KOPrefs::instance()->mShortDateInViewer) +": ";
556 } 556 }
557 } else { 557 } else {
558 if ( ((Todo*)ev)->dtDue().date() < QDate::currentDate() ) { 558 if ( ((Todo*)ev)->dtDue().date() < QDate::currentDate() ) {
559 // tempText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>"; 559 // tempText +="<font color=\"#F00000\">" + i18n("O-due!") + "</font>";
560 QString dfs = KGlobal::locale()->dateFormatShort(); 560 QString dfs = KGlobal::locale()->dateFormatShort();
561 KGlobal::locale()->setDateFormatShort("%d.%b"); 561 KGlobal::locale()->setDateFormatShort("%d.%b");
562 tempText +="<font color=\"#F00000\">" + KGlobal::locale()->formatDate(((Todo*)ev)->dtDue().date(), true, KLocale::Userdefined) + "</font>"; 562 tempText +="<font color=\"#F00000\">" + KGlobal::locale()->formatDate(((Todo*)ev)->dtDue().date(), true, KLocale::Userdefined) + "</font>";
563 KGlobal::locale()->setDateFormatShort(dfs); 563 KGlobal::locale()->setDateFormatShort(dfs);
564 } else { 564 } else {
565 if (!ev->doesFloat() ) 565 if (!ev->doesFloat() )
566 if( ( (Todo*)ev)->dtDue() < cdt ) { 566 if( ( (Todo*)ev)->dtDue() < cdt ) {
567 tempText +="<font color=\"#F00000\">" + ((Todo*)ev)->dtDueTimeStr() + "</font>"; 567 tempText +="<font color=\"#F00000\">" + ((Todo*)ev)->dtDueTimeStr() + "</font>";
568 568
569 569
570 } else 570 } else
571 tempText +=((Todo*)ev)->dtDueTimeStr(); 571 tempText +=((Todo*)ev)->dtDueTimeStr();
572 mTodos.append( ev ); 572 mTodos.append( ev );
573 } 573 }
574 } 574 }
575 } 575 }
576 tempText += "</b></td><td>"; 576 tempText += "</b></td><td>";
577 bool needClose = false; 577 bool needClose = false;
578 if ( ev->cancelled() ) { 578 if ( ev->cancelled() ) {
579 tempText += "<font color=\"#F00000\">[c"; 579 tempText += "<font color=\"#F00000\">[c";
580 needClose =true; 580 needClose =true;
581 581
582 } 582 }
583 if ( ev->isAlarmEnabled() ) { 583 if ( ev->isAlarmEnabled() ) {
584 if ( !needClose) 584 if ( !needClose)
585 tempText +="["; 585 tempText +="[";
586 tempText += "a"; 586 tempText += "a";
587 needClose =true; 587 needClose =true;
588 588
589 } 589 }
590 if ( ev->description().length() > 0 ) { 590 if ( ev->description().length() > 0 ) {
591 if ( !needClose) 591 if ( !needClose)
592 tempText +="["; 592 tempText +="[";
593 tempText += "i"; 593 tempText += "i";
594 needClose =true; 594 needClose =true;
595 } 595 }
596 if ( ev->recurrence()->doesRecur() ) { 596 if ( ev->recurrence()->doesRecur() ) {
597 if ( !needClose) 597 if ( !needClose)
598 tempText +="["; 598 tempText +="[";
599 tempText += "r"; 599 tempText += "r";
600 needClose =true; 600 needClose =true;
601 } 601 }
602 if ( needClose ) { 602 if ( needClose ) {
603 tempText += "] "; 603 tempText += "] ";
604 } 604 }
605 if ( ev->cancelled() ) 605 if ( ev->cancelled() )
606 tempText += "</font>"; 606 tempText += "</font>";
607 tempText += "<a "; 607 tempText += "<a ";
608 if (ev->type()=="Event") tempText += "href=\"event:"; 608 if (ev->type()=="Event") tempText += "href=\"event:";
609 if (ev->type()=="Todo") tempText += "href=\"todo:"; 609 if (ev->type()=="Todo") tempText += "href=\"todo:";
610 tempText += ev->uid() + "\">"; 610 tempText += ev->uid() + "\">";
611 if ( ev->summary().length() > 0 ) 611 if ( ev->summary().length() > 0 )
612 tempText += ev->summary(); 612 tempText += ev->summary();
613 else 613 else
614 tempText += i18n("-no summary-"); 614 tempText += i18n("-no summary-");
615 if ( bDay ) { 615 if ( bDay ) {
616 noc = ev->getNextOccurence( cdt.addDays(-1), &ok ); 616 noc = ev->getNextOccurence( cdt.addDays(-1), &ok );
617 if ( ok ) { 617 if ( ok ) {
618 int years = noc.date().year() - ev->dtStart().date().year(); 618 int years = 0;
619 if ( ev->type() =="Todo" ) {
620 years = noc.date().year() -((Todo*)ev)->dtDue().date().year();
621 } else
622 years = noc.date().year() - ev->dtStart().date().year();
619 tempText += i18n(" (%1 y.)"). arg( years ); 623 tempText += i18n(" (%1 y.)"). arg( years );
620 } 624 }
621 } 625 }
622 626
623 tempText += "</a>"; 627 tempText += "</a>";
624 if ( KOPrefs::instance()->mWNViewShowLocation ) 628 if ( KOPrefs::instance()->mWNViewShowLocation )
625 if ( !ev->location().isEmpty() ) 629 if ( !ev->location().isEmpty() )
626 tempText += " ("+ev->location() +")"; 630 tempText += " ("+ev->location() +")";
627 if ( ev->relatedTo() && KOPrefs::instance()->mWNViewShowsParents) 631 if ( ev->relatedTo() && KOPrefs::instance()->mWNViewShowsParents)
628 tempText += " ["+ev->relatedTo()->summary() +"]"; 632 tempText += " ["+ev->relatedTo()->summary() +"]";
629 tempText += "</td></tr>\n"; 633 tempText += "</td></tr>\n";
630 mText += tempText; 634 mText += tempText;
631 return true; 635 return true;
632} 636}
633 637
634bool KOWhatsNextView::appendTodo(Incidence *ev, QString ind , bool isSub ) 638bool KOWhatsNextView::appendTodo(Incidence *ev, QString ind , bool isSub )
635{ 639{
636 if ( mTodos.find( ev ) != mTodos.end() ) return false; 640 if ( mTodos.find( ev ) != mTodos.end() ) return false;
637 641
638 mTodos.append( ev ); 642 mTodos.append( ev );
639 if ( !isSub ) 643 if ( !isSub )
640 mText += "<p>"; 644 mText += "<p>";
641 else 645 else
642 mText += "<li>"; 646 mText += "<li>";
643 mText += "[" +QString::number(ev->priority()) + "/" + QString::number(((Todo*)ev)->percentComplete())+"%] "; 647 mText += "[" +QString::number(ev->priority()) + "/" + QString::number(((Todo*)ev)->percentComplete())+"%] ";
644 648
645 649
646 mText += ind; 650 mText += ind;
647 bool needClose = false; 651 bool needClose = false;
648 if ( ev->cancelled() ) { 652 if ( ev->cancelled() ) {
649 mText += "<font color=\"#F00000\">[c"; 653 mText += "<font color=\"#F00000\">[c";
650 needClose =true; 654 needClose =true;
651 655
652 } 656 }
653 if ( ev->isAlarmEnabled() ) { 657 if ( ev->isAlarmEnabled() ) {
654 if ( !needClose) 658 if ( !needClose)
655 mText +="["; 659 mText +="[";
656 mText += "a"; 660 mText += "a";
657 needClose =true; 661 needClose =true;
658 662
659 } 663 }
660 664
661 if ( ev->description().length() > 0 ) { 665 if ( ev->description().length() > 0 ) {
662 if ( !needClose) 666 if ( !needClose)
663 mText +="["; 667 mText +="[";
664 mText += "i"; 668 mText += "i";
665 needClose =true; 669 needClose =true;
666 } 670 }
667 // if ( ev->recurrence()->doesRecur() ) { 671 // if ( ev->recurrence()->doesRecur() ) {
668 // if ( !needClose) 672 // if ( !needClose)
669 // mText +="("; 673 // mText +="(";
670 // mText += "r"; 674 // mText += "r";
671 // needClose =true; 675 // needClose =true;
672 // } 676 // }
673 if ( needClose ) 677 if ( needClose )
674 mText += "] "; 678 mText += "] ";
675 if ( ev->cancelled() ) 679 if ( ev->cancelled() )
676 mText += "</font>"; 680 mText += "</font>";
677 mText += "<a href=\"todo:" + ev->uid() + "\">"; 681 mText += "<a href=\"todo:" + ev->uid() + "\">";
678 if ( ev->summary().length() > 0 ) 682 if ( ev->summary().length() > 0 )
679 mText += ev->summary(); 683 mText += ev->summary();
680 else 684 else
681 mText += i18n("-no summary-"); 685 mText += i18n("-no summary-");
682 mText += "</a>"; 686 mText += "</a>";
683 if ( ((Todo*)ev)->hasDueDate () ) { 687 if ( ((Todo*)ev)->hasDueDate () ) {
684 QString year = ""; 688 QString year = "";
685 int ye = ((Todo*)ev)->dtDue().date().year(); 689 int ye = ((Todo*)ev)->dtDue().date().year();
686 if ( QDateTime::currentDateTime().date().year() != ye ) 690 if ( QDateTime::currentDateTime().date().year() != ye )
687 year = QString::number( ye ); 691 year = QString::number( ye );
688 QString dfs = KGlobal::locale()->dateFormatShort(); 692 QString dfs = KGlobal::locale()->dateFormatShort();
689 KGlobal::locale()->setDateFormatShort("%d.%b"); 693 KGlobal::locale()->setDateFormatShort("%d.%b");
690 mText +="<font color=\"#00A000\"> [" + KGlobal::locale()->formatDate(((Todo*)ev)->dtDue().date(), true, KLocale::Userdefined) + "."+ year +"]</font>"; 694 mText +="<font color=\"#00A000\"> [" + KGlobal::locale()->formatDate(((Todo*)ev)->dtDue().date(), true, KLocale::Userdefined) + "."+ year +"]</font>";
691 KGlobal::locale()->setDateFormatShort(dfs); 695 KGlobal::locale()->setDateFormatShort(dfs);
692 } 696 }
693 if ( KOPrefs::instance()->mWNViewShowLocation ) 697 if ( KOPrefs::instance()->mWNViewShowLocation )
694 if ( !ev->location().isEmpty() ) 698 if ( !ev->location().isEmpty() )
695 mText += " ("+ev->location() +")"; 699 mText += " ("+ev->location() +")";
696 if ( !isSub ) { 700 if ( !isSub ) {
697 if ( ((Todo*)ev)->relatedTo()&& KOPrefs::instance()->mWNViewShowsParents) 701 if ( ((Todo*)ev)->relatedTo()&& KOPrefs::instance()->mWNViewShowsParents)
698 mText += " ["+ev->relatedTo()->summary() +"]"; 702 mText += " ["+ev->relatedTo()->summary() +"]";
699 mText += "</p>\n"; 703 mText += "</p>\n";
700 } 704 }
701 else { 705 else {
702 ind += "-"; 706 ind += "-";
703 mText += "</li>\n"; 707 mText += "</li>\n";
704 } 708 }
705 QPtrList<Incidence> Relations = ev->relations(); 709 QPtrList<Incidence> Relations = ev->relations();
706 Incidence *to; 710 Incidence *to;
707 for (to=Relations.first();to;to=Relations.next()) { 711 for (to=Relations.first();to;to=Relations.next()) {
708 if (!((Todo*)to)->isCompleted()) 712 if (!((Todo*)to)->isCompleted())
709 appendTodo( to, ind , true ); 713 appendTodo( to, ind , true );
710 } 714 }
711 715
712 return true; 716 return true;
713} 717}
714 718
715/* 719/*
716 void KOWhatsNextView::createEventViewer() 720 void KOWhatsNextView::createEventViewer()
717 { 721 {
718 if (!mEventViewer) { 722 if (!mEventViewer) {
719 723
720 mEventViewer = new KOEventViewerDialog(this); 724 mEventViewer = new KOEventViewerDialog(this);
721 } 725 }
722 } 726 }
723*/ 727*/
724void KOWhatsNextView::setEventViewer(KOEventViewerDialog* v ) 728void KOWhatsNextView::setEventViewer(KOEventViewerDialog* v )
725{ 729{
726 mEventViewer = v; 730 mEventViewer = v;
727} 731}
728 732
729// TODO: Create this function in CalendarView and remove it from here 733// TODO: Create this function in CalendarView and remove it from here
730void KOWhatsNextView::showIncidence(const QString &uid) 734void KOWhatsNextView::showIncidence(const QString &uid)
731{ 735{
732 736
733 if ( !mEventViewer ) { 737 if ( !mEventViewer ) {
734 qDebug("KOWhatsNextView::showIncidence::sorry, no event viewer set "); 738 qDebug("KOWhatsNextView::showIncidence::sorry, no event viewer set ");
735 return; 739 return;
736 } 740 }
737 //kdDebug() << "KOWhatsNextView::showIncidence(): " << uid << endl; 741 //kdDebug() << "KOWhatsNextView::showIncidence(): " << uid << endl;
738 //qDebug("KOWhatsNextView::showIncidence %s ", uid.latin1()); 742 //qDebug("KOWhatsNextView::showIncidence %s ", uid.latin1());
739 if (uid.startsWith("event:")) { 743 if (uid.startsWith("event:")) {
740#ifdef DESKTOP_VERSION 744#ifdef DESKTOP_VERSION
741 Event *event = calendar()->event(uid.mid(8)); 745 Event *event = calendar()->event(uid.mid(8));
742#else 746#else
743 Event *event = calendar()->event(uid.mid(6)); 747 Event *event = calendar()->event(uid.mid(6));
744#endif 748#endif
745 //qDebug("event %d uid %s ", event, uid.mid(6).latin1()); 749 //qDebug("event %d uid %s ", event, uid.mid(6).latin1());
746 if (!event) return; 750 if (!event) return;
747 //createEventViewer(); 751 //createEventViewer();
748 mEventViewer->setEvent(event); 752 mEventViewer->setEvent(event);
749 } else if (uid.startsWith("todo:")) { 753 } else if (uid.startsWith("todo:")) {
750#ifdef DESKTOP_VERSION 754#ifdef DESKTOP_VERSION
751 Todo *todo = calendar()->todo(uid.mid(7)); 755 Todo *todo = calendar()->todo(uid.mid(7));
752#else 756#else
753 Todo *todo = calendar()->todo(uid.mid(5)); 757 Todo *todo = calendar()->todo(uid.mid(5));
754#endif 758#endif
755 if (!todo) return; 759 if (!todo) return;
756 //createEventViewer(); 760 //createEventViewer();
757 mEventViewer->setTodo(todo); 761 mEventViewer->setTodo(todo);
758 } else { 762 } else {
759 return; 763 return;
760 764
761 } 765 }
762 mEventViewer->showMe(); 766 mEventViewer->showMe();
763 mEventViewer->raise(); 767 mEventViewer->raise();
764} 768}