summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-01-31 08:05:32 (UTC)
committer zautrix <zautrix>2005-01-31 08:05:32 (UTC)
commitf7663a4c854d217bcb4f828a3ebb69cc40d0dd7c (patch) (unidiff)
tree683febfff7427b923f23178e74b7cc0e50ef461d
parented5723f40a93bbedfcbd9f54e6379a23c4a76096 (diff)
downloadkdepimpi-f7663a4c854d217bcb4f828a3ebb69cc40d0dd7c.zip
kdepimpi-f7663a4c854d217bcb4f828a3ebb69cc40d0dd7c.tar.gz
kdepimpi-f7663a4c854d217bcb4f828a3ebb69cc40d0dd7c.tar.bz2
fix
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koagendaview.cpp2
-rw-r--r--korganizer/kodaymatrix.cpp57
-rw-r--r--korganizer/kodaymatrix.h1
3 files changed, 29 insertions, 31 deletions
diff --git a/korganizer/koagendaview.cpp b/korganizer/koagendaview.cpp
index 8b79788..8e9add3 100644
--- a/korganizer/koagendaview.cpp
+++ b/korganizer/koagendaview.cpp
@@ -1486,48 +1486,50 @@ void KOAgendaView::deleteSelectedDateTime()
1486 1486
1487void KOAgendaView::keyPressEvent ( QKeyEvent * e ) 1487void KOAgendaView::keyPressEvent ( QKeyEvent * e )
1488{ 1488{
1489 e->ignore(); 1489 e->ignore();
1490} 1490}
1491 1491
1492void KOAgendaView::scrollOneHourUp() 1492void KOAgendaView::scrollOneHourUp()
1493{ 1493{
1494 1494
1495 mAgenda->scrollBy ( 0, -mAgenda->contentsHeight () / 24 ); 1495 mAgenda->scrollBy ( 0, -mAgenda->contentsHeight () / 24 );
1496} 1496}
1497void KOAgendaView::scrollOneHourDown() 1497void KOAgendaView::scrollOneHourDown()
1498{ 1498{
1499 mAgenda->scrollBy ( 0, mAgenda->contentsHeight () / 24 ); 1499 mAgenda->scrollBy ( 0, mAgenda->contentsHeight () / 24 );
1500} 1500}
1501 1501
1502void KOAgendaView::setStartHour( int h ) 1502void KOAgendaView::setStartHour( int h )
1503{ 1503{
1504 mAgenda->setStartHour( h ); 1504 mAgenda->setStartHour( h );
1505 1505
1506} 1506}
1507 1507
1508void KOAgendaView::updateTodo( Todo * t, int ) 1508void KOAgendaView::updateTodo( Todo * t, int )
1509{ 1509{
1510 if ( !isVisible() )
1511 return;
1510 bool remove = false; 1512 bool remove = false;
1511 bool removeAD = false; 1513 bool removeAD = false;
1512 QDate da; 1514 QDate da;
1513 if ( t->hasCompletedDate() ) 1515 if ( t->hasCompletedDate() )
1514 da = t->completed().date(); 1516 da = t->completed().date();
1515 else 1517 else
1516 da = t->dtDue().date(); 1518 da = t->dtDue().date();
1517 if ( ! t->hasDueDate() && !t->hasCompletedDate() ) { 1519 if ( ! t->hasDueDate() && !t->hasCompletedDate() ) {
1518 remove = true; 1520 remove = true;
1519 removeAD = true; 1521 removeAD = true;
1520 } 1522 }
1521 else { 1523 else {
1522 bool overdue = (!t->isCompleted()) && (t->dtDue() < QDate::currentDate()) && KOPrefs::instance()->mShowTodoInAgenda ; 1524 bool overdue = (!t->isCompleted()) && (t->dtDue() < QDate::currentDate()) && KOPrefs::instance()->mShowTodoInAgenda ;
1523 if ( overdue && 1525 if ( overdue &&
1524 QDate::currentDate() >= mSelectedDates.first() && 1526 QDate::currentDate() >= mSelectedDates.first() &&
1525 QDate::currentDate() <= mSelectedDates.last()) { 1527 QDate::currentDate() <= mSelectedDates.last()) {
1526 removeAD = false; 1528 removeAD = false;
1527 remove = true; 1529 remove = true;
1528 } 1530 }
1529 else { 1531 else {
1530 1532
1531 if ( da < mSelectedDates.first() || 1533 if ( da < mSelectedDates.first() ||
1532 da > mSelectedDates.last() ) { 1534 da > mSelectedDates.last() ) {
1533 remove = true; 1535 remove = true;
diff --git a/korganizer/kodaymatrix.cpp b/korganizer/kodaymatrix.cpp
index 9c3621e..be5a775 100644
--- a/korganizer/kodaymatrix.cpp
+++ b/korganizer/kodaymatrix.cpp
@@ -1,46 +1,46 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2001 Eitzenberger Thomas <thomas.eitzenberger@siemens.at> 3 Copyright (c) 2001 Eitzenberger Thomas <thomas.eitzenberger@siemens.at>
4 Parts of the source code have been copied from kdpdatebutton.cpp 4 Parts of the source code have been copied from kdpdatebutton.cpp
5 5
6 This program is free software; you can redistribute it and/or modify 6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by 7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or 8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version. 9 (at your option) any later version.
10 10
11 This program is distributed in the hope that it will be useful, 11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details. 14 GNU General Public License for more details.
15 15
16 You should have received a copy of the GNU General Public License 16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software 17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 18 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
19 19
20 As a special exception, permission is given to link this program 20 As a special exception, permission is given to link this program
21 with any edition of Qt, and distribute the resulting executable, 21 with any edition of Qt, and distribute the resulting executable,
22 without including the source code for Qt in the source distribution. 22 without including the source ode for Qt in the source distribution.
23*/ 23*/
24 24
25#include <qevent.h> 25#include <qevent.h>
26#include <qpainter.h> 26#include <qpainter.h>
27#include <qptrlist.h> 27#include <qptrlist.h>
28#include <qtimer.h> 28#include <qtimer.h>
29 29
30#include <kglobal.h> 30#include <kglobal.h>
31#include <kdebug.h> 31#include <kdebug.h>
32#include <klocale.h> 32#include <klocale.h>
33 33
34#include <libkcal/vcaldrag.h> 34#include <libkcal/vcaldrag.h>
35#include <libkcal/icaldrag.h> 35#include <libkcal/icaldrag.h>
36#include <libkcal/dndfactory.h> 36#include <libkcal/dndfactory.h>
37#include <libkcal/calendarresources.h> 37#include <libkcal/calendarresources.h>
38#include <libkcal/resourcecalendar.h> 38#include <libkcal/resourcecalendar.h>
39#include <kresources/resourceselectdialog.h> 39#include <kresources/resourceselectdialog.h>
40 40
41#include <kcalendarsystem.h> 41#include <kcalendarsystem.h>
42 42
43#ifndef KORG_NOPLUGINS 43#ifndef KORG_NOPLUGINS
44#include "kocore.h" 44#include "kocore.h"
45#endif 45#endif
46#include "koprefs.h" 46#include "koprefs.h"
@@ -70,48 +70,49 @@ void DynamicTip::maybeTip( const QPoint &pos )
70 70
71 QRect rct(col*dwidth, row*dheight, dwidth, dheight); 71 QRect rct(col*dwidth, row*dheight, dwidth, dheight);
72 72
73// kdDebug() << "DynamicTip::maybeTip matrix cell index [" << 73// kdDebug() << "DynamicTip::maybeTip matrix cell index [" <<
74// col << "][" << row << "] => " <<(col+row*7) << endl; 74// col << "][" << row << "] => " <<(col+row*7) << endl;
75 75
76 //show holiday names only 76 //show holiday names only
77 QString str = matrix->getHolidayLabel(col+row*7); 77 QString str = matrix->getHolidayLabel(col+row*7);
78 if (str.isEmpty()) return; 78 if (str.isEmpty()) return;
79 tip(rct, str); 79 tip(rct, str);
80} 80}
81 81
82 82
83// ============================================================================ 83// ============================================================================
84// K O D A Y M A T R I X 84// K O D A Y M A T R I X
85// ============================================================================ 85// ============================================================================
86 86
87const int KODayMatrix::NOSELECTION = -1000; 87const int KODayMatrix::NOSELECTION = -1000;
88const int KODayMatrix::NUMDAYS = 42; 88const int KODayMatrix::NUMDAYS = 42;
89 89
90KODayMatrix::KODayMatrix(QWidget *parent, Calendar* calendar, QDate date, const char *name) : 90KODayMatrix::KODayMatrix(QWidget *parent, Calendar* calendar, QDate date, const char *name) :
91 QFrame(parent, name) 91 QFrame(parent, name)
92{ 92{
93 mCalendar = calendar; 93 mCalendar = calendar;
94 mPendingUpdateBeforeRepaint = false;
94 95
95 // initialize dynamic arrays 96 // initialize dynamic arrays
96 days = new QDate[NUMDAYS]; 97 days = new QDate[NUMDAYS];
97 daylbls = new QString[NUMDAYS]; 98 daylbls = new QString[NUMDAYS];
98 events = new int[NUMDAYS]; 99 events = new int[NUMDAYS];
99 mToolTip = new DynamicTip(this); 100 mToolTip = new DynamicTip(this);
100 101
101 // set default values used for drawing the matrix 102 // set default values used for drawing the matrix
102 mDefaultBackColor = palette().active().base(); 103 mDefaultBackColor = palette().active().base();
103 mDefaultTextColor = palette().active().foreground(); 104 mDefaultTextColor = palette().active().foreground();
104 mDefaultTextColorShaded = getShadedColor(mDefaultTextColor); 105 mDefaultTextColorShaded = getShadedColor(mDefaultTextColor);
105 mHolidayColorShaded = getShadedColor(KOPrefs::instance()->mHolidayColor); 106 mHolidayColorShaded = getShadedColor(KOPrefs::instance()->mHolidayColor);
106 mSelectedDaysColor = QColor("white"); 107 mSelectedDaysColor = QColor("white");
107 mTodayMarginWidth = 2; 108 mTodayMarginWidth = 2;
108 mSelEnd = mSelStart = NOSELECTION; 109 mSelEnd = mSelStart = NOSELECTION;
109 110
110 setAcceptDrops(true); 111 setAcceptDrops(true);
111 //setFont( QFont("Arial", 10) ); 112 //setFont( QFont("Arial", 10) );
112 113
113 mUpdateTimer = new QTimer( this ); 114 mUpdateTimer = new QTimer( this );
114 connect (mUpdateTimer ,SIGNAL(timeout()), this, SLOT ( updateViewTimed() )); 115 connect (mUpdateTimer ,SIGNAL(timeout()), this, SLOT ( updateViewTimed() ));
115 mRepaintTimer = new QTimer( this ); 116 mRepaintTimer = new QTimer( this );
116 connect (mRepaintTimer ,SIGNAL(timeout()), this, SLOT ( repaintViewTimed() )); 117 connect (mRepaintTimer ,SIGNAL(timeout()), this, SLOT ( repaintViewTimed() ));
117 mDayChanged = false; 118 mDayChanged = false;
@@ -170,164 +171,155 @@ void KODayMatrix::addSelectedDaysTo(DateList& selDays)
170 } 171 }
171 for (int i = NUMDAYS; i < mSelEnd; i++) { 172 for (int i = NUMDAYS; i < mSelEnd; i++) {
172 selDays.append(days[0].addDays(i)); 173 selDays.append(days[0].addDays(i));
173 } 174 }
174 175
175 // apply normal routine to selection being entirely within matrix limits 176 // apply normal routine to selection being entirely within matrix limits
176 } else { 177 } else {
177 for (int i = i0; i <= mSelEnd; i++) { 178 for (int i = i0; i <= mSelEnd; i++) {
178 selDays.append(days[i]); 179 selDays.append(days[i]);
179 } 180 }
180 } 181 }
181} 182}
182 183
183void KODayMatrix::setSelectedDaysFrom(const QDate& start, const QDate& end) 184void KODayMatrix::setSelectedDaysFrom(const QDate& start, const QDate& end)
184{ 185{
185 mSelStart = startdate.daysTo(start); 186 mSelStart = startdate.daysTo(start);
186 mSelEnd = startdate.daysTo(end); 187 mSelEnd = startdate.daysTo(end);
187} 188}
188 189
189 190
190void KODayMatrix::recalculateToday() 191void KODayMatrix::recalculateToday()
191{ 192{
192 today = -1; 193 today = -1;
193 for (int i=0; i<NUMDAYS; i++) { 194 for (int i=0; i<NUMDAYS; i++) {
195 events[i] = 0;
194 days[i] = startdate.addDays(i); 196 days[i] = startdate.addDays(i);
195 daylbls[i] = QString::number( KOGlobals::self()->calendarSystem()->day( days[i] )); 197 daylbls[i] = QString::number( KOGlobals::self()->calendarSystem()->day( days[i] ));
196 198
197 // if today is in the currently displayed month, hilight today 199 // if today is in the currently displayed month, hilight today
198 if (days[i].year() == QDate::currentDate().year() && 200 if (days[i].year() == QDate::currentDate().year() &&
199 days[i].month() == QDate::currentDate().month() && 201 days[i].month() == QDate::currentDate().month() &&
200 days[i].day() == QDate::currentDate().day()) { 202 days[i].day() == QDate::currentDate().day()) {
201 today = i; 203 today = i;
202 } 204 }
203 } 205 }
204 // qDebug(QString("Today is visible at %1.").arg(today)); 206 // qDebug(QString("Today is visible at %1.").arg(today));
205} 207}
206 208
207void KODayMatrix::updateView() 209void KODayMatrix::updateView()
208{ 210{
209 updateView(startdate); 211 updateView(startdate);
210} 212}
211void KODayMatrix::repaintViewTimed() 213void KODayMatrix::repaintViewTimed()
212{ 214{
213 qDebug("KODayMatrix::repaintViewTimed "); 215 //qDebug("KODayMatrix::repaintViewTimed ");
214 mRepaintTimer->stop(); 216 mRepaintTimer->stop();
215 repaint(false); 217 repaint(false);
216} 218}
217void KODayMatrix::updateViewTimed() 219void KODayMatrix::updateViewTimed()
218{ 220{
219 221
220 mUpdateTimer->stop(); 222 mUpdateTimer->stop();
221 //QDate actdate = mPendingNewDate; 223 //qDebug("KODayMatrix::updateView(QDate actdate) %d", ++iii );
222
223 static int iii = 0;
224 qDebug("KODayMatrix::updateView(QDate actdate) %d", ++iii );
225
226 if (mDayChanged) {
227 recalculateToday();
228 mDayChanged = false;
229 }
230
231 for(int i = 0; i < NUMDAYS; i++) { 224 for(int i = 0; i < NUMDAYS; i++) {
232 225
233 // if events are set for the day then remember to draw it bold 226 // if events are set for the day then remember to draw it bold
234 QPtrList<Event> eventlist = mCalendar->events(days[i]); 227 QPtrList<Event> eventlist = mCalendar->events(days[i]);
235 Event *event; 228 Event *event;
236 int numEvents = eventlist.count(); 229 int numEvents = eventlist.count();
237 230
238 for(event=eventlist.first();event != 0;event=eventlist.next()) { 231 for(event=eventlist.first();event != 0;event=eventlist.next()) {
239 ushort recurType = event->recurrence()->doesRecur(); 232 ushort recurType = event->recurrence()->doesRecur();
240 233
241 if ((recurType == Recurrence::rDaily && !KOPrefs::instance()->mDailyRecur) || 234 if ((recurType == Recurrence::rDaily && !KOPrefs::instance()->mDailyRecur) ||
242 (recurType == Recurrence::rWeekly && !KOPrefs::instance()->mWeeklyRecur)) { 235 (recurType == Recurrence::rWeekly && !KOPrefs::instance()->mWeeklyRecur)) {
243 numEvents--; 236 numEvents--;
244 } 237 }
245 } 238 }
246 events[i] = numEvents; 239 events[i] = numEvents;
247 240
248 //if it is a holy day then draw it red. Sundays are consider holidays, too 241 //if it is a holy day then draw it red. Sundays are consider holidays, too
249#ifndef KORG_NOPLUGINS 242#ifndef KORG_NOPLUGINS
250 QString holiStr = KOCore::self()->holiday(days[i]); 243 QString holiStr = KOCore::self()->holiday(days[i]);
251#else 244#else
252 QString holiStr = QString::null; 245 QString holiStr = QString::null;
253#endif 246#endif
254 if ( (KOGlobals::self()->calendarSystem()->dayOfWeek(days[i]) == KOGlobals::self()->calendarSystem()->weekDayOfPray()) || 247 if ( (KOGlobals::self()->calendarSystem()->dayOfWeek(days[i]) == KOGlobals::self()->calendarSystem()->weekDayOfPray()) ||
255 !holiStr.isEmpty()) { 248 !holiStr.isEmpty()) {
256 if (holiStr.isNull()) holiStr = ""; 249 if (holiStr.isNull()) holiStr = "";
257 mHolidays[i] = holiStr; 250 mHolidays[i] = holiStr;
258 251
259 } else { 252 } else {
260 mHolidays[i] = QString::null; 253 mHolidays[i] = QString::null;
261 } 254 }
262 } 255 }
263 repaint(false); 256 if ( ! mPendingUpdateBeforeRepaint )
257 repaint(false);
264 } 258 }
265void KODayMatrix::updateView(QDate actdate) 259void KODayMatrix::updateView(QDate actdate)
266{ 260{
267 261
262 if ( ! actdate.isValid() ) {
263 //qDebug("date not valid ");
264 return;
265 }
266 mDayChanged = false;
268 //flag to indicate if the starting day of the matrix has changed by this call 267 //flag to indicate if the starting day of the matrix has changed by this call
269 //mDayChanged = false; 268 //mDayChanged = false;
270 // if a new startdate is to be set then apply Cornelius's calculation 269 // if a new startdate is to be set then apply Cornelius's calculation
271 // of the first day to be shown 270 // of the first day to be shown
272 if (actdate != startdate) { 271 if (actdate != startdate) {
273 // reset index of selection according to shift of starting date from startdate to actdate 272 // reset index of selection according to shift of starting date from startdate to actdate
274 if (mSelStart != NOSELECTION) { 273 if (mSelStart != NOSELECTION) {
275 int tmp = actdate.daysTo(startdate); 274 int tmp = actdate.daysTo(startdate);
276 //kdDebug() << "Shift of Selection1: " << mSelStart << " - " << mSelEnd << " -> " << tmp << "(" << offset << ")" << endl; 275 //kdDebug() << "Shift of Selection1: " << mSelStart << " - " << mSelEnd << " -> " << tmp << "(" << offset << ")" << endl;
277 // shift selection if new one would be visible at least partly ! 276 // shift selection if new one would be visible at least partly !
278 277
279 if (mSelStart+tmp < NUMDAYS && mSelEnd+tmp >= 0) { 278 if (mSelStart+tmp < NUMDAYS && mSelEnd+tmp >= 0) {
280 // nested if is required for next X display pushed from a different month - correction required 279 // nested if is required for next X display pushed from a different month - correction required
281 // otherwise, for month forward and backward, it must be avoided 280 // otherwise, for month forward and backward, it must be avoided
282 if( mSelStart > NUMDAYS || mSelStart < 0 ) 281 if( mSelStart > NUMDAYS || mSelStart < 0 )
283 mSelStart = mSelStart + tmp; 282 mSelStart = mSelStart + tmp;
284 if( mSelEnd > NUMDAYS || mSelEnd < 0 ) 283 if( mSelEnd > NUMDAYS || mSelEnd < 0 )
285 mSelEnd = mSelEnd + tmp; 284 mSelEnd = mSelEnd + tmp;
286 } 285 }
287 } 286 }
288
289 startdate = actdate; 287 startdate = actdate;
290 mDayChanged = true; 288 mDayChanged = true;
289 recalculateToday();
291 } 290 }
292 qDebug("restart Timer %d vis: %d", mDayChanged, isVisible() ); 291 //qDebug("restart Timer %d vis: %d", mDayChanged, isVisible() );
293 static int iii = 0; 292 if ( !isVisible() ) {
294 if ( iii < 2 ) { 293 mPendingUpdateBeforeRepaint = true;
295 ++iii;
296 updateViewTimed();
297 } else { 294 } else {
298 if ( !isVisible() ) { 295 mRepaintTimer->start( 250 );
299 mUpdateTimer->start( 2000 ); 296#ifdef DESKTOP_VERSION
300 } else { 297 mUpdateTimer->start( 2000 );
301 if ( mDayChanged ) { 298#else
302 mUpdateTimer->start( 250 ); 299 mUpdateTimer->start( 4000 );
303 } else { 300#endif
304 mRepaintTimer->start( 250 );
305 mUpdateTimer->start( 2000 );
306 }
307 }
308 } 301 }
309
310} 302}
311 303
312const QDate& KODayMatrix::getDate(int offset) 304const QDate& KODayMatrix::getDate(int offset)
313{ 305{
314 if (offset < 0 || offset > NUMDAYS-1) { 306 if (offset < 0 || offset > NUMDAYS-1) {
315 qDebug("Wrong offset2 "); 307 qDebug("Wrong offset2 ");
316 return days[0]; 308 return days[0];
317 } 309 }
318 return days[offset]; 310 return days[offset];
319} 311}
320 312
321QString KODayMatrix::getHolidayLabel(int offset) 313QString KODayMatrix::getHolidayLabel(int offset)
322{ 314{
323 if (offset < 0 || offset > NUMDAYS-1) { 315 if (offset < 0 || offset > NUMDAYS-1) {
324 qDebug("Wrong offset1 "); 316 qDebug("Wrong offset1 ");
325 return 0; 317 return 0;
326 } 318 }
327 return mHolidays[offset]; 319 return mHolidays[offset];
328} 320}
329 321
330int KODayMatrix::getDayIndexFrom(int x, int y) 322int KODayMatrix::getDayIndexFrom(int x, int y)
331{ 323{
332 return 7*(y/daysize.height()) + (KOGlobals::self()->reverseLayout() ? 324 return 7*(y/daysize.height()) + (KOGlobals::self()->reverseLayout() ?
333 6 - x/daysize.width() : x/daysize.width()); 325 6 - x/daysize.width() : x/daysize.width());
@@ -474,49 +466,52 @@ void KODayMatrix::dropEvent(QDropEvent *e)
474 int idx = getDayIndexFrom(e->pos().x(), e->pos().y()); 466 int idx = getDayIndexFrom(e->pos().x(), e->pos().y());
475 467
476 start.setDate(days[idx]); 468 start.setDate(days[idx]);
477 end.setDate(days[idx].addDays(duration)); 469 end.setDate(days[idx].addDays(duration));
478 470
479 event->setDtStart(start); 471 event->setDtStart(start);
480 event->setDtEnd(end); 472 event->setDtEnd(end);
481 mCalendar->addEvent(event); 473 mCalendar->addEvent(event);
482 474
483 emit eventDropped(event); 475 emit eventDropped(event);
484 } else { 476 } else {
485// kdDebug() << "KODayMatrix::dropEvent(): Event from drop not decodable" << endl; 477// kdDebug() << "KODayMatrix::dropEvent(): Event from drop not decodable" << endl;
486 e->ignore(); 478 e->ignore();
487 } 479 }
488#endif 480#endif
489} 481}
490 482
491// ---------------------------------------------------------------------------- 483// ----------------------------------------------------------------------------
492// P A I N T E V E N T H A N D L I N G 484// P A I N T E V E N T H A N D L I N G
493// ---------------------------------------------------------------------------- 485// ----------------------------------------------------------------------------
494 486
495void KODayMatrix::paintEvent(QPaintEvent * pevent) 487void KODayMatrix::paintEvent(QPaintEvent * pevent)
496{ 488{
497//kdDebug() << "KODayMatrix::paintEvent() BEGIN" << endl; 489//kdDebug() << "KODayMatrix::paintEvent() BEGIN" << endl;
498 490 if ( mPendingUpdateBeforeRepaint ) {
491 updateViewTimed();
492 mPendingUpdateBeforeRepaint = false;
493 }
499 QPainter p(this); 494 QPainter p(this);
500 495
501 QRect sz = frameRect(); 496 QRect sz = frameRect();
502 int dheight = daysize.height(); 497 int dheight = daysize.height();
503 int dwidth = daysize.width(); 498 int dwidth = daysize.width();
504 int row,col; 499 int row,col;
505 int selw, selh; 500 int selw, selh;
506 bool isRTL = KOGlobals::self()->reverseLayout(); 501 bool isRTL = KOGlobals::self()->reverseLayout();
507 502
508 // draw background and topleft frame 503 // draw background and topleft frame
509 p.fillRect(pevent->rect(), mDefaultBackColor); 504 p.fillRect(pevent->rect(), mDefaultBackColor);
510 p.setPen(mDefaultTextColor); 505 p.setPen(mDefaultTextColor);
511 p.drawRect(0, 0, sz.width()+1, sz.height()+1); 506 p.drawRect(0, 0, sz.width()+1, sz.height()+1);
512 507
513 // draw selected days with highlighted background color 508 // draw selected days with highlighted background color
514 if (mSelStart != NOSELECTION) { 509 if (mSelStart != NOSELECTION) {
515 510
516 row = mSelStart/7; 511 row = mSelStart/7;
517 col = mSelStart -row*7; 512 col = mSelStart -row*7;
518 QColor selcol = KOPrefs::instance()->mHighlightColor; 513 QColor selcol = KOPrefs::instance()->mHighlightColor;
519 514
520 if (row == mSelEnd/7) { 515 if (row == mSelEnd/7) {
521 // Single row selection 516 // Single row selection
522 p.fillRect(isRTL ? (7 - (mSelEnd-mSelStart+1) - col)*dwidth : col*dwidth, 517 p.fillRect(isRTL ? (7 - (mSelEnd-mSelStart+1) - col)*dwidth : col*dwidth,
diff --git a/korganizer/kodaymatrix.h b/korganizer/kodaymatrix.h
index 0e9640a..ac2f59c 100644
--- a/korganizer/kodaymatrix.h
+++ b/korganizer/kodaymatrix.h
@@ -203,48 +203,49 @@ signals:
203protected: 203protected:
204 204
205 void paintEvent(QPaintEvent *ev); 205 void paintEvent(QPaintEvent *ev);
206 206
207 void mousePressEvent (QMouseEvent* e); 207 void mousePressEvent (QMouseEvent* e);
208 208
209 void mouseReleaseEvent (QMouseEvent* e); 209 void mouseReleaseEvent (QMouseEvent* e);
210 210
211 void mouseMoveEvent (QMouseEvent* e); 211 void mouseMoveEvent (QMouseEvent* e);
212 212
213 void dragEnterEvent(QDragEnterEvent *); 213 void dragEnterEvent(QDragEnterEvent *);
214 214
215 void dragMoveEvent(QDragMoveEvent *); 215 void dragMoveEvent(QDragMoveEvent *);
216 216
217 void dragLeaveEvent(QDragLeaveEvent *); 217 void dragLeaveEvent(QDragLeaveEvent *);
218 218
219 void dropEvent(QDropEvent *); 219 void dropEvent(QDropEvent *);
220 220
221 void resizeEvent(QResizeEvent *); 221 void resizeEvent(QResizeEvent *);
222 222
223private: 223private:
224 QTimer* mUpdateTimer; 224 QTimer* mUpdateTimer;
225 QTimer* mRepaintTimer; 225 QTimer* mRepaintTimer;
226 bool mDayChanged; 226 bool mDayChanged;
227 bool mPendingUpdateBeforeRepaint;
227 228
228 /** returns the index of the day located at the matrix's widget (x,y) position. 229 /** returns the index of the day located at the matrix's widget (x,y) position.
229 * 230 *
230 * @param x horizontal coordinate 231 * @param x horizontal coordinate
231 * @param y vertical coordinate 232 * @param y vertical coordinate
232 */ 233 */
233 int getDayIndexFrom(int x, int y); 234 int getDayIndexFrom(int x, int y);
234 235
235 /** calculates a "shaded" color from the supplied color object. 236 /** calculates a "shaded" color from the supplied color object.
236 * (Copied from Cornelius's kdpdatebutton.cpp) 237 * (Copied from Cornelius's kdpdatebutton.cpp)
237 * 238 *
238 * @param color source based on which a shaded color should be calculated. 239 * @param color source based on which a shaded color should be calculated.
239 */ 240 */
240 QColor getShadedColor(QColor color); 241 QColor getShadedColor(QColor color);
241 242
242 /** number of days to be displayed. For now there is no support for any other number then 42. 243 /** number of days to be displayed. For now there is no support for any other number then 42.
243 so change it at your own risk :o) */ 244 so change it at your own risk :o) */
244 static const int NUMDAYS; 245 static const int NUMDAYS;
245 246
246 /** calendar instance to be queried for holidays, events, ... */ 247 /** calendar instance to be queried for holidays, events, ... */
247 Calendar *mCalendar; 248 Calendar *mCalendar;
248 249
249 /** starting date of the matrix */ 250 /** starting date of the matrix */
250 QDate startdate; 251 QDate startdate;