summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-03-20 01:37:34 (UTC)
committer zautrix <zautrix>2005-03-20 01:37:34 (UTC)
commit1ebfa83d28d9eb3f48d8240e65212bbe22defb3c (patch) (unidiff)
treec82bb3fb86c4d5494edb8d0b512f08e9e1339a24
parent0ef9fe870982bd005806d7f51898a740cd52fec8 (diff)
downloadkdepimpi-1ebfa83d28d9eb3f48d8240e65212bbe22defb3c.zip
kdepimpi-1ebfa83d28d9eb3f48d8240e65212bbe22defb3c.tar.gz
kdepimpi-1ebfa83d28d9eb3f48d8240e65212bbe22defb3c.tar.bz2
fixes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/datenavigatorcontainer.cpp2
-rw-r--r--korganizer/kodaymatrix.cpp58
2 files changed, 45 insertions, 15 deletions
diff --git a/korganizer/datenavigatorcontainer.cpp b/korganizer/datenavigatorcontainer.cpp
index d09f484..b9bd1b9 100644
--- a/korganizer/datenavigatorcontainer.cpp
+++ b/korganizer/datenavigatorcontainer.cpp
@@ -51,179 +51,179 @@ DateNavigatorContainer::~DateNavigatorContainer()
51} 51}
52 52
53void DateNavigatorContainer::connectNavigatorView( KDateNavigator *v ) 53void DateNavigatorContainer::connectNavigatorView( KDateNavigator *v )
54{ 54{
55 connect( v, SIGNAL( datesSelected( const KCal::DateList & ) ), 55 connect( v, SIGNAL( datesSelected( const KCal::DateList & ) ),
56 SIGNAL( datesSelected( const KCal::DateList & ) ) ); 56 SIGNAL( datesSelected( const KCal::DateList & ) ) );
57#if 0 57#if 0
58 connect( v, SIGNAL( incidenceDropped( Incidence *, const QDate & ) ), 58 connect( v, SIGNAL( incidenceDropped( Incidence *, const QDate & ) ),
59 SIGNAL( incidenceDropped( Incidence *, const QDate & ) ) ); 59 SIGNAL( incidenceDropped( Incidence *, const QDate & ) ) );
60 connect( v, SIGNAL( incidenceDroppedMove( Incidence *, const QDate & ) ), 60 connect( v, SIGNAL( incidenceDroppedMove( Incidence *, const QDate & ) ),
61 SIGNAL( incidenceDroppedMove( Incidence *, const QDate & ) ) ); 61 SIGNAL( incidenceDroppedMove( Incidence *, const QDate & ) ) );
62#endif 62#endif
63 connect( v, SIGNAL( weekClicked( const QDate & ) ), 63 connect( v, SIGNAL( weekClicked( const QDate & ) ),
64 SIGNAL( weekClicked( const QDate & ) ) ); 64 SIGNAL( weekClicked( const QDate & ) ) );
65 65
66 connect( v, SIGNAL( goPrevious() ), SIGNAL( goPrevious() ) ); 66 connect( v, SIGNAL( goPrevious() ), SIGNAL( goPrevious() ) );
67 connect( v, SIGNAL( goNext() ), SIGNAL( goNext() ) ); 67 connect( v, SIGNAL( goNext() ), SIGNAL( goNext() ) );
68 68
69 connect( v, SIGNAL( goNextMonth() ), SIGNAL( goNextMonth() ) ); 69 connect( v, SIGNAL( goNextMonth() ), SIGNAL( goNextMonth() ) );
70 connect( v, SIGNAL( goPrevMonth() ), SIGNAL( goPrevMonth() ) ); 70 connect( v, SIGNAL( goPrevMonth() ), SIGNAL( goPrevMonth() ) );
71 connect( v, SIGNAL( goNextYear() ), SIGNAL( goNextYear() ) ); 71 connect( v, SIGNAL( goNextYear() ), SIGNAL( goNextYear() ) );
72 connect( v, SIGNAL( goPrevYear() ), SIGNAL( goPrevYear() ) ); 72 connect( v, SIGNAL( goPrevYear() ), SIGNAL( goPrevYear() ) );
73 73
74 connect( v, SIGNAL( monthSelected( int ) ), SIGNAL( monthSelected( int ) ) ); 74 connect( v, SIGNAL( monthSelected( int ) ), SIGNAL( monthSelected( int ) ) );
75} 75}
76 76
77void DateNavigatorContainer::setCalendar( Calendar *cal ) 77void DateNavigatorContainer::setCalendar( Calendar *cal )
78{ 78{
79 mCalendar = cal; 79 mCalendar = cal;
80 mNavigatorView->setCalendar( cal ); 80 mNavigatorView->setCalendar( cal );
81 KDateNavigator *n; 81 KDateNavigator *n;
82 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) { 82 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
83 n->setCalendar( cal ); 83 n->setCalendar( cal );
84 } 84 }
85} 85}
86 86
87void DateNavigatorContainer::updateDayMatrix() 87void DateNavigatorContainer::updateDayMatrix()
88{ 88{
89 mNavigatorView->updateDayMatrix(); 89 mNavigatorView->updateDayMatrix();
90 KDateNavigator *n; 90 KDateNavigator *n;
91 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) { 91 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
92 n->updateDayMatrix(); 92 n->updateDayMatrix();
93 } 93 }
94} 94}
95 95
96void DateNavigatorContainer::updateToday() 96void DateNavigatorContainer::updateToday()
97{ 97{
98 qDebug("DateNavigatorContainer::updateToday() NOT IMPL "); 98 qDebug("DateNavigatorContainer::updateToday() NOT IMPL ");
99#if 0 99#if 0
100 mNavigatorView->updateToday(); 100 mNavigatorView->updateToday();
101 KDateNavigator *n; 101 KDateNavigator *n;
102 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) { 102 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
103 n->updateToday(); 103 n->updateToday();
104 } 104 }
105#endif 105#endif
106} 106}
107 107
108void DateNavigatorContainer::updateView() 108void DateNavigatorContainer::updateView()
109{ 109{
110 mNavigatorView->updateView(); 110 mNavigatorView->updateView();
111 KDateNavigator *n; 111 KDateNavigator *n;
112 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) { 112 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
113 n->updateView(); 113 n->updateView();
114 } 114 }
115} 115}
116 116
117void DateNavigatorContainer::updateConfig() 117void DateNavigatorContainer::updateConfig()
118{ 118{
119 mNavigatorView->updateConfig(); 119 mNavigatorView->updateConfig();
120 KDateNavigator *n; 120 KDateNavigator *n;
121 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) { 121 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
122 n->updateConfig(); 122 n->updateConfig();
123 } 123 }
124} 124}
125 125
126void DateNavigatorContainer::selectDates( const DateList &dateList ) 126void DateNavigatorContainer::selectDates( const DateList &dateList )
127{ 127{
128 mNavigatorView->selectDates( dateList ); 128 mNavigatorView->selectDates( dateList );
129 setBaseDates(); 129 setBaseDates();
130 if ( mExtraViews.count() ) { 130 if ( mExtraViews.count() ) {
131 KDateNavigator *view = mExtraViews.at( 0 ); 131 KDateNavigator *view = mExtraViews.at( 0 );
132 view->dayMatrix()->setSelectedDaysFrom(*(dateList.begin()), *(--dateList.end())); 132 view->dayMatrix()->setSelectedDaysFrom(*(dateList.begin()), *(--dateList.end()));
133 view->dayMatrix()->repaint(); 133 view->dayMatrix()->repaint();
134 } 134 }
135} 135}
136 136
137void DateNavigatorContainer::setBaseDates() 137void DateNavigatorContainer::setBaseDates()
138{ 138{
139 KCal::DateList dateList = mNavigatorView->selectedDates(); 139 KCal::DateList dateList = mNavigatorView->selectedDates();
140 if ( dateList.isEmpty() ) { 140 if ( dateList.isEmpty() ) {
141 kdError() << "DateNavigatorContainer::selectDates() empty list." << endl; 141 kdError() << "DateNavigatorContainer::selectDates() empty list." << endl;
142 } 142 }
143 QDate baseDate = dateList.first(); 143 QDate baseDate = dateList.first();
144 KDateNavigator *n; 144 KDateNavigator *n;
145 bool doRepaint = false; // skip first repaint 145 bool doRepaint = false; // skip first repaint
146 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) { 146 for( n = mExtraViews.first(); n; n = mExtraViews.next() ) {
147 baseDate = baseDate.addDays( baseDate.daysInMonth () ); 147 baseDate = baseDate.addDays( baseDate.daysInMonth () - baseDate.day() +1 );
148 n->setBaseDate( baseDate, doRepaint ); 148 n->setBaseDate( baseDate, doRepaint );
149 doRepaint = true; 149 doRepaint = true;
150 } 150 }
151} 151}
152 152
153void DateNavigatorContainer::resizeEvent( QResizeEvent * e ) 153void DateNavigatorContainer::resizeEvent( QResizeEvent * e )
154{ 154{
155#if 0 155#if 0
156 kdDebug(5850) << "DateNavigatorContainer::resizeEvent()" << endl; 156 kdDebug(5850) << "DateNavigatorContainer::resizeEvent()" << endl;
157 kdDebug(5850) << " CURRENT SIZE: " << size() << endl; 157 kdDebug(5850) << " CURRENT SIZE: " << size() << endl;
158 kdDebug(5850) << " MINIMUM SIZEHINT: " << minimumSizeHint() << endl; 158 kdDebug(5850) << " MINIMUM SIZEHINT: " << minimumSizeHint() << endl;
159 kdDebug(5850) << " SIZEHINT: " << sizeHint() << endl; 159 kdDebug(5850) << " SIZEHINT: " << sizeHint() << endl;
160 kdDebug(5850) << " MINIMUM SIZE: " << minimumSize() << endl; 160 kdDebug(5850) << " MINIMUM SIZE: " << minimumSize() << endl;
161#endif 161#endif
162 QSize minSize = mNavigatorView->yourSizeHint(); 162 QSize minSize = mNavigatorView->yourSizeHint();
163 163
164// kdDebug(5850) << " NAVIGATORVIEW minimumSizeHint: " << minSize << endl; 164// kdDebug(5850) << " NAVIGATORVIEW minimumSizeHint: " << minSize << endl;
165 165
166 int verticalCount = size().height() / minSize.height(); 166 int verticalCount = size().height() / minSize.height();
167 int horizontalCount = size().width() / minSize.width(); 167 int horizontalCount = size().width() / minSize.width();
168 //qDebug(" wattdatt %d new %d %d ", size().width() ,e->size().width() , minSize.width() ); 168 //qDebug(" wattdatt %d new %d %d ", size().width() ,e->size().width() , minSize.width() );
169 //qDebug("COUNT %d %d %d %d ", verticalCount, horizontalCount , mVerticalCount, mHorizontalCount ); 169 //qDebug("COUNT %d %d %d %d ", verticalCount, horizontalCount , mVerticalCount, mHorizontalCount );
170 if ( horizontalCount != mHorizontalCount || 170 if ( horizontalCount != mHorizontalCount ||
171 verticalCount != mVerticalCount ) { 171 verticalCount != mVerticalCount ) {
172 uint count = horizontalCount * verticalCount; 172 uint count = horizontalCount * verticalCount;
173 if ( count == 0 ) { 173 if ( count == 0 ) {
174 mNavigatorView->resize( minSize ); 174 mNavigatorView->resize( minSize );
175 return; 175 return;
176 } 176 }
177 177
178 while ( count > ( mExtraViews.count() + 1 ) ) { 178 while ( count > ( mExtraViews.count() + 1 ) ) {
179 KDateNavigator *n = new KDateNavigator( this ); 179 KDateNavigator *n = new KDateNavigator( this );
180 n->setMonthSignalOffset ( mExtraViews.count()+1 ); 180 n->setMonthSignalOffset ( mExtraViews.count()+1 );
181 mExtraViews.append( n ); 181 mExtraViews.append( n );
182 n->setCalendar( mCalendar ); 182 n->setCalendar( mCalendar );
183 setBaseDates(); 183 setBaseDates();
184 connectNavigatorView( n ); 184 connectNavigatorView( n );
185 n->show(); 185 n->show();
186 } 186 }
187 187
188 while ( count < ( mExtraViews.count() + 1 ) ) { 188 while ( count < ( mExtraViews.count() + 1 ) ) {
189 mExtraViews.removeLast(); 189 mExtraViews.removeLast();
190 } 190 }
191 191
192 mHorizontalCount = horizontalCount; 192 mHorizontalCount = horizontalCount;
193 mVerticalCount = verticalCount; 193 mVerticalCount = verticalCount;
194 } 194 }
195 195
196 int height = size().height() / verticalCount; 196 int height = size().height() / verticalCount;
197 int width = size().width() / horizontalCount; 197 int width = size().width() / horizontalCount;
198 198
199 NavigatorBar *bar = mNavigatorView->navigatorBar(); 199 NavigatorBar *bar = mNavigatorView->navigatorBar();
200 if ( horizontalCount > 1 ) bar->showButtons( true, false ); 200 if ( horizontalCount > 1 ) bar->showButtons( true, false );
201 else bar->showButtons( true, true ); 201 else bar->showButtons( true, true );
202 202
203 mNavigatorView->setGeometry(0, 203 mNavigatorView->setGeometry(0,
204 0, width, height ); 204 0, width, height );
205 for( uint i = 0; i < mExtraViews.count(); ++i ) { 205 for( uint i = 0; i < mExtraViews.count(); ++i ) {
206 int x = ( i + 1 ) % horizontalCount; 206 int x = ( i + 1 ) % horizontalCount;
207 int y = ( i + 1 ) / horizontalCount; 207 int y = ( i + 1 ) / horizontalCount;
208 208
209 KDateNavigator *view = mExtraViews.at( i ); 209 KDateNavigator *view = mExtraViews.at( i );
210 bar = view->navigatorBar(); 210 bar = view->navigatorBar();
211 if ( y > 0 ) bar->showButtons( false, false ); 211 if ( y > 0 ) bar->showButtons( false, false );
212 else { 212 else {
213 if ( x + 1 == horizontalCount ) bar->showButtons( false, true ); 213 if ( x + 1 == horizontalCount ) bar->showButtons( false, true );
214 else bar->showButtons( false, false ); 214 else bar->showButtons( false, false );
215 } 215 }
216 view->setGeometry( x * width, 216 view->setGeometry( x * width,
217 y * height, width, height ); 217 y * height, width, height );
218 } 218 }
219} 219}
220 220
221QSize DateNavigatorContainer::minimumSizeHint() const 221QSize DateNavigatorContainer::minimumSizeHint() const
222{ 222{
223 return mNavigatorView->minimumSizeHint(); 223 return mNavigatorView->minimumSizeHint();
224} 224}
225 225
226QSize DateNavigatorContainer::sizeHint() const 226QSize DateNavigatorContainer::sizeHint() const
227{ 227{
228 return mNavigatorView->sizeHint(); 228 return mNavigatorView->sizeHint();
229} 229}
diff --git a/korganizer/kodaymatrix.cpp b/korganizer/kodaymatrix.cpp
index 1cde616..619ae39 100644
--- a/korganizer/kodaymatrix.cpp
+++ b/korganizer/kodaymatrix.cpp
@@ -178,193 +178,197 @@ QString KODayMatrix::getWhatsThisText( QPoint p )
178 else if ( mDate == event->dtEnd().date () ) 178 else if ( mDate == event->dtEnd().date () )
179 time = KGlobal::locale()->formatTime(event->dtEnd().time())+" "; 179 time = KGlobal::locale()->formatTime(event->dtEnd().time())+" ";
180 180
181 } 181 }
182 text = time + event->summary(); 182 text = time + event->summary();
183 mToolTipText += prefix + text; 183 mToolTipText += prefix + text;
184 } else { 184 } else {
185 if (event->doesFloat()) { 185 if (event->doesFloat()) {
186 text = event->summary(); 186 text = event->summary();
187 mToolTipText += text; 187 mToolTipText += text;
188 } 188 }
189 else { 189 else {
190 text = KGlobal::locale()->formatTime(event->dtStart().time()); 190 text = KGlobal::locale()->formatTime(event->dtStart().time());
191 text += " " + event->summary(); 191 text += " " + event->summary();
192 mToolTipText += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary(); 192 mToolTipText += KGlobal::locale()->formatTime(event->dtStart().time()) +"-"+KGlobal::locale()->formatTime(event->dtEnd().time())+" " + event->summary();
193 } 193 }
194 } 194 }
195 mToolTip.append( mToolTipText ); 195 mToolTip.append( mToolTipText );
196 } 196 }
197 mToolTip.sort(); 197 mToolTip.sort();
198 return "<b>"+KGlobal::locale()->formatDate(days[tmp]) + "</b><br>" + mToolTip.join("<br>"); 198 return "<b>"+KGlobal::locale()->formatDate(days[tmp]) + "</b><br>" + mToolTip.join("<br>");
199} 199}
200void KODayMatrix::setCalendar( Calendar *cal ) 200void KODayMatrix::setCalendar( Calendar *cal )
201{ 201{
202 mCalendar = cal; 202 mCalendar = cal;
203 203
204 setAcceptDrops( mCalendar ); 204 setAcceptDrops( mCalendar );
205 205
206 updateEvents(); 206 updateEvents();
207} 207}
208 208
209QColor KODayMatrix::getShadedColor(QColor color) 209QColor KODayMatrix::getShadedColor(QColor color)
210{ 210{
211 QColor shaded; 211 QColor shaded;
212 int h=0; 212 int h=0;
213 int s=0; 213 int s=0;
214 int v=0; 214 int v=0;
215 color.hsv(&h,&s,&v); 215 color.hsv(&h,&s,&v);
216 s = s/4; 216 s = s/4;
217 v = 192+v/4; 217 v = 192+v/4;
218 shaded.setHsv(h,s,v); 218 shaded.setHsv(h,s,v);
219 219
220 return shaded; 220 return shaded;
221} 221}
222 222
223KODayMatrix::~KODayMatrix() 223KODayMatrix::~KODayMatrix()
224{ 224{
225 delete [] days; 225 delete [] days;
226 delete [] daylbls; 226 delete [] daylbls;
227 delete [] events; 227 delete [] events;
228 delete mToolTip; 228 delete mToolTip;
229} 229}
230 230
231/* 231/*
232void KODayMatrix::setStartDate(QDate start) 232void KODayMatrix::setStartDate(QDate start)
233{ 233{
234 updateView(start); 234 updateView(start);
235} 235}
236*/ 236*/
237 237
238void KODayMatrix::addSelectedDaysTo(DateList& selDays) 238void KODayMatrix::addSelectedDaysTo(DateList& selDays)
239{ 239{
240 240
241 if (mSelStart == NOSELECTION) { 241 if (mSelStart == NOSELECTION) {
242 return; 242 return;
243 } 243 }
244 244
245 //cope with selection being out of matrix limits at top (< 0) 245 //cope with selection being out of matrix limits at top (< 0)
246 int i0 = mSelStart; 246 int i0 = mSelStart;
247 if (i0 < 0) { 247 if (i0 < 0) {
248 for (int i = i0; i < 0; i++) { 248 for (int i = i0; i < 0; i++) {
249 selDays.append(days[0].addDays(i)); 249 selDays.append(days[0].addDays(i));
250 } 250 }
251 i0 = 0; 251 i0 = 0;
252 } 252 }
253 253
254 //cope with selection being out of matrix limits at bottom (> NUMDAYS-1) 254 //cope with selection being out of matrix limits at bottom (> NUMDAYS-1)
255 if (mSelEnd > NUMDAYS-1) { 255 if (mSelEnd > NUMDAYS-1) {
256 for (int i = i0; i <= NUMDAYS-1; i++) { 256 for (int i = i0; i <= NUMDAYS-1; i++) {
257 selDays.append(days[i]); 257 selDays.append(days[i]);
258 } 258 }
259 for (int i = NUMDAYS; i < mSelEnd; i++) { 259 for (int i = NUMDAYS; i < mSelEnd; i++) {
260 selDays.append(days[0].addDays(i)); 260 selDays.append(days[0].addDays(i));
261 } 261 }
262 262
263 // apply normal routine to selection being entirely within matrix limits 263 // apply normal routine to selection being entirely within matrix limits
264 } else { 264 } else {
265 for (int i = i0; i <= mSelEnd; i++) { 265 for (int i = i0; i <= mSelEnd; i++) {
266 selDays.append(days[i]); 266 selDays.append(days[i]);
267 } 267 }
268 } 268 }
269} 269}
270 270
271void KODayMatrix::setSelectedDaysFrom(const QDate& start, const QDate& end) 271void KODayMatrix::setSelectedDaysFrom(const QDate& start, const QDate& end)
272{ 272{
273 mSelStart = startdate.daysTo(start); 273 mSelStart = startdate.daysTo(start);
274 if ( mSelStart < 0 )
275 mSelStart = 0;
274 mSelEnd = startdate.daysTo(end); 276 mSelEnd = startdate.daysTo(end);
277 if ( mSelEnd < 0 )
278 clearSelection();
275} 279}
276void KODayMatrix::clearSelection() 280void KODayMatrix::clearSelection()
277{ 281{
278 mSelEnd = mSelStart = NOSELECTION; 282 mSelEnd = mSelStart = NOSELECTION;
279} 283}
280 284
281 285
282void KODayMatrix::recalculateToday() 286void KODayMatrix::recalculateToday()
283{ 287{
284 today = -1; 288 today = -1;
285 for (int i=0; i<NUMDAYS; i++) { 289 for (int i=0; i<NUMDAYS; i++) {
286 events[i] = 0; 290 events[i] = 0;
287 days[i] = startdate.addDays(i); 291 days[i] = startdate.addDays(i);
288 daylbls[i] = QString::number( KOGlobals::self()->calendarSystem()->day( days[i] )); 292 daylbls[i] = QString::number( KOGlobals::self()->calendarSystem()->day( days[i] ));
289 293
290 // if today is in the currently displayed month, hilight today 294 // if today is in the currently displayed month, hilight today
291 if (days[i].year() == QDate::currentDate().year() && 295 if (days[i].year() == QDate::currentDate().year() &&
292 days[i].month() == QDate::currentDate().month() && 296 days[i].month() == QDate::currentDate().month() &&
293 days[i].day() == QDate::currentDate().day()) { 297 days[i].day() == QDate::currentDate().day()) {
294 today = i; 298 today = i;
295 } 299 }
296 } 300 }
297 // qDebug(QString("Today is visible at %1.").arg(today)); 301 // qDebug(QString("Today is visible at %1.").arg(today));
298} 302}
299 303
300void KODayMatrix::updateView() 304void KODayMatrix::updateView()
301{ 305{
302 updateView(startdate); 306 updateView(startdate);
303} 307}
304void KODayMatrix::repaintViewTimed() 308void KODayMatrix::repaintViewTimed()
305{ 309{
306 mRepaintTimer->stop(); 310 mRepaintTimer->stop();
307 repaint(false); 311 repaint(false);
308} 312}
309void KODayMatrix::updateViewTimed() 313void KODayMatrix::updateViewTimed()
310{ 314{
311 mUpdateTimer->stop(); 315 mUpdateTimer->stop();
312 if ( !mCalendar ) { 316 if ( !mCalendar ) {
313 qDebug("NOT CAL "); 317 qDebug("NOT CAL ");
314 return; 318 return;
315 } 319 }
316 //qDebug("KODayMatrix::updateViewTimed "); 320 //qDebug("KODayMatrix::updateViewTimed ");
317 for(int i = 0; i < NUMDAYS; i++) { 321 for(int i = 0; i < NUMDAYS; i++) {
318 // if events are set for the day then remember to draw it bold 322 // if events are set for the day then remember to draw it bold
319 QPtrList<Event> eventlist = mCalendar->events(days[i]); 323 QPtrList<Event> eventlist = mCalendar->events(days[i]);
320 Event *event; 324 Event *event;
321 int numEvents = eventlist.count(); 325 int numEvents = eventlist.count();
322 QString holiStr = ""; 326 QString holiStr = "";
323 bDays.clearBit(i); 327 bDays.clearBit(i);
324 for(event=eventlist.first();event != 0;event=eventlist.next()) { 328 for(event=eventlist.first();event != 0;event=eventlist.next()) {
325 ushort recurType = event->recurrence()->doesRecur(); 329 ushort recurType = event->recurrence()->doesRecur();
326 if ((recurType == Recurrence::rDaily && !KOPrefs::instance()->mDailyRecur) || 330 if ((recurType == Recurrence::rDaily && !KOPrefs::instance()->mDailyRecur) ||
327 (recurType == Recurrence::rWeekly && !KOPrefs::instance()->mWeeklyRecur)) { 331 (recurType == Recurrence::rWeekly && !KOPrefs::instance()->mWeeklyRecur)) {
328 numEvents--; 332 numEvents--;
329 } 333 }
330 if ( event->categories().contains( i18n("Holiday") ) || event->categories().contains( "Holiday" )) { 334 if ( event->categories().contains( i18n("Holiday") ) || event->categories().contains( "Holiday" )) {
331 if ( !holiStr.isEmpty() ) 335 if ( !holiStr.isEmpty() )
332 holiStr += "\n"; 336 holiStr += "\n";
333 holiStr += event->summary(); 337 holiStr += event->summary();
334 } 338 }
335 if ( event->categories().contains( i18n("Birthday") ) || event->categories().contains( "Birthday" )) { 339 if ( event->categories().contains( i18n("Birthday") ) || event->categories().contains( "Birthday" )) {
336 if ( !holiStr.isEmpty() ) 340 if ( !holiStr.isEmpty() )
337 holiStr += "\n"; 341 holiStr += "\n";
338 holiStr += event->summary(); 342 holiStr += event->summary();
339 bDays.setBit(i); 343 bDays.setBit(i);
340 } 344 }
341 } 345 }
342 events[i] = numEvents; 346 events[i] = numEvents;
343 //if it is a holy day then draw it red. Sundays are consider holidays, too 347 //if it is a holy day then draw it red. Sundays are consider holidays, too
344 if ( (KOGlobals::self()->calendarSystem()->dayOfWeek(days[i]) == KOGlobals::self()->calendarSystem()->weekDayOfPray()) || 348 if ( (KOGlobals::self()->calendarSystem()->dayOfWeek(days[i]) == KOGlobals::self()->calendarSystem()->weekDayOfPray()) ||
345 !holiStr.isEmpty()) { 349 !holiStr.isEmpty()) {
346 mHolidays[i] = holiStr; 350 mHolidays[i] = holiStr;
347 } else { 351 } else {
348 mHolidays[i] = QString::null; 352 mHolidays[i] = QString::null;
349 } 353 }
350 } 354 }
351 if ( ! mPendingUpdateBeforeRepaint ) 355 if ( ! mPendingUpdateBeforeRepaint )
352 repaint(false); 356 repaint(false);
353} 357}
354void KODayMatrix::updateView(QDate actdate) 358void KODayMatrix::updateView(QDate actdate)
355{ 359{
356 360
357 if ( ! actdate.isValid() ) { 361 if ( ! actdate.isValid() ) {
358 //qDebug("date not valid "); 362 //qDebug("date not valid ");
359 return; 363 return;
360 } 364 }
361 mDayChanged = false; 365 mDayChanged = false;
362 //flag to indicate if the starting day of the matrix has changed by this call 366 //flag to indicate if the starting day of the matrix has changed by this call
363 //mDayChanged = false; 367 //mDayChanged = false;
364 // if a new startdate is to be set then apply Cornelius's calculation 368 // if a new startdate is to be set then apply Cornelius's calculation
365 // of the first day to be shown 369 // of the first day to be shown
366 if (actdate != startdate) { 370 if (actdate != startdate) {
367 // reset index of selection according to shift of starting date from startdate to actdate 371 // reset index of selection according to shift of starting date from startdate to actdate
368 if (mSelStart != NOSELECTION) { 372 if (mSelStart != NOSELECTION) {
369 int tmp = actdate.daysTo(startdate); 373 int tmp = actdate.daysTo(startdate);
370 //kdDebug() << "Shift of Selection1: " << mSelStart << " - " << mSelEnd << " -> " << tmp << "(" << offset << ")" << endl; 374 //kdDebug() << "Shift of Selection1: " << mSelStart << " - " << mSelEnd << " -> " << tmp << "(" << offset << ")" << endl;
@@ -545,224 +549,250 @@ void KODayMatrix::dragMoveEvent(QDragMoveEvent *e)
545 e->ignore(); 549 e->ignore();
546 return; 550 return;
547 } 551 }
548 552
549 e->accept(); 553 e->accept();
550#endif 554#endif
551} 555}
552 556
553void KODayMatrix::dragLeaveEvent(QDragLeaveEvent */*dl*/) 557void KODayMatrix::dragLeaveEvent(QDragLeaveEvent */*dl*/)
554{ 558{
555#ifndef KORG_NODND 559#ifndef KORG_NODND
556// setPalette(oldPalette); 560// setPalette(oldPalette);
557// update(); 561// update();
558#endif 562#endif
559} 563}
560 564
561void KODayMatrix::dropEvent(QDropEvent *e) 565void KODayMatrix::dropEvent(QDropEvent *e)
562{ 566{
563#ifndef KORG_NODND 567#ifndef KORG_NODND
564// kdDebug() << "KODayMatrix::dropEvent(e) begin" << endl; 568// kdDebug() << "KODayMatrix::dropEvent(e) begin" << endl;
565 569
566 if (!mCalendar || !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) { 570 if (!mCalendar || !ICalDrag::canDecode( e ) && !VCalDrag::canDecode( e ) ) {
567 e->ignore(); 571 e->ignore();
568 return; 572 return;
569 } 573 }
570 574
571 DndFactory factory( mCalendar ); 575 DndFactory factory( mCalendar );
572 Event *event = factory.createDrop(e); 576 Event *event = factory.createDrop(e);
573 577
574 if (event) { 578 if (event) {
575 e->acceptAction(); 579 e->acceptAction();
576 580
577 Event *existingEvent = mCalendar->event(event->uid()); 581 Event *existingEvent = mCalendar->event(event->uid());
578 582
579 if(existingEvent) { 583 if(existingEvent) {
580 // uniquify event 584 // uniquify event
581 event->recreate(); 585 event->recreate();
582/* 586/*
583 KMessageBox::sorry(this, 587 KMessageBox::sorry(this,
584 i18n("Event already exists in this calendar."), 588 i18n("Event already exists in this calendar."),
585 i18n("Drop Event")); 589 i18n("Drop Event"));
586 delete event; 590 delete event;
587 return; 591 return;
588*/ 592*/
589 } 593 }
590// kdDebug() << "Drop new Event" << endl; 594// kdDebug() << "Drop new Event" << endl;
591 // Adjust date 595 // Adjust date
592 QDateTime start = event->dtStart(); 596 QDateTime start = event->dtStart();
593 QDateTime end = event->dtEnd(); 597 QDateTime end = event->dtEnd();
594 int duration = start.daysTo(end); 598 int duration = start.daysTo(end);
595 int idx = getDayIndexFrom(e->pos().x(), e->pos().y()); 599 int idx = getDayIndexFrom(e->pos().x(), e->pos().y());
596 600
597 start.setDate(days[idx]); 601 start.setDate(days[idx]);
598 end.setDate(days[idx].addDays(duration)); 602 end.setDate(days[idx].addDays(duration));
599 603
600 event->setDtStart(start); 604 event->setDtStart(start);
601 event->setDtEnd(end); 605 event->setDtEnd(end);
602 mCalendar->addEvent(event); 606 mCalendar->addEvent(event);
603 607
604 emit eventDropped(event); 608 emit eventDropped(event);
605 } else { 609 } else {
606// kdDebug() << "KODayMatrix::dropEvent(): Event from drop not decodable" << endl; 610// kdDebug() << "KODayMatrix::dropEvent(): Event from drop not decodable" << endl;
607 e->ignore(); 611 e->ignore();
608 } 612 }
609#endif 613#endif
610} 614}
611 615
612// ---------------------------------------------------------------------------- 616// ----------------------------------------------------------------------------
613// P A I N T E V E N T H A N D L I N G 617// P A I N T E V E N T H A N D L I N G
614// ---------------------------------------------------------------------------- 618// ----------------------------------------------------------------------------
615 619
616void KODayMatrix::paintEvent(QPaintEvent * pevent) 620void KODayMatrix::paintEvent(QPaintEvent * pevent)
617{ 621{
618 if ( width() <= 0 || height() <= 0 ) 622 if ( width() <= 0 || height() <= 0 )
619 return; 623 return;
620 if ( mPendingUpdateBeforeRepaint ) { 624 if ( mPendingUpdateBeforeRepaint ) {
621 updateViewTimed(); 625 updateViewTimed();
622 mPendingUpdateBeforeRepaint = false; 626 mPendingUpdateBeforeRepaint = false;
623 } 627 }
624 if ( myPix.width() != width() || myPix.height()!=height() ) { 628 if ( myPix.width() != width() || myPix.height()!=height() ) {
625 myPix.resize(size() ); 629 myPix.resize(size() );
626 } 630 }
627 QPainter p(&myPix); 631 QPainter p(&myPix);
628 p.setFont(font()); 632 p.setFont(font());
629 633
630 QRect sz = frameRect(); 634 QRect sz = frameRect();
631 int dheight = daysize.height(); 635 int dheight = daysize.height();
632 int dwidth = daysize.width(); 636 int dwidth = daysize.width();
633 int row,col; 637 int row,col;
634 int selw, selh; 638 int selw, selh;
635 bool isRTL = KOGlobals::self()->reverseLayout(); 639 bool isRTL = KOGlobals::self()->reverseLayout();
636 640
637 // draw background and topleft frame 641 // draw background and topleft frame
638 p.fillRect(pevent->rect(), mDefaultBackColor); 642 p.fillRect(pevent->rect(), mDefaultBackColor);
639 p.setPen(mDefaultTextColor); 643 p.setPen(mDefaultTextColor);
640 p.drawRect(0, 0, sz.width()+1, sz.height()+1); 644 p.drawRect(0, 0, sz.width()+1, sz.height()+1);
641 645 int mSelStartT = mSelStart;
646 int mSelEndT = mSelEnd;
647 if ( mSelEndT >= NUMDAYS )
648 mSelEndT = NUMDAYS-1;
642 // draw selected days with highlighted background color 649 // draw selected days with highlighted background color
643 if (mSelStart != NOSELECTION) { 650 if (mSelStart != NOSELECTION) {
644 651 bool skip = false;
645 row = mSelStart/7; 652 if ( ! mouseDown ) {
646 col = mSelStart -row*7; 653 int mo = days[20].month();
654 //qDebug("-- %d %d ", mSelStartT, mSelEndT);
655 //qDebug("%d %d %d - d %d", mo, days[mSelStartT].month() , days[mSelEndT].month(), days[mSelEndT].day() );
656 if ( days[mSelStartT].month() > mo || days[mSelEndT].month() < mo ) {
657 skip = true;
658 } else {
659 if ( days[mSelStartT].month() != mo ) {
660 int add = days[mSelStartT].daysInMonth ()-days[mSelStartT].day();
661 mSelStartT += add +1;
662 }
663 if ( days[mSelEndT].month() != mo ) {
664 int sub = days[mSelEndT].day();
665 mSelEndT -= sub ;
666 }
667 }
668 }
669 if ( ! skip ) {
670 row = mSelStartT/7;
671 col = mSelStartT -row*7;
647 QColor selcol = KOPrefs::instance()->mHighlightColor; 672 QColor selcol = KOPrefs::instance()->mHighlightColor;
648 673
649 if (row == mSelEnd/7) { 674 if (row == mSelEndT/7) {
650 // Single row selection 675 // Single row selection
651 p.fillRect(isRTL ? (7 - (mSelEnd-mSelStart+1) - col)*dwidth : col*dwidth, 676 p.fillRect(isRTL ? (7 - (mSelEndT-mSelStartT+1) - col)*dwidth : col*dwidth,
652 row*dheight, (mSelEnd-mSelStart+1)*dwidth, dheight, selcol); 677 row*dheight, (mSelEndT-mSelStartT+1)*dwidth, dheight, selcol);
653 } else { 678 } else {
654 // draw first row to the right 679 // draw first row to the right
655 p.fillRect(isRTL ? 0 : col*dwidth, row*dheight, (7-col)*dwidth, 680 p.fillRect(isRTL ? 0 : col*dwidth, row*dheight, (7-col)*dwidth,
656 dheight, selcol); 681 dheight, selcol);
657 // draw full block till last line 682 // draw full block till last line
658 selh = mSelEnd/7-row; 683 selh = mSelEndT/7-row;
659 if (selh > 1) { 684 if (selh > 1) {
660 p.fillRect(0, (row+1)*dheight, 7*dwidth, (selh-1)*dheight,selcol); 685 p.fillRect(0, (row+1)*dheight, 7*dwidth, (selh-1)*dheight,selcol);
661 } 686 }
662 // draw last block from left to mSelEnd 687 // draw last block from left to mSelEndT
663 selw = mSelEnd-7*(mSelEnd/7)+1; 688 selw = mSelEndT-7*(mSelEndT/7)+1;
664 p.fillRect(isRTL ? (7-selw)*dwidth : 0, (row+selh)*dheight, 689 p.fillRect(isRTL ? (7-selw)*dwidth : 0, (row+selh)*dheight,
665 selw*dwidth, dheight, selcol); 690 selw*dwidth, dheight, selcol);
666 } 691 }
692 }
667 } 693 }
668 694
669 // iterate over all days in the matrix and draw the day label in appropriate colors 695 // iterate over all days in the matrix and draw the day label in appropriate colors
670 QColor actcol = mDefaultTextColorShaded; 696 QColor actcol = mDefaultTextColorShaded;
671 p.setPen(actcol); 697 p.setPen(actcol);
672 QPen tmppen; 698 QPen tmppen;
673 for(int i = 0; i < NUMDAYS; i++) { 699 for(int i = 0; i < NUMDAYS; i++) {
674 row = i/7; 700 row = i/7;
675 col = isRTL ? 6-(i-row*7) : i-row*7; 701 col = isRTL ? 6-(i-row*7) : i-row*7;
676 702
677 // if it is the first day of a month switch color from normal to shaded and vice versa 703 // if it is the first day of a month switch color from normal to shaded and vice versa
678 if ( KOGlobals::self()->calendarSystem()->day( days[i] ) == 1) { 704 if ( KOGlobals::self()->calendarSystem()->day( days[i] ) == 1) {
679 if (actcol == mDefaultTextColorShaded) { 705 if (actcol == mDefaultTextColorShaded) {
680 actcol = mDefaultTextColor; 706 actcol = mDefaultTextColor;
681 } else { 707 } else {
682 actcol = mDefaultTextColorShaded; 708 actcol = mDefaultTextColorShaded;
683 } 709 }
684 p.setPen(actcol); 710 p.setPen(actcol);
685 } 711 }
686 712 if (actcol == mDefaultTextColorShaded) {
713 if ( ! mouseDown ) {
714 continue;
715 }
716 }
687 //Reset pen color after selected days block 717 //Reset pen color after selected days block
688 if (i == mSelEnd+1) { 718 if (i == mSelEndT+1) {
689 p.setPen(actcol); 719 p.setPen(actcol);
690 } 720 }
691 721
692 // if today then draw rectangle around day 722 // if today then draw rectangle around day
693 if (today == i) { 723 if (today == i) {
694 tmppen = p.pen(); 724 tmppen = p.pen();
695 QPen mTodayPen(p.pen()); 725 QPen mTodayPen(p.pen());
696 726
697 mTodayPen.setWidth(mTodayMarginWidth); 727 mTodayPen.setWidth(mTodayMarginWidth);
698 //draw red rectangle for holidays 728 //draw red rectangle for holidays
699 if (!mHolidays[i].isNull()) { 729 if (!mHolidays[i].isNull()) {
700 if (actcol == mDefaultTextColor) { 730 if (actcol == mDefaultTextColor) {
701 mTodayPen.setColor(KOPrefs::instance()->mHolidayColor); 731 mTodayPen.setColor(KOPrefs::instance()->mHolidayColor);
702 } else { 732 } else {
703 mTodayPen.setColor(mHolidayColorShaded); 733 mTodayPen.setColor(mHolidayColorShaded);
704 } 734 }
705 } 735 }
706 //draw gray rectangle for today if in selection 736 //draw gray rectangle for today if in selection
707 if (i >= mSelStart && i <= mSelEnd) { 737 if (i >= mSelStartT && i <= mSelEndT) {
708 QColor grey("grey"); 738 QColor grey("grey");
709 mTodayPen.setColor(grey); 739 mTodayPen.setColor(grey);
710 } 740 }
711 p.setPen(mTodayPen); 741 p.setPen(mTodayPen);
712 p.drawRect(col*dwidth, row*dheight, dwidth, dheight); 742 p.drawRect(col*dwidth, row*dheight, dwidth, dheight);
713 p.setPen(tmppen); 743 p.setPen(tmppen);
714 } 744 }
715 745
716 // if any events are on that day then draw it using a bold font 746 // if any events are on that day then draw it using a bold font
717 if (events[i] > 0) { 747 if (events[i] > 0) {
718 QFont myFont = font(); 748 QFont myFont = font();
719 myFont.setBold(true); 749 myFont.setBold(true);
720 p.setFont(myFont); 750 p.setFont(myFont);
721 } 751 }
722 752
723 // if it is a holiday then use the default holiday color 753 // if it is a holiday then use the default holiday color
724 if (!mHolidays[i].isNull()) { 754 if (!mHolidays[i].isNull()) {
725 if ( bDays.testBit(i) ) { 755 if ( bDays.testBit(i) ) {
726 p.setPen(Qt::green); 756 p.setPen(Qt::green);
727 } else { 757 } else {
728 if (actcol == mDefaultTextColor) { 758 if (actcol == mDefaultTextColor) {
729 p.setPen(KOPrefs::instance()->mHolidayColor); 759 p.setPen(KOPrefs::instance()->mHolidayColor);
730 } else { 760 } else {
731 p.setPen(mHolidayColorShaded); 761 p.setPen(mHolidayColorShaded);
732 } 762 }
733 } 763 }
734 } 764 }
735 765
736 // draw selected days with special color 766 // draw selected days with special color
737 // DO NOT specially highlight holidays in selection ! 767 // DO NOT specially highlight holidays in selection !
738 if (i >= mSelStart && i <= mSelEnd) { 768 if (i >= mSelStartT && i <= mSelEndT) {
739 ;//p.setPen(mSelectedDaysColor); 769 ;//p.setPen(mSelectedDaysColor);
740 } 770 }
741 771
742 p.drawText(col*dwidth, row*dheight, dwidth, dheight, 772 p.drawText(col*dwidth, row*dheight, dwidth, dheight,
743 Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]); 773 Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]);
744 774
745 // reset color to actual color 775 // reset color to actual color
746 if (!mHolidays[i].isNull()) { 776 if (!mHolidays[i].isNull()) {
747 p.setPen(actcol); 777 p.setPen(actcol);
748 } 778 }
749 // reset bold font to plain font 779 // reset bold font to plain font
750 if (events[i] > 0) { 780 if (events[i] > 0) {
751 QFont myFont = font(); 781 QFont myFont = font();
752 myFont.setBold(false); 782 myFont.setBold(false);
753 p.setFont(myFont); 783 p.setFont(myFont);
754 } 784 }
755 } 785 }
756 bitBlt (this, 0, 0, &myPix, 0 ,0,width(), height() ,CopyROP); 786 bitBlt (this, 0, 0, &myPix, 0 ,0,width(), height() ,CopyROP);
757} 787}
758 788
759// ---------------------------------------------------------------------------- 789// ----------------------------------------------------------------------------
760// R E SI Z E E V E N T H A N D L I N G 790// R E SI Z E E V E N T H A N D L I N G
761// ---------------------------------------------------------------------------- 791// ----------------------------------------------------------------------------
762 792
763void KODayMatrix::resizeEvent(QResizeEvent *) 793void KODayMatrix::resizeEvent(QResizeEvent *)
764{ 794{
765 QRect sz = frameRect(); 795 QRect sz = frameRect();
766 daysize.setHeight(sz.height()*7 / NUMDAYS); 796 daysize.setHeight(sz.height()*7 / NUMDAYS);
767 daysize.setWidth(sz.width() / 7); 797 daysize.setWidth(sz.width() / 7);
768} 798}