-rw-r--r-- | korganizer/kodaymatrix.cpp | 30 | ||||
-rw-r--r-- | korganizer/kodaymatrix.h | 2 | ||||
-rw-r--r-- | korganizer/komonthview.cpp | 6 | ||||
-rw-r--r-- | korganizer/kotodoview.cpp | 17 | ||||
-rw-r--r-- | korganizer/kotodoview.h | 4 | ||||
-rw-r--r-- | korganizer/koviewmanager.cpp | 1 |
6 files changed, 39 insertions, 21 deletions
diff --git a/korganizer/kodaymatrix.cpp b/korganizer/kodaymatrix.cpp index ca896b5..549ef2a 100644 --- a/korganizer/kodaymatrix.cpp +++ b/korganizer/kodaymatrix.cpp | |||
@@ -167,173 +167,166 @@ void KODayMatrix::addSelectedDaysTo(DateList& selDays) | |||
167 | //cope with selection being out of matrix limits at bottom (> NUMDAYS-1) | 167 | //cope with selection being out of matrix limits at bottom (> NUMDAYS-1) |
168 | if (mSelEnd > NUMDAYS-1) { | 168 | if (mSelEnd > NUMDAYS-1) { |
169 | for (int i = i0; i <= NUMDAYS-1; i++) { | 169 | for (int i = i0; i <= NUMDAYS-1; i++) { |
170 | selDays.append(days[i]); | 170 | selDays.append(days[i]); |
171 | } | 171 | } |
172 | for (int i = NUMDAYS; i < mSelEnd; i++) { | 172 | for (int i = NUMDAYS; i < mSelEnd; i++) { |
173 | selDays.append(days[0].addDays(i)); | 173 | selDays.append(days[0].addDays(i)); |
174 | } | 174 | } |
175 | 175 | ||
176 | // apply normal routine to selection being entirely within matrix limits | 176 | // apply normal routine to selection being entirely within matrix limits |
177 | } else { | 177 | } else { |
178 | for (int i = i0; i <= mSelEnd; i++) { | 178 | for (int i = i0; i <= mSelEnd; i++) { |
179 | selDays.append(days[i]); | 179 | selDays.append(days[i]); |
180 | } | 180 | } |
181 | } | 181 | } |
182 | } | 182 | } |
183 | 183 | ||
184 | void KODayMatrix::setSelectedDaysFrom(const QDate& start, const QDate& end) | 184 | void KODayMatrix::setSelectedDaysFrom(const QDate& start, const QDate& end) |
185 | { | 185 | { |
186 | mSelStart = startdate.daysTo(start); | 186 | mSelStart = startdate.daysTo(start); |
187 | mSelEnd = startdate.daysTo(end); | 187 | mSelEnd = startdate.daysTo(end); |
188 | } | 188 | } |
189 | 189 | ||
190 | 190 | ||
191 | void KODayMatrix::recalculateToday() | 191 | void KODayMatrix::recalculateToday() |
192 | { | 192 | { |
193 | today = -1; | 193 | today = -1; |
194 | for (int i=0; i<NUMDAYS; i++) { | 194 | for (int i=0; i<NUMDAYS; i++) { |
195 | events[i] = 0; | 195 | events[i] = 0; |
196 | days[i] = startdate.addDays(i); | 196 | days[i] = startdate.addDays(i); |
197 | daylbls[i] = QString::number( KOGlobals::self()->calendarSystem()->day( days[i] )); | 197 | daylbls[i] = QString::number( KOGlobals::self()->calendarSystem()->day( days[i] )); |
198 | 198 | ||
199 | // if today is in the currently displayed month, hilight today | 199 | // if today is in the currently displayed month, hilight today |
200 | if (days[i].year() == QDate::currentDate().year() && | 200 | if (days[i].year() == QDate::currentDate().year() && |
201 | days[i].month() == QDate::currentDate().month() && | 201 | days[i].month() == QDate::currentDate().month() && |
202 | days[i].day() == QDate::currentDate().day()) { | 202 | days[i].day() == QDate::currentDate().day()) { |
203 | today = i; | 203 | today = i; |
204 | } | 204 | } |
205 | } | 205 | } |
206 | // qDebug(QString("Today is visible at %1.").arg(today)); | 206 | // qDebug(QString("Today is visible at %1.").arg(today)); |
207 | } | 207 | } |
208 | 208 | ||
209 | void KODayMatrix::updateView() | 209 | void KODayMatrix::updateView() |
210 | { | 210 | { |
211 | updateView(startdate); | 211 | updateView(startdate); |
212 | } | 212 | } |
213 | void KODayMatrix::repaintViewTimed() | 213 | void KODayMatrix::repaintViewTimed() |
214 | { | 214 | { |
215 | qDebug("KODayMatrix::repaintViewTimed "); | ||
216 | mRepaintTimer->stop(); | 215 | mRepaintTimer->stop(); |
217 | repaint(false); | 216 | repaint(false); |
218 | } | 217 | } |
219 | void KODayMatrix::updateViewTimed() | 218 | void KODayMatrix::updateViewTimed() |
220 | { | 219 | { |
221 | 220 | ||
222 | mUpdateTimer->stop(); | 221 | mUpdateTimer->stop(); |
223 | qDebug("KODayMatrix::updateView(QDate actdate)"); | ||
224 | for(int i = 0; i < NUMDAYS; i++) { | 222 | for(int i = 0; i < NUMDAYS; i++) { |
225 | |||
226 | // if events are set for the day then remember to draw it bold | 223 | // if events are set for the day then remember to draw it bold |
227 | QPtrList<Event> eventlist = mCalendar->events(days[i]); | 224 | QPtrList<Event> eventlist = mCalendar->events(days[i]); |
228 | Event *event; | 225 | Event *event; |
229 | int numEvents = eventlist.count(); | 226 | int numEvents = eventlist.count(); |
230 | 227 | QString holiStr = ""; | |
231 | for(event=eventlist.first();event != 0;event=eventlist.next()) { | 228 | for(event=eventlist.first();event != 0;event=eventlist.next()) { |
232 | ushort recurType = event->recurrence()->doesRecur(); | 229 | ushort recurType = event->recurrence()->doesRecur(); |
233 | |||
234 | if ((recurType == Recurrence::rDaily && !KOPrefs::instance()->mDailyRecur) || | 230 | if ((recurType == Recurrence::rDaily && !KOPrefs::instance()->mDailyRecur) || |
235 | (recurType == Recurrence::rWeekly && !KOPrefs::instance()->mWeeklyRecur)) { | 231 | (recurType == Recurrence::rWeekly && !KOPrefs::instance()->mWeeklyRecur)) { |
236 | numEvents--; | 232 | numEvents--; |
237 | } | 233 | } |
234 | if ( event->categories().contains( i18n("Holiday") ) || event->categories().contains( "Holiday" )) { | ||
235 | if ( !holiStr.isEmpty() ) | ||
236 | holiStr += "\n"; | ||
237 | holiStr += event->summary(); | ||
238 | } | ||
238 | } | 239 | } |
239 | events[i] = numEvents; | 240 | events[i] = numEvents; |
240 | |||
241 | //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 |
242 | #ifndef KORG_NOPLUGINS | ||
243 | QString holiStr = KOCore::self()->holiday(days[i]); | ||
244 | #else | ||
245 | QString holiStr = QString::null; | ||
246 | #endif | ||
247 | if ( (KOGlobals::self()->calendarSystem()->dayOfWeek(days[i]) == KOGlobals::self()->calendarSystem()->weekDayOfPray()) || | 242 | if ( (KOGlobals::self()->calendarSystem()->dayOfWeek(days[i]) == KOGlobals::self()->calendarSystem()->weekDayOfPray()) || |
248 | !holiStr.isEmpty()) { | 243 | !holiStr.isEmpty()) { |
249 | if (holiStr.isNull()) holiStr = ""; | ||
250 | mHolidays[i] = holiStr; | 244 | mHolidays[i] = holiStr; |
251 | |||
252 | } else { | 245 | } else { |
253 | mHolidays[i] = QString::null; | 246 | mHolidays[i] = QString::null; |
254 | } | 247 | } |
255 | } | 248 | } |
256 | if ( ! mPendingUpdateBeforeRepaint ) | 249 | if ( ! mPendingUpdateBeforeRepaint ) |
257 | repaint(false); | 250 | repaint(false); |
258 | } | 251 | } |
259 | void KODayMatrix::updateView(QDate actdate) | 252 | void KODayMatrix::updateView(QDate actdate) |
260 | { | 253 | { |
261 | 254 | ||
262 | if ( ! actdate.isValid() ) { | 255 | if ( ! actdate.isValid() ) { |
263 | //qDebug("date not valid "); | 256 | //qDebug("date not valid "); |
264 | return; | 257 | return; |
265 | } | 258 | } |
266 | mDayChanged = false; | 259 | mDayChanged = false; |
267 | //flag to indicate if the starting day of the matrix has changed by this call | 260 | //flag to indicate if the starting day of the matrix has changed by this call |
268 | //mDayChanged = false; | 261 | //mDayChanged = false; |
269 | // if a new startdate is to be set then apply Cornelius's calculation | 262 | // if a new startdate is to be set then apply Cornelius's calculation |
270 | // of the first day to be shown | 263 | // of the first day to be shown |
271 | if (actdate != startdate) { | 264 | if (actdate != startdate) { |
272 | // reset index of selection according to shift of starting date from startdate to actdate | 265 | // reset index of selection according to shift of starting date from startdate to actdate |
273 | if (mSelStart != NOSELECTION) { | 266 | if (mSelStart != NOSELECTION) { |
274 | int tmp = actdate.daysTo(startdate); | 267 | int tmp = actdate.daysTo(startdate); |
275 | //kdDebug() << "Shift of Selection1: " << mSelStart << " - " << mSelEnd << " -> " << tmp << "(" << offset << ")" << endl; | 268 | //kdDebug() << "Shift of Selection1: " << mSelStart << " - " << mSelEnd << " -> " << tmp << "(" << offset << ")" << endl; |
276 | // shift selection if new one would be visible at least partly ! | 269 | // shift selection if new one would be visible at least partly ! |
277 | 270 | ||
278 | if (mSelStart+tmp < NUMDAYS && mSelEnd+tmp >= 0) { | 271 | if (mSelStart+tmp < NUMDAYS && mSelEnd+tmp >= 0) { |
279 | // nested if is required for next X display pushed from a different month - correction required | 272 | // nested if is required for next X display pushed from a different month - correction required |
280 | // otherwise, for month forward and backward, it must be avoided | 273 | // otherwise, for month forward and backward, it must be avoided |
281 | if( mSelStart > NUMDAYS || mSelStart < 0 ) | 274 | if( mSelStart > NUMDAYS || mSelStart < 0 ) |
282 | mSelStart = mSelStart + tmp; | 275 | mSelStart = mSelStart + tmp; |
283 | if( mSelEnd > NUMDAYS || mSelEnd < 0 ) | 276 | if( mSelEnd > NUMDAYS || mSelEnd < 0 ) |
284 | mSelEnd = mSelEnd + tmp; | 277 | mSelEnd = mSelEnd + tmp; |
285 | } | 278 | } |
286 | } | 279 | } |
287 | startdate = actdate; | 280 | startdate = actdate; |
288 | mDayChanged = true; | 281 | mDayChanged = true; |
289 | recalculateToday(); | 282 | recalculateToday(); |
290 | } | 283 | } |
291 | qDebug("restart Timer %d vis: %d", mDayChanged, isVisible() ); | 284 | //qDebug("restart Timer %d vis: %d", mDayChanged, isVisible() ); |
292 | if ( !isVisible() ) { | 285 | if ( !isVisible() ) { |
293 | mPendingUpdateBeforeRepaint = true; | 286 | mPendingUpdateBeforeRepaint = true; |
294 | } else { | 287 | } else { |
295 | #ifdef DESKTOP_VERSION | 288 | #ifdef DESKTOP_VERSION |
296 | //mRepaintTimer->start( 250 ); | 289 | //mRepaintTimer->start( 250 ); |
297 | mUpdateTimer->start( 250 ); | 290 | mUpdateTimer->start( 250 ); |
298 | #else | 291 | #else |
299 | mRepaintTimer->start( 350 ); | 292 | mRepaintTimer->start( 350 ); |
300 | mUpdateTimer->start( 2000 ); | 293 | mUpdateTimer->start( 2000 ); |
301 | #endif | 294 | #endif |
302 | } | 295 | } |
303 | } | 296 | } |
304 | 297 | ||
305 | const QDate& KODayMatrix::getDate(int offset) | 298 | const QDate& KODayMatrix::getDate(int offset) |
306 | { | 299 | { |
307 | if (offset < 0 || offset > NUMDAYS-1) { | 300 | if (offset < 0 || offset > NUMDAYS-1) { |
308 | qDebug("Wrong offset2 "); | 301 | qDebug("Wrong offset2 "); |
309 | return days[0]; | 302 | return days[0]; |
310 | } | 303 | } |
311 | return days[offset]; | 304 | return days[offset]; |
312 | } | 305 | } |
313 | 306 | ||
314 | QString KODayMatrix::getHolidayLabel(int offset) | 307 | QString KODayMatrix::getHolidayLabel(int offset) |
315 | { | 308 | { |
316 | if (offset < 0 || offset > NUMDAYS-1) { | 309 | if (offset < 0 || offset > NUMDAYS-1) { |
317 | qDebug("Wrong offset1 "); | 310 | qDebug("Wrong offset1 "); |
318 | return 0; | 311 | return 0; |
319 | } | 312 | } |
320 | return mHolidays[offset]; | 313 | return mHolidays[offset]; |
321 | } | 314 | } |
322 | 315 | ||
323 | int KODayMatrix::getDayIndexFrom(int x, int y) | 316 | int KODayMatrix::getDayIndexFrom(int x, int y) |
324 | { | 317 | { |
325 | return 7*(y/daysize.height()) + (KOGlobals::self()->reverseLayout() ? | 318 | return 7*(y/daysize.height()) + (KOGlobals::self()->reverseLayout() ? |
326 | 6 - x/daysize.width() : x/daysize.width()); | 319 | 6 - x/daysize.width() : x/daysize.width()); |
327 | } | 320 | } |
328 | 321 | ||
329 | // ---------------------------------------------------------------------------- | 322 | // ---------------------------------------------------------------------------- |
330 | // M O U S E E V E N T H A N D L I N G | 323 | // M O U S E E V E N T H A N D L I N G |
331 | // ---------------------------------------------------------------------------- | 324 | // ---------------------------------------------------------------------------- |
332 | 325 | ||
333 | void KODayMatrix::mousePressEvent (QMouseEvent* e) | 326 | void KODayMatrix::mousePressEvent (QMouseEvent* e) |
334 | { | 327 | { |
335 | mSelStart = getDayIndexFrom(e->x(), e->y()); | 328 | mSelStart = getDayIndexFrom(e->x(), e->y()); |
336 | if (mSelStart > NUMDAYS-1) mSelStart=NUMDAYS-1; | 329 | if (mSelStart > NUMDAYS-1) mSelStart=NUMDAYS-1; |
337 | mSelInit = mSelStart; | 330 | mSelInit = mSelStart; |
338 | } | 331 | } |
339 | 332 | ||
@@ -442,102 +435,106 @@ void KODayMatrix::dropEvent(QDropEvent *e) | |||
442 | 435 | ||
443 | DndFactory factory( mCalendar ); | 436 | DndFactory factory( mCalendar ); |
444 | Event *event = factory.createDrop(e); | 437 | Event *event = factory.createDrop(e); |
445 | 438 | ||
446 | if (event) { | 439 | if (event) { |
447 | e->acceptAction(); | 440 | e->acceptAction(); |
448 | 441 | ||
449 | Event *existingEvent = mCalendar->event(event->uid()); | 442 | Event *existingEvent = mCalendar->event(event->uid()); |
450 | 443 | ||
451 | if(existingEvent) { | 444 | if(existingEvent) { |
452 | // uniquify event | 445 | // uniquify event |
453 | event->recreate(); | 446 | event->recreate(); |
454 | /* | 447 | /* |
455 | KMessageBox::sorry(this, | 448 | KMessageBox::sorry(this, |
456 | i18n("Event already exists in this calendar."), | 449 | i18n("Event already exists in this calendar."), |
457 | i18n("Drop Event")); | 450 | i18n("Drop Event")); |
458 | delete event; | 451 | delete event; |
459 | return; | 452 | return; |
460 | */ | 453 | */ |
461 | } | 454 | } |
462 | // kdDebug() << "Drop new Event" << endl; | 455 | // kdDebug() << "Drop new Event" << endl; |
463 | // Adjust date | 456 | // Adjust date |
464 | QDateTime start = event->dtStart(); | 457 | QDateTime start = event->dtStart(); |
465 | QDateTime end = event->dtEnd(); | 458 | QDateTime end = event->dtEnd(); |
466 | int duration = start.daysTo(end); | 459 | int duration = start.daysTo(end); |
467 | int idx = getDayIndexFrom(e->pos().x(), e->pos().y()); | 460 | int idx = getDayIndexFrom(e->pos().x(), e->pos().y()); |
468 | 461 | ||
469 | start.setDate(days[idx]); | 462 | start.setDate(days[idx]); |
470 | end.setDate(days[idx].addDays(duration)); | 463 | end.setDate(days[idx].addDays(duration)); |
471 | 464 | ||
472 | event->setDtStart(start); | 465 | event->setDtStart(start); |
473 | event->setDtEnd(end); | 466 | event->setDtEnd(end); |
474 | mCalendar->addEvent(event); | 467 | mCalendar->addEvent(event); |
475 | 468 | ||
476 | emit eventDropped(event); | 469 | emit eventDropped(event); |
477 | } else { | 470 | } else { |
478 | // kdDebug() << "KODayMatrix::dropEvent(): Event from drop not decodable" << endl; | 471 | // kdDebug() << "KODayMatrix::dropEvent(): Event from drop not decodable" << endl; |
479 | e->ignore(); | 472 | e->ignore(); |
480 | } | 473 | } |
481 | #endif | 474 | #endif |
482 | } | 475 | } |
483 | 476 | ||
484 | // ---------------------------------------------------------------------------- | 477 | // ---------------------------------------------------------------------------- |
485 | // P A I N T E V E N T H A N D L I N G | 478 | // P A I N T E V E N T H A N D L I N G |
486 | // ---------------------------------------------------------------------------- | 479 | // ---------------------------------------------------------------------------- |
487 | 480 | ||
488 | void KODayMatrix::paintEvent(QPaintEvent * pevent) | 481 | void KODayMatrix::paintEvent(QPaintEvent * pevent) |
489 | { | 482 | { |
490 | //kdDebug() << "KODayMatrix::paintEvent() BEGIN" << endl; | 483 | if ( width() <= 0 || height() <= 0 ) |
484 | return; | ||
491 | if ( mPendingUpdateBeforeRepaint ) { | 485 | if ( mPendingUpdateBeforeRepaint ) { |
492 | updateViewTimed(); | 486 | updateViewTimed(); |
493 | mPendingUpdateBeforeRepaint = false; | 487 | mPendingUpdateBeforeRepaint = false; |
494 | } | 488 | } |
495 | QPainter p(this); | 489 | if ( myPix.width() != width() || myPix.height()!=height() ) { |
490 | myPix.resize(size() ); | ||
491 | } | ||
492 | QPainter p(&myPix); | ||
496 | 493 | ||
497 | QRect sz = frameRect(); | 494 | QRect sz = frameRect(); |
498 | int dheight = daysize.height(); | 495 | int dheight = daysize.height(); |
499 | int dwidth = daysize.width(); | 496 | int dwidth = daysize.width(); |
500 | int row,col; | 497 | int row,col; |
501 | int selw, selh; | 498 | int selw, selh; |
502 | bool isRTL = KOGlobals::self()->reverseLayout(); | 499 | bool isRTL = KOGlobals::self()->reverseLayout(); |
503 | 500 | ||
504 | // draw background and topleft frame | 501 | // draw background and topleft frame |
505 | p.fillRect(pevent->rect(), mDefaultBackColor); | 502 | p.fillRect(pevent->rect(), mDefaultBackColor); |
506 | p.setPen(mDefaultTextColor); | 503 | p.setPen(mDefaultTextColor); |
507 | p.drawRect(0, 0, sz.width()+1, sz.height()+1); | 504 | p.drawRect(0, 0, sz.width()+1, sz.height()+1); |
508 | 505 | ||
509 | // draw selected days with highlighted background color | 506 | // draw selected days with highlighted background color |
510 | if (mSelStart != NOSELECTION) { | 507 | if (mSelStart != NOSELECTION) { |
511 | 508 | ||
512 | row = mSelStart/7; | 509 | row = mSelStart/7; |
513 | col = mSelStart -row*7; | 510 | col = mSelStart -row*7; |
514 | QColor selcol = KOPrefs::instance()->mHighlightColor; | 511 | QColor selcol = KOPrefs::instance()->mHighlightColor; |
515 | 512 | ||
516 | if (row == mSelEnd/7) { | 513 | if (row == mSelEnd/7) { |
517 | // Single row selection | 514 | // Single row selection |
518 | p.fillRect(isRTL ? (7 - (mSelEnd-mSelStart+1) - col)*dwidth : col*dwidth, | 515 | p.fillRect(isRTL ? (7 - (mSelEnd-mSelStart+1) - col)*dwidth : col*dwidth, |
519 | row*dheight, (mSelEnd-mSelStart+1)*dwidth, dheight, selcol); | 516 | row*dheight, (mSelEnd-mSelStart+1)*dwidth, dheight, selcol); |
520 | } else { | 517 | } else { |
521 | // draw first row to the right | 518 | // draw first row to the right |
522 | p.fillRect(isRTL ? 0 : col*dwidth, row*dheight, (7-col)*dwidth, | 519 | p.fillRect(isRTL ? 0 : col*dwidth, row*dheight, (7-col)*dwidth, |
523 | dheight, selcol); | 520 | dheight, selcol); |
524 | // draw full block till last line | 521 | // draw full block till last line |
525 | selh = mSelEnd/7-row; | 522 | selh = mSelEnd/7-row; |
526 | if (selh > 1) { | 523 | if (selh > 1) { |
527 | p.fillRect(0, (row+1)*dheight, 7*dwidth, (selh-1)*dheight,selcol); | 524 | p.fillRect(0, (row+1)*dheight, 7*dwidth, (selh-1)*dheight,selcol); |
528 | } | 525 | } |
529 | // draw last block from left to mSelEnd | 526 | // draw last block from left to mSelEnd |
530 | selw = mSelEnd-7*(mSelEnd/7)+1; | 527 | selw = mSelEnd-7*(mSelEnd/7)+1; |
531 | p.fillRect(isRTL ? (7-selw)*dwidth : 0, (row+selh)*dheight, | 528 | p.fillRect(isRTL ? (7-selw)*dwidth : 0, (row+selh)*dheight, |
532 | selw*dwidth, dheight, selcol); | 529 | selw*dwidth, dheight, selcol); |
533 | } | 530 | } |
534 | } | 531 | } |
535 | 532 | ||
536 | // iterate over all days in the matrix and draw the day label in appropriate colors | 533 | // iterate over all days in the matrix and draw the day label in appropriate colors |
537 | QColor actcol = mDefaultTextColorShaded; | 534 | QColor actcol = mDefaultTextColorShaded; |
538 | p.setPen(actcol); | 535 | p.setPen(actcol); |
539 | QPen tmppen; | 536 | QPen tmppen; |
540 | for(int i = 0; i < NUMDAYS; i++) { | 537 | for(int i = 0; i < NUMDAYS; i++) { |
541 | row = i/7; | 538 | row = i/7; |
542 | col = isRTL ? 6-(i-row*7) : i-row*7; | 539 | col = isRTL ? 6-(i-row*7) : i-row*7; |
543 | 540 | ||
@@ -571,60 +568,61 @@ void KODayMatrix::paintEvent(QPaintEvent * pevent) | |||
571 | } | 568 | } |
572 | } | 569 | } |
573 | //draw gray rectangle for today if in selection | 570 | //draw gray rectangle for today if in selection |
574 | if (i >= mSelStart && i <= mSelEnd) { | 571 | if (i >= mSelStart && i <= mSelEnd) { |
575 | QColor grey("grey"); | 572 | QColor grey("grey"); |
576 | mTodayPen.setColor(grey); | 573 | mTodayPen.setColor(grey); |
577 | } | 574 | } |
578 | p.setPen(mTodayPen); | 575 | p.setPen(mTodayPen); |
579 | p.drawRect(col*dwidth, row*dheight, dwidth, dheight); | 576 | p.drawRect(col*dwidth, row*dheight, dwidth, dheight); |
580 | p.setPen(tmppen); | 577 | p.setPen(tmppen); |
581 | } | 578 | } |
582 | 579 | ||
583 | // if any events are on that day then draw it using a bold font | 580 | // if any events are on that day then draw it using a bold font |
584 | if (events[i] > 0) { | 581 | if (events[i] > 0) { |
585 | QFont myFont = font(); | 582 | QFont myFont = font(); |
586 | myFont.setBold(true); | 583 | myFont.setBold(true); |
587 | p.setFont(myFont); | 584 | p.setFont(myFont); |
588 | } | 585 | } |
589 | 586 | ||
590 | // if it is a holiday then use the default holiday color | 587 | // if it is a holiday then use the default holiday color |
591 | if (!mHolidays[i].isNull()) { | 588 | if (!mHolidays[i].isNull()) { |
592 | if (actcol == mDefaultTextColor) { | 589 | if (actcol == mDefaultTextColor) { |
593 | p.setPen(KOPrefs::instance()->mHolidayColor); | 590 | p.setPen(KOPrefs::instance()->mHolidayColor); |
594 | } else { | 591 | } else { |
595 | p.setPen(mHolidayColorShaded); | 592 | p.setPen(mHolidayColorShaded); |
596 | } | 593 | } |
597 | } | 594 | } |
598 | 595 | ||
599 | // draw selected days with special color | 596 | // draw selected days with special color |
600 | // DO NOT specially highlight holidays in selection ! | 597 | // DO NOT specially highlight holidays in selection ! |
601 | if (i >= mSelStart && i <= mSelEnd) { | 598 | if (i >= mSelStart && i <= mSelEnd) { |
602 | p.setPen(mSelectedDaysColor); | 599 | p.setPen(mSelectedDaysColor); |
603 | } | 600 | } |
604 | 601 | ||
605 | p.drawText(col*dwidth, row*dheight, dwidth, dheight, | 602 | p.drawText(col*dwidth, row*dheight, dwidth, dheight, |
606 | Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]); | 603 | Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]); |
607 | 604 | ||
608 | // reset color to actual color | 605 | // reset color to actual color |
609 | if (!mHolidays[i].isNull()) { | 606 | if (!mHolidays[i].isNull()) { |
610 | p.setPen(actcol); | 607 | p.setPen(actcol); |
611 | } | 608 | } |
612 | // reset bold font to plain font | 609 | // reset bold font to plain font |
613 | if (events[i] > 0) { | 610 | if (events[i] > 0) { |
614 | QFont myFont = font(); | 611 | QFont myFont = font(); |
615 | myFont.setBold(false); | 612 | myFont.setBold(false); |
616 | p.setFont(myFont); | 613 | p.setFont(myFont); |
617 | } | 614 | } |
618 | } | 615 | } |
616 | bitBlt (this, 0, 0, &myPix, 0 ,0,width(), height() ,CopyROP); | ||
619 | } | 617 | } |
620 | 618 | ||
621 | // ---------------------------------------------------------------------------- | 619 | // ---------------------------------------------------------------------------- |
622 | // R E SI Z E E V E N T H A N D L I N G | 620 | // R E SI Z E E V E N T H A N D L I N G |
623 | // ---------------------------------------------------------------------------- | 621 | // ---------------------------------------------------------------------------- |
624 | 622 | ||
625 | void KODayMatrix::resizeEvent(QResizeEvent *) | 623 | void KODayMatrix::resizeEvent(QResizeEvent *) |
626 | { | 624 | { |
627 | QRect sz = frameRect(); | 625 | QRect sz = frameRect(); |
628 | daysize.setHeight(sz.height()*7 / NUMDAYS); | 626 | daysize.setHeight(sz.height()*7 / NUMDAYS); |
629 | daysize.setWidth(sz.width() / 7); | 627 | daysize.setWidth(sz.width() / 7); |
630 | } | 628 | } |
diff --git a/korganizer/kodaymatrix.h b/korganizer/kodaymatrix.h index ac2f59c..2dd112a 100644 --- a/korganizer/kodaymatrix.h +++ b/korganizer/kodaymatrix.h | |||
@@ -1,81 +1,82 @@ | |||
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 | 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 | #ifndef _KODAYMAT_H | 23 | #ifndef _KODAYMAT_H |
24 | #define _KODAYMAT_H | 24 | #define _KODAYMAT_H |
25 | 25 | ||
26 | #include <libkcal/calendar.h> | 26 | #include <libkcal/calendar.h> |
27 | 27 | ||
28 | #include <qstring.h> | 28 | #include <qstring.h> |
29 | #include <qframe.h> | 29 | #include <qframe.h> |
30 | #include <qcolor.h> | 30 | #include <qcolor.h> |
31 | #include <qpen.h> | 31 | #include <qpen.h> |
32 | #include <qdatetime.h> | 32 | #include <qdatetime.h> |
33 | #include <qtooltip.h> | 33 | #include <qtooltip.h> |
34 | #include <qpixmap.h> | ||
34 | 35 | ||
35 | #include <qmap.h> | 36 | #include <qmap.h> |
36 | 37 | ||
37 | class QDragEnterEvent; | 38 | class QDragEnterEvent; |
38 | class QDragMoveEvent; | 39 | class QDragMoveEvent; |
39 | class QDragLeaveEvent; | 40 | class QDragLeaveEvent; |
40 | class QDropEvent; | 41 | class QDropEvent; |
41 | 42 | ||
42 | class KODayMatrix; | 43 | class KODayMatrix; |
43 | 44 | ||
44 | using namespace KCal; | 45 | using namespace KCal; |
45 | 46 | ||
46 | 47 | ||
47 | /** | 48 | /** |
48 | * small helper class to dynamically show tooltips inside the day matrix. | 49 | * small helper class to dynamically show tooltips inside the day matrix. |
49 | * This class asks the day matrix object for a appropriate label which | 50 | * This class asks the day matrix object for a appropriate label which |
50 | * is in our special case the name of the holiday or null if this day is no holiday. | 51 | * is in our special case the name of the holiday or null if this day is no holiday. |
51 | */ | 52 | */ |
52 | class DynamicTip : public QToolTip | 53 | class DynamicTip : public QToolTip |
53 | { | 54 | { |
54 | public: | 55 | public: |
55 | 56 | ||
56 | /** | 57 | /** |
57 | * Constructor that expects a KODayMatrix object as parent. | 58 | * Constructor that expects a KODayMatrix object as parent. |
58 | * | 59 | * |
59 | * @param parent the parent KODayMatrix control. | 60 | * @param parent the parent KODayMatrix control. |
60 | */ | 61 | */ |
61 | DynamicTip(QWidget* parent ); | 62 | DynamicTip(QWidget* parent ); |
62 | 63 | ||
63 | protected: | 64 | protected: |
64 | 65 | ||
65 | /** | 66 | /** |
66 | * Qt's callback to ask the object to provide an approrpiate text for the | 67 | * Qt's callback to ask the object to provide an approrpiate text for the |
67 | * tooltip to be shown. | 68 | * tooltip to be shown. |
68 | * | 69 | * |
69 | * @param pos coordinates of the mouse. | 70 | * @param pos coordinates of the mouse. |
70 | */ | 71 | */ |
71 | void maybeTip( const QPoint & pos); | 72 | void maybeTip( const QPoint & pos); |
72 | 73 | ||
73 | private: | 74 | private: |
74 | 75 | ||
75 | /** the parent control this tooltip is designed for. */ | 76 | /** the parent control this tooltip is designed for. */ |
76 | KODayMatrix* matrix; | 77 | KODayMatrix* matrix; |
77 | }; | 78 | }; |
78 | 79 | ||
79 | /** | 80 | /** |
80 | * replacement for kdpdatebuton.cpp that used 42 widgets for the day matrix to be displayed. | 81 | * replacement for kdpdatebuton.cpp that used 42 widgets for the day matrix to be displayed. |
81 | * Cornelius thought this was a waste of memory and a lot of overhead. | 82 | * Cornelius thought this was a waste of memory and a lot of overhead. |
@@ -176,96 +177,97 @@ public slots: | |||
176 | void repaintViewTimed(); | 177 | void repaintViewTimed(); |
177 | 178 | ||
178 | /** | 179 | /** |
179 | * Calculate which square in the matrix should be | 180 | * Calculate which square in the matrix should be |
180 | * hilighted to indicate it's today. | 181 | * hilighted to indicate it's today. |
181 | */ | 182 | */ |
182 | void recalculateToday(); | 183 | void recalculateToday(); |
183 | 184 | ||
184 | /* | 185 | /* |
185 | void setStartDate(QDate); | 186 | void setStartDate(QDate); |
186 | */ | 187 | */ |
187 | 188 | ||
188 | signals: | 189 | signals: |
189 | 190 | ||
190 | /** emitted if the user selects a block of days with the mouse by dragging a rectangle | 191 | /** emitted if the user selects a block of days with the mouse by dragging a rectangle |
191 | * inside the matrix | 192 | * inside the matrix |
192 | * | 193 | * |
193 | * @param daylist list of days that have been selected by the user | 194 | * @param daylist list of days that have been selected by the user |
194 | */ | 195 | */ |
195 | void selected( const KCal::DateList &daylist ); | 196 | void selected( const KCal::DateList &daylist ); |
196 | 197 | ||
197 | /** emitted if the user has dropped an event inside the matrix | 198 | /** emitted if the user has dropped an event inside the matrix |
198 | * | 199 | * |
199 | * @param event the dropped calendar event | 200 | * @param event the dropped calendar event |
200 | */ | 201 | */ |
201 | void eventDropped(Event *event); | 202 | void eventDropped(Event *event); |
202 | 203 | ||
203 | protected: | 204 | protected: |
204 | 205 | ||
205 | void paintEvent(QPaintEvent *ev); | 206 | void paintEvent(QPaintEvent *ev); |
206 | 207 | ||
207 | void mousePressEvent (QMouseEvent* e); | 208 | void mousePressEvent (QMouseEvent* e); |
208 | 209 | ||
209 | void mouseReleaseEvent (QMouseEvent* e); | 210 | void mouseReleaseEvent (QMouseEvent* e); |
210 | 211 | ||
211 | void mouseMoveEvent (QMouseEvent* e); | 212 | void mouseMoveEvent (QMouseEvent* e); |
212 | 213 | ||
213 | void dragEnterEvent(QDragEnterEvent *); | 214 | void dragEnterEvent(QDragEnterEvent *); |
214 | 215 | ||
215 | void dragMoveEvent(QDragMoveEvent *); | 216 | void dragMoveEvent(QDragMoveEvent *); |
216 | 217 | ||
217 | void dragLeaveEvent(QDragLeaveEvent *); | 218 | void dragLeaveEvent(QDragLeaveEvent *); |
218 | 219 | ||
219 | void dropEvent(QDropEvent *); | 220 | void dropEvent(QDropEvent *); |
220 | 221 | ||
221 | void resizeEvent(QResizeEvent *); | 222 | void resizeEvent(QResizeEvent *); |
222 | 223 | ||
223 | private: | 224 | private: |
225 | QPixmap myPix; | ||
224 | QTimer* mUpdateTimer; | 226 | QTimer* mUpdateTimer; |
225 | QTimer* mRepaintTimer; | 227 | QTimer* mRepaintTimer; |
226 | bool mDayChanged; | 228 | bool mDayChanged; |
227 | bool mPendingUpdateBeforeRepaint; | 229 | bool mPendingUpdateBeforeRepaint; |
228 | 230 | ||
229 | /** returns the index of the day located at the matrix's widget (x,y) position. | 231 | /** returns the index of the day located at the matrix's widget (x,y) position. |
230 | * | 232 | * |
231 | * @param x horizontal coordinate | 233 | * @param x horizontal coordinate |
232 | * @param y vertical coordinate | 234 | * @param y vertical coordinate |
233 | */ | 235 | */ |
234 | int getDayIndexFrom(int x, int y); | 236 | int getDayIndexFrom(int x, int y); |
235 | 237 | ||
236 | /** calculates a "shaded" color from the supplied color object. | 238 | /** calculates a "shaded" color from the supplied color object. |
237 | * (Copied from Cornelius's kdpdatebutton.cpp) | 239 | * (Copied from Cornelius's kdpdatebutton.cpp) |
238 | * | 240 | * |
239 | * @param color source based on which a shaded color should be calculated. | 241 | * @param color source based on which a shaded color should be calculated. |
240 | */ | 242 | */ |
241 | QColor getShadedColor(QColor color); | 243 | QColor getShadedColor(QColor color); |
242 | 244 | ||
243 | /** number of days to be displayed. For now there is no support for any other number then 42. | 245 | /** number of days to be displayed. For now there is no support for any other number then 42. |
244 | so change it at your own risk :o) */ | 246 | so change it at your own risk :o) */ |
245 | static const int NUMDAYS; | 247 | static const int NUMDAYS; |
246 | 248 | ||
247 | /** calendar instance to be queried for holidays, events, ... */ | 249 | /** calendar instance to be queried for holidays, events, ... */ |
248 | Calendar *mCalendar; | 250 | Calendar *mCalendar; |
249 | 251 | ||
250 | /** starting date of the matrix */ | 252 | /** starting date of the matrix */ |
251 | QDate startdate; | 253 | QDate startdate; |
252 | 254 | ||
253 | /** array of day labels to optimeize drawing performance. */ | 255 | /** array of day labels to optimeize drawing performance. */ |
254 | QString *daylbls; | 256 | QString *daylbls; |
255 | 257 | ||
256 | /** array of days displayed to reduce memory consumption by | 258 | /** array of days displayed to reduce memory consumption by |
257 | subsequently calling QDate::addDays(). */ | 259 | subsequently calling QDate::addDays(). */ |
258 | QDate *days; | 260 | QDate *days; |
259 | 261 | ||
260 | /** array of storing the number of events on a given day. | 262 | /** array of storing the number of events on a given day. |
261 | * used for drawing a bold font if there is at least one event on that day. | 263 | * used for drawing a bold font if there is at least one event on that day. |
262 | */ | 264 | */ |
263 | int *events; | 265 | int *events; |
264 | 266 | ||
265 | /** stores holiday names of the days shown in the matrix. */ | 267 | /** stores holiday names of the days shown in the matrix. */ |
266 | QMap<int,QString> mHolidays; | 268 | QMap<int,QString> mHolidays; |
267 | 269 | ||
268 | /** indey of today or -1 if today is not visible in the matrix. */ | 270 | /** indey of today or -1 if today is not visible in the matrix. */ |
269 | int today; | 271 | int today; |
270 | 272 | ||
271 | /** index of day where dragged selection was initiated. | 273 | /** index of day where dragged selection was initiated. |
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp index 4cff23a..6411156 100644 --- a/korganizer/komonthview.cpp +++ b/korganizer/komonthview.cpp | |||
@@ -931,98 +931,98 @@ void KOMonthView::showDates(const QDate &start, const QDate &) | |||
931 | 931 | ||
932 | bool primary = false; | 932 | bool primary = false; |
933 | uint i; | 933 | uint i; |
934 | for( i = 0; i < mCells.size(); ++i ) { | 934 | for( i = 0; i < mCells.size(); ++i ) { |
935 | QDate date = mStartDate.addDays( i ); | 935 | QDate date = mStartDate.addDays( i ); |
936 | mCells[i]->setDate( date ); | 936 | mCells[i]->setDate( date ); |
937 | 937 | ||
938 | #ifndef KORG_NOPLUGINS | 938 | #ifndef KORG_NOPLUGINS |
939 | // add holiday, if present | 939 | // add holiday, if present |
940 | QString hstring(KOCore::self()->holiday(date)); | 940 | QString hstring(KOCore::self()->holiday(date)); |
941 | mCells[i]->setHoliday( hstring ); | 941 | mCells[i]->setHoliday( hstring ); |
942 | #endif | 942 | #endif |
943 | 943 | ||
944 | } | 944 | } |
945 | QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 ); | 945 | QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 ); |
946 | for( i = 0; i < 6; ++i ) { | 946 | for( i = 0; i < 6; ++i ) { |
947 | int wno; | 947 | int wno; |
948 | // remember, according to ISO 8601, the first week of the year is the | 948 | // remember, according to ISO 8601, the first week of the year is the |
949 | // first week that contains a thursday. Thus we must subtract off 4, | 949 | // first week that contains a thursday. Thus we must subtract off 4, |
950 | // not just 1. | 950 | // not just 1. |
951 | int dayOfYear = date.dayOfYear(); | 951 | int dayOfYear = date.dayOfYear(); |
952 | if (dayOfYear % 7 != 0) | 952 | if (dayOfYear % 7 != 0) |
953 | wno = dayOfYear / 7 + 1; | 953 | wno = dayOfYear / 7 + 1; |
954 | else | 954 | else |
955 | wno =dayOfYear / 7; | 955 | wno =dayOfYear / 7; |
956 | mWeekLabels[i]->setWeekNum( wno ); | 956 | mWeekLabels[i]->setWeekNum( wno ); |
957 | date = date.addDays( 7 ); | 957 | date = date.addDays( 7 ); |
958 | } | 958 | } |
959 | updateView(); | 959 | updateView(); |
960 | } | 960 | } |
961 | 961 | ||
962 | void KOMonthView::showEvents(QPtrList<Event>) | 962 | void KOMonthView::showEvents(QPtrList<Event>) |
963 | { | 963 | { |
964 | qDebug("KOMonthView::selectEvents is not implemented yet. "); | 964 | qDebug("KOMonthView::selectEvents is not implemented yet. "); |
965 | } | 965 | } |
966 | 966 | ||
967 | void KOMonthView::changeEventDisplay(Event *, int) | 967 | void KOMonthView::changeEventDisplay(Event *, int) |
968 | { | 968 | { |
969 | // this should be re-written to be much more efficient, but this | 969 | // this should be re-written to be much more efficient, but this |
970 | // quick-and-dirty-hack gets the job done for right now. | 970 | // quick-and-dirty-hack gets the job done for right now. |
971 | updateView(); | 971 | updateView(); |
972 | } | 972 | } |
973 | 973 | ||
974 | void KOMonthView::updateView() | 974 | void KOMonthView::updateView() |
975 | { | 975 | { |
976 | 976 | ||
977 | if ( !updatePossible ) | 977 | if ( !updatePossible ) |
978 | return; | 978 | return; |
979 | QTime ti; | 979 | //QTime ti; |
980 | ti.start(); | 980 | //ti.start(); |
981 | #if 1 | 981 | #if 1 |
982 | int i; | 982 | int i; |
983 | for( i = 0; i < mCells.count(); ++i ) { | 983 | for( i = 0; i < mCells.count(); ++i ) { |
984 | mCells[i]->startUpdateCell(); | 984 | mCells[i]->startUpdateCell(); |
985 | } | 985 | } |
986 | 986 | ||
987 | QPtrList<Event> events = calendar()->events(); | 987 | QPtrList<Event> events = calendar()->events(); |
988 | Event *event; | 988 | Event *event; |
989 | QDateTime dt; | 989 | QDateTime dt; |
990 | bool ok; | 990 | bool ok; |
991 | int timeSpan = mCells.size()-1; | 991 | int timeSpan = mCells.size()-1; |
992 | QDate endDate = mStartDate.addDays( timeSpan ); | 992 | QDate endDate = mStartDate.addDays( timeSpan ); |
993 | for( event = events.first(); event; event = events.next() ) { // for event | 993 | for( event = events.first(); event; event = events.next() ) { // for event |
994 | if ( event->doesRecur() ) { | 994 | if ( event->doesRecur() ) { |
995 | bool last; | 995 | bool last; |
996 | QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last ); | 996 | QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last ); |
997 | QDateTime incidenceEnd; | 997 | QDateTime incidenceEnd; |
998 | int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() ); | 998 | int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() ); |
999 | bool invalid = false; | 999 | bool invalid = false; |
1000 | while( true ) { | 1000 | while( true ) { |
1001 | if ( incidenceStart.isValid() ) { | 1001 | if ( incidenceStart.isValid() ) { |
1002 | incidenceEnd = incidenceStart.addDays( eventlen ); | 1002 | incidenceEnd = incidenceStart.addDays( eventlen ); |
1003 | int st = incidenceStart.date().daysTo( endDate ); | 1003 | int st = incidenceStart.date().daysTo( endDate ); |
1004 | if ( st >= 0 ) { // start before timeend | 1004 | if ( st >= 0 ) { // start before timeend |
1005 | int end = mStartDate.daysTo( incidenceEnd.date() ); | 1005 | int end = mStartDate.daysTo( incidenceEnd.date() ); |
1006 | if ( end >= 0 ) { // end after timestart --- got one! | 1006 | if ( end >= 0 ) { // end after timestart --- got one! |
1007 | //normalize | 1007 | //normalize |
1008 | st = timeSpan - st; | 1008 | st = timeSpan - st; |
1009 | if ( st < 0 ) st = 0; | 1009 | if ( st < 0 ) st = 0; |
1010 | if ( end > timeSpan ) end = timeSpan; | 1010 | if ( end > timeSpan ) end = timeSpan; |
1011 | int iii; | 1011 | int iii; |
1012 | //qDebug("found %s %d %d ",event->summary().latin1(), st, end ); | 1012 | //qDebug("found %s %d %d ",event->summary().latin1(), st, end ); |
1013 | for ( iii = st;iii<= end;++iii) | 1013 | for ( iii = st;iii<= end;++iii) |
1014 | mCells[iii]->insertEvent( event ); | 1014 | mCells[iii]->insertEvent( event ); |
1015 | } | 1015 | } |
1016 | } | 1016 | } |
1017 | } else { | 1017 | } else { |
1018 | if ( invalid ) | 1018 | if ( invalid ) |
1019 | break; | 1019 | break; |
1020 | invalid = true; | 1020 | invalid = true; |
1021 | //qDebug("invalid %s", event->summary().latin1()); | 1021 | //qDebug("invalid %s", event->summary().latin1()); |
1022 | incidenceStart = QDateTime( mStartDate ); | 1022 | incidenceStart = QDateTime( mStartDate ); |
1023 | } | 1023 | } |
1024 | if ( last ) | 1024 | if ( last ) |
1025 | break; | 1025 | break; |
1026 | bool ok; | 1026 | bool ok; |
1027 | incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok ); | 1027 | incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok ); |
1028 | if ( ! ok ) | 1028 | if ( ! ok ) |
@@ -1035,97 +1035,97 @@ void KOMonthView::updateView() | |||
1035 | if ( st >= 0 ) { // start before timeend | 1035 | if ( st >= 0 ) { // start before timeend |
1036 | int end = mStartDate.daysTo( event->dtEnd().date() ); | 1036 | int end = mStartDate.daysTo( event->dtEnd().date() ); |
1037 | if ( end >= 0 ) { // end after timestart --- got one! | 1037 | if ( end >= 0 ) { // end after timestart --- got one! |
1038 | //normalize | 1038 | //normalize |
1039 | st = timeSpan - st; | 1039 | st = timeSpan - st; |
1040 | if ( st < 0 ) st = 0; | 1040 | if ( st < 0 ) st = 0; |
1041 | if ( end > timeSpan ) end = timeSpan; | 1041 | if ( end > timeSpan ) end = timeSpan; |
1042 | int iii; | 1042 | int iii; |
1043 | for ( iii = st;iii<= end;++iii) | 1043 | for ( iii = st;iii<= end;++iii) |
1044 | mCells[iii]->insertEvent( event ); | 1044 | mCells[iii]->insertEvent( event ); |
1045 | } | 1045 | } |
1046 | } | 1046 | } |
1047 | } | 1047 | } |
1048 | } | 1048 | } |
1049 | // insert due todos | 1049 | // insert due todos |
1050 | QPtrList<Todo> todos = calendar()->todos( ); | 1050 | QPtrList<Todo> todos = calendar()->todos( ); |
1051 | Todo *todo; | 1051 | Todo *todo; |
1052 | for(todo = todos.first(); todo; todo = todos.next()) { | 1052 | for(todo = todos.first(); todo; todo = todos.next()) { |
1053 | //insertTodo( todo ); | 1053 | //insertTodo( todo ); |
1054 | if ( todo->hasDueDate() ) { | 1054 | if ( todo->hasDueDate() ) { |
1055 | int day = mStartDate.daysTo( todo->dtDue().date() ); | 1055 | int day = mStartDate.daysTo( todo->dtDue().date() ); |
1056 | if ( day >= 0 && day < mCells.size() ) { | 1056 | if ( day >= 0 && day < mCells.size() ) { |
1057 | mCells[day]->insertTodo( todo ); | 1057 | mCells[day]->insertTodo( todo ); |
1058 | } | 1058 | } |
1059 | } | 1059 | } |
1060 | } | 1060 | } |
1061 | 1061 | ||
1062 | for( i = 0; i < mCells.count(); ++i ) { | 1062 | for( i = 0; i < mCells.count(); ++i ) { |
1063 | mCells[i]->finishUpdateCell(); | 1063 | mCells[i]->finishUpdateCell(); |
1064 | } | 1064 | } |
1065 | processSelectionChange(); | 1065 | processSelectionChange(); |
1066 | mCells[0]->setFocus(); | 1066 | mCells[0]->setFocus(); |
1067 | 1067 | ||
1068 | 1068 | ||
1069 | #else | 1069 | #else |
1070 | // old code | 1070 | // old code |
1071 | //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ "); | 1071 | //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ "); |
1072 | int i; | 1072 | int i; |
1073 | for( i = 0; i < mCells.count(); ++i ) { | 1073 | for( i = 0; i < mCells.count(); ++i ) { |
1074 | mCells[i]->updateCell(); | 1074 | mCells[i]->updateCell(); |
1075 | } | 1075 | } |
1076 | 1076 | ||
1077 | //qDebug("KOMonthView::updateView() "); | 1077 | //qDebug("KOMonthView::updateView() "); |
1078 | processSelectionChange(); | 1078 | processSelectionChange(); |
1079 | // qDebug("---------------------------------------------------------------------+ "); | 1079 | // qDebug("---------------------------------------------------------------------+ "); |
1080 | mCells[0]->setFocus(); | 1080 | mCells[0]->setFocus(); |
1081 | #endif | 1081 | #endif |
1082 | 1082 | ||
1083 | qDebug("update time %d ", ti.elapsed()); | 1083 | //qDebug("update time %d ", ti.elapsed()); |
1084 | } | 1084 | } |
1085 | 1085 | ||
1086 | void KOMonthView::resizeEvent(QResizeEvent * e) | 1086 | void KOMonthView::resizeEvent(QResizeEvent * e) |
1087 | { | 1087 | { |
1088 | computeLayout(); | 1088 | computeLayout(); |
1089 | mCells[0]->setFocus(); | 1089 | mCells[0]->setFocus(); |
1090 | } | 1090 | } |
1091 | void KOMonthView::computeLayout() | 1091 | void KOMonthView::computeLayout() |
1092 | { | 1092 | { |
1093 | // select the appropriate heading string size. E.g. "Wednesday" or "Wed". | 1093 | // select the appropriate heading string size. E.g. "Wednesday" or "Wed". |
1094 | // note this only changes the text if the requested size crosses the | 1094 | // note this only changes the text if the requested size crosses the |
1095 | // threshold between big enough to support the full name and not big | 1095 | // threshold between big enough to support the full name and not big |
1096 | // enough. | 1096 | // enough. |
1097 | 1097 | ||
1098 | int daysToShow = 7; | 1098 | int daysToShow = 7; |
1099 | bool combinedSatSun = false; | 1099 | bool combinedSatSun = false; |
1100 | if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { | 1100 | if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { |
1101 | daysToShow = 6; | 1101 | daysToShow = 6; |
1102 | combinedSatSun = true; | 1102 | combinedSatSun = true; |
1103 | } | 1103 | } |
1104 | int tWid = topLevelWidget()->size().width(); | 1104 | int tWid = topLevelWidget()->size().width(); |
1105 | int tHei = topLevelWidget()->size().height(); | 1105 | int tHei = topLevelWidget()->size().height(); |
1106 | 1106 | ||
1107 | int wid = size().width();//e | 1107 | int wid = size().width();//e |
1108 | int hei = size().height()-1; | 1108 | int hei = size().height()-1; |
1109 | 1109 | ||
1110 | if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) | 1110 | if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) |
1111 | return; | 1111 | return; |
1112 | //qDebug("KOMonthView::computeLayout()------------------------------------ "); | 1112 | //qDebug("KOMonthView::computeLayout()------------------------------------ "); |
1113 | QFontMetrics fm ( mWeekLabels[0]->font() ); | 1113 | QFontMetrics fm ( mWeekLabels[0]->font() ); |
1114 | int weeklabelwid = fm.width( "888" ); | 1114 | int weeklabelwid = fm.width( "888" ); |
1115 | wid -= weeklabelwid; | 1115 | wid -= weeklabelwid; |
1116 | 1116 | ||
1117 | int colWid = wid / daysToShow; | 1117 | int colWid = wid / daysToShow; |
1118 | int lastCol = wid - ( colWid*6 ); | 1118 | int lastCol = wid - ( colWid*6 ); |
1119 | int dayLabelHei = mDayLabels[0]->sizeHint().height(); | 1119 | int dayLabelHei = mDayLabels[0]->sizeHint().height(); |
1120 | int cellHei = (hei - dayLabelHei) /6; | 1120 | int cellHei = (hei - dayLabelHei) /6; |
1121 | int colModulo = wid % daysToShow; | 1121 | int colModulo = wid % daysToShow; |
1122 | int rowModulo = (hei- dayLabelHei) % 6; | 1122 | int rowModulo = (hei- dayLabelHei) % 6; |
1123 | //qDebug("rowmod %d ", rowModulo); | 1123 | //qDebug("rowmod %d ", rowModulo); |
1124 | int i; | 1124 | int i; |
1125 | int x,y,w,h; | 1125 | int x,y,w,h; |
1126 | x= 0; | 1126 | x= 0; |
1127 | y= 0; | 1127 | y= 0; |
1128 | w = colWid; | 1128 | w = colWid; |
1129 | h = dayLabelHei ; | 1129 | h = dayLabelHei ; |
1130 | for ( i = 0; i < 7; i++) { | 1130 | for ( i = 0; i < 7; i++) { |
1131 | if ( i == daysToShow-colModulo ) | 1131 | if ( i == daysToShow-colModulo ) |
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp index 82437d8..99402c4 100644 --- a/korganizer/kotodoview.cpp +++ b/korganizer/kotodoview.cpp | |||
@@ -164,97 +164,101 @@ void KOTodoListView::contentsDropEvent(QDropEvent *e) | |||
164 | } | 164 | } |
165 | } | 165 | } |
166 | else { | 166 | else { |
167 | QString text; | 167 | QString text; |
168 | if (QTextDrag::decode(e,text)) { | 168 | if (QTextDrag::decode(e,text)) { |
169 | //QListViewItem *qlvi = itemAt( contentsToViewport(e->pos()) ); | 169 | //QListViewItem *qlvi = itemAt( contentsToViewport(e->pos()) ); |
170 | KOTodoViewItem *todoi = static_cast<KOTodoViewItem *>(itemAt( contentsToViewport(e->pos()) )); | 170 | KOTodoViewItem *todoi = static_cast<KOTodoViewItem *>(itemAt( contentsToViewport(e->pos()) )); |
171 | qDebug("Dropped : " + text); | 171 | qDebug("Dropped : " + text); |
172 | QStringList emails = QStringList::split(",",text); | 172 | QStringList emails = QStringList::split(",",text); |
173 | for(QStringList::ConstIterator it = emails.begin();it!=emails.end();++it) { | 173 | for(QStringList::ConstIterator it = emails.begin();it!=emails.end();++it) { |
174 | int pos = (*it).find("<"); | 174 | int pos = (*it).find("<"); |
175 | QString name = (*it).left(pos); | 175 | QString name = (*it).left(pos); |
176 | QString email = (*it).mid(pos); | 176 | QString email = (*it).mid(pos); |
177 | if (!email.isEmpty() && todoi) { | 177 | if (!email.isEmpty() && todoi) { |
178 | todoi->todo()->addAttendee(new Attendee(name,email)); | 178 | todoi->todo()->addAttendee(new Attendee(name,email)); |
179 | } | 179 | } |
180 | } | 180 | } |
181 | } | 181 | } |
182 | else { | 182 | else { |
183 | qDebug("KOTodoListView::contentsDropEvent(): Todo from drop not decodable "); | 183 | qDebug("KOTodoListView::contentsDropEvent(): Todo from drop not decodable "); |
184 | e->ignore(); | 184 | e->ignore(); |
185 | } | 185 | } |
186 | } | 186 | } |
187 | #endif | 187 | #endif |
188 | } | 188 | } |
189 | 189 | ||
190 | void KOTodoListView::contentsMousePressEvent(QMouseEvent* e) | 190 | void KOTodoListView::contentsMousePressEvent(QMouseEvent* e) |
191 | { | 191 | { |
192 | #ifndef KORG_NODND | 192 | #ifndef KORG_NODND |
193 | QPoint p(contentsToViewport(e->pos())); | 193 | QPoint p(contentsToViewport(e->pos())); |
194 | QListViewItem *i = itemAt(p); | 194 | QListViewItem *i = itemAt(p); |
195 | mMousePressed = false; | 195 | mMousePressed = false; |
196 | if (i) { | 196 | if (i) { |
197 | // if the user clicked into the root decoration of the item, don't | 197 | // if the user clicked into the root decoration of the item, don't |
198 | // try to start a drag! | 198 | // try to start a drag! |
199 | if (p.x() > header()->sectionPos(header()->mapToIndex(0)) + | 199 | if (p.x() > header()->sectionPos(header()->mapToIndex(0)) + |
200 | treeStepSize() * (i->depth() + (rootIsDecorated() ? 1 : 0)) + | 200 | treeStepSize() * (i->depth() + (rootIsDecorated() ? 1 : 0)) + |
201 | itemMargin() || | 201 | itemMargin() || |
202 | p.x() < header()->sectionPos(header()->mapToIndex(0))) { | 202 | p.x() < header()->sectionPos(header()->mapToIndex(0))) { |
203 | if (e->button()==Qt::LeftButton) { | 203 | if (e->button()==Qt::LeftButton) { |
204 | mPressPos = e->pos(); | 204 | mPressPos = e->pos(); |
205 | mMousePressed = true; | 205 | mMousePressed = true; |
206 | } | 206 | } |
207 | } | 207 | } |
208 | } | 208 | } |
209 | #endif | 209 | #endif |
210 | QListView::contentsMousePressEvent(e); | 210 | QListView::contentsMousePressEvent(e); |
211 | } | 211 | } |
212 | 212 | void KOTodoListView::paintEvent(QPaintEvent* e) | |
213 | { | ||
214 | emit paintNeeded(); | ||
215 | QListView::paintEvent( e); | ||
216 | } | ||
213 | void KOTodoListView::contentsMouseMoveEvent(QMouseEvent* e) | 217 | void KOTodoListView::contentsMouseMoveEvent(QMouseEvent* e) |
214 | { | 218 | { |
215 | 219 | ||
216 | #ifndef KORG_NODND | 220 | #ifndef KORG_NODND |
217 | QListView::contentsMouseMoveEvent(e); | 221 | QListView::contentsMouseMoveEvent(e); |
218 | if (mMousePressed && (mPressPos - e->pos()).manhattanLength() > | 222 | if (mMousePressed && (mPressPos - e->pos()).manhattanLength() > |
219 | QApplication::startDragDistance()) { | 223 | QApplication::startDragDistance()) { |
220 | mMousePressed = false; | 224 | mMousePressed = false; |
221 | QListViewItem *item = itemAt(contentsToViewport(mPressPos)); | 225 | QListViewItem *item = itemAt(contentsToViewport(mPressPos)); |
222 | if (item) { | 226 | if (item) { |
223 | DndFactory factory( mCalendar ); | 227 | DndFactory factory( mCalendar ); |
224 | ICalDrag *vd = factory.createDrag( | 228 | ICalDrag *vd = factory.createDrag( |
225 | ((KOTodoViewItem *)item)->todo(),viewport()); | 229 | ((KOTodoViewItem *)item)->todo(),viewport()); |
226 | internalDrop = false; | 230 | internalDrop = false; |
227 | // we cannot do any senseful here, because the DnD is still broken in Qt | 231 | // we cannot do any senseful here, because the DnD is still broken in Qt |
228 | if (vd->drag()) { | 232 | if (vd->drag()) { |
229 | if ( !internalDrop ) { | 233 | if ( !internalDrop ) { |
230 | //emit deleteTodo( ((KOTodoViewItem *)item)->todo() ); | 234 | //emit deleteTodo( ((KOTodoViewItem *)item)->todo() ); |
231 | qDebug("Dnd: External move: Delete drag source "); | 235 | qDebug("Dnd: External move: Delete drag source "); |
232 | } else | 236 | } else |
233 | qDebug("Dnd: Internal move "); | 237 | qDebug("Dnd: Internal move "); |
234 | 238 | ||
235 | } else { | 239 | } else { |
236 | if ( !internalDrop ) { | 240 | if ( !internalDrop ) { |
237 | qDebug("Dnd: External Copy"); | 241 | qDebug("Dnd: External Copy"); |
238 | } else | 242 | } else |
239 | qDebug("DnD: Internal copy: Copy pending"); | 243 | qDebug("DnD: Internal copy: Copy pending"); |
240 | } | 244 | } |
241 | } | 245 | } |
242 | } | 246 | } |
243 | #endif | 247 | #endif |
244 | } | 248 | } |
245 | void KOTodoListView::keyPressEvent ( QKeyEvent * e ) | 249 | void KOTodoListView::keyPressEvent ( QKeyEvent * e ) |
246 | { | 250 | { |
247 | 251 | ||
248 | QListViewItem* cn; | 252 | QListViewItem* cn; |
249 | if ( e->key() == Qt::Key_Return || e->key() == Qt::Key_Enter ) { | 253 | if ( e->key() == Qt::Key_Return || e->key() == Qt::Key_Enter ) { |
250 | cn = currentItem(); | 254 | cn = currentItem(); |
251 | if ( cn ) { | 255 | if ( cn ) { |
252 | KOTodoViewItem* ci = (KOTodoViewItem*)( cn ); | 256 | KOTodoViewItem* ci = (KOTodoViewItem*)( cn ); |
253 | if ( ci ){ | 257 | if ( ci ){ |
254 | if ( e->state() == ShiftButton ) | 258 | if ( e->state() == ShiftButton ) |
255 | ci->setOn( false ); | 259 | ci->setOn( false ); |
256 | else | 260 | else |
257 | ci->setOn( true ); | 261 | ci->setOn( true ); |
258 | cn = cn->itemBelow(); | 262 | cn = cn->itemBelow(); |
259 | if ( cn ) { | 263 | if ( cn ) { |
260 | setCurrentItem ( cn ); | 264 | setCurrentItem ( cn ); |
@@ -456,138 +460,147 @@ KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) : | |||
456 | mPopupMenu->insertItem(i18n("toggle running todo","Hide not Running"), | 460 | mPopupMenu->insertItem(i18n("toggle running todo","Hide not Running"), |
457 | this, SLOT( toggleRunning() ),0,5 ); | 461 | this, SLOT( toggleRunning() ),0,5 ); |
458 | mPopupMenu->insertItem(i18n(" set all open","Display all opened"), | 462 | mPopupMenu->insertItem(i18n(" set all open","Display all opened"), |
459 | this, SLOT( setAllOpen() ),0,6 ); | 463 | this, SLOT( setAllOpen() ),0,6 ); |
460 | mPopupMenu->insertItem(i18n(" set all close","Display all closed"), | 464 | mPopupMenu->insertItem(i18n(" set all close","Display all closed"), |
461 | this, SLOT( setAllClose() ),0,7 ); | 465 | this, SLOT( setAllClose() ),0,7 ); |
462 | mPopupMenu->insertItem(i18n(" set all flat","Display all flat"), | 466 | mPopupMenu->insertItem(i18n(" set all flat","Display all flat"), |
463 | this, SLOT( setAllFlat() ),0,8 ); | 467 | this, SLOT( setAllFlat() ),0,8 ); |
464 | mDocPrefs = new DocPrefs( name ); | 468 | mDocPrefs = new DocPrefs( name ); |
465 | 469 | ||
466 | mItemPopupMenu->insertItem(i18n("Todo View"),mPopupMenu ); | 470 | mItemPopupMenu->insertItem(i18n("Todo View"),mPopupMenu ); |
467 | mPopupMenu->setCheckable( true ); | 471 | mPopupMenu->setCheckable( true ); |
468 | mItemPopupMenu->setCheckable( true ); | 472 | mItemPopupMenu->setCheckable( true ); |
469 | 473 | ||
470 | 474 | ||
471 | mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo ); | 475 | mPopupMenu->setItemChecked( 3,KOPrefs::instance()->mShowCompletedTodo ); |
472 | mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo ); | 476 | mItemPopupMenu->setItemChecked( 33 , KOPrefs::instance()->mShowCompletedTodo ); |
473 | 477 | ||
474 | mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo); | 478 | mPopupMenu->setItemChecked(4,KOPrefs::instance()->mEnableQuickTodo); |
475 | mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo ); | 479 | mItemPopupMenu->setItemChecked( 34 , KOPrefs::instance()->mEnableQuickTodo ); |
476 | 480 | ||
477 | mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos); | 481 | mPopupMenu->setItemChecked(5,KOPrefs::instance()->mHideNonStartedTodos); |
478 | mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos ); | 482 | mItemPopupMenu->setItemChecked( 35 , KOPrefs::instance()->mHideNonStartedTodos ); |
479 | 483 | ||
480 | 484 | ||
481 | // Double clicking conflicts with opening/closing the subtree | 485 | // Double clicking conflicts with opening/closing the subtree |
482 | connect( mTodoListView, SIGNAL( doubleClicked( QListViewItem *) ), | 486 | connect( mTodoListView, SIGNAL( doubleClicked( QListViewItem *) ), |
483 | SLOT( editItem( QListViewItem *) ) ); | 487 | SLOT( editItem( QListViewItem *) ) ); |
484 | /* | 488 | /* |
485 | connect( mTodoListView, SIGNAL( rightButtonClicked ( QListViewItem *, | 489 | connect( mTodoListView, SIGNAL( rightButtonClicked ( QListViewItem *, |
486 | const QPoint &,int ) ), | 490 | const QPoint &,int ) ), |
487 | SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) ); | 491 | SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) ); |
488 | */ | 492 | */ |
489 | connect( mTodoListView, SIGNAL( contextRequest ( QListViewItem *, | 493 | connect( mTodoListView, SIGNAL( contextRequest ( QListViewItem *, |
490 | const QPoint &,int ) ), | 494 | const QPoint &,int ) ), |
491 | SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) ); | 495 | SLOT( popupMenu( QListViewItem *, const QPoint & ,int) ) ); |
492 | connect( mTodoListView, SIGNAL( clicked( QListViewItem * ) ), | 496 | connect( mTodoListView, SIGNAL( clicked( QListViewItem * ) ), |
493 | SLOT( itemClicked( QListViewItem * ) ) ); | 497 | SLOT( itemClicked( QListViewItem * ) ) ); |
494 | connect( mTodoListView, SIGNAL( double_Clicked( QListViewItem * ) ), | 498 | connect( mTodoListView, SIGNAL( double_Clicked( QListViewItem * ) ), |
495 | SLOT( itemDoubleClicked( QListViewItem * ) ) ); | 499 | SLOT( itemDoubleClicked( QListViewItem * ) ) ); |
496 | connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ), | 500 | connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ), |
497 | SLOT( updateView() ) ); | 501 | SLOT( updateView() ) ); |
498 | connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ), | 502 | connect( mTodoListView, SIGNAL( todoDropped( Todo *, int ) ), |
499 | SLOT( todoModified(Todo *, int) ) ); | 503 | SLOT( todoModified(Todo *, int) ) ); |
500 | connect( mTodoListView, SIGNAL( expanded( QListViewItem * ) ), | 504 | connect( mTodoListView, SIGNAL( expanded( QListViewItem * ) ), |
501 | SLOT( itemStateChanged( QListViewItem * ) ) ); | 505 | SLOT( itemStateChanged( QListViewItem * ) ) ); |
502 | connect( mTodoListView, SIGNAL( collapsed( QListViewItem * ) ), | 506 | connect( mTodoListView, SIGNAL( collapsed( QListViewItem * ) ), |
503 | SLOT( itemStateChanged( QListViewItem * ) ) ); | 507 | SLOT( itemStateChanged( QListViewItem * ) ) ); |
508 | connect( mTodoListView, SIGNAL( paintNeeded() ), | ||
509 | SLOT( paintNeeded()) ); | ||
504 | 510 | ||
505 | #if 0 | 511 | #if 0 |
506 | connect(mTodoListView,SIGNAL(selectionChanged(QListViewItem *)), | 512 | connect(mTodoListView,SIGNAL(selectionChanged(QListViewItem *)), |
507 | SLOT(selectionChanged(QListViewItem *))); | 513 | SLOT(selectionChanged(QListViewItem *))); |
508 | connect(mTodoListView,SIGNAL(clicked(QListViewItem *)), | 514 | connect(mTodoListView,SIGNAL(clicked(QListViewItem *)), |
509 | SLOT(selectionChanged(QListViewItem *))); | 515 | SLOT(selectionChanged(QListViewItem *))); |
510 | connect(mTodoListView,SIGNAL(pressed(QListViewItem *)), | 516 | connect(mTodoListView,SIGNAL(pressed(QListViewItem *)), |
511 | SLOT(selectionChanged(QListViewItem *))); | 517 | SLOT(selectionChanged(QListViewItem *))); |
512 | #endif | 518 | #endif |
513 | 519 | ||
514 | connect( mTodoListView, SIGNAL(reparentTodoSignal( Todo *,Todo * ) ), SIGNAL(reparentTodoSignal( Todo *,Todo * ) )); | 520 | connect( mTodoListView, SIGNAL(reparentTodoSignal( Todo *,Todo * ) ), SIGNAL(reparentTodoSignal( Todo *,Todo * ) )); |
515 | connect( mTodoListView, SIGNAL(unparentTodoSignal(Todo *) ), SIGNAL(unparentTodoSignal(Todo *) )); | 521 | connect( mTodoListView, SIGNAL(unparentTodoSignal(Todo *) ), SIGNAL(unparentTodoSignal(Todo *) )); |
516 | connect( mTodoListView, SIGNAL( deleteTodo(Todo *) ), SIGNAL(deleteTodoSignal(Todo *) )); | 522 | connect( mTodoListView, SIGNAL( deleteTodo(Todo *) ), SIGNAL(deleteTodoSignal(Todo *) )); |
517 | 523 | ||
518 | connect( mTodoListView, SIGNAL(selectionChanged() ), | 524 | connect( mTodoListView, SIGNAL(selectionChanged() ), |
519 | SLOT( processSelectionChange() ) ); | 525 | SLOT( processSelectionChange() ) ); |
520 | connect( mQuickAdd, SIGNAL( returnPressed () ), | 526 | connect( mQuickAdd, SIGNAL( returnPressed () ), |
521 | SLOT( addQuickTodo() ) ); | 527 | SLOT( addQuickTodo() ) ); |
522 | 528 | ||
523 | } | 529 | } |
524 | 530 | ||
525 | KOTodoView::~KOTodoView() | 531 | KOTodoView::~KOTodoView() |
526 | { | 532 | { |
527 | delete mDocPrefs; | 533 | delete mDocPrefs; |
528 | } | 534 | } |
529 | 535 | ||
530 | void KOTodoView::jumpToDate () | 536 | void KOTodoView::jumpToDate () |
531 | { | 537 | { |
532 | // if (mActiveItem) { | 538 | // if (mActiveItem) { |
533 | // mActiveItem->todo()); | 539 | // mActiveItem->todo()); |
534 | // if ( mActiveItem->todo()->hasDueDate() ) | 540 | // if ( mActiveItem->todo()->hasDueDate() ) |
535 | // emit mActiveItem->todo()jumpToTime( mTodo->dtDue().date() ); | 541 | // emit mActiveItem->todo()jumpToTime( mTodo->dtDue().date() ); |
536 | } | 542 | } |
543 | void KOTodoView::paintNeeded() | ||
544 | { | ||
545 | if ( mPendingUpdateBeforeRepaint ) { | ||
546 | updateView(); | ||
547 | mPendingUpdateBeforeRepaint = false; | ||
548 | } | ||
549 | } | ||
537 | void KOTodoView::paintEvent(QPaintEvent * pevent) | 550 | void KOTodoView::paintEvent(QPaintEvent * pevent) |
538 | { | 551 | { |
539 | if ( mPendingUpdateBeforeRepaint ) { | 552 | if ( mPendingUpdateBeforeRepaint ) { |
540 | updateView(); | 553 | updateView(); |
541 | mPendingUpdateBeforeRepaint = false; | 554 | mPendingUpdateBeforeRepaint = false; |
542 | } | 555 | } |
543 | KOrg::BaseView::paintEvent( pevent); | 556 | KOrg::BaseView::paintEvent( pevent); |
544 | } | 557 | } |
545 | bool mPendingUpdateBeforeRepaint; | 558 | |
546 | void KOTodoView::updateView() | 559 | void KOTodoView::updateView() |
547 | { | 560 | { |
548 | pendingSubtodo = 0; | 561 | pendingSubtodo = 0; |
549 | if ( mBlockUpdate ) { | 562 | if ( mBlockUpdate ) { |
550 | return; | 563 | return; |
551 | } | 564 | } |
552 | if ( !isVisible() ) { | 565 | if ( !isVisible() ) { |
553 | mPendingUpdateBeforeRepaint = true; | 566 | mPendingUpdateBeforeRepaint = true; |
554 | return; | 567 | return; |
555 | } | 568 | } |
556 | //qDebug("KOTodoView::updateView() %x", this); | 569 | //qDebug("KOTodoView::updateView() %x", this); |
557 | if ( isFlatDisplay ) { | 570 | if ( isFlatDisplay ) { |
558 | setAllFlat(); | 571 | setAllFlat(); |
559 | return; | 572 | return; |
560 | } | 573 | } |
561 | //qDebug("update "); | 574 | //qDebug("update "); |
562 | // kdDebug() << "KOTodoView::updateView()" << endl; | 575 | // kdDebug() << "KOTodoView::updateView()" << endl; |
563 | QFont fo = KOPrefs::instance()->mTodoViewFont; | 576 | QFont fo = KOPrefs::instance()->mTodoViewFont; |
564 | mTodoListView->clear(); | 577 | mTodoListView->clear(); |
565 | if ( mName == "todolistsmall" ) { | 578 | if ( mName == "todolistsmall" ) { |
566 | if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) { | 579 | if ( KOPrefs::instance()->mTodoViewUsesSmallFont ) { |
567 | int ps = fo.pointSize() -2; | 580 | int ps = fo.pointSize() -2; |
568 | if ( ps > 12 ) | 581 | if ( ps > 12 ) |
569 | ps -= 2; | 582 | ps -= 2; |
570 | fo.setPointSize( ps ); | 583 | fo.setPointSize( ps ); |
571 | } | 584 | } |
572 | } | 585 | } |
573 | 586 | ||
574 | mTodoListView->setFont( fo ); | 587 | mTodoListView->setFont( fo ); |
575 | // QFontMetrics fm ( KOPrefs::instance()->mTodoViewFont ); | 588 | // QFontMetrics fm ( KOPrefs::instance()->mTodoViewFont ); |
576 | //mTodoListView->header()->setMaximumHeight(fm.height()); | 589 | //mTodoListView->header()->setMaximumHeight(fm.height()); |
577 | QPtrList<Todo> todoList = calendar()->todos(); | 590 | QPtrList<Todo> todoList = calendar()->todos(); |
578 | 591 | ||
579 | /* | 592 | /* |
580 | kdDebug() << "KOTodoView::updateView(): Todo List:" << endl; | 593 | kdDebug() << "KOTodoView::updateView(): Todo List:" << endl; |
581 | Event *t; | 594 | Event *t; |
582 | for(t = todoList.first(); t; t = todoList.next()) { | 595 | for(t = todoList.first(); t; t = todoList.next()) { |
583 | kdDebug() << " " << t->getSummary() << endl; | 596 | kdDebug() << " " << t->getSummary() << endl; |
584 | 597 | ||
585 | if (t->getRelatedTo()) { | 598 | if (t->getRelatedTo()) { |
586 | kdDebug() << " (related to " << t->getRelatedTo()->getSummary() << ")" << endl; | 599 | kdDebug() << " (related to " << t->getRelatedTo()->getSummary() << ")" << endl; |
587 | } | 600 | } |
588 | 601 | ||
589 | QPtrList<Event> l = t->getRelations(); | 602 | QPtrList<Event> l = t->getRelations(); |
590 | Event *c; | 603 | Event *c; |
591 | for(c=l.first();c;c=l.next()) { | 604 | for(c=l.first();c;c=l.next()) { |
592 | kdDebug() << " - relation: " << c->getSummary() << endl; | 605 | kdDebug() << " - relation: " << c->getSummary() << endl; |
593 | } | 606 | } |
diff --git a/korganizer/kotodoview.h b/korganizer/kotodoview.h index 16bc133..2a9e737 100644 --- a/korganizer/kotodoview.h +++ b/korganizer/kotodoview.h | |||
@@ -15,113 +15,115 @@ | |||
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 | #ifndef KOTODOVIEW_H | 23 | #ifndef KOTODOVIEW_H |
24 | #define KOTODOVIEW_H | 24 | #define KOTODOVIEW_H |
25 | 25 | ||
26 | #include <qfont.h> | 26 | #include <qfont.h> |
27 | #include <qfontmetrics.h> | 27 | #include <qfontmetrics.h> |
28 | #include <qlineedit.h> | 28 | #include <qlineedit.h> |
29 | #include <qptrlist.h> | 29 | #include <qptrlist.h> |
30 | #include <qstrlist.h> | 30 | #include <qstrlist.h> |
31 | #include <qlistbox.h> | 31 | #include <qlistbox.h> |
32 | #include <qpopupmenu.h> | 32 | #include <qpopupmenu.h> |
33 | #include <qlabel.h> | 33 | #include <qlabel.h> |
34 | #include <qmap.h> | 34 | #include <qmap.h> |
35 | #include <qlistview.h> | 35 | #include <qlistview.h> |
36 | #include <klistview.h> | 36 | #include <klistview.h> |
37 | 37 | ||
38 | #include <libkcal/calendar.h> | 38 | #include <libkcal/calendar.h> |
39 | #include <libkcal/todo.h> | 39 | #include <libkcal/todo.h> |
40 | 40 | ||
41 | #include <korganizer/baseview.h> | 41 | #include <korganizer/baseview.h> |
42 | 42 | ||
43 | #include "kotodoviewitem.h" | 43 | #include "kotodoviewitem.h" |
44 | #include "koprefs.h" | 44 | #include "koprefs.h" |
45 | #include "koglobals.h" | 45 | #include "koglobals.h" |
46 | #include "datenavigator.h" | 46 | #include "datenavigator.h" |
47 | 47 | ||
48 | class QDragEnterEvent; | 48 | class QDragEnterEvent; |
49 | class QDragMoveEvent; | 49 | class QDragMoveEvent; |
50 | class QDragLeaveEvent; | 50 | class QDragLeaveEvent; |
51 | class QDropEvent; | 51 | class QDropEvent; |
52 | 52 | ||
53 | class DocPrefs; | 53 | class DocPrefs; |
54 | 54 | ||
55 | class KOTodoListView : public KListView | 55 | class KOTodoListView : public KListView |
56 | { | 56 | { |
57 | Q_OBJECT | 57 | Q_OBJECT |
58 | public: | 58 | public: |
59 | KOTodoListView(Calendar *,QWidget *parent=0,const char *name=0); | 59 | KOTodoListView(Calendar *,QWidget *parent=0,const char *name=0); |
60 | virtual ~KOTodoListView() {} | 60 | virtual ~KOTodoListView() {} |
61 | 61 | ||
62 | signals: | 62 | signals: |
63 | void paintNeeded(); | ||
63 | void todoDropped(Todo *, int); | 64 | void todoDropped(Todo *, int); |
64 | void double_Clicked(QListViewItem *item); | 65 | void double_Clicked(QListViewItem *item); |
65 | void reparentTodoSignal( Todo *,Todo * ); | 66 | void reparentTodoSignal( Todo *,Todo * ); |
66 | void unparentTodoSignal(Todo *); | 67 | void unparentTodoSignal(Todo *); |
67 | void deleteTodo( Todo * ); | 68 | void deleteTodo( Todo * ); |
68 | protected: | 69 | protected: |
69 | void contentsDragEnterEvent(QDragEnterEvent *); | 70 | void contentsDragEnterEvent(QDragEnterEvent *); |
70 | void contentsDragMoveEvent(QDragMoveEvent *); | 71 | void contentsDragMoveEvent(QDragMoveEvent *); |
71 | void contentsDragLeaveEvent(QDragLeaveEvent *); | 72 | void contentsDragLeaveEvent(QDragLeaveEvent *); |
72 | void contentsDropEvent(QDropEvent *); | 73 | void contentsDropEvent(QDropEvent *); |
73 | 74 | ||
74 | void contentsMousePressEvent(QMouseEvent *); | 75 | void contentsMousePressEvent(QMouseEvent *); |
75 | void contentsMouseMoveEvent(QMouseEvent *); | 76 | void contentsMouseMoveEvent(QMouseEvent *); |
76 | void contentsMouseReleaseEvent(QMouseEvent *); | 77 | void contentsMouseReleaseEvent(QMouseEvent *); |
77 | void contentsMouseDoubleClickEvent(QMouseEvent *); | 78 | void contentsMouseDoubleClickEvent(QMouseEvent *); |
78 | 79 | ||
79 | private: | 80 | private: |
81 | void paintEvent(QPaintEvent * pevent); | ||
80 | bool internalDrop; | 82 | bool internalDrop; |
81 | QString mName; | 83 | QString mName; |
82 | Calendar *mCalendar; | 84 | Calendar *mCalendar; |
83 | QPoint mPressPos; | 85 | QPoint mPressPos; |
84 | bool mMousePressed; | 86 | bool mMousePressed; |
85 | QListViewItem *mOldCurrent; | 87 | QListViewItem *mOldCurrent; |
86 | void keyPressEvent ( QKeyEvent * ) ; | 88 | void keyPressEvent ( QKeyEvent * ) ; |
87 | }; | 89 | }; |
88 | 90 | ||
89 | 91 | ||
90 | /** | 92 | /** |
91 | This is the line-edit on top of the todoview for fast addition of new todos | 93 | This is the line-edit on top of the todoview for fast addition of new todos |
92 | */ | 94 | */ |
93 | class KOQuickTodo : public QLineEdit | 95 | class KOQuickTodo : public QLineEdit |
94 | { | 96 | { |
95 | public: | 97 | public: |
96 | KOQuickTodo(QWidget *parent=0); | 98 | KOQuickTodo(QWidget *parent=0); |
97 | protected: | 99 | protected: |
98 | void focusInEvent(QFocusEvent *ev); | 100 | void focusInEvent(QFocusEvent *ev); |
99 | void focusOutEvent(QFocusEvent *ev); | 101 | void focusOutEvent(QFocusEvent *ev); |
100 | }; | 102 | }; |
101 | 103 | ||
102 | 104 | ||
103 | /** | 105 | /** |
104 | This class provides a multi-column list view of todo events. | 106 | This class provides a multi-column list view of todo events. |
105 | 107 | ||
106 | @short multi-column list view of todo events. | 108 | @short multi-column list view of todo events. |
107 | @author Cornelius Schumacher <schumacher@kde.org> | 109 | @author Cornelius Schumacher <schumacher@kde.org> |
108 | */ | 110 | */ |
109 | class KOTodoView : public KOrg::BaseView | 111 | class KOTodoView : public KOrg::BaseView |
110 | { | 112 | { |
111 | Q_OBJECT | 113 | Q_OBJECT |
112 | public: | 114 | public: |
113 | KOTodoView(Calendar *, QWidget* parent=0, const char* name=0 ); | 115 | KOTodoView(Calendar *, QWidget* parent=0, const char* name=0 ); |
114 | ~KOTodoView(); | 116 | ~KOTodoView(); |
115 | 117 | ||
116 | QPtrList<Incidence> selectedIncidences(); | 118 | QPtrList<Incidence> selectedIncidences(); |
117 | QPtrList<Todo> selectedTodos(); | 119 | QPtrList<Todo> selectedTodos(); |
118 | 120 | ||
119 | DateList selectedDates() | 121 | DateList selectedDates() |
120 | {DateList q; | 122 | {DateList q; |
121 | return q;} | 123 | return q;} |
122 | 124 | ||
123 | /** Return number of shown dates. TodoView does not show dates, */ | 125 | /** Return number of shown dates. TodoView does not show dates, */ |
124 | int currentDateCount() { return 0; } | 126 | int currentDateCount() { return 0; } |
125 | 127 | ||
126 | void printPreview(CalPrinter *calPrinter, const QDate &fd, const QDate &td); | 128 | void printPreview(CalPrinter *calPrinter, const QDate &fd, const QDate &td); |
127 | 129 | ||
@@ -153,97 +155,99 @@ class KOTodoView : public KOrg::BaseView | |||
153 | void unparentTodo(); | 155 | void unparentTodo(); |
154 | void reparentTodo(); | 156 | void reparentTodo(); |
155 | void showTodo(); | 157 | void showTodo(); |
156 | void editTodo(); | 158 | void editTodo(); |
157 | void cloneTodo(); | 159 | void cloneTodo(); |
158 | void cancelTodo(); | 160 | void cancelTodo(); |
159 | void moveTodo(); | 161 | void moveTodo(); |
160 | void beamTodo(); | 162 | void beamTodo(); |
161 | void deleteTodo(); | 163 | void deleteTodo(); |
162 | 164 | ||
163 | void setNewPriority(int); | 165 | void setNewPriority(int); |
164 | void setNewPercentage(int); | 166 | void setNewPercentage(int); |
165 | void changedCategories(int); | 167 | void changedCategories(int); |
166 | 168 | ||
167 | void setAllOpen(); | 169 | void setAllOpen(); |
168 | void setAllClose(); | 170 | void setAllClose(); |
169 | void setAllFlat(); | 171 | void setAllFlat(); |
170 | 172 | ||
171 | void purgeCompleted(); | 173 | void purgeCompleted(); |
172 | void toggleCompleted(); | 174 | void toggleCompleted(); |
173 | void toggleRunning(); | 175 | void toggleRunning(); |
174 | void toggleQuickTodo(); | 176 | void toggleQuickTodo(); |
175 | void updateTodo( Todo *, int ); | 177 | void updateTodo( Todo *, int ); |
176 | 178 | ||
177 | void itemClicked(QListViewItem *); | 179 | void itemClicked(QListViewItem *); |
178 | void itemStateChanged(QListViewItem *); | 180 | void itemStateChanged(QListViewItem *); |
179 | void modified(bool); | 181 | void modified(bool); |
180 | void itemDoubleClicked(QListViewItem *item); | 182 | void itemDoubleClicked(QListViewItem *item); |
181 | 183 | ||
182 | signals: | 184 | signals: |
183 | void newTodoSignal(); | 185 | void newTodoSignal(); |
184 | void newSubTodoSignal(Todo *); | 186 | void newSubTodoSignal(Todo *); |
185 | void unparentTodoSignal(Todo *); | 187 | void unparentTodoSignal(Todo *); |
186 | void reparentTodoSignal( Todo *,Todo * ); | 188 | void reparentTodoSignal( Todo *,Todo * ); |
187 | void showTodoSignal(Todo *); | 189 | void showTodoSignal(Todo *); |
188 | 190 | ||
189 | void editTodoSignal(Todo *); | 191 | void editTodoSignal(Todo *); |
190 | void deleteTodoSignal(Todo *); | 192 | void deleteTodoSignal(Todo *); |
191 | void todoModifiedSignal (Todo *, int); | 193 | void todoModifiedSignal (Todo *, int); |
192 | 194 | ||
193 | void isModified(bool); | 195 | void isModified(bool); |
194 | void cloneTodoSignal( Incidence * ); | 196 | void cloneTodoSignal( Incidence * ); |
195 | void cancelTodoSignal( Incidence * ); | 197 | void cancelTodoSignal( Incidence * ); |
196 | void moveTodoSignal( Incidence * ); | 198 | void moveTodoSignal( Incidence * ); |
197 | void beamTodoSignal( Incidence * ); | 199 | void beamTodoSignal( Incidence * ); |
198 | void purgeCompletedSignal(); | 200 | void purgeCompletedSignal(); |
199 | 201 | ||
200 | protected slots: | 202 | protected slots: |
203 | void paintNeeded(); | ||
201 | void processSelectionChange(); | 204 | void processSelectionChange(); |
202 | void addQuickTodo(); | 205 | void addQuickTodo(); |
203 | void setTodoModified( Todo* ); | 206 | void setTodoModified( Todo* ); |
204 | void todoModified(Todo *, int ); | 207 | void todoModified(Todo *, int ); |
205 | 208 | ||
206 | private: | 209 | private: |
207 | /* | 210 | /* |
208 | * the TodoEditor approach is rather unscaling in the long | 211 | * the TodoEditor approach is rather unscaling in the long |
209 | * run. | 212 | * run. |
210 | * Korganizer keeps it in memory and we need to update | 213 | * Korganizer keeps it in memory and we need to update |
211 | * 1. make KOTodoViewItem a QObject again? | 214 | * 1. make KOTodoViewItem a QObject again? |
212 | * 2. add a public method for setting one todo modified? | 215 | * 2. add a public method for setting one todo modified? |
213 | * 3. add a private method for setting a todo modified + friend here? | 216 | * 3. add a private method for setting a todo modified + friend here? |
214 | * -- zecke 2002-07-08 | 217 | * -- zecke 2002-07-08 |
215 | */ | 218 | */ |
219 | friend class KOTodoListView; | ||
216 | void paintEvent(QPaintEvent * pevent); | 220 | void paintEvent(QPaintEvent * pevent); |
217 | bool mPendingUpdateBeforeRepaint; | 221 | bool mPendingUpdateBeforeRepaint; |
218 | friend class KOTodoViewItem; | 222 | friend class KOTodoViewItem; |
219 | QMap<Todo *,KOTodoViewItem *>::ConstIterator insertTodoItem(Todo *todo); | 223 | QMap<Todo *,KOTodoViewItem *>::ConstIterator insertTodoItem(Todo *todo); |
220 | void restoreItemState( QListViewItem * ); | 224 | void restoreItemState( QListViewItem * ); |
221 | 225 | ||
222 | bool checkTodo( Todo * ); | 226 | bool checkTodo( Todo * ); |
223 | bool isFlatDisplay; | 227 | bool isFlatDisplay; |
224 | void setOpen( QListViewItem*, bool setOpen); | 228 | void setOpen( QListViewItem*, bool setOpen); |
225 | KOTodoListView *mTodoListView; | 229 | KOTodoListView *mTodoListView; |
226 | QPopupMenu *mItemPopupMenu; | 230 | QPopupMenu *mItemPopupMenu; |
227 | QPopupMenu *mPopupMenu; | 231 | QPopupMenu *mPopupMenu; |
228 | QPopupMenu *mPriorityPopupMenu; | 232 | QPopupMenu *mPriorityPopupMenu; |
229 | QPopupMenu *mPercentageCompletedPopupMenu; | 233 | QPopupMenu *mPercentageCompletedPopupMenu; |
230 | QPopupMenu *mCategoryPopupMenu; | 234 | QPopupMenu *mCategoryPopupMenu; |
231 | 235 | ||
232 | QMap<int, int> mPercentage; | 236 | QMap<int, int> mPercentage; |
233 | QMap<int, int> mPriority; | 237 | QMap<int, int> mPriority; |
234 | QMap<int, QString> mCategory; | 238 | QMap<int, QString> mCategory; |
235 | KOTodoViewItem *mActiveItem; | 239 | KOTodoViewItem *mActiveItem; |
236 | 240 | ||
237 | QMap<Todo *,KOTodoViewItem *> mTodoMap; | 241 | QMap<Todo *,KOTodoViewItem *> mTodoMap; |
238 | QString mName; | 242 | QString mName; |
239 | 243 | ||
240 | DocPrefs *mDocPrefs; | 244 | DocPrefs *mDocPrefs; |
241 | QString mCurrentDoc; | 245 | QString mCurrentDoc; |
242 | KOQuickTodo *mQuickAdd; | 246 | KOQuickTodo *mQuickAdd; |
243 | bool mBlockUpdate; | 247 | bool mBlockUpdate; |
244 | void keyPressEvent ( QKeyEvent * ) ; | 248 | void keyPressEvent ( QKeyEvent * ) ; |
245 | KOTodoViewItem * pendingSubtodo; | 249 | KOTodoViewItem * pendingSubtodo; |
246 | DateNavigator* mNavigator; | 250 | DateNavigator* mNavigator; |
247 | }; | 251 | }; |
248 | 252 | ||
249 | #endif | 253 | #endif |
diff --git a/korganizer/koviewmanager.cpp b/korganizer/koviewmanager.cpp index 30f5fb1..188ad23 100644 --- a/korganizer/koviewmanager.cpp +++ b/korganizer/koviewmanager.cpp | |||
@@ -559,96 +559,97 @@ void KOViewManager::showTodoView() | |||
559 | mMainView, SLOT( deleteTodo( Todo * ) ) ); | 559 | mMainView, SLOT( deleteTodo( Todo * ) ) ); |
560 | connect( mTodoView, SIGNAL( purgeCompletedSignal() ), | 560 | connect( mTodoView, SIGNAL( purgeCompletedSignal() ), |
561 | mMainView, SLOT( purgeCompleted() ) ); | 561 | mMainView, SLOT( purgeCompleted() ) ); |
562 | 562 | ||
563 | connect( mTodoView, SIGNAL( incidenceSelected( Incidence * ) ), | 563 | connect( mTodoView, SIGNAL( incidenceSelected( Incidence * ) ), |
564 | mMainView, SLOT( processMainViewSelection( Incidence * ) ) ); | 564 | mMainView, SLOT( processMainViewSelection( Incidence * ) ) ); |
565 | 565 | ||
566 | connect( mMainView, SIGNAL( configChanged() ), mTodoView, | 566 | connect( mMainView, SIGNAL( configChanged() ), mTodoView, |
567 | SLOT( updateConfig() ) ); | 567 | SLOT( updateConfig() ) ); |
568 | connect( mMainView, SIGNAL( todoModified( Todo *, int )), mTodoView, | 568 | connect( mMainView, SIGNAL( todoModified( Todo *, int )), mTodoView, |
569 | SLOT( updateTodo( Todo *, int ) ) ); | 569 | SLOT( updateTodo( Todo *, int ) ) ); |
570 | connect( mTodoView, SIGNAL( todoModifiedSignal( Todo *, int ) ), | 570 | connect( mTodoView, SIGNAL( todoModifiedSignal( Todo *, int ) ), |
571 | mMainView, SIGNAL ( todoModified( Todo *, int ) ) ); | 571 | mMainView, SIGNAL ( todoModified( Todo *, int ) ) ); |
572 | connect( mTodoView, SIGNAL( cloneTodoSignal( Incidence * ) ), | 572 | connect( mTodoView, SIGNAL( cloneTodoSignal( Incidence * ) ), |
573 | mMainView, SLOT ( cloneIncidence( Incidence * ) ) ); | 573 | mMainView, SLOT ( cloneIncidence( Incidence * ) ) ); |
574 | connect( mTodoView, SIGNAL( cancelTodoSignal( Incidence * ) ), | 574 | connect( mTodoView, SIGNAL( cancelTodoSignal( Incidence * ) ), |
575 | mMainView, SLOT ( cancelIncidence( Incidence * ) ) ); | 575 | mMainView, SLOT ( cancelIncidence( Incidence * ) ) ); |
576 | connect( mTodoView, SIGNAL( unparentTodoSignal( Todo * ) ), | 576 | connect( mTodoView, SIGNAL( unparentTodoSignal( Todo * ) ), |
577 | mMainView, SLOT ( todo_unsub( Todo * ) ) ); | 577 | mMainView, SLOT ( todo_unsub( Todo * ) ) ); |
578 | connect( mTodoView, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ), | 578 | connect( mTodoView, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ), |
579 | mMainView, SLOT ( todo_resub( Todo *, Todo *) ) ); | 579 | mMainView, SLOT ( todo_resub( Todo *, Todo *) ) ); |
580 | connect( mTodoView, SIGNAL( moveTodoSignal( Incidence * ) ), | 580 | connect( mTodoView, SIGNAL( moveTodoSignal( Incidence * ) ), |
581 | mMainView, SLOT ( moveIncidence( Incidence * ) ) ); | 581 | mMainView, SLOT ( moveIncidence( Incidence * ) ) ); |
582 | connect( mTodoView, SIGNAL( beamTodoSignal( Incidence * ) ), | 582 | connect( mTodoView, SIGNAL( beamTodoSignal( Incidence * ) ), |
583 | mMainView, SLOT ( beamIncidence( Incidence * ) ) ); | 583 | mMainView, SLOT ( beamIncidence( Incidence * ) ) ); |
584 | KConfig *config = KOGlobals::config(); | 584 | KConfig *config = KOGlobals::config(); |
585 | mTodoView->restoreLayout(config,"Todo View"); | 585 | mTodoView->restoreLayout(config,"Todo View"); |
586 | mTodoView->setNavigator( mMainView->dateNavigator() ); | 586 | mTodoView->setNavigator( mMainView->dateNavigator() ); |
587 | } | 587 | } |
588 | 588 | ||
589 | globalFlagBlockAgenda = 1; | 589 | globalFlagBlockAgenda = 1; |
590 | showView( mTodoView, true ); | 590 | showView( mTodoView, true ); |
591 | 591 | ||
592 | } | 592 | } |
593 | 593 | ||
594 | void KOViewManager::showJournalView() | 594 | void KOViewManager::showJournalView() |
595 | { | 595 | { |
596 | //mFlagShowNextxDays = false; | 596 | //mFlagShowNextxDays = false; |
597 | if (!mJournalView) { | 597 | if (!mJournalView) { |
598 | mJournalView = new KOJournalView(mMainView->calendar(),mMainView->viewStack(), | 598 | mJournalView = new KOJournalView(mMainView->calendar(),mMainView->viewStack(), |
599 | "KOViewManager::JournalView"); | 599 | "KOViewManager::JournalView"); |
600 | connect( mMainView, SIGNAL( configChanged() ), mJournalView, | 600 | connect( mMainView, SIGNAL( configChanged() ), mJournalView, |
601 | SLOT( updateConfig() ) ); | 601 | SLOT( updateConfig() ) ); |
602 | connect(mJournalView, SIGNAL(deleteJournal(Journal *) ), mMainView,SLOT(deleteJournal(Journal *)) ); | 602 | connect(mJournalView, SIGNAL(deleteJournal(Journal *) ), mMainView,SLOT(deleteJournal(Journal *)) ); |
603 | addView(mJournalView); | 603 | addView(mJournalView); |
604 | } | 604 | } |
605 | 605 | ||
606 | showView(mJournalView); | 606 | showView(mJournalView); |
607 | mMainView->dateNavigator()->selectDates( 1 ); | ||
607 | } | 608 | } |
608 | 609 | ||
609 | void KOViewManager::showTimeSpanView() | 610 | void KOViewManager::showTimeSpanView() |
610 | { | 611 | { |
611 | //mFlagShowNextxDays = false; | 612 | //mFlagShowNextxDays = false; |
612 | if (!mTimeSpanView) { | 613 | if (!mTimeSpanView) { |
613 | mTimeSpanView = new KOTimeSpanView(mMainView->calendar(),mMainView->viewStack(), | 614 | mTimeSpanView = new KOTimeSpanView(mMainView->calendar(),mMainView->viewStack(), |
614 | "KOViewManager::TimeSpanView"); | 615 | "KOViewManager::TimeSpanView"); |
615 | addView(mTimeSpanView); | 616 | addView(mTimeSpanView); |
616 | 617 | ||
617 | mTimeSpanView->readSettings(); | 618 | mTimeSpanView->readSettings(); |
618 | } | 619 | } |
619 | 620 | ||
620 | showView(mTimeSpanView); | 621 | showView(mTimeSpanView); |
621 | } | 622 | } |
622 | 623 | ||
623 | Incidence *KOViewManager::currentSelection() | 624 | Incidence *KOViewManager::currentSelection() |
624 | { | 625 | { |
625 | if (!mCurrentView) return 0; | 626 | if (!mCurrentView) return 0; |
626 | if ( mCurrentView == mListView ) { | 627 | if ( mCurrentView == mListView ) { |
627 | if ( mListView->currentItem() ) | 628 | if ( mListView->currentItem() ) |
628 | return mListView->currentItem(); | 629 | return mListView->currentItem(); |
629 | } | 630 | } |
630 | return mCurrentView->selectedIncidences().first(); | 631 | return mCurrentView->selectedIncidences().first(); |
631 | } | 632 | } |
632 | 633 | ||
633 | QDate KOViewManager::currentSelectionDate() | 634 | QDate KOViewManager::currentSelectionDate() |
634 | { | 635 | { |
635 | QDate qd; | 636 | QDate qd; |
636 | if (mCurrentView) { | 637 | if (mCurrentView) { |
637 | DateList qvl = mCurrentView->selectedDates(); | 638 | DateList qvl = mCurrentView->selectedDates(); |
638 | if (!qvl.isEmpty()) qd = qvl.first(); | 639 | if (!qvl.isEmpty()) qd = qvl.first(); |
639 | } | 640 | } |
640 | return qd; | 641 | return qd; |
641 | } | 642 | } |
642 | 643 | ||
643 | void KOViewManager::addView(KOrg::BaseView *view) | 644 | void KOViewManager::addView(KOrg::BaseView *view) |
644 | { | 645 | { |
645 | #if QT_VERSION >= 0x030000 | 646 | #if QT_VERSION >= 0x030000 |
646 | mMainView->viewStack()->addWidget( view ); | 647 | mMainView->viewStack()->addWidget( view ); |
647 | #else | 648 | #else |
648 | mMainView->viewStack()->addWidget( view, 1 ); | 649 | mMainView->viewStack()->addWidget( view, 1 ); |
649 | #endif | 650 | #endif |
650 | } | 651 | } |
651 | 652 | ||
652 | void KOViewManager::setDocumentId( const QString &id ) | 653 | void KOViewManager::setDocumentId( const QString &id ) |
653 | { | 654 | { |
654 | if (mTodoView) mTodoView->setDocumentId( id ); | 655 | if (mTodoView) mTodoView->setDocumentId( id ); |