summaryrefslogtreecommitdiffabout
Side-by-side diff
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
@@ -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<Event> 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 <qpen.h>
#include <qdatetime.h>
#include <qtooltip.h>
+#include <qpixmap.h>
#include <qmap.h>
@@ -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()