-rw-r--r-- | bin/kdepim/WhatsNew.txt | 4 | ||||
-rw-r--r-- | korganizer/datenavigatorcontainer.cpp | 6 | ||||
-rw-r--r-- | korganizer/kdatenavigator.cpp | 2 | ||||
-rw-r--r-- | korganizer/kodaymatrix.cpp | 32 | ||||
-rw-r--r-- | korganizer/kodaymatrix.h | 1 |
5 files changed, 37 insertions, 8 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt index 6bc6be9..680f633 100644 --- a/bin/kdepim/WhatsNew.txt +++ b/bin/kdepim/WhatsNew.txt | |||
@@ -1,34 +1,38 @@ | |||
1 | Info about the changes in new versions of KDE-Pim/Pi | 1 | Info about the changes in new versions of KDE-Pim/Pi |
2 | 2 | ||
3 | ********** VERSION 2.0.24 ************ | ||
4 | |||
5 | Fixed again a lot of small bugs. | ||
6 | |||
3 | ********** VERSION 2.0.23 ************ | 7 | ********** VERSION 2.0.23 ************ |
4 | 8 | ||
5 | Fixed again a lot of small and strange bugs, e.g. the missing toolbar of KA/Pi after a new installation. | 9 | Fixed again a lot of small and strange bugs, e.g. the missing toolbar of KA/Pi after a new installation. |
6 | Fixed the (agenda) layout of KO/Pi on 5500er. | 10 | Fixed the (agenda) layout of KO/Pi on 5500er. |
7 | Some usebility enhancements (e.g. reselection the current item of the todo view after some changes). | 11 | Some usebility enhancements (e.g. reselection the current item of the todo view after some changes). |
8 | 12 | ||
9 | ********** VERSION 2.0.22 ************ | 13 | ********** VERSION 2.0.22 ************ |
10 | 14 | ||
11 | KO/Pi: | 15 | KO/Pi: |
12 | Fix for creating events/todos via the abgenda context menu. | 16 | Fix for creating events/todos via the abgenda context menu. |
13 | Added option to split toolbar to 3 toolbars. | 17 | Added option to split toolbar to 3 toolbars. |
14 | (Toolbar moving s disabled for this option due to a bug in Qt somewhere). | 18 | (Toolbar moving s disabled for this option due to a bug in Qt somewhere). |
15 | Added option to show one small filter-view-toolbar. | 19 | Added option to show one small filter-view-toolbar. |
16 | Added a print option to the desktop version: | 20 | Added a print option to the desktop version: |
17 | Now you can print out the view of the "Event Viewer". | 21 | Now you can print out the view of the "Event Viewer". |
18 | That means you can print all data of one particular event/todo. | 22 | That means you can print all data of one particular event/todo. |
19 | Added scaling options to printout of Event Viewer and What'sNext View. | 23 | Added scaling options to printout of Event Viewer and What'sNext View. |
20 | Fixed some problems in the month view in "week start sunday" mode. | 24 | Fixed some problems in the month view in "week start sunday" mode. |
21 | KA/Pi: | 25 | KA/Pi: |
22 | Added two more config options. | 26 | Added two more config options. |
23 | Fixed resizing problem of address request dialog when orientation was switched. | 27 | Fixed resizing problem of address request dialog when orientation was switched. |
24 | Cleaned up the menu structure. | 28 | Cleaned up the menu structure. |
25 | Fixed some more problems. | 29 | Fixed some more problems. |
26 | 30 | ||
27 | Fixed the annoying problem that scrolling continued after the key was released in KO/Pi Monthview and the KA/Pi views. | 31 | Fixed the annoying problem that scrolling continued after the key was released in KO/Pi Monthview and the KA/Pi views. |
28 | 32 | ||
29 | And, this is a really cool option (Ben did suggest it): | 33 | And, this is a really cool option (Ben did suggest it): |
30 | Now KO/Pi and KA/Pi can be run from a USB stick: | 34 | Now KO/Pi and KA/Pi can be run from a USB stick: |
31 | All data is read from and written to the stick. | 35 | All data is read from and written to the stick. |
32 | You can enable this in the global configure option TAB with: | 36 | You can enable this in the global configure option TAB with: |
33 | Save using LOCAL storage. | 37 | Save using LOCAL storage. |
34 | Just put KDE-Pim/Pi on a memory stick and you can access all your PIM data on every computer with Windows XP. It will work with the ME and Linux versions as well. I will put a memory stick version for teh next stable release online. | 38 | Just put KDE-Pim/Pi on a memory stick and you can access all your PIM data on every computer with Windows XP. It will work with the ME and Linux versions as well. I will put a memory stick version for teh next stable release online. |
diff --git a/korganizer/datenavigatorcontainer.cpp b/korganizer/datenavigatorcontainer.cpp index 92abae6..e57daa4 100644 --- a/korganizer/datenavigatorcontainer.cpp +++ b/korganizer/datenavigatorcontainer.cpp | |||
@@ -394,46 +394,50 @@ void DateNavigatorContainer::selectDates( const DateList &dateList ) | |||
394 | view->dayMatrix()->setSelectedDaysFrom(*(dateList.begin()), *(--dateList.end())); | 394 | view->dayMatrix()->setSelectedDaysFrom(*(dateList.begin()), *(--dateList.end())); |
395 | view->dayMatrix()->repaint( false ); | 395 | view->dayMatrix()->repaint( false ); |
396 | } | 396 | } |
397 | } | 397 | } |
398 | } | 398 | } |
399 | 399 | ||
400 | void DateNavigatorContainer::setBaseDates() | 400 | void DateNavigatorContainer::setBaseDates() |
401 | { | 401 | { |
402 | QDate baseDate = mNavigatorView->baseDate(); | 402 | QDate baseDate = mNavigatorView->baseDate(); |
403 | bool doRepaint = true; | 403 | bool doRepaint = true; |
404 | for( uint i = 0; i < mLastDisplayedDN; ++i ) { | 404 | for( uint i = 0; i < mLastDisplayedDN; ++i ) { |
405 | KDateNavigator *n = mExtraViews.at( i ); | 405 | KDateNavigator *n = mExtraViews.at( i ); |
406 | baseDate = baseDate.addDays( baseDate.daysInMonth () - baseDate.day() +1 ); | 406 | baseDate = baseDate.addDays( baseDate.daysInMonth () - baseDate.day() +1 ); |
407 | n->setBaseDate( baseDate, doRepaint ); | 407 | n->setBaseDate( baseDate, doRepaint ); |
408 | } | 408 | } |
409 | } | 409 | } |
410 | void DateNavigatorContainer::setResizeEnabled() | 410 | void DateNavigatorContainer::setResizeEnabled() |
411 | { | 411 | { |
412 | mResizeEnabled = true; | 412 | mResizeEnabled = true; |
413 | //qDebug("DateNavigatorContainer::setResizeEnabled "); | 413 | //qDebug("DateNavigatorContainer::setResizeEnabled "); |
414 | checkUpdateDayMatrixDates(); | 414 | checkUpdateDayMatrixDates(); |
415 | } | 415 | } |
416 | void DateNavigatorContainer::resizeEvent( QResizeEvent * e ) | 416 | void DateNavigatorContainer::resizeEvent( QResizeEvent * e ) |
417 | { | 417 | { |
418 | 418 | ||
419 | //qDebug("DateNavigatorContainer::resizeEvent %d %d ", width(), height()); | 419 | //qDebug("DateNavigatorContainer::resizeEvent %d %d ", width(), height()); |
420 | //qDebug("COUNT %d ", mExtraViews.count()); | 420 | //qDebug("COUNT %d ", mExtraViews.count()); |
421 | if ( ! mResizeEnabled ) { | 421 | if ( ! mResizeEnabled ) { |
422 | //qDebug("NOT ResizeEnabled"); | 422 | //qDebug("NOT ResizeEnabled"); |
423 | return; | 423 | return; |
424 | } | 424 | } |
425 | else | 425 | else |
426 | mUpdateTimer->start( 250 ); | 426 | #ifdef DESKTOP_VERSION |
427 | mUpdateTimer->start( 100 ); | ||
428 | #else | ||
429 | mUpdateTimer->start( 50 ); | ||
430 | #endif | ||
427 | 431 | ||
428 | //updateDayMatrixDates(); | 432 | //updateDayMatrixDates(); |
429 | } | 433 | } |
430 | 434 | ||
431 | QSize DateNavigatorContainer::minimumSizeHint() const | 435 | QSize DateNavigatorContainer::minimumSizeHint() const |
432 | { | 436 | { |
433 | return mNavigatorView->minimumSizeHint(); | 437 | return mNavigatorView->minimumSizeHint(); |
434 | } | 438 | } |
435 | 439 | ||
436 | QSize DateNavigatorContainer::sizeHint() const | 440 | QSize DateNavigatorContainer::sizeHint() const |
437 | { | 441 | { |
438 | return mNavigatorView->yourSizeHint(); | 442 | return mNavigatorView->yourSizeHint(); |
439 | } | 443 | } |
diff --git a/korganizer/kdatenavigator.cpp b/korganizer/kdatenavigator.cpp index 1d09f40..5aa1c9b 100644 --- a/korganizer/kdatenavigator.cpp +++ b/korganizer/kdatenavigator.cpp | |||
@@ -61,65 +61,65 @@ KDateNavigator::KDateNavigator( QWidget *parent, const char *name ) | |||
61 | mSelectedDates.append(startDate); | 61 | mSelectedDates.append(startDate); |
62 | m_MthYr = startDate; | 62 | m_MthYr = startDate; |
63 | m_bShowWeekNums = true; | 63 | m_bShowWeekNums = true; |
64 | setFont( KOPrefs::instance()->mDateNavigatorFont ); | 64 | setFont( KOPrefs::instance()->mDateNavigatorFont ); |
65 | mNavigatorBar = new NavigatorBar( startDate, this ); | 65 | mNavigatorBar = new NavigatorBar( startDate, this ); |
66 | topLayout->addMultiCellWidget( mNavigatorBar, 0, 0, 0, 7 ); | 66 | topLayout->addMultiCellWidget( mNavigatorBar, 0, 0, 0, 7 ); |
67 | //mNavigatorBar->resize( 1,1); | 67 | //mNavigatorBar->resize( 1,1); |
68 | connect( mNavigatorBar, SIGNAL( goPrevYear() ), SIGNAL( goPrevYear() ) ); | 68 | connect( mNavigatorBar, SIGNAL( goPrevYear() ), SIGNAL( goPrevYear() ) ); |
69 | connect( mNavigatorBar, SIGNAL( goPrevMonth() ), SIGNAL( goPrevMonth() ) ); | 69 | connect( mNavigatorBar, SIGNAL( goPrevMonth() ), SIGNAL( goPrevMonth() ) ); |
70 | connect( mNavigatorBar, SIGNAL( goNextMonth() ), SIGNAL( goNextMonth() ) ); | 70 | connect( mNavigatorBar, SIGNAL( goNextMonth() ), SIGNAL( goNextMonth() ) ); |
71 | connect( mNavigatorBar, SIGNAL( goNextYear() ), SIGNAL( goNextYear() ) ); | 71 | connect( mNavigatorBar, SIGNAL( goNextYear() ), SIGNAL( goNextYear() ) ); |
72 | connect( mNavigatorBar, SIGNAL( monthSelected( int ) ), SLOT( slotMonthSelected( int ) ) ); | 72 | connect( mNavigatorBar, SIGNAL( monthSelected( int ) ), SLOT( slotMonthSelected( int ) ) ); |
73 | 73 | ||
74 | // get the day of the week on the first day | 74 | // get the day of the week on the first day |
75 | QDate dayone(m_MthYr.year(), m_MthYr.month(), 1); | 75 | QDate dayone(m_MthYr.year(), m_MthYr.month(), 1); |
76 | m_fstDayOfWk = dayone.dayOfWeek(); | 76 | m_fstDayOfWk = dayone.dayOfWeek(); |
77 | 77 | ||
78 | int i; | 78 | int i; |
79 | 79 | ||
80 | // Set up the heading fields. | 80 | // Set up the heading fields. |
81 | for( i = 0; i < 7; i++ ) { | 81 | for( i = 0; i < 7; i++ ) { |
82 | headings[i] = new QLabel("",this); | 82 | headings[i] = new QLabel("",this); |
83 | //headings[i]->setFont(QFont("Arial", 10, QFont::Bold)); | 83 | //headings[i]->setFont(QFont("Arial", 10, QFont::Bold)); |
84 | headings[i]->setAlignment(AlignCenter); | 84 | headings[i]->setAlignment(AlignCenter); |
85 | headings[i]->installEventFilter(this); | 85 | headings[i]->installEventFilter(this); |
86 | 86 | ||
87 | topLayout->addWidget(headings[i],1,i+1); | 87 | topLayout->addWidget(headings[i],1,i+1); |
88 | } | 88 | } |
89 | 89 | ||
90 | // Create the weeknumber labels | 90 | // Create the weeknumber labels |
91 | for( i = 0; i < 6; i++ ) { | 91 | for( i = 0; i < 6; i++ ) { |
92 | weeknos[i] = new QLabel(this); | 92 | weeknos[i] = new QLabel(this); |
93 | weeknos[i]->setAlignment(AlignCenter); | 93 | weeknos[i]->setAlignment(AlignCenter ); |
94 | //weeknos[i]->setFont(QFont("Arial", 10)); | 94 | //weeknos[i]->setFont(QFont("Arial", 10)); |
95 | if(!m_bShowWeekNums) { | 95 | if(!m_bShowWeekNums) { |
96 | weeknos[i]->hide(); | 96 | weeknos[i]->hide(); |
97 | } | 97 | } |
98 | weeknos[i]->installEventFilter(this); | 98 | weeknos[i]->installEventFilter(this); |
99 | 99 | ||
100 | topLayout->addWidget(weeknos[i],i+2,0); | 100 | topLayout->addWidget(weeknos[i],i+2,0); |
101 | } | 101 | } |
102 | 102 | ||
103 | daymatrix = new KODayMatrix( this, "KDateNavigator::DayMatrix"); | 103 | daymatrix = new KODayMatrix( this, "KDateNavigator::DayMatrix"); |
104 | daymatrix->setFrameStyle(QFrame::Panel|QFrame::Sunken); | 104 | daymatrix->setFrameStyle(QFrame::Panel|QFrame::Sunken); |
105 | daymatrix->setLineWidth(1); | 105 | daymatrix->setLineWidth(1); |
106 | 106 | ||
107 | connect( daymatrix, SIGNAL( selected( const KCal::DateList & ) ), | 107 | connect( daymatrix, SIGNAL( selected( const KCal::DateList & ) ), |
108 | SIGNAL( datesSelected( const KCal::DateList & ) ) ); | 108 | SIGNAL( datesSelected( const KCal::DateList & ) ) ); |
109 | 109 | ||
110 | connect( daymatrix, SIGNAL( eventDropped( Event * ) ), | 110 | connect( daymatrix, SIGNAL( eventDropped( Event * ) ), |
111 | SIGNAL( eventDropped( Event * ) ) ); | 111 | SIGNAL( eventDropped( Event * ) ) ); |
112 | 112 | ||
113 | topLayout->addMultiCellWidget(daymatrix,2,7,1,7); | 113 | topLayout->addMultiCellWidget(daymatrix,2,7,1,7); |
114 | 114 | ||
115 | // read settings from configuration file. | 115 | // read settings from configuration file. |
116 | updateConfig(); | 116 | updateConfig(); |
117 | enableRollover(FollowMonth); | 117 | enableRollover(FollowMonth); |
118 | mySizeHint = sizeHintTwoButtons(); | 118 | mySizeHint = sizeHintTwoButtons(); |
119 | myFullSizeHint = sizeHintTwoButtons( 4 ); | 119 | myFullSizeHint = sizeHintTwoButtons( 4 ); |
120 | mFontChanged = false; | 120 | mFontChanged = false; |
121 | //resize ( 3,3 ); | 121 | //resize ( 3,3 ); |
122 | 122 | ||
123 | } | 123 | } |
124 | void KDateNavigator::changeFont ( QFont fo ) | 124 | void KDateNavigator::changeFont ( QFont fo ) |
125 | { | 125 | { |
diff --git a/korganizer/kodaymatrix.cpp b/korganizer/kodaymatrix.cpp index 8affe50..c7e1b45 100644 --- a/korganizer/kodaymatrix.cpp +++ b/korganizer/kodaymatrix.cpp | |||
@@ -80,73 +80,76 @@ void DynamicTip::maybeTip( const QPoint &pos ) | |||
80 | QRect sz = matrix->frameRect(); | 80 | QRect sz = matrix->frameRect(); |
81 | int dheight = sz.height()*7 / 42; | 81 | int dheight = sz.height()*7 / 42; |
82 | int dwidth = sz.width() / 7; | 82 | int dwidth = sz.width() / 7; |
83 | int row = pos.y()/dheight; | 83 | int row = pos.y()/dheight; |
84 | int col = pos.x()/dwidth; | 84 | int col = pos.x()/dwidth; |
85 | 85 | ||
86 | QRect rct(col*dwidth, row*dheight, dwidth, dheight); | 86 | QRect rct(col*dwidth, row*dheight, dwidth, dheight); |
87 | 87 | ||
88 | // kdDebug() << "DynamicTip::maybeTip matrix cell index [" << | 88 | // kdDebug() << "DynamicTip::maybeTip matrix cell index [" << |
89 | // col << "][" << row << "] => " <<(col+row*7) << endl; | 89 | // col << "][" << row << "] => " <<(col+row*7) << endl; |
90 | 90 | ||
91 | //show holiday names only | 91 | //show holiday names only |
92 | QString str = matrix->getHolidayLabel(col+row*7); | 92 | QString str = matrix->getHolidayLabel(col+row*7); |
93 | if (str.isEmpty()) return; | 93 | if (str.isEmpty()) return; |
94 | tip(rct, str); | 94 | tip(rct, str); |
95 | } | 95 | } |
96 | 96 | ||
97 | 97 | ||
98 | // ============================================================================ | 98 | // ============================================================================ |
99 | // K O D A Y M A T R I X | 99 | // K O D A Y M A T R I X |
100 | // ============================================================================ | 100 | // ============================================================================ |
101 | 101 | ||
102 | const int KODayMatrix::NOSELECTION = -1000; | 102 | const int KODayMatrix::NOSELECTION = -1000; |
103 | const int KODayMatrix::NUMDAYS = 42; | 103 | const int KODayMatrix::NUMDAYS = 42; |
104 | 104 | ||
105 | KODayMatrix::KODayMatrix( QWidget *parent, const char *name ) | 105 | KODayMatrix::KODayMatrix( QWidget *parent, const char *name ) |
106 | : QFrame( parent, name , Qt::WRepaintNoErase ), mCalendar( 0 ) | 106 | : QFrame( parent, name , Qt::WRepaintNoErase ), mCalendar( 0 ) |
107 | 107 | ||
108 | #if 0 | 108 | #if 0 |
109 | KODayMatrix::KODayMatrix(QWidget *parent, Calendar* calendar, QDate date, const char *name) : | 109 | KODayMatrix::KODayMatrix(QWidget *parent, Calendar* calendar, QDate date, const char *name) : |
110 | QFrame(parent, name) | 110 | QFrame(parent, name) |
111 | #endif | 111 | #endif |
112 | { | 112 | { |
113 | oldW = 0; | ||
114 | oldH = 0; | ||
115 | myPix.resize( 150, 120 ); | ||
113 | mRedrawNeeded = true; | 116 | mRedrawNeeded = true; |
114 | mKODaymatrixWhatsThis = new KODaymatrixWhatsThis(this); | 117 | mKODaymatrixWhatsThis = new KODaymatrixWhatsThis(this); |
115 | mPendingUpdateBeforeRepaint = false; | 118 | mPendingUpdateBeforeRepaint = false; |
116 | mouseDown = false; | 119 | mouseDown = false; |
117 | // initialize dynamic arrays | 120 | // initialize dynamic arrays |
118 | bDays.resize ( NUMDAYS ); | 121 | bDays.resize ( NUMDAYS ); |
119 | hDays.resize ( NUMDAYS );; | 122 | hDays.resize ( NUMDAYS ); |
120 | eDays.resize ( NUMDAYS );; | 123 | eDays.resize ( NUMDAYS ); |
121 | days = new QDate[NUMDAYS]; | 124 | days = new QDate[NUMDAYS]; |
122 | daylbls = new QString[NUMDAYS]; | 125 | daylbls = new QString[NUMDAYS]; |
123 | //events = new int[NUMDAYS]; | 126 | //events = new int[NUMDAYS]; |
124 | mToolTip = new DynamicTip(this); | 127 | mToolTip = new DynamicTip(this); |
125 | 128 | ||
126 | // set default values used for drawing the matrix | 129 | // set default values used for drawing the matrix |
127 | mDefaultBackColor = palette().active().base(); | 130 | mDefaultBackColor = palette().active().base(); |
128 | mDefaultTextColor = palette().active().foreground(); | 131 | mDefaultTextColor = palette().active().foreground(); |
129 | mDefaultTextColorShaded = getShadedColor(mDefaultTextColor); | 132 | mDefaultTextColorShaded = getShadedColor(mDefaultTextColor); |
130 | mHolidayColorShaded = getShadedColor(KOPrefs::instance()->mHolidayColor); | 133 | mHolidayColorShaded = getShadedColor(KOPrefs::instance()->mHolidayColor); |
131 | mSelectedDaysColor = QColor("white"); | 134 | mSelectedDaysColor = QColor("white"); |
132 | mTodayMarginWidth = 2; | 135 | mTodayMarginWidth = 2; |
133 | mSelEnd = mSelStart = NOSELECTION; | 136 | mSelEnd = mSelStart = NOSELECTION; |
134 | 137 | ||
135 | setAcceptDrops(true); | 138 | setAcceptDrops(true); |
136 | //setFont( QFont("Arial", 10) ); | 139 | //setFont( QFont("Arial", 10) ); |
137 | 140 | ||
138 | mUpdateTimer = new QTimer( this ); | 141 | mUpdateTimer = new QTimer( this ); |
139 | connect (mUpdateTimer ,SIGNAL(timeout()), this, SLOT ( updateViewTimed() )); | 142 | connect (mUpdateTimer ,SIGNAL(timeout()), this, SLOT ( updateViewTimed() )); |
140 | mRepaintTimer = new QTimer( this ); | 143 | mRepaintTimer = new QTimer( this ); |
141 | connect (mRepaintTimer ,SIGNAL(timeout()), this, SLOT ( repaintViewTimed() )); | 144 | connect (mRepaintTimer ,SIGNAL(timeout()), this, SLOT ( repaintViewTimed() )); |
142 | mDayChanged = false; | 145 | mDayChanged = false; |
143 | updateView(); | 146 | updateView(); |
144 | } | 147 | } |
145 | QString KODayMatrix::getWhatsThisText( QPoint p ) | 148 | QString KODayMatrix::getWhatsThisText( QPoint p ) |
146 | { | 149 | { |
147 | 150 | ||
148 | int tmp = getDayIndexFrom(p.x(), p.y()); | 151 | int tmp = getDayIndexFrom(p.x(), p.y()); |
149 | if ( tmp < 0 || tmp > NUMDAYS-1 || !mCalendar ) | 152 | if ( tmp < 0 || tmp > NUMDAYS-1 || !mCalendar ) |
150 | return QString(); | 153 | return QString(); |
151 | QDate mDate = days[tmp]; | 154 | QDate mDate = days[tmp]; |
152 | QPtrList<Event> eventlist = mCalendar->events(mDate); | 155 | QPtrList<Event> eventlist = mCalendar->events(mDate); |
@@ -305,65 +308,69 @@ bool KODayMatrix::setSelectedDaysFrom(const QDate& start, const QDate& end) | |||
305 | 308 | ||
306 | return true; | 309 | return true; |
307 | } | 310 | } |
308 | void KODayMatrix::clearSelection() | 311 | void KODayMatrix::clearSelection() |
309 | { | 312 | { |
310 | mSelEnd = mSelStart = NOSELECTION; | 313 | mSelEnd = mSelStart = NOSELECTION; |
311 | } | 314 | } |
312 | 315 | ||
313 | 316 | ||
314 | void KODayMatrix::recalculateToday() | 317 | void KODayMatrix::recalculateToday() |
315 | { | 318 | { |
316 | today = -1; | 319 | today = -1; |
317 | for (int i=0; i<NUMDAYS; i++) { | 320 | for (int i=0; i<NUMDAYS; i++) { |
318 | //events[i] = 0; | 321 | //events[i] = 0; |
319 | days[i] = startdate.addDays(i); | 322 | days[i] = startdate.addDays(i); |
320 | daylbls[i] = QString::number( KOGlobals::self()->calendarSystem()->day( days[i] )); | 323 | daylbls[i] = QString::number( KOGlobals::self()->calendarSystem()->day( days[i] )); |
321 | 324 | ||
322 | // if today is in the currently displayed month, hilight today | 325 | // if today is in the currently displayed month, hilight today |
323 | if (days[i].year() == QDate::currentDate().year() && | 326 | if (days[i].year() == QDate::currentDate().year() && |
324 | days[i].month() == QDate::currentDate().month() && | 327 | days[i].month() == QDate::currentDate().month() && |
325 | days[i].day() == QDate::currentDate().day()) { | 328 | days[i].day() == QDate::currentDate().day()) { |
326 | today = i; | 329 | today = i; |
327 | } | 330 | } |
328 | } | 331 | } |
329 | // qDebug(QString("Today is visible at %1.").arg(today)); | 332 | // qDebug(QString("Today is visible at %1.").arg(today)); |
330 | } | 333 | } |
331 | 334 | ||
332 | void KODayMatrix::updateView() | 335 | void KODayMatrix::updateView() |
333 | { | 336 | { |
334 | updateView(startdate); | 337 | updateView(startdate); |
335 | } | 338 | } |
336 | void KODayMatrix::repaintViewTimed() | 339 | void KODayMatrix::repaintViewTimed() |
337 | { | 340 | { |
341 | mRedrawNeeded = true; | ||
342 | bDays.fill( false); | ||
343 | hDays.fill( false); | ||
344 | eDays.fill( false); | ||
338 | mRepaintTimer->stop(); | 345 | mRepaintTimer->stop(); |
339 | repaint(false); | 346 | repaint(false); |
340 | } | 347 | } |
341 | void KODayMatrix::updateViewTimed() | 348 | void KODayMatrix::updateViewTimed() |
342 | { | 349 | { |
343 | mUpdateTimer->stop(); | 350 | mUpdateTimer->stop(); |
344 | if ( !mCalendar ) { | 351 | if ( !mCalendar ) { |
345 | qDebug("NOT CAL "); | 352 | qDebug("NOT CAL "); |
346 | return; | 353 | return; |
347 | } | 354 | } |
348 | //qDebug("KODayMatrix::updateViewTimed "); | 355 | //qDebug("KODayMatrix::updateViewTimed "); |
349 | for(int i = 0; i < NUMDAYS; i++) { | 356 | for(int i = 0; i < NUMDAYS; i++) { |
350 | // if events are set for the day then remember to draw it bold | 357 | // if events are set for the day then remember to draw it bold |
351 | QPtrList<Event> eventlist = mCalendar->events(days[i]); | 358 | QPtrList<Event> eventlist = mCalendar->events(days[i]); |
352 | Event *event; | 359 | Event *event; |
353 | int numEvents = eventlist.count(); | 360 | int numEvents = eventlist.count(); |
354 | QString holiStr = ""; | 361 | QString holiStr = ""; |
355 | bDays.clearBit(i); | 362 | bDays.clearBit(i); |
356 | hDays.clearBit(i); | 363 | hDays.clearBit(i); |
357 | eDays.clearBit(i); | 364 | eDays.clearBit(i); |
358 | for(event=eventlist.first();event != 0;event=eventlist.next()) { | 365 | for(event=eventlist.first();event != 0;event=eventlist.next()) { |
359 | ushort recurType = event->recurrence()->doesRecur(); | 366 | ushort recurType = event->recurrence()->doesRecur(); |
360 | if ((recurType == Recurrence::rDaily && !KOPrefs::instance()->mDailyRecur) || | 367 | if ((recurType == Recurrence::rDaily && !KOPrefs::instance()->mDailyRecur) || |
361 | (recurType == Recurrence::rWeekly && !KOPrefs::instance()->mWeeklyRecur)) { | 368 | (recurType == Recurrence::rWeekly && !KOPrefs::instance()->mWeeklyRecur)) { |
362 | numEvents--; | 369 | numEvents--; |
363 | } | 370 | } |
364 | if ( event->isHoliday()) { | 371 | if ( event->isHoliday()) { |
365 | hDays.setBit(i); | 372 | hDays.setBit(i); |
366 | if ( !holiStr.isEmpty() ) | 373 | if ( !holiStr.isEmpty() ) |
367 | holiStr += "\n"; | 374 | holiStr += "\n"; |
368 | holiStr += event->summary(); | 375 | holiStr += event->summary(); |
369 | if ( !event->location().isEmpty() ) | 376 | if ( !event->location().isEmpty() ) |
@@ -654,69 +661,81 @@ void KODayMatrix::dropEvent(QDropEvent *e) | |||
654 | QDateTime end = event->dtEnd(); | 661 | QDateTime end = event->dtEnd(); |
655 | int duration = start.daysTo(end); | 662 | int duration = start.daysTo(end); |
656 | int idx = getDayIndexFrom(e->pos().x(), e->pos().y()); | 663 | int idx = getDayIndexFrom(e->pos().x(), e->pos().y()); |
657 | 664 | ||
658 | start.setDate(days[idx]); | 665 | start.setDate(days[idx]); |
659 | end.setDate(days[idx].addDays(duration)); | 666 | end.setDate(days[idx].addDays(duration)); |
660 | 667 | ||
661 | event->setDtStart(start); | 668 | event->setDtStart(start); |
662 | event->setDtEnd(end); | 669 | event->setDtEnd(end); |
663 | mCalendar->addEvent(event); | 670 | mCalendar->addEvent(event); |
664 | 671 | ||
665 | emit eventDropped(event); | 672 | emit eventDropped(event); |
666 | } else { | 673 | } else { |
667 | // kdDebug() << "KODayMatrix::dropEvent(): Event from drop not decodable" << endl; | 674 | // kdDebug() << "KODayMatrix::dropEvent(): Event from drop not decodable" << endl; |
668 | e->ignore(); | 675 | e->ignore(); |
669 | } | 676 | } |
670 | #endif | 677 | #endif |
671 | } | 678 | } |
672 | 679 | ||
673 | // ---------------------------------------------------------------------------- | 680 | // ---------------------------------------------------------------------------- |
674 | // P A I N T E V E N T H A N D L I N G | 681 | // P A I N T E V E N T H A N D L I N G |
675 | // ---------------------------------------------------------------------------- | 682 | // ---------------------------------------------------------------------------- |
676 | 683 | ||
677 | void KODayMatrix::paintEvent(QPaintEvent * pevent) | 684 | void KODayMatrix::paintEvent(QPaintEvent * pevent) |
678 | { | 685 | { |
679 | 686 | ||
680 | if ( width() <= 0 || height() <= 0 ) | 687 | if ( width() <= 0 || height() <= 0 ) |
681 | return; | 688 | return; |
682 | if ( mPendingUpdateBeforeRepaint ) { | 689 | if ( mPendingUpdateBeforeRepaint ) { |
683 | updateViewTimed(); | 690 | updateViewTimed(); |
684 | mPendingUpdateBeforeRepaint = false; | 691 | mPendingUpdateBeforeRepaint = false; |
685 | } | 692 | } |
693 | #if 0 | ||
686 | if ( myPix.width() != width() || myPix.height()!=height() ) { | 694 | if ( myPix.width() != width() || myPix.height()!=height() ) { |
687 | myPix.resize(size() ); | 695 | myPix.resize(size() ); |
688 | mRedrawNeeded = true; | 696 | mRedrawNeeded = true; |
689 | } | 697 | } |
690 | 698 | #endif | |
699 | if ( oldW != width() || oldH !=height() ) | ||
700 | mRedrawNeeded = true; | ||
701 | |||
702 | oldH = height() ; | ||
703 | oldW = width(); | ||
704 | if ( myPix.width() < width() || myPix.height() < height() ) { | ||
705 | myPix.resize(size() ); | ||
706 | mRedrawNeeded = true; | ||
707 | |||
708 | } | ||
709 | |||
691 | if ( mRedrawNeeded ) { | 710 | if ( mRedrawNeeded ) { |
692 | //qDebug("REDRAW "); | 711 | //qDebug("REDRAW "); |
693 | QPainter p(&myPix); | 712 | QPainter p(&myPix); |
694 | p.setFont(font()); | 713 | p.setFont(font()); |
695 | 714 | ||
696 | 715 | ||
697 | int dheight = daysize.height(); | 716 | int dheight = daysize.height(); |
698 | int dwidth = daysize.width(); | 717 | int dwidth = daysize.width(); |
699 | int row,col; | 718 | int row,col; |
700 | int selw, selh; | 719 | int selw, selh; |
701 | int xyOff = frameWidth(); | 720 | int xyOff = frameWidth(); |
702 | int colModulo = (width()-2) % 7; | 721 | int colModulo = (width()-2) % 7; |
703 | int rowModulo = (height()-2) % 6; | 722 | int rowModulo = (height()-2) % 6; |
704 | //qDebug("col %d row %d ",colModulo,rowModulo ); | 723 | //qDebug("col %d row %d ",colModulo,rowModulo ); |
705 | 724 | ||
706 | bool isRTL = KOGlobals::self()->reverseLayout(); | 725 | bool isRTL = KOGlobals::self()->reverseLayout(); |
707 | 726 | ||
708 | // draw background and topleft frame | 727 | // draw background and topleft frame |
709 | p.fillRect(0,0,width(),height(), mDefaultBackColor); | 728 | p.fillRect(0,0,width(),height(), mDefaultBackColor); |
710 | p.setPen(mDefaultTextColor); | 729 | p.setPen(mDefaultTextColor); |
711 | p.drawRect(0, 0, width(), height()); | 730 | p.drawRect(0, 0, width(), height()); |
712 | int mSelStartT = mSelStart; | 731 | int mSelStartT = mSelStart; |
713 | int mSelEndT = mSelEnd; | 732 | int mSelEndT = mSelEnd; |
714 | if ( mSelEndT >= NUMDAYS ) | 733 | if ( mSelEndT >= NUMDAYS ) |
715 | mSelEndT = NUMDAYS-1; | 734 | mSelEndT = NUMDAYS-1; |
716 | // draw selected days with highlighted background color | 735 | // draw selected days with highlighted background color |
717 | if (mSelStart != NOSELECTION) { | 736 | if (mSelStart != NOSELECTION) { |
718 | bool skip = false; | 737 | bool skip = false; |
719 | if ( ! mouseDown ) { | 738 | if ( ! mouseDown ) { |
720 | int mo = days[20].month(); | 739 | int mo = days[20].month(); |
721 | //qDebug("-- %d %d ", mSelStartT, mSelEndT); | 740 | //qDebug("-- %d %d ", mSelStartT, mSelEndT); |
722 | //qDebug("%d %d %d - d %d", mo, days[mSelStartT].month() , days[mSelEndT].month(), days[mSelEndT].day() ); | 741 | //qDebug("%d %d %d - d %d", mo, days[mSelStartT].month() , days[mSelEndT].month(), days[mSelEndT].day() ); |
@@ -918,57 +937,58 @@ void KODayMatrix::paintEvent(QPaintEvent * pevent) | |||
918 | 937 | ||
919 | int addCol = 0; | 938 | int addCol = 0; |
920 | int addRow = 0; | 939 | int addRow = 0; |
921 | if ( colModulo ) { | 940 | if ( colModulo ) { |
922 | if ( col >= 7 - colModulo ) | 941 | if ( col >= 7 - colModulo ) |
923 | addCol = col - 7 + colModulo; | 942 | addCol = col - 7 + colModulo; |
924 | } | 943 | } |
925 | if ( rowModulo ) { | 944 | if ( rowModulo ) { |
926 | if ( row >= 6 - rowModulo ) | 945 | if ( row >= 6 - rowModulo ) |
927 | addRow = row - 5 + rowModulo; | 946 | addRow = row - 5 + rowModulo; |
928 | } | 947 | } |
929 | //qDebug("add %d %d -- %d %d ", col, addCol, row, addRow); | 948 | //qDebug("add %d %d -- %d %d ", col, addCol, row, addRow); |
930 | ++addCol;//++addCol; | 949 | ++addCol;//++addCol; |
931 | if ( row == 0) | 950 | if ( row == 0) |
932 | addRow = 1; | 951 | addRow = 1; |
933 | p.drawText(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight, | 952 | p.drawText(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight, |
934 | Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]); | 953 | Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]); |
935 | 954 | ||
936 | // reset color to actual color | 955 | // reset color to actual color |
937 | if (!mHolidays[i].isNull()) { | 956 | if (!mHolidays[i].isNull()) { |
938 | p.setPen(actcol); | 957 | p.setPen(actcol); |
939 | } | 958 | } |
940 | // reset bold font to plain font | 959 | // reset bold font to plain font |
941 | if ( eDays.testBit(i)) { | 960 | if ( eDays.testBit(i)) { |
942 | QFont myFont = font(); | 961 | QFont myFont = font(); |
943 | myFont.setBold(false); | 962 | myFont.setBold(false); |
944 | p.setFont(myFont); | 963 | p.setFont(myFont); |
945 | } | 964 | } |
946 | } | 965 | } |
947 | } else { | 966 | } else { |
948 | //qDebug("NO redraw "); | 967 | //qDebug("NO redraw "); |
949 | } | 968 | } |
950 | bitBlt (this, 0, 0, &myPix, 0 ,0,width(), height() ,CopyROP); | 969 | |
970 | bitBlt (this, pevent->rect().topLeft(), &myPix , pevent->rect() ,CopyROP); | ||
951 | mRedrawNeeded = false; | 971 | mRedrawNeeded = false; |
952 | } | 972 | } |
953 | 973 | ||
954 | // ---------------------------------------------------------------------------- | 974 | // ---------------------------------------------------------------------------- |
955 | // R E SI Z E E V E N T H A N D L I N G | 975 | // R E SI Z E E V E N T H A N D L I N G |
956 | // ---------------------------------------------------------------------------- | 976 | // ---------------------------------------------------------------------------- |
957 | 977 | ||
958 | void KODayMatrix::resizeEvent(QResizeEvent *) | 978 | void KODayMatrix::resizeEvent(QResizeEvent *) |
959 | { | 979 | { |
960 | QRect sz = frameRect(); | 980 | QRect sz = frameRect(); |
961 | daysize.setHeight(sz.height()*7 / NUMDAYS); | 981 | daysize.setHeight(sz.height()*7 / NUMDAYS); |
962 | daysize.setWidth(sz.width() / 7); | 982 | daysize.setWidth(sz.width() / 7); |
963 | } | 983 | } |
964 | 984 | ||
965 | QSize KODayMatrix::sizeHint() const | 985 | QSize KODayMatrix::sizeHint() const |
966 | { | 986 | { |
967 | 987 | ||
968 | QFontMetrics fm ( font() ); | 988 | QFontMetrics fm ( font() ); |
969 | int wid = fm.width( "30") *7+3; | 989 | int wid = fm.width( "30") *7+3; |
970 | int hei = fm.height() * 6+3; | 990 | int hei = fm.height() * 6+3; |
971 | //qDebug("KODayMatrix::sizeHint()********************* %d %d", wid , hei); | 991 | //qDebug("KODayMatrix::sizeHint()********************* %d %d", wid , hei); |
972 | return QSize ( wid, hei ); | 992 | return QSize ( wid, hei ); |
973 | 993 | ||
974 | } | 994 | } |
diff --git a/korganizer/kodaymatrix.h b/korganizer/kodaymatrix.h index 731117c..d725ead 100644 --- a/korganizer/kodaymatrix.h +++ b/korganizer/kodaymatrix.h | |||
@@ -198,64 +198,65 @@ signals: | |||
198 | * | 198 | * |
199 | * @param daylist list of days that have been selected by the user | 199 | * @param daylist list of days that have been selected by the user |
200 | */ | 200 | */ |
201 | void selected( const KCal::DateList &daylist ); | 201 | void selected( const KCal::DateList &daylist ); |
202 | 202 | ||
203 | /** emitted if the user has dropped an event inside the matrix | 203 | /** emitted if the user has dropped an event inside the matrix |
204 | * | 204 | * |
205 | * @param event the dropped calendar event | 205 | * @param event the dropped calendar event |
206 | */ | 206 | */ |
207 | void eventDropped(Event *event); | 207 | void eventDropped(Event *event); |
208 | 208 | ||
209 | protected: | 209 | protected: |
210 | 210 | ||
211 | void paintEvent(QPaintEvent *ev); | 211 | void paintEvent(QPaintEvent *ev); |
212 | 212 | ||
213 | void mousePressEvent (QMouseEvent* e); | 213 | void mousePressEvent (QMouseEvent* e); |
214 | 214 | ||
215 | void mouseReleaseEvent (QMouseEvent* e); | 215 | void mouseReleaseEvent (QMouseEvent* e); |
216 | 216 | ||
217 | void mouseMoveEvent (QMouseEvent* e); | 217 | void mouseMoveEvent (QMouseEvent* e); |
218 | 218 | ||
219 | void dragEnterEvent(QDragEnterEvent *); | 219 | void dragEnterEvent(QDragEnterEvent *); |
220 | 220 | ||
221 | void dragMoveEvent(QDragMoveEvent *); | 221 | void dragMoveEvent(QDragMoveEvent *); |
222 | 222 | ||
223 | void dragLeaveEvent(QDragLeaveEvent *); | 223 | void dragLeaveEvent(QDragLeaveEvent *); |
224 | 224 | ||
225 | void dropEvent(QDropEvent *); | 225 | void dropEvent(QDropEvent *); |
226 | 226 | ||
227 | void resizeEvent(QResizeEvent *); | 227 | void resizeEvent(QResizeEvent *); |
228 | 228 | ||
229 | private: | 229 | private: |
230 | int oldW, oldH; | ||
230 | bool mRedrawNeeded; | 231 | bool mRedrawNeeded; |
231 | KODaymatrixWhatsThis* mKODaymatrixWhatsThis; | 232 | KODaymatrixWhatsThis* mKODaymatrixWhatsThis; |
232 | bool mouseDown; | 233 | bool mouseDown; |
233 | QBitArray bDays; | 234 | QBitArray bDays; |
234 | QBitArray hDays; | 235 | QBitArray hDays; |
235 | QBitArray eDays; | 236 | QBitArray eDays; |
236 | QPixmap myPix; | 237 | QPixmap myPix; |
237 | QTimer* mUpdateTimer; | 238 | QTimer* mUpdateTimer; |
238 | QTimer* mRepaintTimer; | 239 | QTimer* mRepaintTimer; |
239 | bool mDayChanged; | 240 | bool mDayChanged; |
240 | bool mPendingUpdateBeforeRepaint; | 241 | bool mPendingUpdateBeforeRepaint; |
241 | 242 | ||
242 | /** returns the index of the day located at the matrix's widget (x,y) position. | 243 | /** returns the index of the day located at the matrix's widget (x,y) position. |
243 | * | 244 | * |
244 | * @param x horizontal coordinate | 245 | * @param x horizontal coordinate |
245 | * @param y vertical coordinate | 246 | * @param y vertical coordinate |
246 | */ | 247 | */ |
247 | int getDayIndexFrom(int x, int y); | 248 | int getDayIndexFrom(int x, int y); |
248 | 249 | ||
249 | /** calculates a "shaded" color from the supplied color object. | 250 | /** calculates a "shaded" color from the supplied color object. |
250 | * (Copied from Cornelius's kdpdatebutton.cpp) | 251 | * (Copied from Cornelius's kdpdatebutton.cpp) |
251 | * | 252 | * |
252 | * @param color source based on which a shaded color should be calculated. | 253 | * @param color source based on which a shaded color should be calculated. |
253 | */ | 254 | */ |
254 | QColor getShadedColor(QColor color); | 255 | QColor getShadedColor(QColor color); |
255 | 256 | ||
256 | /** number of days to be displayed. For now there is no support for any other number then 42. | 257 | /** number of days to be displayed. For now there is no support for any other number then 42. |
257 | so change it at your own risk :o) */ | 258 | so change it at your own risk :o) */ |
258 | static const int NUMDAYS; | 259 | static const int NUMDAYS; |
259 | 260 | ||
260 | /** calendar instance to be queried for holidays, events, ... */ | 261 | /** calendar instance to be queried for holidays, events, ... */ |
261 | Calendar *mCalendar; | 262 | Calendar *mCalendar; |