summaryrefslogtreecommitdiffabout
path: root/korganizer/komonthview.cpp
authorzautrix <zautrix>2005-06-27 17:25:27 (UTC)
committer zautrix <zautrix>2005-06-27 17:25:27 (UTC)
commit2a6c47afc7688923f427f4a38e3353e3503ab09a (patch) (unidiff)
treef314e7062e60f8e0302714bcc6149f2e83c96e30 /korganizer/komonthview.cpp
parent58ad1402f6415de889e7a0dc98be29e9ae56d86c (diff)
downloadkdepimpi-2a6c47afc7688923f427f4a38e3353e3503ab09a.zip
kdepimpi-2a6c47afc7688923f427f4a38e3353e3503ab09a.tar.gz
kdepimpi-2a6c47afc7688923f427f4a38e3353e3503ab09a.tar.bz2
monthview enh
Diffstat (limited to 'korganizer/komonthview.cpp') (more/less context) (show whitespace changes)
-rw-r--r--korganizer/komonthview.cpp116
1 files changed, 113 insertions, 3 deletions
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index cba85fa..9b0389d 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -121,48 +121,49 @@ void KNoScrollListBox::focusInEvent ( QFocusEvent * e )
121 else 121 else
122 setVScrollBarMode(QScrollView::Auto); 122 setVScrollBarMode(QScrollView::Auto);
123 if ( ihei *3 > height() ) { 123 if ( ihei *3 > height() ) {
124 setHScrollBarMode(QScrollView::AlwaysOff); 124 setHScrollBarMode(QScrollView::AlwaysOff);
125 } 125 }
126 else { 126 else {
127 setHScrollBarMode(QScrollView::Auto); 127 setHScrollBarMode(QScrollView::Auto);
128 } 128 }
129 } else { 129 } else {
130 setVScrollBarMode(QScrollView::Auto); 130 setVScrollBarMode(QScrollView::Auto);
131 setHScrollBarMode(QScrollView::Auto); 131 setHScrollBarMode(QScrollView::Auto);
132 } 132 }
133 } 133 }
134 } 134 }
135} 135}
136void KNoScrollListBox::focusOutEvent ( QFocusEvent * e ) 136void KNoScrollListBox::focusOutEvent ( QFocusEvent * e )
137{ 137{
138 int i = currentItem (); 138 int i = currentItem ();
139 if ( i >= 0 ) { 139 if ( i >= 0 ) {
140 setSelected ( i, false ); 140 setSelected ( i, false );
141 } 141 }
142 QListBox::focusOutEvent ( e ); 142 QListBox::focusOutEvent ( e );
143 setVScrollBarMode(QScrollView::AlwaysOff); 143 setVScrollBarMode(QScrollView::AlwaysOff);
144 setHScrollBarMode(QScrollView::AlwaysOff); 144 setHScrollBarMode(QScrollView::AlwaysOff);
145 emit highligtIncidence( 0, (MonthViewCell*)this, 0 );
145} 146}
146 147
147QString KNoScrollListBox::getWhatsThisText(QPoint p) 148QString KNoScrollListBox::getWhatsThisText(QPoint p)
148{ 149{
149 QListBoxItem* item = itemAt ( p ); 150 QListBoxItem* item = itemAt ( p );
150 if ( ! item ) { 151 if ( ! item ) {
151 return i18n("Click in the cell\nto add an event!"); 152 return i18n("Click in the cell\nto add an event!");
152 } 153 }
153 return KIncidenceFormatter::instance()->getFormattedText(((MonthViewItem*) item)->incidence(), 154 return KIncidenceFormatter::instance()->getFormattedText(((MonthViewItem*) item)->incidence(),
154 KOPrefs::instance()->mWTshowDetails, 155 KOPrefs::instance()->mWTshowDetails,
155 KOPrefs::instance()->mWTshowCreated, 156 KOPrefs::instance()->mWTshowCreated,
156 KOPrefs::instance()->mWTshowChanged); 157 KOPrefs::instance()->mWTshowChanged);
157} 158}
158void KNoScrollListBox::keyPressEvent(QKeyEvent *e) 159void KNoScrollListBox::keyPressEvent(QKeyEvent *e)
159{ 160{
160 //qDebug("KNoScrollListBox::keyPressEvent "); 161 //qDebug("KNoScrollListBox::keyPressEvent ");
161 switch(e->key()) { 162 switch(e->key()) {
162 case Key_Right: 163 case Key_Right:
163 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 164 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
164 { 165 {
165 e->ignore(); 166 e->ignore();
166 return; 167 return;
167 } 168 }
168 scrollBy(10,0); 169 scrollBy(10,0);
@@ -259,87 +260,113 @@ void KNoScrollListBox::oneDown()
259} 260}
260void KNoScrollListBox::keyReleaseEvent(QKeyEvent *e) 261void KNoScrollListBox::keyReleaseEvent(QKeyEvent *e)
261{ 262{
262 switch(e->key()) { 263 switch(e->key()) {
263 case Key_Shift: 264 case Key_Shift:
264 emit shiftUp(); 265 emit shiftUp();
265 break; 266 break;
266 default: 267 default:
267 break; 268 break;
268 } 269 }
269} 270}
270 271
271void KNoScrollListBox::mousePressEvent(QMouseEvent *e) 272void KNoScrollListBox::mousePressEvent(QMouseEvent *e)
272{ 273{
273 QListBox::mousePressEvent(e); 274 QListBox::mousePressEvent(e);
274 275
275 if(e->button() == RightButton) { 276 if(e->button() == RightButton) {
276 emit rightClick(); 277 emit rightClick();
277 } 278 }
278} 279}
279 280
280MonthViewItem::MonthViewItem( Incidence *incidence, QDate qd, const QString & s) 281MonthViewItem::MonthViewItem( Incidence *incidence, QDate qd, const QString & s)
281 : QListBoxItem() 282 : QListBoxItem()
282{ 283{
284 mDisplayHightlighted = false;
283 mblockRepaint = true; 285 mblockRepaint = true;
284 setText( s ); 286 setText( s );
285 mMultiday = 0; 287 mMultiday = 0;
286 mIncidence = incidence; 288 mIncidence = incidence;
287 mDate = qd; 289 mDate = qd;
288 mRecur = false; 290 mRecur = false;
289 mAlarm = false; 291 mAlarm = false;
290 mReply = false; 292 mReply = false;
291 mInfo = false; 293 mInfo = false;
292 mdayPos = 0; 294 mdayPos = 0;
293 isWeekItem = KOPrefs::instance()->mMonthViewWeek; 295 isWeekItem = KOPrefs::instance()->mMonthViewWeek;
294} 296}
295void MonthViewItem::recycle( Incidence *incidence, QDate qd, const QString & s) 297void MonthViewItem::recycle( Incidence *incidence, QDate qd, const QString & s)
296{ 298{
299 mDisplayHightlighted = false;
297 setText( s ); 300 setText( s );
298 mMultiday = 0; 301 mMultiday = 0;
299 mIncidence = incidence; 302 mIncidence = incidence;
300 mDate = qd; 303 mDate = qd;
301 mRecur = false; 304 mRecur = false;
302 mAlarm = false; 305 mAlarm = false;
303 mReply = false; 306 mReply = false;
304 mInfo = false; 307 mInfo = false;
305 mdayPos = 0; 308 mdayPos = 0;
306} 309}
310bool MonthViewItem::setHighlightedFalse()
311{
312 if ( !mDisplayHightlighted )
313 return false;
314 mDisplayHightlighted = false;
315 return true;
316}
307 317
318bool MonthViewItem::setHighlighted( Incidence * inc )
319{
320 if ( inc == mIncidence ) {
321 if ( mDisplayHightlighted )
322 return false;
323 mDisplayHightlighted = true;
324 return true;
325 } else {
326 if ( !mDisplayHightlighted )
327 return false;
328 mDisplayHightlighted = false;
329 return true;
330 }
331 return false;
332}
308void MonthViewItem::paint(QPainter *p) 333void MonthViewItem::paint(QPainter *p)
309{ 334{
310 if ( mblockRepaint ) { 335 if ( mblockRepaint ) {
311 return; 336 return;
312 } 337 }
313#if QT_VERSION >= 0x030000 338#if QT_VERSION >= 0x030000
314 bool sel = isSelected(); 339 bool sel = isSelected();
315#else 340#else
316 bool sel = selected(); 341 bool sel = selected();
317#endif 342#endif
318 int heihei = height( listBox () ); 343 int heihei = height( listBox () );
319 int x = 1; 344 int x = 1;
320 if (KOPrefs::instance()->mMonthViewUsesCategoryColor) 345 if (KOPrefs::instance()->mMonthViewUsesCategoryColor || mDisplayHightlighted )
321 { 346 {
347 if ( mDisplayHightlighted )
348 sel = true;
322 p->setBackgroundColor( palette().color( QPalette::Normal, \ 349 p->setBackgroundColor( palette().color( QPalette::Normal, \
323 sel ? QColorGroup::Highlight : QColorGroup::Background ) ); 350 sel ? QColorGroup::Highlight : QColorGroup::Background ) );
324 p->eraseRect( 0, 0, listBox()->maxItemWidth(), heihei ); 351 p->eraseRect( 0, 0, listBox()->maxItemWidth(), heihei );
325 } 352 }
326 353
327 //int y = 3;//(height() - mRecurPixmap.height()) /2; 354 //int y = 3;//(height() - mRecurPixmap.height()) /2;
328 int size = PIXMAP_SIZE; 355 int size = PIXMAP_SIZE;
329 if ( QApplication::desktop()->width() < 300 ) 356 if ( QApplication::desktop()->width() < 300 )
330 size = 3; 357 size = 3;
331 int y = (heihei - size -1 ) /2; 358 int y = (heihei - size -1 ) /2;
332 359
333 if ( mIncidence->calID() > 1 ) { 360 if ( mIncidence->calID() > 1 ) {
334 p->fillRect ( x, y-2,size,size+4, KOPrefs::instance()->defaultColor( mIncidence->calID() ) ); 361 p->fillRect ( x, y-2,size,size+4, KOPrefs::instance()->defaultColor( mIncidence->calID() ) );
335 p->drawRect ( x, y-2,size,size+4); 362 p->drawRect ( x, y-2,size,size+4);
336 x += size + 1; 363 x += size + 1;
337 } 364 }
338 if ( KOPrefs::instance()->mMonthShowIcons ) { 365 if ( KOPrefs::instance()->mMonthShowIcons ) {
339 if ( mInfo ) { 366 if ( mInfo ) {
340 p->fillRect ( x, y,size,size, Qt::darkGreen ); 367 p->fillRect ( x, y,size,size, Qt::darkGreen );
341 x += size + 1; 368 x += size + 1;
342 } 369 }
343 if ( mRecur ) { 370 if ( mRecur ) {
344 p->fillRect ( x, y,size,size, Qt::blue ); 371 p->fillRect ( x, y,size,size, Qt::blue );
345 x += size + 1; 372 x += size + 1;
@@ -579,48 +606,49 @@ QPalette MonthViewCell::getPalette ()
579 return mNonPrimaryPalette; 606 return mNonPrimaryPalette;
580} 607}
581bool MonthViewCell::isPrimary() const 608bool MonthViewCell::isPrimary() const
582{ 609{
583 return mPrimary; 610 return mPrimary;
584} 611}
585 612
586void MonthViewCell::setHoliday( bool holiday ) 613void MonthViewCell::setHoliday( bool holiday )
587{ 614{
588 mHoliday = holiday; 615 mHoliday = holiday;
589 //setMyPalette(); 616 //setMyPalette();
590} 617}
591 618
592void MonthViewCell::setHoliday( const QString &holiday ) 619void MonthViewCell::setHoliday( const QString &holiday )
593{ 620{
594 mHolidayString = holiday; 621 mHolidayString = holiday;
595 622
596 if ( !holiday.isEmpty() ) { 623 if ( !holiday.isEmpty() ) {
597 setHoliday( true ); 624 setHoliday( true );
598 } 625 }
599} 626}
600 627
601void MonthViewCell::startUpdateCell() 628void MonthViewCell::startUpdateCell()
602{ 629{
630
603 mdayCount = 0; 631 mdayCount = 0;
604 setFocusPolicy(NoFocus); 632 setFocusPolicy(NoFocus);
605 if ( !mMonthView->isUpdatePossible() ) 633 if ( !mMonthView->isUpdatePossible() )
606 return; 634 return;
607 MonthViewItem *mitem = (MonthViewItem*) firstItem (); 635 MonthViewItem *mitem = (MonthViewItem*) firstItem ();
608 while ( mitem ) { 636 while ( mitem ) {
609 mitem->setBlockRepaint( true ); 637 mitem->setBlockRepaint( true );
610 mitem = (MonthViewItem *)mitem->next(); 638 mitem = (MonthViewItem *)mitem->next();
611 } 639 }
612 if ( mAvailItemList.count() > 20 ) { 640 if ( mAvailItemList.count() > 20 ) {
613 mAvailItemList.setAutoDelete( true ); 641 mAvailItemList.setAutoDelete( true );
614 mAvailItemList.clear(); 642 mAvailItemList.clear();
615 mAvailItemList.setAutoDelete( false ); 643 mAvailItemList.setAutoDelete( false );
616 clear(); 644 clear();
617 } 645 }
618 646
619 setPrimary( mDate.month()%2 ); 647 setPrimary( mDate.month()%2 );
620 setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays); 648 setHoliday( KOGlobals::self()->calendarSystem()->dayOfWeek(mDate) == KOGlobals::self()->calendarSystem()->weekDayOfPray() || ( mDate.dayOfWeek() == 6 ) && KOPrefs::instance()-> mExcludeSaturdays);
621 if ( mDate == QDate::currentDate() ) { 649 if ( mDate == QDate::currentDate() ) {
622 setLineWidth( 3 ); 650 setLineWidth( 3 );
623 } else { 651 } else {
624 setLineWidth( 1 ); 652 setLineWidth( 1 );
625 } 653 }
626 MonthViewItem* CurrentAvailItem = (MonthViewItem*) firstItem (); 654 MonthViewItem* CurrentAvailItem = (MonthViewItem*) firstItem ();
@@ -1062,54 +1090,81 @@ void MonthViewCell::cellClicked( QListBoxItem *item )
1062{ 1090{
1063 mMonthView->setSelectedCell( this ); 1091 mMonthView->setSelectedCell( this );
1064 if ( item == 0 ) { 1092 if ( item == 0 ) {
1065 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) ); 1093 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
1066 emit newEventSignal( dt ); 1094 emit newEventSignal( dt );
1067 return; 1095 return;
1068 } 1096 }
1069 1097
1070} 1098}
1071 1099
1072void MonthViewCell::contextMenu( QListBoxItem *item ) 1100void MonthViewCell::contextMenu( QListBoxItem *item )
1073{ 1101{
1074 mMonthView->setPopupCell( this ); 1102 mMonthView->setPopupCell( this );
1075 if ( !item ) { 1103 if ( !item ) {
1076 mMonthView->showContextMenu( 0 ); 1104 mMonthView->showContextMenu( 0 );
1077 return; 1105 return;
1078 } 1106 }
1079 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item ); 1107 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
1080 Incidence *incidence = eventItem->incidence(); 1108 Incidence *incidence = eventItem->incidence();
1081 if ( incidence ) mMonthView->showContextMenu( incidence ); 1109 if ( incidence ) mMonthView->showContextMenu( incidence );
1082} 1110}
1083 1111
1084void MonthViewCell::selection( QListBoxItem *item ) 1112void MonthViewCell::selection( QListBoxItem *item )
1085{ 1113{
1086 if ( !item ) return; 1114 if ( !item ) {
1087 1115 emit highligtIncidence( 0 , this, 0 );
1116 return;
1117 }
1118 MonthViewItem * it = (static_cast<MonthViewItem *>( item ));
1119 emit highligtIncidence( it->incidence(), this, it->multiDay() );
1088 mMonthView->setSelectedCell( this ); 1120 mMonthView->setSelectedCell( this );
1089} 1121}
1090 1122
1123void MonthViewCell::deHightLight()
1124{
1125 MonthViewItem *mitem = (MonthViewItem*) firstItem ();
1126 while ( mitem ) {
1127 if ( mitem->setHighlightedFalse() )
1128 updateItem ( mitem );
1129 mitem = (MonthViewItem *)mitem->next();
1130 }
1131}
1132// returns true if no inc found
1133bool MonthViewCell::doHightLight( Incidence * inc )
1134{
1091 1135
1136 MonthViewItem *mitem = (MonthViewItem*) firstItem ();
1137 while ( mitem ) {
1138 if ( mitem->incidence() == inc ) {
1139 if ( mitem->setHighlighted( inc ) )
1140 updateItem ( mitem );
1141 return false;
1142 }
1143 mitem = (MonthViewItem *)mitem->next();
1144 }
1145 return true;
1146}
1092// ******************************************************************************* 1147// *******************************************************************************
1093// ******************************************************************************* 1148// *******************************************************************************
1094// ******************************************************************************* 1149// *******************************************************************************
1095 1150
1096 1151
1097KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name) 1152KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
1098 : KOEventView( calendar, parent, name ), 1153 : KOEventView( calendar, parent, name ),
1099 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ), 1154 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ),
1100 mWidthLongDayLabel( 0 ), mSelectedCell( 0 ) 1155 mWidthLongDayLabel( 0 ), mSelectedCell( 0 )
1101{ 1156{
1102 mFlagKeyPressed = false; 1157 mFlagKeyPressed = false;
1103 mShortDayLabelsM = false; 1158 mShortDayLabelsM = false;
1104 mShortDayLabelsW = false; 1159 mShortDayLabelsW = false;
1105 skipResize = false; 1160 skipResize = false;
1106 clPending = true; 1161 clPending = true;
1107 mPopupCell = 0; 1162 mPopupCell = 0;
1108 mNavigatorBar = new NavigatorBar( QDate::currentDate(), this, "useBigPixmaps" ); 1163 mNavigatorBar = new NavigatorBar( QDate::currentDate(), this, "useBigPixmaps" );
1109 mWidStack = new QWidgetStack( this ); 1164 mWidStack = new QWidgetStack( this );
1110 QVBoxLayout* hb = new QVBoxLayout( this ); 1165 QVBoxLayout* hb = new QVBoxLayout( this );
1111 mMonthView = new QWidget( mWidStack ); 1166 mMonthView = new QWidget( mWidStack );
1112 mWeekView = new QWidget( mWidStack ); 1167 mWeekView = new QWidget( mWidStack );
1113#if QT_VERSION >= 0x030000 1168#if QT_VERSION >= 0x030000
1114 mWidStack->addWidget(mMonthView ); 1169 mWidStack->addWidget(mMonthView );
1115 mWidStack->addWidget(mWeekView ); 1170 mWidStack->addWidget(mWeekView );
@@ -1179,65 +1234,69 @@ KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
1179 //label->setAlignment(AlignCenter); 1234 //label->setAlignment(AlignCenter);
1180 mWeekLabelsW.insert( i, label ); 1235 mWeekLabelsW.insert( i, label );
1181 } 1236 }
1182 mWeekLabelsW[1]->setText( i18n("W")); 1237 mWeekLabelsW[1]->setText( i18n("W"));
1183 mWeekLabelsW[1]->setFocusPolicy(WheelFocus); 1238 mWeekLabelsW[1]->setFocusPolicy(WheelFocus);
1184 1239
1185 1240
1186 int row, col; 1241 int row, col;
1187 mCells.resize( mNumCells ); 1242 mCells.resize( mNumCells );
1188 for( row = 0; row < mNumWeeks; ++row ) { 1243 for( row = 0; row < mNumWeeks; ++row ) {
1189 for( col = 0; col < mDaysPerWeek; ++col ) { 1244 for( col = 0; col < mDaysPerWeek; ++col ) {
1190 MonthViewCell *cell = new MonthViewCell( this, mMonthView ); 1245 MonthViewCell *cell = new MonthViewCell( this, mMonthView );
1191 mCells.insert( row * mDaysPerWeek + col, cell ); 1246 mCells.insert( row * mDaysPerWeek + col, cell );
1192 1247
1193 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 1248 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
1194 SLOT( defaultAction( Incidence * ) ) ); 1249 SLOT( defaultAction( Incidence * ) ) );
1195 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 1250 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
1196 SIGNAL( newEventSignal( QDateTime ) ) ); 1251 SIGNAL( newEventSignal( QDateTime ) ) );
1197 connect( cell, SIGNAL( showDaySignal( QDate ) ), 1252 connect( cell, SIGNAL( showDaySignal( QDate ) ),
1198 SIGNAL( showDaySignal( QDate ) ) ); 1253 SIGNAL( showDaySignal( QDate ) ) );
1199 connect( cell, SIGNAL( nextCell() ), 1254 connect( cell, SIGNAL( nextCell() ),
1200 SLOT( nextCell() ) ); 1255 SLOT( nextCell() ) );
1201 connect( cell, SIGNAL( prevCell() ), 1256 connect( cell, SIGNAL( prevCell() ),
1202 SLOT( prevCell() ) ); 1257 SLOT( prevCell() ) );
1258 connect( cell, SIGNAL( highligtIncidence( Incidence * , MonthViewCell *, int ) ),
1259 SLOT( incidenceHighlighted( Incidence *, MonthViewCell *, int ) ));
1203 } 1260 }
1204 } 1261 }
1205 mCellsW.resize( mDaysPerWeek ); 1262 mCellsW.resize( mDaysPerWeek );
1206 for( col = 0; col < mDaysPerWeek; ++col ) { 1263 for( col = 0; col < mDaysPerWeek; ++col ) {
1207 MonthViewCell *cell = new MonthViewCell( this, mWeekView ); 1264 MonthViewCell *cell = new MonthViewCell( this, mWeekView );
1208 mCellsW.insert( col, cell ); 1265 mCellsW.insert( col, cell );
1209 1266
1210 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 1267 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
1211 SLOT( defaultAction( Incidence * ) ) ); 1268 SLOT( defaultAction( Incidence * ) ) );
1212 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 1269 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
1213 SIGNAL( newEventSignal( QDateTime ) ) ); 1270 SIGNAL( newEventSignal( QDateTime ) ) );
1214 connect( cell, SIGNAL( showDaySignal( QDate ) ), 1271 connect( cell, SIGNAL( showDaySignal( QDate ) ),
1215 SIGNAL( showDaySignal( QDate ) ) ); 1272 SIGNAL( showDaySignal( QDate ) ) );
1216 connect( cell, SIGNAL( nextCell() ), 1273 connect( cell, SIGNAL( nextCell() ),
1217 SLOT( nextCell() ) ); 1274 SLOT( nextCell() ) );
1218 connect( cell, SIGNAL( prevCell() ), 1275 connect( cell, SIGNAL( prevCell() ),
1219 SLOT( prevCell() ) ); 1276 SLOT( prevCell() ) );
1277 connect( cell, SIGNAL( highligtIncidence( Incidence * , MonthViewCell *, int ) ),
1278 SLOT( incidenceHighlighted( Incidence *, MonthViewCell *, int ) ));
1220 cell->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont ); 1279 cell->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont );
1221 } 1280 }
1222 1281
1223 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) ); 1282 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) );
1224 mContextMenu = eventPopup(); 1283 mContextMenu = eventPopup();
1225 mContextMenu->addAdditionalItem(QIconSet(QPixmap()), 1284 mContextMenu->addAdditionalItem(QIconSet(QPixmap()),
1226 i18n("New Event..."),this, 1285 i18n("New Event..."),this,
1227 SLOT(slotNewEvent()),false); 1286 SLOT(slotNewEvent()),false);
1228 mContextMenu->addAdditionalItem(QIconSet(QPixmap()), 1287 mContextMenu->addAdditionalItem(QIconSet(QPixmap()),
1229 i18n("New Todo..."),this, 1288 i18n("New Todo..."),this,
1230 SLOT(slotNewTodo()),false); 1289 SLOT(slotNewTodo()),false);
1231 mContextMenu->addAdditionalItem(QIconSet(QPixmap()), 1290 mContextMenu->addAdditionalItem(QIconSet(QPixmap()),
1232 i18n("Journal"),this, 1291 i18n("Journal"),this,
1233 SLOT(slotEditJournal()),false); 1292 SLOT(slotEditJournal()),false);
1234 1293
1235 1294
1236 1295
1237 QString pathString = ""; 1296 QString pathString = "";
1238 if ( !KOPrefs::instance()->mToolBarMiniIcons ) { 1297 if ( !KOPrefs::instance()->mToolBarMiniIcons ) {
1239 if ( QApplication::desktop()->width() < 480 ) 1298 if ( QApplication::desktop()->width() < 480 )
1240 pathString += "icons16/"; 1299 pathString += "icons16/";
1241 } else 1300 } else
1242 pathString += "iconsmini/"; 1301 pathString += "iconsmini/";
1243 mNewItemMenu = new QPopupMenu( this ); 1302 mNewItemMenu = new QPopupMenu( this );
@@ -1267,48 +1326,99 @@ KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
1267 1326
1268 mComputeLayoutTimer = new QTimer( this ); 1327 mComputeLayoutTimer = new QTimer( this );
1269 connect (mComputeLayoutTimer ,SIGNAL(timeout()), this, SLOT ( slotComputeLayout())); 1328 connect (mComputeLayoutTimer ,SIGNAL(timeout()), this, SLOT ( slotComputeLayout()));
1270 1329
1271 1330
1272#ifndef DESKTOP_VERSION 1331#ifndef DESKTOP_VERSION
1273 resize( QApplication::desktop()->size() ); 1332 resize( QApplication::desktop()->size() );
1274#else 1333#else
1275 resize(640, 480 ); 1334 resize(640, 480 );
1276 updatePossible = true; 1335 updatePossible = true;
1277#endif 1336#endif
1278 computeLayout(); 1337 computeLayout();
1279 1338
1280 if ( mShowWeekView ) 1339 if ( mShowWeekView )
1281 mWidStack->raiseWidget( mWeekView ); 1340 mWidStack->raiseWidget( mWeekView );
1282 else 1341 else
1283 mWidStack->raiseWidget( mMonthView ); 1342 mWidStack->raiseWidget( mMonthView );
1284} 1343}
1285 1344
1286KOMonthView::~KOMonthView() 1345KOMonthView::~KOMonthView()
1287{ 1346{
1288 delete mContextMenu; 1347 delete mContextMenu;
1289} 1348}
1290 1349
1350void KOMonthView::incidenceHighlighted( Incidence * inc , MonthViewCell* mc, int mday )
1351{
1352 //qDebug("KOMonthView::incidenceHighlighted %d %d %d", inc, mc, mday );
1353 static Incidence * lastInc = 0;
1354 static MonthViewCell * lastCell = 0;
1355
1356 if ( lastInc == inc && lastCell == mc )
1357 return;
1358 lastInc = inc;
1359 lastCell = mc;
1360 //qDebug("KOMonthView::incidenceHighlighted %d %d %d", inc, mc, mday );
1361
1362 bool weekview = false;
1363 int index = 0;
1364 for (uint i = 0; i < mCellsW.count(); ++i) {
1365 if ( mCellsW[i] == mc ) {
1366 weekview = true;
1367 index = i;
1368 break;
1369 }
1370 }
1371 QPtrVector<MonthViewCell> *cells;
1372 if ( weekview )
1373 cells = &mCellsW;
1374 else {
1375 for (uint i = 0; i < mCells.count(); ++i) {
1376 if ( mCells[i] == mc ) {
1377 index = i;
1378 break;
1379 }
1380 }
1381 cells = &mCells;
1382 }
1383 for (uint i = 0; i < (*cells).count(); ++i) {
1384 (*cells)[i]->deHightLight();
1385 }
1386 if ( ! inc )
1387 return;
1388 if ( mday > 1 && index > 0 )
1389 for (int i = index-1; i >= 0; --i) {
1390 //qDebug("index %d iii %d ", index, i);
1391 if ( (*cells)[(uint)i]->doHightLight(inc) )
1392 break;
1393 }
1394 if ( mday < 3 && mday > 0 && index < (*cells).count()-1)
1395 for (uint i = index+1; i < (*cells).count(); ++i) {
1396 if ( (*cells)[i]->doHightLight(inc) )
1397 break;
1398 }
1399
1400}
1291void KOMonthView::selectInternalWeekNum ( int n ) 1401void KOMonthView::selectInternalWeekNum ( int n )
1292{ 1402{
1293 switchView(); 1403 switchView();
1294 if ( !KOPrefs::instance()->mMonthViewWeek ) 1404 if ( !KOPrefs::instance()->mMonthViewWeek )
1295 emit selectMonth (); 1405 emit selectMonth ();
1296 else 1406 else
1297 emit selectWeekNum ( n ); 1407 emit selectWeekNum ( n );
1298} 1408}
1299 1409
1300int KOMonthView::currentWeek() 1410int KOMonthView::currentWeek()
1301{ 1411{
1302 if ( mShowWeekView ) 1412 if ( mShowWeekView )
1303 return mWeekLabelsW[0]->getWeekNum(); 1413 return mWeekLabelsW[0]->getWeekNum();
1304 return mWeekLabels[0]->getWeekNum(); 1414 return mWeekLabels[0]->getWeekNum();
1305} 1415}
1306void KOMonthView::switchView() 1416void KOMonthView::switchView()
1307{ 1417{
1308 if ( selectedCell( ) ) 1418 if ( selectedCell( ) )
1309 selectedCell()->deselect(); 1419 selectedCell()->deselect();
1310 mShowWeekView = !mShowWeekView; 1420 mShowWeekView = !mShowWeekView;
1311 KOPrefs::instance()->mMonthViewWeek = mShowWeekView; 1421 KOPrefs::instance()->mMonthViewWeek = mShowWeekView;
1312 if ( clPending ) { 1422 if ( clPending ) {
1313 computeLayout(); 1423 computeLayout();
1314 updateConfig(); 1424 updateConfig();