summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--korganizer/koagendaview.cpp2
-rw-r--r--korganizer/kodaymatrix.cpp49
-rw-r--r--korganizer/kodaymatrix.h1
3 files changed, 25 insertions, 27 deletions
diff --git a/korganizer/koagendaview.cpp b/korganizer/koagendaview.cpp
index 8b79788..8e9add3 100644
--- a/korganizer/koagendaview.cpp
+++ b/korganizer/koagendaview.cpp
@@ -1506,8 +1506,10 @@ void KOAgendaView::setStartHour( int h )
}
void KOAgendaView::updateTodo( Todo * t, int )
{
+ if ( !isVisible() )
+ return;
bool remove = false;
bool removeAD = false;
QDate da;
if ( t->hasCompletedDate() )
diff --git a/korganizer/kodaymatrix.cpp b/korganizer/kodaymatrix.cpp
index 9c3621e..be5a775 100644
--- a/korganizer/kodaymatrix.cpp
+++ b/korganizer/kodaymatrix.cpp
@@ -18,9 +18,9 @@
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
As a special exception, permission is given to link this program
with any edition of Qt, and distribute the resulting executable,
- without including the source code for Qt in the source distribution.
+ without including the source ode for Qt in the source distribution.
*/
#include <qevent.h>
#include <qpainter.h>
@@ -90,8 +90,9 @@ const int KODayMatrix::NUMDAYS = 42;
KODayMatrix::KODayMatrix(QWidget *parent, Calendar* calendar, QDate date, const char *name) :
QFrame(parent, name)
{
mCalendar = calendar;
+ mPendingUpdateBeforeRepaint = false;
// initialize dynamic arrays
days = new QDate[NUMDAYS];
daylbls = new QString[NUMDAYS];
@@ -190,8 +191,9 @@ void KODayMatrix::setSelectedDaysFrom(const QDate& start, const QDate& end)
void KODayMatrix::recalculateToday()
{
today = -1;
for (int i=0; i<NUMDAYS; i++) {
+ events[i] = 0;
days[i] = startdate.addDays(i);
daylbls[i] = QString::number( KOGlobals::self()->calendarSystem()->day( days[i] ));
// if today is in the currently displayed month, hilight today
@@ -209,26 +211,17 @@ void KODayMatrix::updateView()
updateView(startdate);
}
void KODayMatrix::repaintViewTimed()
{
- qDebug("KODayMatrix::repaintViewTimed ");
+ //qDebug("KODayMatrix::repaintViewTimed ");
mRepaintTimer->stop();
repaint(false);
}
void KODayMatrix::updateViewTimed()
{
mUpdateTimer->stop();
- //QDate actdate = mPendingNewDate;
-
- static int iii = 0;
- qDebug("KODayMatrix::updateView(QDate actdate) %d", ++iii );
-
- if (mDayChanged) {
- recalculateToday();
- mDayChanged = false;
- }
-
+ //qDebug("KODayMatrix::updateView(QDate actdate) %d", ++iii );
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]);
@@ -259,13 +252,19 @@ void KODayMatrix::updateViewTimed()
} else {
mHolidays[i] = QString::null;
}
}
+ if ( ! mPendingUpdateBeforeRepaint )
repaint(false);
}
void KODayMatrix::updateView(QDate actdate)
{
+ if ( ! actdate.isValid() ) {
+ //qDebug("date not valid ");
+ return;
+ }
+ mDayChanged = false;
//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
@@ -284,31 +283,24 @@ void KODayMatrix::updateView(QDate actdate)
if( mSelEnd > NUMDAYS || mSelEnd < 0 )
mSelEnd = mSelEnd + tmp;
}
}
-
startdate = actdate;
mDayChanged = true;
+ recalculateToday();
}
- qDebug("restart Timer %d vis: %d", mDayChanged, isVisible() );
- static int iii = 0;
- if ( iii < 2 ) {
- ++iii;
- updateViewTimed();
- } else {
+ //qDebug("restart Timer %d vis: %d", mDayChanged, isVisible() );
if ( !isVisible() ) {
- mUpdateTimer->start( 2000 );
- } else {
- if ( mDayChanged ) {
- mUpdateTimer->start( 250 );
+ mPendingUpdateBeforeRepaint = true;
} else {
mRepaintTimer->start( 250 );
+#ifdef DESKTOP_VERSION
mUpdateTimer->start( 2000 );
+#else
+ mUpdateTimer->start( 4000 );
+#endif
}
}
- }
-
-}
const QDate& KODayMatrix::getDate(int offset)
{
if (offset < 0 || offset > NUMDAYS-1) {
@@ -494,9 +486,12 @@ void KODayMatrix::dropEvent(QDropEvent *e)
void KODayMatrix::paintEvent(QPaintEvent * pevent)
{
//kdDebug() << "KODayMatrix::paintEvent() BEGIN" << endl;
-
+ if ( mPendingUpdateBeforeRepaint ) {
+ updateViewTimed();
+ mPendingUpdateBeforeRepaint = false;
+ }
QPainter p(this);
QRect sz = frameRect();
int dheight = daysize.height();
diff --git a/korganizer/kodaymatrix.h b/korganizer/kodaymatrix.h
index 0e9640a..ac2f59c 100644
--- a/korganizer/kodaymatrix.h
+++ b/korganizer/kodaymatrix.h
@@ -223,8 +223,9 @@ protected:
private:
QTimer* mUpdateTimer;
QTimer* mRepaintTimer;
bool mDayChanged;
+ bool mPendingUpdateBeforeRepaint;
/** returns the index of the day located at the matrix's widget (x,y) position.
*
* @param x horizontal coordinate