summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt7
-rw-r--r--korganizer/kodaymatrix.cpp170
-rw-r--r--korganizer/kodaymatrix.h2
-rw-r--r--korganizer/komonthview.cpp6
-rw-r--r--korganizer/kotodoview.cpp17
-rw-r--r--korganizer/kotodoview.h4
-rw-r--r--korganizer/koviewmanager.cpp1
7 files changed, 116 insertions, 91 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 178f92d..2858d9c 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,42 +1,49 @@
1Info about the changes in new versions of KDE-Pim/Pi 1Info about the changes in new versions of KDE-Pim/Pi
2 2
3 3
4********** VERSION 2.0.1 ************ 4********** VERSION 2.0.1 ************
5 5
6Oooops ... I forgot to test on the Zaurus 5500 ... 6Oooops ... I forgot to test on the Zaurus 5500 ...
7 7
8Fixed many problems of new (english) strings (and german translations) 8Fixed many problems of new (english) strings (and german translations)
9introduced in the latest versions, where the text was not fitting on the 9introduced in the latest versions, where the text was not fitting on the
10240x320 display of the Zaurus 5500. 10240x320 display of the Zaurus 5500.
11 11
12KO/Pi:
12Added a popup menu ( press pen and hold to get popup ) to the agenda view 13Added a popup menu ( press pen and hold to get popup ) to the agenda view
13with many useful items (add event/todo, show next week, two weeks, month, journal). 14with many useful items (add event/todo, show next week, two weeks, month, journal).
14 15
15Added items to the todolist popup menu for: 16Added items to the todolist popup menu for:
16Display all opened, all closed or all todos flat. 17Display all opened, all closed or all todos flat.
17The "flat" view makes is possible to sort all todos after ,e.g., prio or date. 18The "flat" view makes is possible to sort all todos after ,e.g., prio or date.
18Made the reparenting of todos on the desktop possible via Drag&Drop. 19Made the reparenting of todos on the desktop possible via Drag&Drop.
19Fixed several bugs in setting the completed datetime for todos. 20Fixed several bugs in setting the completed datetime for todos.
20Added info about completed datetime of todos to the todo viewer. 21Added info about completed datetime of todos to the todo viewer.
21Now displaying a completed todo (with completed datetime set) in the agenda view 22Now displaying a completed todo (with completed datetime set) in the agenda view
22at the time of the completion. Such that now it is possible to see in the agenda view 23at the time of the completion. Such that now it is possible to see in the agenda view
23when what todo was completed. 24when what todo was completed.
24Fixed behaviour of automatic setting completion of todos with sub-todos/parent todos. 25Fixed behaviour of automatic setting completion of todos with sub-todos/parent todos.
25Now the behaviour is: 26Now the behaviour is:
26Setting a parent to complete sets all (sub)childs to complete. 27Setting a parent to complete sets all (sub)childs to complete.
27Setting a parent to uncomplete does not change the childs. 28Setting a parent to uncomplete does not change the childs.
28Setting a child to uncomplete sets all parent to uncomplete. 29Setting a child to uncomplete sets all parent to uncomplete.
29Setting a child to complete does not change the parents. 30Setting a child to complete does not change the parents.
30 31
32Smart updating and double buffering of the daymatrix.
33Showing holidays in the day matrix.
34Many other small performance updates.
35
36Made day labels in agenda clickable. By clicking a label, the day is displayed in single day mode.
37
31Now the translation file usertranslation.txt is supposed to be in utf8 format. 38Now the translation file usertranslation.txt is supposed to be in utf8 format.
32If you want to translate a language from western europe, just change the germantranslation.txt file. Please read the updated Usertranslation HowTo in KO/Pi Help menu. 39If you want to translate a language from western europe, just change the germantranslation.txt file. Please read the updated Usertranslation HowTo in KO/Pi Help menu.
33 40
34 41
35********** VERSION 2.0.0 ************ 42********** VERSION 2.0.0 ************
36 43
37Stable release 2.0.0! 44Stable release 2.0.0!
38 45
39KO/Pi: 46KO/Pi:
40Fixed problem in edit dialog recreation at startup. 47Fixed problem in edit dialog recreation at startup.
41Made "toggle view*" menu items enabled context sensitive. 48Made "toggle view*" menu items enabled context sensitive.
42Changed agenda size menu to items 1-10. 49Changed agenda size menu to items 1-10.
diff --git a/korganizer/kodaymatrix.cpp b/korganizer/kodaymatrix.cpp
index ca896b5..549ef2a 100644
--- a/korganizer/kodaymatrix.cpp
+++ b/korganizer/kodaymatrix.cpp
@@ -203,68 +203,61 @@ void KODayMatrix::recalculateToday()
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
209void KODayMatrix::updateView() 209void KODayMatrix::updateView()
210{ 210{
211 updateView(startdate); 211 updateView(startdate);
212} 212}
213void KODayMatrix::repaintViewTimed() 213void KODayMatrix::repaintViewTimed()
214{ 214{
215 qDebug("KODayMatrix::repaintViewTimed ");
216 mRepaintTimer->stop(); 215 mRepaintTimer->stop();
217 repaint(false); 216 repaint(false);
218} 217}
219void KODayMatrix::updateViewTimed() 218void 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}
259void KODayMatrix::updateView(QDate actdate) 252void 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
@@ -279,25 +272,25 @@ void KODayMatrix::updateView(QDate actdate)
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}
@@ -478,30 +471,34 @@ void KODayMatrix::dropEvent(QDropEvent *e)
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
488void KODayMatrix::paintEvent(QPaintEvent * pevent) 481void KODayMatrix::paintEvent(QPaintEvent * pevent)
489{ 482{
490//kdDebug() << "KODayMatrix::paintEvent() BEGIN" << endl; 483 if ( width() <= 0 || height() <= 0 )
491 if ( mPendingUpdateBeforeRepaint ) { 484 return;
492 updateViewTimed(); 485 if ( mPendingUpdateBeforeRepaint ) {
493 mPendingUpdateBeforeRepaint = false; 486 updateViewTimed();
487 mPendingUpdateBeforeRepaint = false;
488 }
489 if ( myPix.width() != width() || myPix.height()!=height() ) {
490 myPix.resize(size() );
494 } 491 }
495 QPainter p(this); 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);
@@ -529,102 +526,103 @@ void KODayMatrix::paintEvent(QPaintEvent * pevent)
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
544 // if it is the first day of a month switch color from normal to shaded and vice versa 541 // if it is the first day of a month switch color from normal to shaded and vice versa
545 if ( KOGlobals::self()->calendarSystem()->day( days[i] ) == 1) { 542 if ( KOGlobals::self()->calendarSystem()->day( days[i] ) == 1) {
546 if (actcol == mDefaultTextColorShaded) { 543 if (actcol == mDefaultTextColorShaded) {
547 actcol = mDefaultTextColor; 544 actcol = mDefaultTextColor;
548 } else { 545 } else {
549 actcol = mDefaultTextColorShaded; 546 actcol = mDefaultTextColorShaded;
547 }
548 p.setPen(actcol);
550 } 549 }
551 p.setPen(actcol);
552 }
553 550
554 //Reset pen color after selected days block 551 //Reset pen color after selected days block
555 if (i == mSelEnd+1) { 552 if (i == mSelEnd+1) {
556 p.setPen(actcol); 553 p.setPen(actcol);
557 } 554 }
555
556 // if today then draw rectangle around day
557 if (today == i) {
558 tmppen = p.pen();
559 QPen mTodayPen(p.pen());
560
561 mTodayPen.setWidth(mTodayMarginWidth);
562 //draw red rectangle for holidays
563 if (!mHolidays[i].isNull()) {
564 if (actcol == mDefaultTextColor) {
565 mTodayPen.setColor(KOPrefs::instance()->mHolidayColor);
566 } else {
567 mTodayPen.setColor(mHolidayColorShaded);
568 }
569 }
570 //draw gray rectangle for today if in selection
571 if (i >= mSelStart && i <= mSelEnd) {
572 QColor grey("grey");
573 mTodayPen.setColor(grey);
574 }
575 p.setPen(mTodayPen);
576 p.drawRect(col*dwidth, row*dheight, dwidth, dheight);
577 p.setPen(tmppen);
578 }
558 579
559 // if today then draw rectangle around day 580 // if any events are on that day then draw it using a bold font
560 if (today == i) { 581 if (events[i] > 0) {
561 tmppen = p.pen(); 582 QFont myFont = font();
562 QPen mTodayPen(p.pen()); 583 myFont.setBold(true);
584 p.setFont(myFont);
585 }
563 586
564 mTodayPen.setWidth(mTodayMarginWidth); 587 // if it is a holiday then use the default holiday color
565 //draw red rectangle for holidays
566 if (!mHolidays[i].isNull()) { 588 if (!mHolidays[i].isNull()) {
567 if (actcol == mDefaultTextColor) { 589 if (actcol == mDefaultTextColor) {
568 mTodayPen.setColor(KOPrefs::instance()->mHolidayColor); 590 p.setPen(KOPrefs::instance()->mHolidayColor);
569 } else { 591 } else {
570 mTodayPen.setColor(mHolidayColorShaded); 592 p.setPen(mHolidayColorShaded);
571 } 593 }
572 } 594 }
573 //draw gray rectangle for today if in selection 595
596 // draw selected days with special color
597 // DO NOT specially highlight holidays in selection !
574 if (i >= mSelStart && i <= mSelEnd) { 598 if (i >= mSelStart && i <= mSelEnd) {
575 QColor grey("grey"); 599 p.setPen(mSelectedDaysColor);
576 mTodayPen.setColor(grey);
577 } 600 }
578 p.setPen(mTodayPen);
579 p.drawRect(col*dwidth, row*dheight, dwidth, dheight);
580 p.setPen(tmppen);
581 }
582 601
583 // if any events are on that day then draw it using a bold font 602 p.drawText(col*dwidth, row*dheight, dwidth, dheight,
584 if (events[i] > 0) { 603 Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]);
585 QFont myFont = font();
586 myFont.setBold(true);
587 p.setFont(myFont);
588 }
589 604
590 // if it is a holiday then use the default holiday color 605 // reset color to actual color
591 if (!mHolidays[i].isNull()) { 606 if (!mHolidays[i].isNull()) {
592 if (actcol == mDefaultTextColor) { 607 p.setPen(actcol);
593 p.setPen(KOPrefs::instance()->mHolidayColor); 608 }
594 } else { 609 // reset bold font to plain font
595 p.setPen(mHolidayColorShaded); 610 if (events[i] > 0) {
611 QFont myFont = font();
612 myFont.setBold(false);
613 p.setFont(myFont);
596 } 614 }
597 }
598
599 // draw selected days with special color
600 // DO NOT specially highlight holidays in selection !
601 if (i >= mSelStart && i <= mSelEnd) {
602 p.setPen(mSelectedDaysColor);
603 }
604
605 p.drawText(col*dwidth, row*dheight, dwidth, dheight,
606 Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]);
607
608 // reset color to actual color
609 if (!mHolidays[i].isNull()) {
610 p.setPen(actcol);
611 }
612 // reset bold font to plain font
613 if (events[i] > 0) {
614 QFont myFont = font();
615 myFont.setBold(false);
616 p.setFont(myFont);
617 }
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
625void KODayMatrix::resizeEvent(QResizeEvent *) 623void 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
@@ -22,24 +22,25 @@
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
37class QDragEnterEvent; 38class QDragEnterEvent;
38class QDragMoveEvent; 39class QDragMoveEvent;
39class QDragLeaveEvent; 40class QDragLeaveEvent;
40class QDropEvent; 41class QDropEvent;
41 42
42class KODayMatrix; 43class KODayMatrix;
43 44
44using namespace KCal; 45using namespace KCal;
45 46
@@ -212,24 +213,25 @@ protected:
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
223private: 224private:
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
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index 4cff23a..6411156 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -967,26 +967,26 @@ void KOMonthView::showEvents(QPtrList<Event>)
967void KOMonthView::changeEventDisplay(Event *, int) 967void 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
974void KOMonthView::updateView() 974void 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 );
@@ -1071,25 +1071,25 @@ void KOMonthView::updateView()
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
1086void KOMonthView::resizeEvent(QResizeEvent * e) 1086void KOMonthView::resizeEvent(QResizeEvent * e)
1087{ 1087{
1088 computeLayout(); 1088 computeLayout();
1089 mCells[0]->setFocus(); 1089 mCells[0]->setFocus();
1090} 1090}
1091void KOMonthView::computeLayout() 1091void 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
diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp
index 82437d8..99402c4 100644
--- a/korganizer/kotodoview.cpp
+++ b/korganizer/kotodoview.cpp
@@ -200,25 +200,29 @@ void KOTodoListView::contentsMousePressEvent(QMouseEvent* e)
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 212void KOTodoListView::paintEvent(QPaintEvent* e)
213{
214 emit paintNeeded();
215 QListView::paintEvent( e);
216}
213void KOTodoListView::contentsMouseMoveEvent(QMouseEvent* e) 217void 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(
@@ -492,24 +496,26 @@ KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) :
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 *) ));
@@ -525,33 +531,40 @@ KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) :
525KOTodoView::~KOTodoView() 531KOTodoView::~KOTodoView()
526{ 532{
527 delete mDocPrefs; 533 delete mDocPrefs;
528} 534}
529 535
530void KOTodoView::jumpToDate () 536void 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}
543void KOTodoView::paintNeeded()
544{
545 if ( mPendingUpdateBeforeRepaint ) {
546 updateView();
547 mPendingUpdateBeforeRepaint = false;
548 }
549}
537void KOTodoView::paintEvent(QPaintEvent * pevent) 550void 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
546void KOTodoView::updateView() 559void 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 ) {
diff --git a/korganizer/kotodoview.h b/korganizer/kotodoview.h
index 16bc133..2a9e737 100644
--- a/korganizer/kotodoview.h
+++ b/korganizer/kotodoview.h
@@ -51,41 +51,43 @@ class QDragLeaveEvent;
51class QDropEvent; 51class QDropEvent;
52 52
53class DocPrefs; 53class DocPrefs;
54 54
55class KOTodoListView : public KListView 55class 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
@@ -189,39 +191,41 @@ class KOTodoView : public KOrg::BaseView
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;
diff --git a/korganizer/koviewmanager.cpp b/korganizer/koviewmanager.cpp
index 30f5fb1..188ad23 100644
--- a/korganizer/koviewmanager.cpp
+++ b/korganizer/koviewmanager.cpp
@@ -595,24 +595,25 @@ 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
609void KOViewManager::showTimeSpanView() 610void 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 }