summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2005-03-21 16:28:05 (UTC)
committer zautrix <zautrix>2005-03-21 16:28:05 (UTC)
commit070055b60f76ffd6907e44a4ffc2d752578f3211 (patch) (unidiff)
tree727346a900b4712f36842c460bfa0fef1ba6382b /korganizer
parent86c420a68008e4430bd769ebdecdfa430ba552f5 (diff)
downloadkdepimpi-070055b60f76ffd6907e44a4ffc2d752578f3211.zip
kdepimpi-070055b60f76ffd6907e44a4ffc2d752578f3211.tar.gz
kdepimpi-070055b60f76ffd6907e44a4ffc2d752578f3211.tar.bz2
fix
Diffstat (limited to 'korganizer') (more/less context) (show whitespace changes)
-rw-r--r--korganizer/datenavigatorcontainer.cpp5
-rw-r--r--korganizer/kodaymatrix.cpp9
2 files changed, 13 insertions, 1 deletions
diff --git a/korganizer/datenavigatorcontainer.cpp b/korganizer/datenavigatorcontainer.cpp
index 9506768..b147427 100644
--- a/korganizer/datenavigatorcontainer.cpp
+++ b/korganizer/datenavigatorcontainer.cpp
@@ -1,262 +1,267 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 3
4 Copyright (c) 2001,2002,2003 Cornelius Schumacher <schumacher@kde.org> 4 Copyright (c) 2001,2002,2003 Cornelius Schumacher <schumacher@kde.org>
5 Copyright (C) 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com> 5 Copyright (C) 2003-2004 Reinhold Kainhofer <reinhold@kainhofer.com>
6 6
7 This program is free software; you can redistribute it and/or modify 7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by 8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or 9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version. 10 (at your option) any later version.
11 11
12 This program is distributed in the hope that it will be useful, 12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details. 15 GNU General Public License for more details.
16 16
17 You should have received a copy of the GNU General Public License 17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software 18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20 20
21 As a special exception, permission is given to link this program 21 As a special exception, permission is given to link this program
22 with any edition of Qt, and distribute the resulting executable, 22 with any edition of Qt, and distribute the resulting executable,
23 without including the source code for Qt in the source distribution. 23 without including the source code for Qt in the source distribution.
24*/ 24*/
25 25
26#include <kdebug.h> 26#include <kdebug.h>
27#include <klocale.h> 27#include <klocale.h>
28 28
29//#include "koglobals.h" 29//#include "koglobals.h"
30#include "navigatorbar.h" 30#include "navigatorbar.h"
31#include "kdatenavigator.h" 31#include "kdatenavigator.h"
32 32
33#include <kcalendarsystem.h> 33#include <kcalendarsystem.h>
34 34
35#include "datenavigatorcontainer.h" 35#include "datenavigatorcontainer.h"
36#include "koprefs.h" 36#include "koprefs.h"
37 37
38DateNavigatorContainer::DateNavigatorContainer( QWidget *parent, 38DateNavigatorContainer::DateNavigatorContainer( QWidget *parent,
39 const char *name ) 39 const char *name )
40 : QWidget( parent, name ), mCalendar( 0 ), 40 : QWidget( parent, name ), mCalendar( 0 ),
41 mHorizontalCount( 1 ), mVerticalCount( 1 ) 41 mHorizontalCount( 1 ), mVerticalCount( 1 )
42{ 42{
43 mExtraViews.setAutoDelete( true ); 43 mExtraViews.setAutoDelete( true );
44 44
45 mNavigatorView = new KDateNavigator( this, name ); 45 mNavigatorView = new KDateNavigator( this, name );
46 46
47 connectNavigatorView( mNavigatorView ); 47 connectNavigatorView( mNavigatorView );
48} 48}
49 49
50DateNavigatorContainer::~DateNavigatorContainer() 50DateNavigatorContainer::~DateNavigatorContainer()
51{ 51{
52} 52}
53 53
54void DateNavigatorContainer::connectNavigatorView( KDateNavigator *v ) 54void DateNavigatorContainer::connectNavigatorView( KDateNavigator *v )
55{ 55{
56 connect( v, SIGNAL( datesSelected( const KCal::DateList & ) ), 56 connect( v, SIGNAL( datesSelected( const KCal::DateList & ) ),
57 SIGNAL( datesSelected( const KCal::DateList & ) ) ); 57 SIGNAL( datesSelected( const KCal::DateList & ) ) );
58#if 0 58#if 0
59 connect( v, SIGNAL( incidenceDropped( Incidence *, const QDate & ) ), 59 connect( v, SIGNAL( incidenceDropped( Incidence *, const QDate & ) ),
60 SIGNAL( incidenceDropped( Incidence *, const QDate & ) ) ); 60 SIGNAL( incidenceDropped( Incidence *, const QDate & ) ) );
61 connect( v, SIGNAL( incidenceDroppedMove( Incidence *, const QDate & ) ), 61 connect( v, SIGNAL( incidenceDroppedMove( Incidence *, const QDate & ) ),
62 SIGNAL( incidenceDroppedMove( Incidence *, const QDate & ) ) ); 62 SIGNAL( incidenceDroppedMove( Incidence *, const QDate & ) ) );
63#endif 63#endif
64 connect( v, SIGNAL( weekClicked( const QDate & ) ), 64 connect( v, SIGNAL( weekClicked( const QDate & ) ),
65 SIGNAL( weekClicked( const QDate & ) ) ); 65 SIGNAL( weekClicked( const QDate & ) ) );
66 66
67 connect( v, SIGNAL( goPrevious() ), SIGNAL( goPrevious() ) ); 67 connect( v, SIGNAL( goPrevious() ), SIGNAL( goPrevious() ) );
68 connect( v, SIGNAL( goNext() ), SIGNAL( goNext() ) ); 68 connect( v, SIGNAL( goNext() ), SIGNAL( goNext() ) );
69 69
70 connect( v, SIGNAL( goNextMonth() ), SIGNAL( goNextMonth() ) ); 70 connect( v, SIGNAL( goNextMonth() ), SIGNAL( goNextMonth() ) );
71 connect( v, SIGNAL( goPrevMonth() ), SIGNAL( goPrevMonth() ) ); 71 connect( v, SIGNAL( goPrevMonth() ), SIGNAL( goPrevMonth() ) );
72 connect( v, SIGNAL( goNextYear() ), SIGNAL( goNextYear() ) ); 72 connect( v, SIGNAL( goNextYear() ), SIGNAL( goNextYear() ) );
73 connect( v, SIGNAL( goPrevYear() ), SIGNAL( goPrevYear() ) ); 73 connect( v, SIGNAL( goPrevYear() ), SIGNAL( goPrevYear() ) );
74 74
75 connect( v, SIGNAL( monthSelected( int ) ), SIGNAL( monthSelected( int ) ) ); 75 connect( v, SIGNAL( monthSelected( int ) ), SIGNAL( monthSelected( int ) ) );
76} 76}
77 77
78void DateNavigatorContainer::setCalendar( Calendar *cal ) 78void DateNavigatorContainer::setCalendar( Calendar *cal )
79{ 79{
80 mCalendar = cal; 80 mCalendar = cal;
81 mNavigatorView->setCalendar( cal ); 81 mNavigatorView->setCalendar( cal );
82 KDateNavigator *n; 82 KDateNavigator *n;
83 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) { 83 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
84 n->setCalendar( cal ); 84 n->setCalendar( cal );
85 } 85 }
86} 86}
87 87
88void DateNavigatorContainer::updateDayMatrix() 88void DateNavigatorContainer::updateDayMatrix()
89{ 89{
90 mNavigatorView->updateDayMatrix(); 90 mNavigatorView->updateDayMatrix();
91 KDateNavigator *n; 91 KDateNavigator *n;
92 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) { 92 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
93 n->updateDayMatrix(); 93 n->updateDayMatrix();
94 } 94 }
95} 95}
96 96
97void DateNavigatorContainer::updateToday() 97void DateNavigatorContainer::updateToday()
98{ 98{
99 qDebug("DateNavigatorContainer::updateToday() NOT IMPL "); 99 qDebug("DateNavigatorContainer::updateToday() NOT IMPL ");
100#if 0 100#if 0
101 mNavigatorView->updateToday(); 101 mNavigatorView->updateToday();
102 KDateNavigator *n; 102 KDateNavigator *n;
103 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) { 103 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
104 n->updateToday(); 104 n->updateToday();
105 } 105 }
106#endif 106#endif
107} 107}
108 108
109void DateNavigatorContainer::updateView() 109void DateNavigatorContainer::updateView()
110{ 110{
111 mNavigatorView->updateView(); 111 mNavigatorView->updateView();
112 KDateNavigator *n; 112 KDateNavigator *n;
113 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) { 113 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
114 n->updateView(); 114 n->updateView();
115 } 115 }
116} 116}
117 117
118void DateNavigatorContainer::updateConfig() 118void DateNavigatorContainer::updateConfig()
119{ 119{
120 mNavigatorView->updateConfig(); 120 mNavigatorView->updateConfig();
121 KDateNavigator *n; 121 KDateNavigator *n;
122 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) { 122 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
123 n->updateConfig(); 123 n->updateConfig();
124 } 124 }
125} 125}
126 126
127void DateNavigatorContainer::selectDates( const DateList &dateList ) 127void DateNavigatorContainer::selectDates( const DateList &dateList )
128{ 128{
129 mNavigatorView->selectDates( dateList ); 129 mNavigatorView->selectDates( dateList );
130 setBaseDates(); 130 setBaseDates();
131 if ( mExtraViews.count() ) { 131 if ( mExtraViews.count() ) {
132 KDateNavigator *view = mExtraViews.at( 0 ); 132 KDateNavigator *view = mExtraViews.at( 0 );
133 view->dayMatrix()->setSelectedDaysFrom(*(dateList.begin()), *(--dateList.end())); 133 view->dayMatrix()->setSelectedDaysFrom(*(dateList.begin()), *(--dateList.end()));
134 view->dayMatrix()->repaint( false ); 134 view->dayMatrix()->repaint( false );
135 if ( mExtraViews.count() > 1 ) {
136 KDateNavigator *view = mExtraViews.at( 1 );
137 view->dayMatrix()->setSelectedDaysFrom(*(dateList.begin()), *(--dateList.end()));
138 view->dayMatrix()->repaint( false );
139 }
135 } 140 }
136} 141}
137 142
138void DateNavigatorContainer::setBaseDates() 143void DateNavigatorContainer::setBaseDates()
139{ 144{
140 KCal::DateList dateList = mNavigatorView->selectedDates(); 145 KCal::DateList dateList = mNavigatorView->selectedDates();
141 if ( dateList.isEmpty() ) { 146 if ( dateList.isEmpty() ) {
142 kdError() << "DateNavigatorContainer::selectDates() empty list." << endl; 147 kdError() << "DateNavigatorContainer::selectDates() empty list." << endl;
143 } 148 }
144 QDate baseDate = dateList.first(); 149 QDate baseDate = dateList.first();
145 KDateNavigator *n; 150 KDateNavigator *n;
146 bool doRepaint = false; // skip first repaint 151 bool doRepaint = false; // skip first repaint
147 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) { 152 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
148 baseDate = baseDate.addDays( baseDate.daysInMonth () - baseDate.day() +1 ); 153 baseDate = baseDate.addDays( baseDate.daysInMonth () - baseDate.day() +1 );
149 n->setBaseDate( baseDate, doRepaint ); 154 n->setBaseDate( baseDate, doRepaint );
150 doRepaint = true; 155 doRepaint = true;
151 } 156 }
152} 157}
153 158
154void DateNavigatorContainer::resizeEvent( QResizeEvent * e ) 159void DateNavigatorContainer::resizeEvent( QResizeEvent * e )
155{ 160{
156#if 0 161#if 0
157 kdDebug(5850) << "DateNavigatorContainer::resizeEvent()" << endl; 162 kdDebug(5850) << "DateNavigatorContainer::resizeEvent()" << endl;
158 kdDebug(5850) << " CURRENT SIZE: " << size() << endl; 163 kdDebug(5850) << " CURRENT SIZE: " << size() << endl;
159 kdDebug(5850) << " MINIMUM SIZEHINT: " << minimumSizeHint() << endl; 164 kdDebug(5850) << " MINIMUM SIZEHINT: " << minimumSizeHint() << endl;
160 kdDebug(5850) << " SIZEHINT: " << sizeHint() << endl; 165 kdDebug(5850) << " SIZEHINT: " << sizeHint() << endl;
161 kdDebug(5850) << " MINIMUM SIZE: " << minimumSize() << endl; 166 kdDebug(5850) << " MINIMUM SIZE: " << minimumSize() << endl;
162#endif 167#endif
163 //QSize minSize = mNavigatorView->sizeHintTwoButtons(); 168 //QSize minSize = mNavigatorView->sizeHintTwoButtons();
164 QSize minSize = mNavigatorView->yourSizeHint(); 169 QSize minSize = mNavigatorView->yourSizeHint();
165 170
166// kdDebug(5850) << " NAVIGATORVIEW minimumSizeHint: " << minSize << endl; 171// kdDebug(5850) << " NAVIGATORVIEW minimumSizeHint: " << minSize << endl;
167 172
168 int verticalCount = size().height() / minSize.height(); 173 int verticalCount = size().height() / minSize.height();
169 int horizontalCount = size().width() / minSize.width(); 174 int horizontalCount = size().width() / minSize.width();
170 //qDebug(" wattdatt %d new %d %d ", size().width() ,e->size().width() , minSize.width() ); 175 //qDebug(" wattdatt %d new %d %d ", size().width() ,e->size().width() , minSize.width() );
171 //qDebug("COUNT %d %d %d %d ", verticalCount, horizontalCount , mVerticalCount, mHorizontalCount ); 176 //qDebug("COUNT %d %d %d %d ", verticalCount, horizontalCount , mVerticalCount, mHorizontalCount );
172 bool fontchange = false; 177 bool fontchange = false;
173 QFont fo; 178 QFont fo;
174 if ( horizontalCount != mHorizontalCount || 179 if ( horizontalCount != mHorizontalCount ||
175 verticalCount != mVerticalCount ) { 180 verticalCount != mVerticalCount ) {
176 uint count = horizontalCount * verticalCount; 181 uint count = horizontalCount * verticalCount;
177 if ( count == 0 ) { 182 if ( count == 0 ) {
178 bool ok; 183 bool ok;
179 fo = mNavigatorView->yourFontHint( size() , &ok); 184 fo = mNavigatorView->yourFontHint( size() , &ok);
180 //mNavigatorView->resize( size() ); 185 //mNavigatorView->resize( size() );
181 //if ( ! ok ) 186 //if ( ! ok )
182 // return; 187 // return;
183 minSize = mNavigatorView->sizeHintTwoButtons(); 188 minSize = mNavigatorView->sizeHintTwoButtons();
184 verticalCount = size().height() / minSize.height(); 189 verticalCount = size().height() / minSize.height();
185 horizontalCount = size().width() / minSize.width(); 190 horizontalCount = size().width() / minSize.width();
186 if ( horizontalCount == 0 ) 191 if ( horizontalCount == 0 )
187 horizontalCount = 1; 192 horizontalCount = 1;
188 if ( verticalCount == 0 ) 193 if ( verticalCount == 0 )
189 verticalCount = 1; 194 verticalCount = 1;
190 fontchange = true; 195 fontchange = true;
191 count = horizontalCount * verticalCount; 196 count = horizontalCount * verticalCount;
192 } else { 197 } else {
193 if ( mNavigatorView->fontChanged() ) { 198 if ( mNavigatorView->fontChanged() ) {
194 fontchange = true; 199 fontchange = true;
195 fo = KOPrefs::instance()->mDateNavigatorFont; 200 fo = KOPrefs::instance()->mDateNavigatorFont;
196 mNavigatorView->changeFont( fo ); 201 mNavigatorView->changeFont( fo );
197 mNavigatorView->unsetFontChanged(); 202 mNavigatorView->unsetFontChanged();
198 } 203 }
199 } 204 }
200 205
201 while ( count > ( mExtraViews.count() + 1 ) ) { 206 while ( count > ( mExtraViews.count() + 1 ) ) {
202 KDateNavigator *n = new KDateNavigator( this ); 207 KDateNavigator *n = new KDateNavigator( this );
203 n->setMonthSignalOffset ( mExtraViews.count()+1 ); 208 n->setMonthSignalOffset ( mExtraViews.count()+1 );
204 mExtraViews.append( n ); 209 mExtraViews.append( n );
205 n->setCalendar( mCalendar ); 210 n->setCalendar( mCalendar );
206 setBaseDates(); 211 setBaseDates();
207 connectNavigatorView( n ); 212 connectNavigatorView( n );
208 n->show(); 213 n->show();
209 } 214 }
210 int iii = 0; 215 int iii = 0;
211 while ( iii < ( mExtraViews.count() ) ) { 216 while ( iii < ( mExtraViews.count() ) ) {
212 if ( iii < count-1 ) 217 if ( iii < count-1 )
213 mExtraViews.at( iii )->show(); 218 mExtraViews.at( iii )->show();
214 else 219 else
215 mExtraViews.at( iii )->hide(); 220 mExtraViews.at( iii )->hide();
216 ++iii; 221 ++iii;
217 } 222 }
218 if ( fontchange ) { 223 if ( fontchange ) {
219 //mNavigatorView->changeFont( fo ); 224 //mNavigatorView->changeFont( fo );
220 uint i; 225 uint i;
221 for( i = 0; i < mExtraViews.count(); ++i ) { 226 for( i = 0; i < mExtraViews.count(); ++i ) {
222 KDateNavigator *view = mExtraViews.at( i ); 227 KDateNavigator *view = mExtraViews.at( i );
223 view->changeFont( fo ); 228 view->changeFont( fo );
224 } 229 }
225 } 230 }
226 mHorizontalCount = horizontalCount; 231 mHorizontalCount = horizontalCount;
227 mVerticalCount = verticalCount; 232 mVerticalCount = verticalCount;
228 } 233 }
229 int height = size().height() / verticalCount; 234 int height = size().height() / verticalCount;
230 int width = size().width() / horizontalCount; 235 int width = size().width() / horizontalCount;
231 236
232 NavigatorBar *bar = mNavigatorView->navigatorBar(); 237 NavigatorBar *bar = mNavigatorView->navigatorBar();
233 if ( horizontalCount > 1 ) bar->showButtons( true, false ); 238 if ( horizontalCount > 1 ) bar->showButtons( true, false );
234 else bar->showButtons( true, true ); 239 else bar->showButtons( true, true );
235 240
236 mNavigatorView->setGeometry(0, 241 mNavigatorView->setGeometry(0,
237 0, width, height ); 242 0, width, height );
238 for( uint i = 0; i < mExtraViews.count(); ++i ) { 243 for( uint i = 0; i < mExtraViews.count(); ++i ) {
239 int x = ( i + 1 ) % horizontalCount; 244 int x = ( i + 1 ) % horizontalCount;
240 int y = ( i + 1 ) / horizontalCount; 245 int y = ( i + 1 ) / horizontalCount;
241 246
242 KDateNavigator *view = mExtraViews.at( i ); 247 KDateNavigator *view = mExtraViews.at( i );
243 bar = view->navigatorBar(); 248 bar = view->navigatorBar();
244 if ( y > 0 ) bar->showButtons( false, false ); 249 if ( y > 0 ) bar->showButtons( false, false );
245 else { 250 else {
246 if ( x + 1 == horizontalCount ) bar->showButtons( false, true ); 251 if ( x + 1 == horizontalCount ) bar->showButtons( false, true );
247 else bar->showButtons( false, false ); 252 else bar->showButtons( false, false );
248 } 253 }
249 view->setGeometry( x * width, 254 view->setGeometry( x * width,
250 y * height, width, height ); 255 y * height, width, height );
251 } 256 }
252} 257}
253 258
254QSize DateNavigatorContainer::minimumSizeHint() const 259QSize DateNavigatorContainer::minimumSizeHint() const
255{ 260{
256 return mNavigatorView->minimumSizeHint(); 261 return mNavigatorView->minimumSizeHint();
257} 262}
258 263
259QSize DateNavigatorContainer::sizeHint() const 264QSize DateNavigatorContainer::sizeHint() const
260{ 265{
261 return mNavigatorView->sizeHint(); 266 return mNavigatorView->sizeHint();
262} 267}
diff --git a/korganizer/kodaymatrix.cpp b/korganizer/kodaymatrix.cpp
index a776cb6..d7a4112 100644
--- a/korganizer/kodaymatrix.cpp
+++ b/korganizer/kodaymatrix.cpp
@@ -101,384 +101,385 @@ void DynamicTip::maybeTip( const QPoint &pos )
101 101
102const int KODayMatrix::NOSELECTION = -1000; 102const int KODayMatrix::NOSELECTION = -1000;
103const int KODayMatrix::NUMDAYS = 42; 103const int KODayMatrix::NUMDAYS = 42;
104 104
105KODayMatrix::KODayMatrix( QWidget *parent, const char *name ) 105KODayMatrix::KODayMatrix( QWidget *parent, const char *name )
106 : QFrame( parent, name ), mCalendar( 0 ) 106 : QFrame( parent, name ), mCalendar( 0 )
107 107
108#if 0 108#if 0
109KODayMatrix::KODayMatrix(QWidget *parent, Calendar* calendar, QDate date, const char *name) : 109KODayMatrix::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 mKODaymatrixWhatsThis = new KODaymatrixWhatsThis(this); 113 mKODaymatrixWhatsThis = new KODaymatrixWhatsThis(this);
114 mPendingUpdateBeforeRepaint = false; 114 mPendingUpdateBeforeRepaint = false;
115 mouseDown = false; 115 mouseDown = false;
116 // initialize dynamic arrays 116 // initialize dynamic arrays
117 bDays.resize ( NUMDAYS ); 117 bDays.resize ( NUMDAYS );
118 days = new QDate[NUMDAYS]; 118 days = new QDate[NUMDAYS];
119 daylbls = new QString[NUMDAYS]; 119 daylbls = new QString[NUMDAYS];
120 events = new int[NUMDAYS]; 120 events = new int[NUMDAYS];
121 mToolTip = new DynamicTip(this); 121 mToolTip = new DynamicTip(this);
122 122
123 // set default values used for drawing the matrix 123 // set default values used for drawing the matrix
124 mDefaultBackColor = palette().active().base(); 124 mDefaultBackColor = palette().active().base();
125 mDefaultTextColor = palette().active().foreground(); 125 mDefaultTextColor = palette().active().foreground();
126 mDefaultTextColorShaded = getShadedColor(mDefaultTextColor); 126 mDefaultTextColorShaded = getShadedColor(mDefaultTextColor);
127 mHolidayColorShaded = getShadedColor(KOPrefs::instance()->mHolidayColor); 127 mHolidayColorShaded = getShadedColor(KOPrefs::instance()->mHolidayColor);
128 mSelectedDaysColor = QColor("white"); 128 mSelectedDaysColor = QColor("white");
129 mTodayMarginWidth = 2; 129 mTodayMarginWidth = 2;
130 mSelEnd = mSelStart = NOSELECTION; 130 mSelEnd = mSelStart = NOSELECTION;
131 131
132 setAcceptDrops(true); 132 setAcceptDrops(true);
133 //setFont( QFont("Arial", 10) ); 133 //setFont( QFont("Arial", 10) );
134 134
135 mUpdateTimer = new QTimer( this ); 135 mUpdateTimer = new QTimer( this );
136 connect (mUpdateTimer ,SIGNAL(timeout()), this, SLOT ( updateViewTimed() )); 136 connect (mUpdateTimer ,SIGNAL(timeout()), this, SLOT ( updateViewTimed() ));
137 mRepaintTimer = new QTimer( this ); 137 mRepaintTimer = new QTimer( this );
138 connect (mRepaintTimer ,SIGNAL(timeout()), this, SLOT ( repaintViewTimed() )); 138 connect (mRepaintTimer ,SIGNAL(timeout()), this, SLOT ( repaintViewTimed() ));
139 mDayChanged = false; 139 mDayChanged = false;
140 updateView(); 140 updateView();
141} 141}
142QString KODayMatrix::getWhatsThisText( QPoint p ) 142QString KODayMatrix::getWhatsThisText( QPoint p )
143{ 143{
144 144
145 int tmp = getDayIndexFrom(p.x(), p.y()); 145 int tmp = getDayIndexFrom(p.x(), p.y());
146 if ( tmp < 0 || tmp > NUMDAYS-1 || !mCalendar ) 146 if ( tmp < 0 || tmp > NUMDAYS-1 || !mCalendar )
147 return QString(); 147 return QString();
148 QDate mDate = days[tmp]; 148 QDate mDate = days[tmp];
149 QPtrList<Event> eventlist = mCalendar->events(mDate); 149 QPtrList<Event> eventlist = mCalendar->events(mDate);
150 Event *event; 150 Event *event;
151 QStringList mToolTip; 151 QStringList mToolTip;
152 for(event=eventlist.first();event != 0;event=eventlist.next()) { 152 for(event=eventlist.first();event != 0;event=eventlist.next()) {
153 QString mToolTipText; 153 QString mToolTipText;
154 QString text; 154 QString text;
155 int multiday = 0;// 1 = start, 2 = midddle, 3 = end day 155 int multiday = 0;// 1 = start, 2 = midddle, 3 = end day
156 if (event->isMultiDay()) { 156 if (event->isMultiDay()) {
157 QString prefix = "<->";multiday = 2; 157 QString prefix = "<->";multiday = 2;
158 QString time; 158 QString time;
159 if ( event->doesRecur() ) { 159 if ( event->doesRecur() ) {
160 if ( event->recursOn( mDate) ) { 160 if ( event->recursOn( mDate) ) {
161 prefix ="->" ;multiday = 1; 161 prefix ="->" ;multiday = 1;
162 } 162 }
163 else { 163 else {
164 int days = event->dtStart().date().daysTo ( event->dtEnd().date() ); 164 int days = event->dtStart().date().daysTo ( event->dtEnd().date() );
165 if ( event->recursOn( mDate.addDays( -days)) ) { 165 if ( event->recursOn( mDate.addDays( -days)) ) {
166 prefix ="<-" ;multiday = 3; 166 prefix ="<-" ;multiday = 3;
167 } 167 }
168 } 168 }
169 } else { 169 } else {
170 if (mDate == event->dtStart().date()) { 170 if (mDate == event->dtStart().date()) {
171 prefix ="->" ;multiday = 1; 171 prefix ="->" ;multiday = 1;
172 } else if (mDate == event->dtEnd().date()) { 172 } else if (mDate == event->dtEnd().date()) {
173 prefix ="<-" ;multiday = 3; 173 prefix ="<-" ;multiday = 3;
174 } 174 }
175 } 175 }
176 if ( !event->doesFloat() ) { 176 if ( !event->doesFloat() ) {
177 if ( mDate == event->dtStart().date () ) 177 if ( mDate == event->dtStart().date () )
178 time = KGlobal::locale()->formatTime(event->dtStart().time())+" "; 178 time = KGlobal::locale()->formatTime(event->dtStart().time())+" ";
179 else if ( mDate == event->dtEnd().date () ) 179 else if ( mDate == event->dtEnd().date () )
180 time = KGlobal::locale()->formatTime(event->dtEnd().time())+" "; 180 time = KGlobal::locale()->formatTime(event->dtEnd().time())+" ";
181 181
182 } 182 }
183 text = time + event->summary(); 183 text = time + event->summary();
184 mToolTipText += prefix + text; 184 mToolTipText += prefix + text;
185 } else { 185 } else {
186 if (event->doesFloat()) { 186 if (event->doesFloat()) {
187 text = event->summary(); 187 text = event->summary();
188 mToolTipText += text; 188 mToolTipText += text;
189 } 189 }
190 else { 190 else {
191 text = KGlobal::locale()->formatTime(event->dtStart().time()); 191 text = KGlobal::locale()->formatTime(event->dtStart().time());
192 text += " " + event->summary(); 192 text += " " + event->summary();
193 mToolTipText += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary(); 193 mToolTipText += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary();
194 } 194 }
195 } 195 }
196 if ( !event->location().isEmpty() ) 196 if ( !event->location().isEmpty() )
197 mToolTipText += " (" + event->location() + ")"; 197 mToolTipText += " (" + event->location() + ")";
198#if QT_VERSION >= 0x030000 198#if QT_VERSION >= 0x030000
199 mToolTipText.replace( '<' , "&lt;" ); 199 mToolTipText.replace( '<' , "&lt;" );
200 mToolTipText.replace( '>' , "&gt;" ); 200 mToolTipText.replace( '>' , "&gt;" );
201#else 201#else
202 if ( mToolTipText.find ('<') >= 0 ) { 202 if ( mToolTipText.find ('<') >= 0 ) {
203 mToolTipText.replace( QRegExp("<") , "&lt;" ); 203 mToolTipText.replace( QRegExp("<") , "&lt;" );
204 } 204 }
205 if ( mToolTipText.find ('>') >= 0 ) { 205 if ( mToolTipText.find ('>') >= 0 ) {
206 mToolTipText.replace( QRegExp(">") , "&gt;" ); 206 mToolTipText.replace( QRegExp(">") , "&gt;" );
207 } 207 }
208#endif 208#endif
209 //qDebug("TTT: %s ", mToolTipText.latin1()); 209 //qDebug("TTT: %s ", mToolTipText.latin1());
210 mToolTip.append( mToolTipText ); 210 mToolTip.append( mToolTipText );
211 } 211 }
212 mToolTip.sort(); 212 mToolTip.sort();
213 return "<b>"+KGlobal::locale()->formatDate(days[tmp]) + "</b><br>" + mToolTip.join("<br>"); 213 return "<b>"+KGlobal::locale()->formatDate(days[tmp]) + "</b><br>" + mToolTip.join("<br>");
214} 214}
215void KODayMatrix::setCalendar( Calendar *cal ) 215void KODayMatrix::setCalendar( Calendar *cal )
216{ 216{
217 mCalendar = cal; 217 mCalendar = cal;
218 218
219 setAcceptDrops( mCalendar ); 219 setAcceptDrops( mCalendar );
220 220
221 updateEvents(); 221 updateEvents();
222} 222}
223 223
224QColor KODayMatrix::getShadedColor(QColor color) 224QColor KODayMatrix::getShadedColor(QColor color)
225{ 225{
226 QColor shaded; 226 QColor shaded;
227 int h=0; 227 int h=0;
228 int s=0; 228 int s=0;
229 int v=0; 229 int v=0;
230 color.hsv(&h,&s,&v); 230 color.hsv(&h,&s,&v);
231 s = s/4; 231 s = s/4;
232 v = 192+v/4; 232 v = 192+v/4;
233 shaded.setHsv(h,s,v); 233 shaded.setHsv(h,s,v);
234 234
235 return shaded; 235 return shaded;
236} 236}
237 237
238KODayMatrix::~KODayMatrix() 238KODayMatrix::~KODayMatrix()
239{ 239{
240 // delete mKODaymatrixWhatsThis; 240 // delete mKODaymatrixWhatsThis;
241 delete [] days; 241 delete [] days;
242 delete [] daylbls; 242 delete [] daylbls;
243 delete [] events; 243 delete [] events;
244 delete mToolTip; 244 delete mToolTip;
245} 245}
246 246
247/* 247/*
248void KODayMatrix::setStartDate(QDate start) 248void KODayMatrix::setStartDate(QDate start)
249{ 249{
250 updateView(start); 250 updateView(start);
251} 251}
252*/ 252*/
253 253
254void KODayMatrix::addSelectedDaysTo(DateList& selDays) 254void KODayMatrix::addSelectedDaysTo(DateList& selDays)
255{ 255{
256 256
257 if (mSelStart == NOSELECTION) { 257 if (mSelStart == NOSELECTION) {
258 return; 258 return;
259 } 259 }
260 260
261 //cope with selection being out of matrix limits at top (< 0) 261 //cope with selection being out of matrix limits at top (< 0)
262 int i0 = mSelStart; 262 int i0 = mSelStart;
263 if (i0 < 0) { 263 if (i0 < 0) {
264 for (int i = i0; i < 0; i++) { 264 for (int i = i0; i < 0; i++) {
265 selDays.append(days[0].addDays(i)); 265 selDays.append(days[0].addDays(i));
266 } 266 }
267 i0 = 0; 267 i0 = 0;
268 } 268 }
269 269
270 //cope with selection being out of matrix limits at bottom (> NUMDAYS-1) 270 //cope with selection being out of matrix limits at bottom (> NUMDAYS-1)
271 if (mSelEnd > NUMDAYS-1) { 271 if (mSelEnd > NUMDAYS-1) {
272 for (int i = i0; i <= NUMDAYS-1; i++) { 272 for (int i = i0; i <= NUMDAYS-1; i++) {
273 selDays.append(days[i]); 273 selDays.append(days[i]);
274 } 274 }
275 for (int i = NUMDAYS; i < mSelEnd; i++) { 275 for (int i = NUMDAYS; i < mSelEnd; i++) {
276 selDays.append(days[0].addDays(i)); 276 selDays.append(days[0].addDays(i));
277 } 277 }
278 278
279 // apply normal routine to selection being entirely within matrix limits 279 // apply normal routine to selection being entirely within matrix limits
280 } else { 280 } else {
281 for (int i = i0; i <= mSelEnd; i++) { 281 for (int i = i0; i <= mSelEnd; i++) {
282 selDays.append(days[i]); 282 selDays.append(days[i]);
283 } 283 }
284 } 284 }
285} 285}
286 286
287void KODayMatrix::setSelectedDaysFrom(const QDate& start, const QDate& end) 287void KODayMatrix::setSelectedDaysFrom(const QDate& start, const QDate& end)
288{ 288{
289 mSelStart = startdate.daysTo(start); 289 mSelStart = startdate.daysTo(start);
290 if ( mSelStart < 0 ) 290 if ( mSelStart < 0 )
291 mSelStart = 0; 291 mSelStart = 0;
292 mSelEnd = startdate.daysTo(end); 292 mSelEnd = startdate.daysTo(end);
293 //qDebug("SELECTION %d %d ", mSelStart ,mSelEnd );
293 if ( mSelEnd < 0 ) 294 if ( mSelEnd < 0 )
294 clearSelection(); 295 clearSelection();
295} 296}
296void KODayMatrix::clearSelection() 297void KODayMatrix::clearSelection()
297{ 298{
298 mSelEnd = mSelStart = NOSELECTION; 299 mSelEnd = mSelStart = NOSELECTION;
299} 300}
300 301
301 302
302void KODayMatrix::recalculateToday() 303void KODayMatrix::recalculateToday()
303{ 304{
304 today = -1; 305 today = -1;
305 for (int i=0; i<NUMDAYS; i++) { 306 for (int i=0; i<NUMDAYS; i++) {
306 events[i] = 0; 307 events[i] = 0;
307 days[i] = startdate.addDays(i); 308 days[i] = startdate.addDays(i);
308 daylbls[i] = QString::number( KOGlobals::self()->calendarSystem()->day( days[i] )); 309 daylbls[i] = QString::number( KOGlobals::self()->calendarSystem()->day( days[i] ));
309 310
310 // if today is in the currently displayed month, hilight today 311 // if today is in the currently displayed month, hilight today
311 if (days[i].year() == QDate::currentDate().year() && 312 if (days[i].year() == QDate::currentDate().year() &&
312 days[i].month() == QDate::currentDate().month() && 313 days[i].month() == QDate::currentDate().month() &&
313 days[i].day() == QDate::currentDate().day()) { 314 days[i].day() == QDate::currentDate().day()) {
314 today = i; 315 today = i;
315 } 316 }
316 } 317 }
317 // qDebug(QString("Today is visible at %1.").arg(today)); 318 // qDebug(QString("Today is visible at %1.").arg(today));
318} 319}
319 320
320void KODayMatrix::updateView() 321void KODayMatrix::updateView()
321{ 322{
322 updateView(startdate); 323 updateView(startdate);
323} 324}
324void KODayMatrix::repaintViewTimed() 325void KODayMatrix::repaintViewTimed()
325{ 326{
326 mRepaintTimer->stop(); 327 mRepaintTimer->stop();
327 repaint(false); 328 repaint(false);
328} 329}
329void KODayMatrix::updateViewTimed() 330void KODayMatrix::updateViewTimed()
330{ 331{
331 mUpdateTimer->stop(); 332 mUpdateTimer->stop();
332 if ( !mCalendar ) { 333 if ( !mCalendar ) {
333 qDebug("NOT CAL "); 334 qDebug("NOT CAL ");
334 return; 335 return;
335 } 336 }
336 //qDebug("KODayMatrix::updateViewTimed "); 337 //qDebug("KODayMatrix::updateViewTimed ");
337 for(int i = 0; i < NUMDAYS; i++) { 338 for(int i = 0; i < NUMDAYS; i++) {
338 // if events are set for the day then remember to draw it bold 339 // if events are set for the day then remember to draw it bold
339 QPtrList<Event> eventlist = mCalendar->events(days[i]); 340 QPtrList<Event> eventlist = mCalendar->events(days[i]);
340 Event *event; 341 Event *event;
341 int numEvents = eventlist.count(); 342 int numEvents = eventlist.count();
342 QString holiStr = ""; 343 QString holiStr = "";
343 bDays.clearBit(i); 344 bDays.clearBit(i);
344 for(event=eventlist.first();event != 0;event=eventlist.next()) { 345 for(event=eventlist.first();event != 0;event=eventlist.next()) {
345 ushort recurType = event->recurrence()->doesRecur(); 346 ushort recurType = event->recurrence()->doesRecur();
346 if ((recurType == Recurrence::rDaily && !KOPrefs::instance()->mDailyRecur) || 347 if ((recurType == Recurrence::rDaily && !KOPrefs::instance()->mDailyRecur) ||
347 (recurType == Recurrence::rWeekly && !KOPrefs::instance()->mWeeklyRecur)) { 348 (recurType == Recurrence::rWeekly && !KOPrefs::instance()->mWeeklyRecur)) {
348 numEvents--; 349 numEvents--;
349 } 350 }
350 if ( event->categories().contains( i18n("Holiday") ) || event->categories().contains( "Holiday" )) { 351 if ( event->categories().contains( i18n("Holiday") ) || event->categories().contains( "Holiday" )) {
351 if ( !holiStr.isEmpty() ) 352 if ( !holiStr.isEmpty() )
352 holiStr += "\n"; 353 holiStr += "\n";
353 holiStr += event->summary(); 354 holiStr += event->summary();
354 if ( !event->location().isEmpty() ) 355 if ( !event->location().isEmpty() )
355 holiStr += " (" + event->location() + ")"; 356 holiStr += " (" + event->location() + ")";
356 } 357 }
357 if ( event->categories().contains( i18n("Birthday") ) || event->categories().contains( "Birthday" )) { 358 if ( event->categories().contains( i18n("Birthday") ) || event->categories().contains( "Birthday" )) {
358 if ( !holiStr.isEmpty() ) 359 if ( !holiStr.isEmpty() )
359 holiStr += "\n"; 360 holiStr += "\n";
360 holiStr += i18n("Birthday") + ": "+event->summary(); 361 holiStr += i18n("Birthday") + ": "+event->summary();
361 if ( !event->location().isEmpty() ) 362 if ( !event->location().isEmpty() )
362 holiStr += " (" + event->location() + ")"; 363 holiStr += " (" + event->location() + ")";
363 bDays.setBit(i); 364 bDays.setBit(i);
364 } 365 }
365 } 366 }
366 events[i] = numEvents; 367 events[i] = numEvents;
367 //if it is a holy day then draw it red. Sundays are consider holidays, too 368 //if it is a holy day then draw it red. Sundays are consider holidays, too
368 if ( (KOGlobals::self()->calendarSystem()->dayOfWeek(days[i]) == KOGlobals::self()->calendarSystem()->weekDayOfPray()) || 369 if ( (KOGlobals::self()->calendarSystem()->dayOfWeek(days[i]) == KOGlobals::self()->calendarSystem()->weekDayOfPray()) ||
369 !holiStr.isEmpty()) { 370 !holiStr.isEmpty()) {
370 mHolidays[i] = holiStr; 371 mHolidays[i] = holiStr;
371 } else { 372 } else {
372 mHolidays[i] = QString::null; 373 mHolidays[i] = QString::null;
373 } 374 }
374 } 375 }
375 if ( ! mPendingUpdateBeforeRepaint ) 376 if ( ! mPendingUpdateBeforeRepaint )
376 repaint(false); 377 repaint(false);
377} 378}
378void KODayMatrix::updateView(QDate actdate) 379void KODayMatrix::updateView(QDate actdate)
379{ 380{
380 381
381 if ( ! actdate.isValid() ) { 382 if ( ! actdate.isValid() ) {
382 //qDebug("date not valid "); 383 //qDebug("date not valid ");
383 return; 384 return;
384 } 385 }
385 mDayChanged = false; 386 mDayChanged = false;
386 //flag to indicate if the starting day of the matrix has changed by this call 387 //flag to indicate if the starting day of the matrix has changed by this call
387 //mDayChanged = false; 388 //mDayChanged = false;
388 // if a new startdate is to be set then apply Cornelius's calculation 389 // if a new startdate is to be set then apply Cornelius's calculation
389 // of the first day to be shown 390 // of the first day to be shown
390 if (actdate != startdate) { 391 if (actdate != startdate) {
391 // reset index of selection according to shift of starting date from startdate to actdate 392 // reset index of selection according to shift of starting date from startdate to actdate
392 if (mSelStart != NOSELECTION) { 393 if (mSelStart != NOSELECTION) {
393 int tmp = actdate.daysTo(startdate); 394 int tmp = actdate.daysTo(startdate);
394 //kdDebug() << "Shift of Selection1: " << mSelStart << " - " << mSelEnd << " -> " << tmp << "(" << offset << ")" << endl; 395 //kdDebug() << "Shift of Selection1: " << mSelStart << " - " << mSelEnd << " -> " << tmp << "(" << offset << ")" << endl;
395 // shift selection if new one would be visible at least partly ! 396 // shift selection if new one would be visible at least partly !
396 397
397 if (mSelStart+tmp < NUMDAYS && mSelEnd+tmp >= 0) { 398 if (mSelStart+tmp < NUMDAYS && mSelEnd+tmp >= 0) {
398 // nested if is required for next X display pushed from a different month - correction required 399 // nested if is required for next X display pushed from a different month - correction required
399 // otherwise, for month forward and backward, it must be avoided 400 // otherwise, for month forward and backward, it must be avoided
400 if( mSelStart > NUMDAYS || mSelStart < 0 ) 401 if( mSelStart > NUMDAYS || mSelStart < 0 )
401 mSelStart = mSelStart + tmp; 402 mSelStart = mSelStart + tmp;
402 if( mSelEnd > NUMDAYS || mSelEnd < 0 ) 403 if( mSelEnd > NUMDAYS || mSelEnd < 0 )
403 mSelEnd = mSelEnd + tmp; 404 mSelEnd = mSelEnd + tmp;
404 } 405 }
405 } 406 }
406 startdate = actdate; 407 startdate = actdate;
407 mDayChanged = true; 408 mDayChanged = true;
408 recalculateToday(); 409 recalculateToday();
409 } 410 }
410 //qDebug("restart Timer %d vis: %d", mDayChanged, isVisible() ); 411 //qDebug("restart Timer %d vis: %d", mDayChanged, isVisible() );
411 if ( !isVisible() ) { 412 if ( !isVisible() ) {
412 mPendingUpdateBeforeRepaint = true; 413 mPendingUpdateBeforeRepaint = true;
413 } else { 414 } else {
414#ifdef DESKTOP_VERSION 415#ifdef DESKTOP_VERSION
415 //mRepaintTimer->start( 100 ); 416 //mRepaintTimer->start( 100 );
416 mUpdateTimer->start( 100 ); 417 mUpdateTimer->start( 100 );
417#else 418#else
418 mRepaintTimer->start( 350 ); 419 mRepaintTimer->start( 350 );
419 mUpdateTimer->start( 1200 ); 420 mUpdateTimer->start( 1200 );
420#endif 421#endif
421 } 422 }
422} 423}
423void KODayMatrix::updateEvents() 424void KODayMatrix::updateEvents()
424{ 425{
425 if ( !mCalendar ) return; 426 if ( !mCalendar ) return;
426 427
427 for( int i = 0; i < NUMDAYS; i++ ) { 428 for( int i = 0; i < NUMDAYS; i++ ) {
428 // if events are set for the day then remember to draw it bold 429 // if events are set for the day then remember to draw it bold
429 QPtrList<Event> eventlist = mCalendar->events( days[ i ] ); 430 QPtrList<Event> eventlist = mCalendar->events( days[ i ] );
430 int numEvents = eventlist.count(); 431 int numEvents = eventlist.count();
431 Event *event; 432 Event *event;
432 for( event = eventlist.first(); event != 0;event=eventlist.next()) { 433 for( event = eventlist.first(); event != 0;event=eventlist.next()) {
433 ushort recurType = event->doesRecur(); 434 ushort recurType = event->doesRecur();
434 435
435 if ( ( recurType == Recurrence::rDaily && 436 if ( ( recurType == Recurrence::rDaily &&
436 !KOPrefs::instance()->mDailyRecur ) || 437 !KOPrefs::instance()->mDailyRecur ) ||
437 ( recurType == Recurrence::rWeekly && 438 ( recurType == Recurrence::rWeekly &&
438 !KOPrefs::instance()->mWeeklyRecur ) ) { 439 !KOPrefs::instance()->mWeeklyRecur ) ) {
439 numEvents--; 440 numEvents--;
440 } 441 }
441 } 442 }
442 events[ i ] = numEvents; 443 events[ i ] = numEvents;
443 } 444 }
444} 445}
445 446
446const QDate& KODayMatrix::getDate(int offset) 447const QDate& KODayMatrix::getDate(int offset)
447{ 448{
448 if (offset < 0 || offset > NUMDAYS-1) { 449 if (offset < 0 || offset > NUMDAYS-1) {
449 qDebug("Wrong offset2 %d", offset); 450 qDebug("Wrong offset2 %d", offset);
450 return days[0]; 451 return days[0];
451 } 452 }
452 return days[offset]; 453 return days[offset];
453} 454}
454 455
455QString KODayMatrix::getHolidayLabel(int offset) 456QString KODayMatrix::getHolidayLabel(int offset)
456{ 457{
457 if (offset < 0 || offset > NUMDAYS-1) { 458 if (offset < 0 || offset > NUMDAYS-1) {
458 qDebug("Wrong offset1 %d", offset); 459 qDebug("Wrong offset1 %d", offset);
459 return QString(); 460 return QString();
460 } 461 }
461 return mHolidays[offset]; 462 return mHolidays[offset];
462} 463}
463 464
464int KODayMatrix::getDayIndexFrom(int x, int y) 465int KODayMatrix::getDayIndexFrom(int x, int y)
465{ 466{
466 int colModulo = (width()-2) % 7; 467 int colModulo = (width()-2) % 7;
467 int rowModulo = (height()-2) % 6; 468 int rowModulo = (height()-2) % 6;
468#if 0 469#if 0
469 return 7*(y/daysize.height()) + (KOGlobals::self()->reverseLayout() ? 470 return 7*(y/daysize.height()) + (KOGlobals::self()->reverseLayout() ?
470 6 - x/daysize.width() : x/daysize.width()); 471 6 - x/daysize.width() : x/daysize.width());
471#endif 472#endif
472 int xVal = (x-colModulo/2-2)/daysize.width(); 473 int xVal = (x-colModulo/2-2)/daysize.width();
473 int yVal = (y-rowModulo/2-2)/daysize.height(); 474 int yVal = (y-rowModulo/2-2)/daysize.height();
474 475
475 476
476 return 7*(yVal) + xVal; 477 return 7*(yVal) + xVal;
477 478
478} 479}
479 480
480// ---------------------------------------------------------------------------- 481// ----------------------------------------------------------------------------
481// M O U S E E V E N T H A N D L I N G 482// M O U S E E V E N T H A N D L I N G
482// ---------------------------------------------------------------------------- 483// ----------------------------------------------------------------------------
483 484
484void KODayMatrix::mousePressEvent (QMouseEvent* e) 485void KODayMatrix::mousePressEvent (QMouseEvent* e)
@@ -502,385 +503,391 @@ void KODayMatrix::mouseReleaseEvent (QMouseEvent* e)
502 else 503 else
503 mouseDown = false; 504 mouseDown = false;
504 int tmp = getDayIndexFrom(e->x(), e->y()); 505 int tmp = getDayIndexFrom(e->x(), e->y());
505 if (tmp > NUMDAYS-1) tmp=NUMDAYS-1; 506 if (tmp > NUMDAYS-1) tmp=NUMDAYS-1;
506 507
507 if (mSelInit > tmp) { 508 if (mSelInit > tmp) {
508 mSelEnd = mSelInit; 509 mSelEnd = mSelInit;
509 if (tmp != mSelStart) { 510 if (tmp != mSelStart) {
510 mSelStart = tmp; 511 mSelStart = tmp;
511 repaint(false); 512 repaint(false);
512 } 513 }
513 } else { 514 } else {
514 mSelStart = mSelInit; 515 mSelStart = mSelInit;
515 516
516 //repaint only if selection has changed 517 //repaint only if selection has changed
517 if (tmp != mSelEnd) { 518 if (tmp != mSelEnd) {
518 mSelEnd = tmp; 519 mSelEnd = tmp;
519 repaint(false); 520 repaint(false);
520 } 521 }
521 } 522 }
522 523
523 DateList daylist; 524 DateList daylist;
524 if ( mSelStart < 0 ) 525 if ( mSelStart < 0 )
525 mSelStart = 0; 526 mSelStart = 0;
526 for (int i = mSelStart; i <= mSelEnd; i++) { 527 for (int i = mSelStart; i <= mSelEnd; i++) {
527 daylist.append(days[i]); 528 daylist.append(days[i]);
528 } 529 }
529 emit selected((const DateList)daylist); 530 emit selected((const DateList)daylist);
530 531
531} 532}
532 533
533void KODayMatrix::mouseMoveEvent (QMouseEvent* e) 534void KODayMatrix::mouseMoveEvent (QMouseEvent* e)
534{ 535{
535 if ( ! mouseDown ) { 536 if ( ! mouseDown ) {
536 return; 537 return;
537 } 538 }
538 int tmp = getDayIndexFrom(e->x(), e->y()); 539 int tmp = getDayIndexFrom(e->x(), e->y());
539 if (tmp > NUMDAYS-1) tmp=NUMDAYS-1; 540 if (tmp > NUMDAYS-1) tmp=NUMDAYS-1;
540 541
541 if (mSelInit > tmp) { 542 if (mSelInit > tmp) {
542 mSelEnd = mSelInit; 543 mSelEnd = mSelInit;
543 if (tmp != mSelStart) { 544 if (tmp != mSelStart) {
544 mSelStart = tmp; 545 mSelStart = tmp;
545 repaint(false); 546 repaint(false);
546 } 547 }
547 } else { 548 } else {
548 mSelStart = mSelInit; 549 mSelStart = mSelInit;
549 550
550 //repaint only if selection has changed 551 //repaint only if selection has changed
551 if (tmp != mSelEnd) { 552 if (tmp != mSelEnd) {
552 mSelEnd = tmp; 553 mSelEnd = tmp;
553 repaint(false); 554 repaint(false);
554 } 555 }
555 } 556 }
556} 557}
557 558
558// ---------------------------------------------------------------------------- 559// ----------------------------------------------------------------------------
559// D R A G ' N D R O P H A N D L I N G 560// D R A G ' N D R O P H A N D L I N G
560// ---------------------------------------------------------------------------- 561// ----------------------------------------------------------------------------
561 562
562void KODayMatrix::dragEnterEvent(QDragEnterEvent *e) 563void KODayMatrix::dragEnterEvent(QDragEnterEvent *e)
563{ 564{
564#ifndef KORG_NODND 565#ifndef KORG_NODND
565 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) { 566 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) {
566 e->ignore(); 567 e->ignore();
567 return; 568 return;
568 } 569 }
569 570
570 // some visual feedback 571 // some visual feedback
571// oldPalette = palette(); 572// oldPalette = palette();
572// setPalette(my_HilitePalette); 573// setPalette(my_HilitePalette);
573// update(); 574// update();
574#endif 575#endif
575} 576}
576 577
577void KODayMatrix::dragMoveEvent(QDragMoveEvent *e) 578void KODayMatrix::dragMoveEvent(QDragMoveEvent *e)
578{ 579{
579#ifndef KORG_NODND 580#ifndef KORG_NODND
580 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) { 581 if ( !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) {
581 e->ignore(); 582 e->ignore();
582 return; 583 return;
583 } 584 }
584 585
585 e->accept(); 586 e->accept();
586#endif 587#endif
587} 588}
588 589
589void KODayMatrix::dragLeaveEvent(QDragLeaveEvent */*dl*/) 590void KODayMatrix::dragLeaveEvent(QDragLeaveEvent */*dl*/)
590{ 591{
591#ifndef KORG_NODND 592#ifndef KORG_NODND
592// setPalette(oldPalette); 593// setPalette(oldPalette);
593// update(); 594// update();
594#endif 595#endif
595} 596}
596 597
597void KODayMatrix::dropEvent(QDropEvent *e) 598void KODayMatrix::dropEvent(QDropEvent *e)
598{ 599{
599#ifndef KORG_NODND 600#ifndef KORG_NODND
600// kdDebug() << "KODayMatrix::dropEvent(e) begin" << endl; 601// kdDebug() << "KODayMatrix::dropEvent(e) begin" << endl;
601 602
602 if (!mCalendar || !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) { 603 if (!mCalendar || !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) {
603 e->ignore(); 604 e->ignore();
604 return; 605 return;
605 } 606 }
606 607
607 DndFactory factory( mCalendar ); 608 DndFactory factory( mCalendar );
608 Event *event = factory.createDrop(e); 609 Event *event = factory.createDrop(e);
609 610
610 if (event) { 611 if (event) {
611 e->acceptAction(); 612 e->acceptAction();
612 613
613 Event *existingEvent = mCalendar->event(event->uid()); 614 Event *existingEvent = mCalendar->event(event->uid());
614 615
615 if(existingEvent) { 616 if(existingEvent) {
616 // uniquify event 617 // uniquify event
617 event->recreate(); 618 event->recreate();
618/* 619/*
619 KMessageBox::sorry(this, 620 KMessageBox::sorry(this,
620 i18n("Event already exists in this calendar."), 621 i18n("Event already exists in this calendar."),
621 i18n("Drop Event")); 622 i18n("Drop Event"));
622 delete event; 623 delete event;
623 return; 624 return;
624*/ 625*/
625 } 626 }
626// kdDebug() << "Drop new Event" << endl; 627// kdDebug() << "Drop new Event" << endl;
627 // Adjust date 628 // Adjust date
628 QDateTime start = event->dtStart(); 629 QDateTime start = event->dtStart();
629 QDateTime end = event->dtEnd(); 630 QDateTime end = event->dtEnd();
630 int duration = start.daysTo(end); 631 int duration = start.daysTo(end);
631 int idx = getDayIndexFrom(e->pos().x(), e->pos().y()); 632 int idx = getDayIndexFrom(e->pos().x(), e->pos().y());
632 633
633 start.setDate(days[idx]); 634 start.setDate(days[idx]);
634 end.setDate(days[idx].addDays(duration)); 635 end.setDate(days[idx].addDays(duration));
635 636
636 event->setDtStart(start); 637 event->setDtStart(start);
637 event->setDtEnd(end); 638 event->setDtEnd(end);
638 mCalendar->addEvent(event); 639 mCalendar->addEvent(event);
639 640
640 emit eventDropped(event); 641 emit eventDropped(event);
641 } else { 642 } else {
642// kdDebug() << "KODayMatrix::dropEvent(): Event from drop not decodable" << endl; 643// kdDebug() << "KODayMatrix::dropEvent(): Event from drop not decodable" << endl;
643 e->ignore(); 644 e->ignore();
644 } 645 }
645#endif 646#endif
646} 647}
647 648
648// ---------------------------------------------------------------------------- 649// ----------------------------------------------------------------------------
649// P A I N T E V E N T H A N D L I N G 650// P A I N T E V E N T H A N D L I N G
650// ---------------------------------------------------------------------------- 651// ----------------------------------------------------------------------------
651 652
652void KODayMatrix::paintEvent(QPaintEvent * pevent) 653void KODayMatrix::paintEvent(QPaintEvent * pevent)
653{ 654{
654 QRect sz = frameRect(); 655 QRect sz = frameRect();
655 if ( sz.width() <= 0 || sz.height() <= 0 ) 656 if ( sz.width() <= 0 || sz.height() <= 0 )
656 return; 657 return;
657 if ( mPendingUpdateBeforeRepaint ) { 658 if ( mPendingUpdateBeforeRepaint ) {
658 updateViewTimed(); 659 updateViewTimed();
659 mPendingUpdateBeforeRepaint = false; 660 mPendingUpdateBeforeRepaint = false;
660 } 661 }
661 if ( myPix.width() != sz.width() || myPix.height()!=sz.height() ) { 662 if ( myPix.width() != sz.width() || myPix.height()!=sz.height() ) {
662 myPix.resize(sz.size() ); 663 myPix.resize(sz.size() );
663 } 664 }
664 QPainter p(&myPix); 665 QPainter p(&myPix);
665 p.setFont(font()); 666 p.setFont(font());
666 667
667 668
668 int dheight = daysize.height(); 669 int dheight = daysize.height();
669 int dwidth = daysize.width(); 670 int dwidth = daysize.width();
670 int row,col; 671 int row,col;
671 int selw, selh; 672 int selw, selh;
672 int xyOff = frameWidth(); 673 int xyOff = frameWidth();
673 int colModulo = sz.width() % 7; 674 int colModulo = sz.width() % 7;
674 int rowModulo = sz.height() % 6; 675 int rowModulo = sz.height() % 6;
675 //qDebug("col %d row %d ",colModulo,rowModulo ); 676 //qDebug("col %d row %d ",colModulo,rowModulo );
676 677
677 bool isRTL = KOGlobals::self()->reverseLayout(); 678 bool isRTL = KOGlobals::self()->reverseLayout();
678 679
679 // draw background and topleft frame 680 // draw background and topleft frame
680 p.fillRect(pevent->rect(), mDefaultBackColor); 681 p.fillRect(pevent->rect(), mDefaultBackColor);
681 p.setPen(mDefaultTextColor); 682 p.setPen(mDefaultTextColor);
682 p.drawRect(0, 0, sz.width()+1, sz.height()+1); 683 p.drawRect(0, 0, sz.width()+1, sz.height()+1);
683 int mSelStartT = mSelStart; 684 int mSelStartT = mSelStart;
684 int mSelEndT = mSelEnd; 685 int mSelEndT = mSelEnd;
685 if ( mSelEndT >= NUMDAYS ) 686 if ( mSelEndT >= NUMDAYS )
686 mSelEndT = NUMDAYS-1; 687 mSelEndT = NUMDAYS-1;
687 // draw selected days with highlighted background color 688 // draw selected days with highlighted background color
688 if (mSelStart != NOSELECTION) { 689 if (mSelStart != NOSELECTION) {
689 bool skip = false; 690 bool skip = false;
690 if ( ! mouseDown ) { 691 if ( ! mouseDown ) {
691 int mo = days[20].month(); 692 int mo = days[20].month();
692 //qDebug("-- %d %d ", mSelStartT, mSelEndT); 693 //qDebug("-- %d %d ", mSelStartT, mSelEndT);
693 //qDebug("%d %d %d - d %d", mo, days[mSelStartT].month() , days[mSelEndT].month(), days[mSelEndT].day() ); 694 //qDebug("%d %d %d - d %d", mo, days[mSelStartT].month() , days[mSelEndT].month(), days[mSelEndT].day() );
694 if ( days[mSelStartT].month() > mo || days[mSelEndT].month() < mo ) { 695 int startMo = days[mSelStartT].month();
696 int endMo = days[mSelEndT].month();
697 if ( startMo == 12 && mo == 1 && endMo == 1 )
698 startMo = 1;
699 if ( endMo == 1 && mo == 12 )
700 endMo = 12;
701 if ( (startMo > mo || endMo < mo) ) {
695 skip = true; 702 skip = true;
696 } else { 703 } else {
697 if ( days[mSelStartT].month() != mo ) { 704 if ( days[mSelStartT].month() != mo ) {
698 int add = days[mSelStartT].daysInMonth ()-days[mSelStartT].day(); 705 int add = days[mSelStartT].daysInMonth ()-days[mSelStartT].day();
699 mSelStartT += add +1; 706 mSelStartT += add +1;
700 } 707 }
701 if ( days[mSelEndT].month() != mo ) { 708 if ( days[mSelEndT].month() != mo ) {
702 int sub = days[mSelEndT].day(); 709 int sub = days[mSelEndT].day();
703 mSelEndT -= sub ; 710 mSelEndT -= sub ;
704 } 711 }
705 } 712 }
706 } 713 }
707 if ( ! skip ) { 714 if ( ! skip ) {
708 row = mSelStartT/7; 715 row = mSelStartT/7;
709 col = mSelStartT -row*7; 716 col = mSelStartT -row*7;
710 QColor selcol = KOPrefs::instance()->mHighlightColor; 717 QColor selcol = KOPrefs::instance()->mHighlightColor;
711 int addCol = 0; 718 int addCol = 0;
712 int addRow = 0; 719 int addRow = 0;
713 int addRow2 = 0; 720 int addRow2 = 0;
714 int addCol2 = 0; 721 int addCol2 = 0;
715 if (row == mSelEndT/7) { 722 if (row == mSelEndT/7) {
716 if ( rowModulo ) { 723 if ( rowModulo ) {
717 if ( row >= 6 - rowModulo ) 724 if ( row >= 6 - rowModulo )
718 addRow = row - 5 + rowModulo; 725 addRow = row - 5 + rowModulo;
719 } 726 }
720 if ( colModulo ) { 727 if ( colModulo ) {
721 int colt1 = mSelEndT%7; 728 int colt1 = mSelEndT%7;
722 //qDebug("colt1 %d ", colt1 ); 729 //qDebug("colt1 %d ", colt1 );
723 if ( colt1 >= 7 - colModulo ) 730 if ( colt1 >= 7 - colModulo )
724 addCol = colt1 - 7 + colModulo+1; 731 addCol = colt1 - 7 + colModulo+1;
725 int colt = mSelStartT%7; 732 int colt = mSelStartT%7;
726 if ( colt >= 7 - colModulo ) 733 if ( colt >= 7 - colModulo )
727 addCol2 = colt - 7 + colModulo; 734 addCol2 = colt - 7 + colModulo;
728 addCol -= addCol2; 735 addCol -= addCol2;
729 //qDebug("COL %d %d %d %d ",col , colt1 ,addCol ,addCol2 ); 736 //qDebug("COL %d %d %d %d ",col , colt1 ,addCol ,addCol2 );
730 } 737 }
731 // Single row selection 738 // Single row selection
732 if ( row == 0) 739 if ( row == 0)
733 addRow = 1; 740 addRow = 1;
734 p.fillRect(isRTL ? (7 - (mSelEndT-mSelStartT+1) - col)*dwidth : col*dwidth+1+addCol2, 741 p.fillRect(isRTL ? (7 - (mSelEndT-mSelStartT+1) - col)*dwidth : col*dwidth+1+addCol2,
735 row*dheight+addRow, (mSelEndT-mSelStartT+1)*dwidth+addCol, dheight+1, selcol); 742 row*dheight+addRow, (mSelEndT-mSelStartT+1)*dwidth+addCol, dheight+1, selcol);
736 } else { 743 } else {
737 // draw first row to the right 744 // draw first row to the right
738 if ( colModulo ) { 745 if ( colModulo ) {
739 if ( col >= 7 - colModulo ) 746 if ( col >= 7 - colModulo )
740 addCol2 = col - 7 + colModulo; 747 addCol2 = col - 7 + colModulo;
741 } 748 }
742 if ( rowModulo ) { 749 if ( rowModulo ) {
743 if ( row >= 6 - rowModulo ) 750 if ( row >= 6 - rowModulo )
744 addRow = row - 5 + rowModulo; 751 addRow = row - 5 + rowModulo;
745 } 752 }
746 if ( row == 0) 753 if ( row == 0)
747 addRow = 1; 754 addRow = 1;
748 p.fillRect(isRTL ? 0 : col*dwidth+1+addCol2, row*dheight+addRow, (7-col)*dwidth+colModulo, 755 p.fillRect(isRTL ? 0 : col*dwidth+1+addCol2, row*dheight+addRow, (7-col)*dwidth+colModulo,
749 dheight+1, selcol); 756 dheight+1, selcol);
750 // draw full block till last line 757 // draw full block till last line
751 selh = mSelEndT/7-row; 758 selh = mSelEndT/7-row;
752 addRow = 0; 759 addRow = 0;
753 if ( rowModulo ) { 760 if ( rowModulo ) {
754 if ( mSelEndT/7 >= 6 - rowModulo ) 761 if ( mSelEndT/7 >= 6 - rowModulo )
755 addRow = mSelEndT/7 - 5 + rowModulo; 762 addRow = mSelEndT/7 - 5 + rowModulo;
756 } 763 }
757 if (selh > 1) { 764 if (selh > 1) {
758 p.fillRect(1, (row+1)*dheight, 7*dwidth+colModulo, (selh-1)*dheight+addRow,selcol); 765 p.fillRect(1, (row+1)*dheight, 7*dwidth+colModulo, (selh-1)*dheight+addRow,selcol);
759 } 766 }
760 // draw last block from left to mSelEndT 767 // draw last block from left to mSelEndT
761 selw = mSelEndT-7*(mSelEndT/7)+1; 768 selw = mSelEndT-7*(mSelEndT/7)+1;
762 //qDebug("esl %d ",selw ); 769 //qDebug("esl %d ",selw );
763 int add = 0; 770 int add = 0;
764 if ( colModulo ) { 771 if ( colModulo ) {
765 add = 7 - colModulo; 772 add = 7 - colModulo;
766 if ( selw > add ) 773 if ( selw > add )
767 add = selw - add; 774 add = selw - add;
768 else 775 else
769 add = 0; 776 add = 0;
770 } 777 }
771 //qDebug("add %d ", add); 778 //qDebug("add %d ", add);
772 p.fillRect(isRTL ? (7-selw)*dwidth : 1, (row+selh)*dheight+addRow, 779 p.fillRect(isRTL ? (7-selw)*dwidth : 1, (row+selh)*dheight+addRow,
773 selw*dwidth+add, dheight+1, selcol); 780 selw*dwidth+add, dheight+1, selcol);
774 } 781 }
775 } 782 }
776 } 783 }
777 784
778 // iterate over all days in the matrix and draw the day label in appropriate colors 785 // iterate over all days in the matrix and draw the day label in appropriate colors
779 QColor actcol = mDefaultTextColorShaded; 786 QColor actcol = mDefaultTextColorShaded;
780 p.setPen(actcol); 787 p.setPen(actcol);
781 QPen tmppen; 788 QPen tmppen;
782 for(int i = 0; i < NUMDAYS; i++) { 789 for(int i = 0; i < NUMDAYS; i++) {
783 row = i/7; 790 row = i/7;
784 col = isRTL ? 6-(i-row*7) : i-row*7; 791 col = isRTL ? 6-(i-row*7) : i-row*7;
785 792
786 // if it is the first day of a month switch color from normal to shaded and vice versa 793 // if it is the first day of a month switch color from normal to shaded and vice versa
787 if ( KOGlobals::self()->calendarSystem()->day( days[i] ) == 1) { 794 if ( KOGlobals::self()->calendarSystem()->day( days[i] ) == 1) {
788 if (actcol == mDefaultTextColorShaded) { 795 if (actcol == mDefaultTextColorShaded) {
789 actcol = mDefaultTextColor; 796 actcol = mDefaultTextColor;
790 } else { 797 } else {
791 actcol = mDefaultTextColorShaded; 798 actcol = mDefaultTextColorShaded;
792 } 799 }
793 p.setPen(actcol); 800 p.setPen(actcol);
794 } 801 }
795 if (actcol == mDefaultTextColorShaded) { 802 if (actcol == mDefaultTextColorShaded) {
796 if ( ! mouseDown ) { 803 if ( ! mouseDown ) {
797 continue; 804 continue;
798 } 805 }
799 } 806 }
800 //Reset pen color after selected days block 807 //Reset pen color after selected days block
801 if (i == mSelEndT+1) { 808 if (i == mSelEndT+1) {
802 p.setPen(actcol); 809 p.setPen(actcol);
803 } 810 }
804 811
805 // if today then draw rectangle around day 812 // if today then draw rectangle around day
806 if (today == i) { 813 if (today == i) {
807 tmppen = p.pen(); 814 tmppen = p.pen();
808 QPen mTodayPen(p.pen()); 815 QPen mTodayPen(p.pen());
809 if ( daysize.width() < 20 ) 816 if ( daysize.width() < 20 )
810 mTodayPen.setWidth(1); 817 mTodayPen.setWidth(1);
811 else 818 else
812 mTodayPen.setWidth(mTodayMarginWidth); 819 mTodayPen.setWidth(mTodayMarginWidth);
813 //draw red rectangle for holidays 820 //draw red rectangle for holidays
814 if (!mHolidays[i].isNull()) { 821 if (!mHolidays[i].isNull()) {
815 if (actcol == mDefaultTextColor) { 822 if (actcol == mDefaultTextColor) {
816 mTodayPen.setColor(KOPrefs::instance()->mHolidayColor); 823 mTodayPen.setColor(KOPrefs::instance()->mHolidayColor);
817 } else { 824 } else {
818 mTodayPen.setColor(mHolidayColorShaded); 825 mTodayPen.setColor(mHolidayColorShaded);
819 } 826 }
820 } 827 }
821 //draw gray rectangle for today if in selection 828 //draw gray rectangle for today if in selection
822 if (i >= mSelStartT && i <= mSelEndT) { 829 if (i >= mSelStartT && i <= mSelEndT) {
823 QColor grey("grey"); 830 QColor grey("grey");
824 mTodayPen.setColor(grey); 831 mTodayPen.setColor(grey);
825 } 832 }
826 p.setPen(mTodayPen); 833 p.setPen(mTodayPen);
827 834
828 835
829 int addCol = 0; 836 int addCol = 0;
830 int addRow = 0; 837 int addRow = 0;
831 if (rowModulo) { 838 if (rowModulo) {
832 if ( row >= 6 - rowModulo ) 839 if ( row >= 6 - rowModulo )
833 addRow = row - 5 + rowModulo; 840 addRow = row - 5 + rowModulo;
834 } 841 }
835 if ( colModulo ) { 842 if ( colModulo ) {
836 if ( col >= 7 - colModulo ) 843 if ( col >= 7 - colModulo )
837 addCol = col - 6 + colModulo-1; 844 addCol = col - 6 + colModulo-1;
838 } 845 }
839 if ( col == 0 ) 846 if ( col == 0 )
840 addCol = 1; 847 addCol = 1;
841 p.drawRect(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight+1); 848 p.drawRect(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight+1);
842 p.setPen(tmppen); 849 p.setPen(tmppen);
843 } 850 }
844 851
845 // if any events are on that day then draw it using a bold font 852 // if any events are on that day then draw it using a bold font
846 if (events[i] > 0) { 853 if (events[i] > 0) {
847 QFont myFont = font(); 854 QFont myFont = font();
848 myFont.setBold(true); 855 myFont.setBold(true);
849 p.setFont(myFont); 856 p.setFont(myFont);
850 } 857 }
851 858
852 // if it is a holiday then use the default holiday color 859 // if it is a holiday then use the default holiday color
853 if (!mHolidays[i].isNull()) { 860 if (!mHolidays[i].isNull()) {
854 if ( bDays.testBit(i) ) { 861 if ( bDays.testBit(i) ) {
855 p.setPen(Qt::green); 862 p.setPen(Qt::green);
856 } else { 863 } else {
857 if (actcol == mDefaultTextColor) { 864 if (actcol == mDefaultTextColor) {
858 p.setPen(KOPrefs::instance()->mHolidayColor); 865 p.setPen(KOPrefs::instance()->mHolidayColor);
859 } else { 866 } else {
860 p.setPen(mHolidayColorShaded); 867 p.setPen(mHolidayColorShaded);
861 } 868 }
862 } 869 }
863 } 870 }
864 871
865 // draw selected days with special color 872 // draw selected days with special color
866 // DO NOT specially highlight holidays in selection ! 873 // DO NOT specially highlight holidays in selection !
867 if (i >= mSelStartT && i <= mSelEndT) { 874 if (i >= mSelStartT && i <= mSelEndT) {
868 ;//p.setPen(mSelectedDaysColor); 875 ;//p.setPen(mSelectedDaysColor);
869 } 876 }
870 877
871 int addCol = 0; 878 int addCol = 0;
872 int addRow = 0; 879 int addRow = 0;
873 if ( colModulo ) { 880 if ( colModulo ) {
874 if ( col >= 7 - colModulo ) 881 if ( col >= 7 - colModulo )
875 addCol = col - 7 + colModulo; 882 addCol = col - 7 + colModulo;
876 } 883 }
877 if ( rowModulo ) { 884 if ( rowModulo ) {
878 if ( row >= 6 - rowModulo ) 885 if ( row >= 6 - rowModulo )
879 addRow = row - 5 + rowModulo; 886 addRow = row - 5 + rowModulo;
880 } 887 }
881 //qDebug("add %d %d -- %d %d ", col, addCol, row, addRow); 888 //qDebug("add %d %d -- %d %d ", col, addCol, row, addRow);
882 ++addCol;//++addCol; 889 ++addCol;//++addCol;
883 if ( row == 0) 890 if ( row == 0)
884 addRow = 1; 891 addRow = 1;
885 p.drawText(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight, 892 p.drawText(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight,
886 Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]); 893 Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]);