From fce3fd8accec495a2deda6fe3cd55375fac46432 Mon Sep 17 00:00:00 2001 From: zautrix Date: Mon, 31 Jan 2005 23:43:35 +0000 Subject: mf --- 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 @@ -9,6 +9,7 @@ Fixed many problems of new (english) strings (and german translations) introduced in the latest versions, where the text was not fitting on the 240x320 display of the Zaurus 5500. +KO/Pi: Added a popup menu ( press pen and hold to get popup ) to the agenda view with many useful items (add event/todo, show next week, two weeks, month, journal). @@ -28,6 +29,12 @@ Setting a parent to uncomplete does not change the childs. Setting a child to uncomplete sets all parent to uncomplete. Setting a child to complete does not change the parents. +Smart updating and double buffering of the daymatrix. +Showing holidays in the day matrix. +Many other small performance updates. + +Made day labels in agenda clickable. By clicking a label, the day is displayed in single day mode. + Now the translation file usertranslation.txt is supposed to be in utf8 format. If 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. diff --git a/korganizer/kodaymatrix.cpp b/korganizer/kodaymatrix.cpp index ca896b5..549ef2a 100644 --- a/korganizer/kodaymatrix.cpp +++ b/korganizer/kodaymatrix.cpp @@ -212,7 +212,6 @@ void KODayMatrix::updateView() } void KODayMatrix::repaintViewTimed() { - qDebug("KODayMatrix::repaintViewTimed "); mRepaintTimer->stop(); repaint(false); } @@ -220,42 +219,36 @@ void KODayMatrix::updateViewTimed() { mUpdateTimer->stop(); - qDebug("KODayMatrix::updateView(QDate actdate)"); for(int i = 0; i < NUMDAYS; i++) { - // if events are set for the day then remember to draw it bold QPtrList eventlist = mCalendar->events(days[i]); Event *event; int numEvents = eventlist.count(); - + QString holiStr = ""; for(event=eventlist.first();event != 0;event=eventlist.next()) { ushort recurType = event->recurrence()->doesRecur(); - if ((recurType == Recurrence::rDaily && !KOPrefs::instance()->mDailyRecur) || (recurType == Recurrence::rWeekly && !KOPrefs::instance()->mWeeklyRecur)) { numEvents--; } + if ( event->categories().contains( i18n("Holiday") ) || event->categories().contains( "Holiday" )) { + if ( !holiStr.isEmpty() ) + holiStr += "\n"; + holiStr += event->summary(); + } } events[i] = numEvents; - //if it is a holy day then draw it red. Sundays are consider holidays, too -#ifndef KORG_NOPLUGINS - QString holiStr = KOCore::self()->holiday(days[i]); -#else - QString holiStr = QString::null; -#endif if ( (KOGlobals::self()->calendarSystem()->dayOfWeek(days[i]) == KOGlobals::self()->calendarSystem()->weekDayOfPray()) || !holiStr.isEmpty()) { - if (holiStr.isNull()) holiStr = ""; mHolidays[i] = holiStr; - } else { mHolidays[i] = QString::null; } } if ( ! mPendingUpdateBeforeRepaint ) repaint(false); - } +} void KODayMatrix::updateView(QDate actdate) { @@ -288,7 +281,7 @@ void KODayMatrix::updateView(QDate actdate) mDayChanged = true; recalculateToday(); } - qDebug("restart Timer %d vis: %d", mDayChanged, isVisible() ); + //qDebug("restart Timer %d vis: %d", mDayChanged, isVisible() ); if ( !isVisible() ) { mPendingUpdateBeforeRepaint = true; } else { @@ -487,12 +480,16 @@ void KODayMatrix::dropEvent(QDropEvent *e) void KODayMatrix::paintEvent(QPaintEvent * pevent) { -//kdDebug() << "KODayMatrix::paintEvent() BEGIN" << endl; - if ( mPendingUpdateBeforeRepaint ) { - updateViewTimed(); - mPendingUpdateBeforeRepaint = false; + if ( width() <= 0 || height() <= 0 ) + return; + if ( mPendingUpdateBeforeRepaint ) { + updateViewTimed(); + mPendingUpdateBeforeRepaint = false; + } + if ( myPix.width() != width() || myPix.height()!=height() ) { + myPix.resize(size() ); } - QPainter p(this); + QPainter p(&myPix); QRect sz = frameRect(); int dheight = daysize.height(); @@ -538,84 +535,85 @@ void KODayMatrix::paintEvent(QPaintEvent * pevent) p.setPen(actcol); QPen tmppen; for(int i = 0; i < NUMDAYS; i++) { - row = i/7; - col = isRTL ? 6-(i-row*7) : i-row*7; - - // if it is the first day of a month switch color from normal to shaded and vice versa - if ( KOGlobals::self()->calendarSystem()->day( days[i] ) == 1) { - if (actcol == mDefaultTextColorShaded) { - actcol = mDefaultTextColor; - } else { - actcol = mDefaultTextColorShaded; + row = i/7; + col = isRTL ? 6-(i-row*7) : i-row*7; + + // if it is the first day of a month switch color from normal to shaded and vice versa + if ( KOGlobals::self()->calendarSystem()->day( days[i] ) == 1) { + if (actcol == mDefaultTextColorShaded) { + actcol = mDefaultTextColor; + } else { + actcol = mDefaultTextColorShaded; + } + p.setPen(actcol); } - p.setPen(actcol); - } - //Reset pen color after selected days block - if (i == mSelEnd+1) { - p.setPen(actcol); - } + //Reset pen color after selected days block + if (i == mSelEnd+1) { + p.setPen(actcol); + } + + // if today then draw rectangle around day + if (today == i) { + tmppen = p.pen(); + QPen mTodayPen(p.pen()); + + mTodayPen.setWidth(mTodayMarginWidth); + //draw red rectangle for holidays + if (!mHolidays[i].isNull()) { + if (actcol == mDefaultTextColor) { + mTodayPen.setColor(KOPrefs::instance()->mHolidayColor); + } else { + mTodayPen.setColor(mHolidayColorShaded); + } + } + //draw gray rectangle for today if in selection + if (i >= mSelStart && i <= mSelEnd) { + QColor grey("grey"); + mTodayPen.setColor(grey); + } + p.setPen(mTodayPen); + p.drawRect(col*dwidth, row*dheight, dwidth, dheight); + p.setPen(tmppen); + } - // if today then draw rectangle around day - if (today == i) { - tmppen = p.pen(); - QPen mTodayPen(p.pen()); + // if any events are on that day then draw it using a bold font + if (events[i] > 0) { + QFont myFont = font(); + myFont.setBold(true); + p.setFont(myFont); + } - mTodayPen.setWidth(mTodayMarginWidth); - //draw red rectangle for holidays + // if it is a holiday then use the default holiday color if (!mHolidays[i].isNull()) { - if (actcol == mDefaultTextColor) { - mTodayPen.setColor(KOPrefs::instance()->mHolidayColor); - } else { - mTodayPen.setColor(mHolidayColorShaded); - } + if (actcol == mDefaultTextColor) { + p.setPen(KOPrefs::instance()->mHolidayColor); + } else { + p.setPen(mHolidayColorShaded); + } } - //draw gray rectangle for today if in selection + + // draw selected days with special color + // DO NOT specially highlight holidays in selection ! if (i >= mSelStart && i <= mSelEnd) { - QColor grey("grey"); - mTodayPen.setColor(grey); + p.setPen(mSelectedDaysColor); } - p.setPen(mTodayPen); - p.drawRect(col*dwidth, row*dheight, dwidth, dheight); - p.setPen(tmppen); - } - // if any events are on that day then draw it using a bold font - if (events[i] > 0) { - QFont myFont = font(); - myFont.setBold(true); - p.setFont(myFont); - } + p.drawText(col*dwidth, row*dheight, dwidth, dheight, + Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]); - // if it is a holiday then use the default holiday color - if (!mHolidays[i].isNull()) { - if (actcol == mDefaultTextColor) { - p.setPen(KOPrefs::instance()->mHolidayColor); - } else { - p.setPen(mHolidayColorShaded); + // reset color to actual color + if (!mHolidays[i].isNull()) { + p.setPen(actcol); + } + // reset bold font to plain font + if (events[i] > 0) { + QFont myFont = font(); + myFont.setBold(false); + p.setFont(myFont); } - } - - // draw selected days with special color - // DO NOT specially highlight holidays in selection ! - if (i >= mSelStart && i <= mSelEnd) { - p.setPen(mSelectedDaysColor); - } - - p.drawText(col*dwidth, row*dheight, dwidth, dheight, - Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]); - - // reset color to actual color - if (!mHolidays[i].isNull()) { - p.setPen(actcol); - } - // reset bold font to plain font - if (events[i] > 0) { - QFont myFont = font(); - myFont.setBold(false); - p.setFont(myFont); - } } + bitBlt (this, 0, 0, &myPix, 0 ,0,width(), height() ,CopyROP); } // ---------------------------------------------------------------------------- diff --git a/korganizer/kodaymatrix.h b/korganizer/kodaymatrix.h index ac2f59c..2dd112a 100644 --- a/korganizer/kodaymatrix.h +++ b/korganizer/kodaymatrix.h @@ -31,6 +31,7 @@ #include #include #include +#include #include @@ -221,6 +222,7 @@ protected: void resizeEvent(QResizeEvent *); private: + QPixmap myPix; QTimer* mUpdateTimer; QTimer* mRepaintTimer; bool mDayChanged; diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp index 4cff23a..6411156 100644 --- a/korganizer/komonthview.cpp +++ b/korganizer/komonthview.cpp @@ -976,8 +976,8 @@ void KOMonthView::updateView() if ( !updatePossible ) return; - QTime ti; - ti.start(); + //QTime ti; + //ti.start(); #if 1 int i; for( i = 0; i < mCells.count(); ++i ) { @@ -1080,7 +1080,7 @@ void KOMonthView::updateView() mCells[0]->setFocus(); #endif - qDebug("update time %d ", ti.elapsed()); + //qDebug("update time %d ", ti.elapsed()); } void KOMonthView::resizeEvent(QResizeEvent * e) diff --git a/korganizer/kotodoview.cpp b/korganizer/kotodoview.cpp index 82437d8..99402c4 100644 --- a/korganizer/kotodoview.cpp +++ b/korganizer/kotodoview.cpp @@ -209,7 +209,11 @@ void KOTodoListView::contentsMousePressEvent(QMouseEvent* e) #endif QListView::contentsMousePressEvent(e); } - +void KOTodoListView::paintEvent(QPaintEvent* e) +{ + emit paintNeeded(); + QListView::paintEvent( e); +} void KOTodoListView::contentsMouseMoveEvent(QMouseEvent* e) { @@ -501,6 +505,8 @@ KOTodoView::KOTodoView(Calendar *calendar,QWidget* parent,const char* name) : SLOT( itemStateChanged( QListViewItem * ) ) ); connect( mTodoListView, SIGNAL( collapsed( QListViewItem * ) ), SLOT( itemStateChanged( QListViewItem * ) ) ); + connect( mTodoListView, SIGNAL( paintNeeded() ), + SLOT( paintNeeded()) ); #if 0 connect(mTodoListView,SIGNAL(selectionChanged(QListViewItem *)), @@ -534,6 +540,13 @@ void KOTodoView::jumpToDate () // if ( mActiveItem->todo()->hasDueDate() ) // emit mActiveItem->todo()jumpToTime( mTodo->dtDue().date() ); } +void KOTodoView::paintNeeded() +{ + if ( mPendingUpdateBeforeRepaint ) { + updateView(); + mPendingUpdateBeforeRepaint = false; + } +} void KOTodoView::paintEvent(QPaintEvent * pevent) { if ( mPendingUpdateBeforeRepaint ) { @@ -542,7 +555,7 @@ void KOTodoView::paintEvent(QPaintEvent * pevent) } KOrg::BaseView::paintEvent( pevent); } - bool mPendingUpdateBeforeRepaint; + void KOTodoView::updateView() { pendingSubtodo = 0; diff --git a/korganizer/kotodoview.h b/korganizer/kotodoview.h index 16bc133..2a9e737 100644 --- a/korganizer/kotodoview.h +++ b/korganizer/kotodoview.h @@ -60,6 +60,7 @@ class KOTodoListView : public KListView virtual ~KOTodoListView() {} signals: + void paintNeeded(); void todoDropped(Todo *, int); void double_Clicked(QListViewItem *item); void reparentTodoSignal( Todo *,Todo * ); @@ -77,6 +78,7 @@ class KOTodoListView : public KListView void contentsMouseDoubleClickEvent(QMouseEvent *); private: + void paintEvent(QPaintEvent * pevent); bool internalDrop; QString mName; Calendar *mCalendar; @@ -198,6 +200,7 @@ class KOTodoView : public KOrg::BaseView void purgeCompletedSignal(); protected slots: + void paintNeeded(); void processSelectionChange(); void addQuickTodo(); void setTodoModified( Todo* ); @@ -213,6 +216,7 @@ class KOTodoView : public KOrg::BaseView * 3. add a private method for setting a todo modified + friend here? * -- zecke 2002-07-08 */ + friend class KOTodoListView; void paintEvent(QPaintEvent * pevent); bool mPendingUpdateBeforeRepaint; friend class KOTodoViewItem; diff --git a/korganizer/koviewmanager.cpp b/korganizer/koviewmanager.cpp index 30f5fb1..188ad23 100644 --- a/korganizer/koviewmanager.cpp +++ b/korganizer/koviewmanager.cpp @@ -604,6 +604,7 @@ void KOViewManager::showJournalView() } showView(mJournalView); + mMainView->dateNavigator()->selectDates( 1 ); } void KOViewManager::showTimeSpanView() -- cgit v0.9.0.2