summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/komonthview.cpp120
-rw-r--r--korganizer/komonthview.h13
2 files changed, 124 insertions, 9 deletions
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index cba85fa..9b0389d 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -144,2 +144,3 @@ void KNoScrollListBox::focusOutEvent ( QFocusEvent * e )
144 setHScrollBarMode(QScrollView::AlwaysOff); 144 setHScrollBarMode(QScrollView::AlwaysOff);
145 emit highligtIncidence( 0, (MonthViewCell*)this, 0 );
145} 146}
@@ -282,2 +283,3 @@ MonthViewItem::MonthViewItem( Incidence *incidence, QDate qd, const QString & s)
282{ 283{
284 mDisplayHightlighted = false;
283 mblockRepaint = true; 285 mblockRepaint = true;
@@ -295,3 +297,4 @@ MonthViewItem::MonthViewItem( Incidence *incidence, QDate qd, const QString & s)
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 );
@@ -306,3 +309,25 @@ void MonthViewItem::recycle( Incidence *incidence, QDate qd, const QString & s)
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)
@@ -319,4 +344,6 @@ void MonthViewItem::paint(QPainter *p)
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, \
@@ -602,2 +629,3 @@ void MonthViewCell::startUpdateCell()
602{ 629{
630
603 mdayCount = 0; 631 mdayCount = 0;
@@ -1085,4 +1113,8 @@ void 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 );
@@ -1090,3 +1122,26 @@ void MonthViewCell::selection( QListBoxItem *item )
1090 1122
1091 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{
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// *******************************************************************************
@@ -1202,2 +1257,4 @@ KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
1202 SLOT( prevCell() ) ); 1257 SLOT( prevCell() ) );
1258 connect( cell, SIGNAL( highligtIncidence( Incidence * , MonthViewCell *, int ) ),
1259 SLOT( incidenceHighlighted( Incidence *, MonthViewCell *, int ) ));
1203 } 1260 }
@@ -1219,2 +1276,4 @@ KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
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 );
@@ -1290,2 +1349,53 @@ KOMonthView::~KOMonthView()
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 )
diff --git a/korganizer/komonthview.h b/korganizer/komonthview.h
index 65b5e77..159af16 100644
--- a/korganizer/komonthview.h
+++ b/korganizer/komonthview.h
@@ -46,2 +46,3 @@ class QToolTipGroup;
46class KNOWhatsThis; 46class KNOWhatsThis;
47class MonthViewCell;
47class KOWeekButton : public QPushButton 48class KOWeekButton : public QPushButton
@@ -87,2 +88,3 @@ class KNoScrollListBox: public QListBox
87 void prevCell(); 88 void prevCell();
89 void highligtIncidence( Incidence * , MonthViewCell*, int );
88 90
@@ -112,2 +114,3 @@ class MonthViewItem: public QListBoxItem
112 void setMultiDay(int type) { mMultiday = type; } 114 void setMultiDay(int type) { mMultiday = type; }
115 int multiDay() { return mMultiday; }
113 void setMultiDayPos(int type) { mdayPos = type; } 116 void setMultiDayPos(int type) { mdayPos = type; }
@@ -115,3 +118,3 @@ class MonthViewItem: public QListBoxItem
115 void setBlockRepaint(bool on) { mblockRepaint = on; } 118 void setBlockRepaint(bool on) { mblockRepaint = on; }
116 119 bool setHighlighted( Incidence * );
117 120
@@ -119,3 +122,3 @@ class MonthViewItem: public QListBoxItem
119 QPalette palette() const { return mPalette; } 122 QPalette palette() const { return mPalette; }
120 123 bool setHighlightedFalse();
121 Incidence *incidence() const { return mIncidence; } 124 Incidence *incidence() const { return mIncidence; }
@@ -137,2 +140,3 @@ class MonthViewItem: public QListBoxItem
137 bool mInfo; 140 bool mInfo;
141 bool mDisplayHightlighted;
138 142
@@ -177,3 +181,4 @@ class MonthViewCell : public KNoScrollListBox
177 QPushButton * dateLabel() { return mLabel; } 181 QPushButton * dateLabel() { return mLabel; }
178 182 void deHightLight();
183 bool doHightLight( Incidence *);
179 void deselect(); 184 void deselect();
@@ -194,3 +199,2 @@ public slots:
194 void showDay(); 199 void showDay();
195
196 protected slots: 200 protected slots:
@@ -260,2 +264,3 @@ class KOMonthView: public KOEventView
260 public slots: 264 public slots:
265 void incidenceHighlighted( Incidence *, MonthViewCell*, int );
261 void nextCell(); 266 void nextCell();