author | zautrix <zautrix> | 2005-01-30 14:15:42 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-01-30 14:15:42 (UTC) |
commit | 8d543aa1d1d1ed20001c8b18352d1d29c2979e48 (patch) (side-by-side diff) | |
tree | 9ca05f4d3bc1de81bcf0446a2f7471d552089c87 /korganizer/kodaymatrix.cpp | |
parent | 1bcef8b3f53419e7155e0862ad61e3e419763d70 (diff) | |
download | kdepimpi-8d543aa1d1d1ed20001c8b18352d1d29c2979e48.zip kdepimpi-8d543aa1d1d1ed20001c8b18352d1d29c2979e48.tar.gz kdepimpi-8d543aa1d1d1ed20001c8b18352d1d29c2979e48.tar.bz2 |
many fixes
-rw-r--r-- | korganizer/kodaymatrix.cpp | 148 |
1 files changed, 93 insertions, 55 deletions
diff --git a/korganizer/kodaymatrix.cpp b/korganizer/kodaymatrix.cpp index fc00828..060b4c4 100644 --- a/korganizer/kodaymatrix.cpp +++ b/korganizer/kodaymatrix.cpp @@ -108,7 +108,13 @@ KODayMatrix::KODayMatrix(QWidget *parent, Calendar* calendar, QDate date, const setAcceptDrops(true); //setFont( QFont("Arial", 10) ); - updateView(date); + + mUpdateTimer = new QTimer( this ); + connect (mUpdateTimer ,SIGNAL(timeout()), this, SLOT ( updateViewTimed() )); + mRepaintTimer = new QTimer( this ); + connect (mRepaintTimer ,SIGNAL(timeout()), this, SLOT ( repaintViewTimed() )); + mDayChanged = false; + updateView(); } QColor KODayMatrix::getShadedColor(QColor color) @@ -202,79 +208,111 @@ void KODayMatrix::updateView() { updateView(startdate); } - -void KODayMatrix::updateView(QDate actdate) +void KODayMatrix::repaintViewTimed() +{ + qDebug("KODayMatrix::repaintViewTimed "); + mRepaintTimer->stop(); + repaint(false); +} +void KODayMatrix::updateViewTimed() { - -// kdDebug() << "KODayMatrix::updateView() " << actdate.toString() << endl; - - //flag to indicate if the starting day of the matrix has changed by this call - bool daychanged = false; - // if a new startdate is to be set then apply Cornelius's calculation - // of the first day to be shown - if (actdate != startdate) { - // reset index of selection according to shift of starting date from startdate to actdate - if (mSelStart != NOSELECTION) { - int tmp = actdate.daysTo(startdate); - //kdDebug() << "Shift of Selection1: " << mSelStart << " - " << mSelEnd << " -> " << tmp << "(" << offset << ")" << endl; - // shift selection if new one would be visible at least partly ! - - if (mSelStart+tmp < NUMDAYS && mSelEnd+tmp >= 0) { - // nested if is required for next X display pushed from a different month - correction required - // otherwise, for month forward and backward, it must be avoided - if( mSelStart > NUMDAYS || mSelStart < 0 ) - mSelStart = mSelStart + tmp; - if( mSelEnd > NUMDAYS || mSelEnd < 0 ) - mSelEnd = mSelEnd + tmp; - } - } - startdate = actdate; - daychanged = true; - } + mUpdateTimer->stop(); + //QDate actdate = mPendingNewDate; - if (daychanged) { - recalculateToday(); - } + static int iii = 0; + qDebug("KODayMatrix::updateView(QDate actdate) %d", ++iii ); + + if (mDayChanged) { + recalculateToday(); + mDayChanged = false; + } for(int i = 0; i < NUMDAYS; i++) { - // if events are set for the day then remember to draw it bold - QPtrList<Event> eventlist = mCalendar->events(days[i]); - Event *event; - int numEvents = eventlist.count(); + // if events are set for the day then remember to draw it bold + QPtrList<Event> eventlist = mCalendar->events(days[i]); + Event *event; + int numEvents = eventlist.count(); - for(event=eventlist.first();event != 0;event=eventlist.next()) { - ushort recurType = event->recurrence()->doesRecur(); + 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--; - } - } - events[i] = numEvents; + if ((recurType == Recurrence::rDaily && !KOPrefs::instance()->mDailyRecur) || + (recurType == Recurrence::rWeekly && !KOPrefs::instance()->mWeeklyRecur)) { + numEvents--; + } + } + events[i] = numEvents; - //if it is a holy day then draw it red. Sundays are consider holidays, too + //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]); + QString holiStr = KOCore::self()->holiday(days[i]); #else - QString holiStr = QString::null; + 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; + 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; + } + } + repaint(false); + } +void KODayMatrix::updateView(QDate actdate) +{ + + //flag to indicate if the starting day of the matrix has changed by this call + //mDayChanged = false; + // if a new startdate is to be set then apply Cornelius's calculation + // of the first day to be shown + if (actdate != startdate) { + // reset index of selection according to shift of starting date from startdate to actdate + if (mSelStart != NOSELECTION) { + int tmp = actdate.daysTo(startdate); + //kdDebug() << "Shift of Selection1: " << mSelStart << " - " << mSelEnd << " -> " << tmp << "(" << offset << ")" << endl; + // shift selection if new one would be visible at least partly ! + + if (mSelStart+tmp < NUMDAYS && mSelEnd+tmp >= 0) { + // nested if is required for next X display pushed from a different month - correction required + // otherwise, for month forward and backward, it must be avoided + if( mSelStart > NUMDAYS || mSelStart < 0 ) + mSelStart = mSelStart + tmp; + if( mSelEnd > NUMDAYS || mSelEnd < 0 ) + mSelEnd = mSelEnd + tmp; + } + } + + startdate = actdate; + mDayChanged = true; + } + qDebug("restart Timer %d", mDayChanged ); + static int iii = 0; + if ( iii < 5 ) { + ++iii; + updateViewTimed(); } else { - mHolidays[i] = QString::null; + if ( !isVisible() ) { + mUpdateTimer->start( 2000 ); + } else { + if ( mDayChanged ) { + mUpdateTimer->start( 250 ); + } else { + mRepaintTimer->start( 250 ); + mUpdateTimer->start( 2000 ); + } + } } - } + } const QDate& KODayMatrix::getDate(int offset) { if (offset < 0 || offset > NUMDAYS-1) { - kdDebug() << "Wrong offset (" << offset << ") in KODayMatrix::getDate(int)" << endl; + qDebug("Wrong offset2 "); return days[0]; } return days[offset]; @@ -283,7 +321,7 @@ const QDate& KODayMatrix::getDate(int offset) QString KODayMatrix::getHolidayLabel(int offset) { if (offset < 0 || offset > NUMDAYS-1) { - kdDebug() << "Wrong offset (" << offset << ") in KODayMatrix::getHolidayLabel(int)" << endl; + qDebug("Wrong offset1 "); return 0; } return mHolidays[offset]; |