summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koagenda.cpp10
-rw-r--r--korganizer/koagendaitem.cpp6
-rw-r--r--korganizer/koagendaitem.h1
3 files changed, 8 insertions, 9 deletions
diff --git a/korganizer/koagenda.cpp b/korganizer/koagenda.cpp
index 9b817bc..01cef35 100644
--- a/korganizer/koagenda.cpp
+++ b/korganizer/koagenda.cpp
@@ -1820,198 +1820,202 @@ void KOAgenda::insertMultiItem (Event *event,QDate qd,int XBegin,int XEnd,
1820 current = first; 1820 current = first;
1821 while (current) { 1821 while (current) {
1822 next = multiItems.next(); 1822 next = multiItems.next();
1823 if (current == first) setFirst = 0; 1823 if (current == first) setFirst = 0;
1824 else setFirst = first; 1824 else setFirst = first;
1825 if (current == last) setLast = 0; 1825 if (current == last) setLast = 0;
1826 else setLast = last; 1826 else setLast = last;
1827 1827
1828 current->setMultiItem(setFirst,next,setLast); 1828 current->setMultiItem(setFirst,next,setLast);
1829 current = next; 1829 current = next;
1830 } 1830 }
1831 1831
1832 marcus_bains(); 1832 marcus_bains();
1833} 1833}
1834 1834
1835 1835
1836//QSizePolicy KOAgenda::sizePolicy() const 1836//QSizePolicy KOAgenda::sizePolicy() const
1837//{ 1837//{
1838 // Thought this would make the all-day event agenda minimum size and the 1838 // Thought this would make the all-day event agenda minimum size and the
1839 // normal agenda take the remaining space. But it doesnīt work. The QSplitter 1839 // normal agenda take the remaining space. But it doesnīt work. The QSplitter
1840 // donīt seem to think that an Expanding widget needs more space than a 1840 // donīt seem to think that an Expanding widget needs more space than a
1841 // Preferred one. 1841 // Preferred one.
1842 // But it doesnīt hurt, so it stays. 1842 // But it doesnīt hurt, so it stays.
1843// if (mAllDayMode) { 1843// if (mAllDayMode) {
1844// return QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Preferred); 1844// return QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Preferred);
1845// } else { 1845// } else {
1846// return QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); 1846// return QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding);
1847// } 1847// }
1848//} 1848//}
1849void KOAgenda::finishResize ( ) 1849void KOAgenda::finishResize ( )
1850{ 1850{
1851 //qDebug("finishResize+++++++++++++++++++++++++++++++ ( ) "); 1851 //qDebug("finishResize+++++++++++++++++++++++++++++++ ( ) ");
1852 if ( globalFlagBlockAgenda == 0 ) { 1852 if ( globalFlagBlockAgenda == 0 ) {
1853 finishUpdate(); 1853 finishUpdate();
1854 //qDebug("finishUpdate() called "); 1854 //qDebug("finishUpdate() called ");
1855 } 1855 }
1856} 1856}
1857/* 1857/*
1858 Overridden from QScrollView to provide proper resizing of KOAgendaItems. 1858 Overridden from QScrollView to provide proper resizing of KOAgendaItems.
1859*/ 1859*/
1860void KOAgenda::resizeEvent ( QResizeEvent *ev ) 1860void KOAgenda::resizeEvent ( QResizeEvent *ev )
1861{ 1861{
1862 mSelectionHeight = 0; 1862 mSelectionHeight = 0;
1863 mResizeTimer.start( 150 , true ); 1863 mResizeTimer.start( 150 , true );
1864 computeSizes(); 1864 computeSizes();
1865 return; 1865 return;
1866 1866
1867} 1867}
1868void KOAgenda::computeSizes() 1868void KOAgenda::computeSizes()
1869{ 1869{
1870 if ( globalFlagBlockStartup ) 1870 if ( globalFlagBlockStartup )
1871 return; 1871 return;
1872 int frameOffset = frameWidth() * 2 +1; 1872 int frameOffset = frameWidth() * 2 +1;
1873 if (mAllDayMode) { 1873 if (mAllDayMode) {
1874 mGridSpacingX = (width()-frameOffset) / mColumns; 1874 mGridSpacingX = (width()-frameOffset) / mColumns;
1875 mGridSpacingY = height() - 2 * frameWidth() - 1; 1875 mGridSpacingY = height() - 2 * frameWidth() - 1;
1876 resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY + 1); 1876 resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY + 1);
1877 // mGridSpacingY = height(); 1877 // mGridSpacingY = height();
1878 // resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY * mRows + 1 ); 1878 // resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY * mRows + 1 );
1879 1879
1880 KOAgendaItem *item; 1880 KOAgendaItem *item;
1881 int subCellWidth; 1881 int subCellWidth;
1882 for ( item=mItems.first(); item != 0; item=mItems.next() ) { 1882 for ( item=mItems.first(); item != 0; item=mItems.next() ) {
1883 subCellWidth = mGridSpacingY / item->subCells(); 1883 subCellWidth = mGridSpacingY / item->subCells();
1884 item->resize(mGridSpacingX * item->cellWidth(),subCellWidth); 1884 item->resize(mGridSpacingX * item->cellWidth(),subCellWidth);
1885 moveChild(item,KOGlobals::self()->reverseLayout() ? 1885 moveChild(item,KOGlobals::self()->reverseLayout() ?
1886 (mColumns - 1 - item->cellX()) * mGridSpacingX : 1886 (mColumns - 1 - item->cellX()) * mGridSpacingX :
1887 item->cellX() * mGridSpacingX, 1887 item->cellX() * mGridSpacingX,
1888 item->subCell() * subCellWidth); 1888 item->subCell() * subCellWidth);
1889 } 1889 }
1890 KOPrefs::instance()->mAllDaySize = mGridSpacingY; 1890 KOPrefs::instance()->mAllDaySize = mGridSpacingY;
1891 } else { 1891 } else {
1892 mGridSpacingX = (width() - verticalScrollBar()->width()-frameOffset)/mColumns; 1892 mGridSpacingX = (width() - verticalScrollBar()->width()-frameOffset)/mColumns;
1893 if (height() > mGridSpacingY * mRows + 1 ) { 1893 if (height() > mGridSpacingY * mRows + 1 ) {
1894 KOPrefs::instance()->mHourSize = ((height())/mRows)+1; 1894 KOPrefs::instance()->mHourSize = ((height())/mRows)+1;
1895 mGridSpacingY = KOPrefs::instance()->mHourSize ; 1895 mGridSpacingY = KOPrefs::instance()->mHourSize ;
1896 resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY * mRows + 1 ); 1896 resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY * mRows + 1 );
1897 emit resizedSignal(); 1897 emit resizedSignal();
1898 } else 1898 } else
1899 resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY * mRows + 1 ); 1899 resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY * mRows + 1 );
1900 KOAgendaItem *item; 1900 KOAgendaItem *item;
1901 int subCellWidth; 1901 int subCellWidth;
1902 1902
1903 for ( item=mItems.first(); item != 0; item=mItems.next() ) { 1903 for ( item=mItems.first(); item != 0; item=mItems.next() ) {
1904 subCellWidth = mGridSpacingX / item->subCells(); 1904 subCellWidth = mGridSpacingX / item->subCells();
1905 item->resize(subCellWidth,item->height()); 1905 item->resize(subCellWidth,item->height());
1906 moveChild(item,(KOGlobals::self()->reverseLayout() ? 1906 moveChild(item,(KOGlobals::self()->reverseLayout() ?
1907 (mColumns - 1 - item->cellX()) * mGridSpacingX : 1907 (mColumns - 1 - item->cellX()) * mGridSpacingX :
1908 item->cellX() * mGridSpacingX) + 1908 item->cellX() * mGridSpacingX) +
1909 item->subCell() * subCellWidth,childY(item)); 1909 item->subCell() * subCellWidth,childY(item));
1910 } 1910 }
1911 } 1911 }
1912 int cw = contentsWidth(); 1912 int cw = contentsWidth();
1913 int ch = contentsHeight(); 1913 int ch = contentsHeight();
1914 if ( mAllDayMode ) { 1914 if ( mAllDayMode ) {
1915 QPixmap* paintPixAll = KOAgendaItem::paintPixAllday(); 1915 QPixmap* paintPixAll = KOAgendaItem::paintPixAllday();
1916 if ( (paintPixAll->width() < cw || paintPixAll->height() < ch) && cw > 0 && ch > 0 ) 1916 if ( (paintPixAll->width() < cw || paintPixAll->height() < ch) && cw > 0 && ch > 0 ) {
1917 //qDebug("paintPixAll->resize ");
1917 paintPixAll->resize( cw, ch ); 1918 paintPixAll->resize( cw, ch );
1919 }
1918 } else { 1920 } else {
1919 QPixmap* paintPix = KOAgendaItem::paintPix(); 1921 QPixmap* paintPix = KOAgendaItem::paintPix();
1920 if ( paintPix->width() < cw || paintPix->height() < ch ) 1922 if ( paintPix->width() < cw || paintPix->height() < ch ) {
1921 KOAgendaItem::resizePixmap( cw , ch ); 1923 //qDebug("paintPix->resize ");
1924 paintPix->resize( cw , ch );
1925 }
1922 } 1926 }
1923 1927
1924 checkScrollBoundaries(); 1928 checkScrollBoundaries();
1925 marcus_bains(); 1929 marcus_bains();
1926 drawContentsToPainter(); 1930 drawContentsToPainter();
1927 viewport()->repaint(false); 1931 viewport()->repaint(false);
1928} 1932}
1929 1933
1930void KOAgenda::scrollUp() 1934void KOAgenda::scrollUp()
1931{ 1935{
1932 scrollBy(0,-mScrollOffset); 1936 scrollBy(0,-mScrollOffset);
1933} 1937}
1934 1938
1935 1939
1936void KOAgenda::scrollDown() 1940void KOAgenda::scrollDown()
1937{ 1941{
1938 scrollBy(0,mScrollOffset); 1942 scrollBy(0,mScrollOffset);
1939} 1943}
1940 1944
1941void KOAgenda::popupAlarm() 1945void KOAgenda::popupAlarm()
1942{ 1946{
1943 if (!mClickedItem) { 1947 if (!mClickedItem) {
1944 qDebug("KOAgenda::popupAlarm() called without having a clicked item "); 1948 qDebug("KOAgenda::popupAlarm() called without having a clicked item ");
1945 return; 1949 return;
1946 } 1950 }
1947 // TODO: deal correctly with multiple alarms 1951 // TODO: deal correctly with multiple alarms
1948 Alarm* alarm; 1952 Alarm* alarm;
1949 QPtrList<Alarm> list(mClickedItem->incidence()->alarms()); 1953 QPtrList<Alarm> list(mClickedItem->incidence()->alarms());
1950 for(alarm=list.first();alarm;alarm=list.next()) { 1954 for(alarm=list.first();alarm;alarm=list.next()) {
1951 alarm->toggleAlarm(); 1955 alarm->toggleAlarm();
1952 } 1956 }
1953 emit itemModified( mClickedItem , KOGlobals::EVENTEDITED ); 1957 emit itemModified( mClickedItem , KOGlobals::EVENTEDITED );
1954 mClickedItem->paintMe( true ); 1958 mClickedItem->paintMe( true );
1955 mClickedItem->repaint( false ); 1959 mClickedItem->repaint( false );
1956} 1960}
1957 1961
1958/* 1962/*
1959 Calculates the minimum width 1963 Calculates the minimum width
1960*/ 1964*/
1961int KOAgenda::minimumWidth() const 1965int KOAgenda::minimumWidth() const
1962{ 1966{
1963 // TODO:: develop a way to dynamically determine the minimum width 1967 // TODO:: develop a way to dynamically determine the minimum width
1964 int min = 100; 1968 int min = 100;
1965 1969
1966 return min; 1970 return min;
1967} 1971}
1968 1972
1969void KOAgenda::updateConfig() 1973void KOAgenda::updateConfig()
1970{ 1974{
1971 if ( viewport()->backgroundColor() != KOPrefs::instance()->mAgendaBgColor) 1975 if ( viewport()->backgroundColor() != KOPrefs::instance()->mAgendaBgColor)
1972 viewport()->setBackgroundColor(KOPrefs::instance()->mAgendaBgColor); 1976 viewport()->setBackgroundColor(KOPrefs::instance()->mAgendaBgColor);
1973 if ( mAllDayMode ) { 1977 if ( mAllDayMode ) {
1974 mGridSpacingY = height() - 1 ;// KOPrefs::instance()->mAllDaySize; 1978 mGridSpacingY = height() - 1 ;// KOPrefs::instance()->mAllDaySize;
1975 //mGridSpacingY = KOPrefs::instance()->mAllDaySize; 1979 //mGridSpacingY = KOPrefs::instance()->mAllDaySize;
1976 resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY+1 ); 1980 resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY+1 );
1977 // setMaximumHeight( mGridSpacingY+1 ); 1981 // setMaximumHeight( mGridSpacingY+1 );
1978 viewport()->repaint( false ); 1982 viewport()->repaint( false );
1979 //setFixedHeight( mGridSpacingY+1 ); 1983 //setFixedHeight( mGridSpacingY+1 );
1980 //qDebug("KOPrefs:aaaaa:instance()->mAllDaySize %d ", KOPrefs::instance()->mAllDaySize); 1984 //qDebug("KOPrefs:aaaaa:instance()->mAllDaySize %d ", KOPrefs::instance()->mAllDaySize);
1981 } 1985 }
1982 else { 1986 else {
1983 mGridSpacingY = KOPrefs::instance()->mHourSize; 1987 mGridSpacingY = KOPrefs::instance()->mHourSize;
1984 calculateWorkingHours(); 1988 calculateWorkingHours();
1985 marcus_bains(); 1989 marcus_bains();
1986 } 1990 }
1987} 1991}
1988 1992
1989void KOAgenda::checkScrollBoundaries() 1993void KOAgenda::checkScrollBoundaries()
1990{ 1994{
1991 // Invalidate old values to force update 1995 // Invalidate old values to force update
1992 mOldLowerScrollValue = -1; 1996 mOldLowerScrollValue = -1;
1993 mOldUpperScrollValue = -1; 1997 mOldUpperScrollValue = -1;
1994 1998
1995 checkScrollBoundaries(verticalScrollBar()->value()); 1999 checkScrollBoundaries(verticalScrollBar()->value());
1996} 2000}
1997 2001
1998void KOAgenda::checkScrollBoundaries(int v) 2002void KOAgenda::checkScrollBoundaries(int v)
1999{ 2003{
2000 if ( mGridSpacingY == 0 ) 2004 if ( mGridSpacingY == 0 )
2001 return; 2005 return;
2002 int yMin = v/mGridSpacingY; 2006 int yMin = v/mGridSpacingY;
2003 int yMax = (v+visibleHeight())/mGridSpacingY; 2007 int yMax = (v+visibleHeight())/mGridSpacingY;
2004 2008
2005// kdDebug() << "--- yMin: " << yMin << " yMax: " << yMax << endl; 2009// kdDebug() << "--- yMin: " << yMin << " yMax: " << yMax << endl;
2006 2010
2007 if (yMin != mOldLowerScrollValue) { 2011 if (yMin != mOldLowerScrollValue) {
2008 mOldLowerScrollValue = yMin; 2012 mOldLowerScrollValue = yMin;
2009 emit lowerYChanged(yMin); 2013 emit lowerYChanged(yMin);
2010 } 2014 }
2011 if (yMax != mOldUpperScrollValue) { 2015 if (yMax != mOldUpperScrollValue) {
2012 mOldUpperScrollValue = yMax; 2016 mOldUpperScrollValue = yMax;
2013 emit upperYChanged(yMax); 2017 emit upperYChanged(yMax);
2014 } 2018 }
2015} 2019}
2016 2020
2017void KOAgenda::deselectItem() 2021void KOAgenda::deselectItem()
diff --git a/korganizer/koagendaitem.cpp b/korganizer/koagendaitem.cpp
index abb29f7..f855b03 100644
--- a/korganizer/koagendaitem.cpp
+++ b/korganizer/koagendaitem.cpp
@@ -377,213 +377,209 @@ void KOAgendaItem::paintMe( bool selected, QPainter* paint )
377 paint->setFont(KOPrefs::instance()->mAgendaViewFont); 377 paint->setFont(KOPrefs::instance()->mAgendaViewFont);
378 else { 378 else {
379 QFont f = KOPrefs::instance()->mAgendaViewFont; 379 QFont f = KOPrefs::instance()->mAgendaViewFont;
380 f.setBold( false ); 380 f.setBold( false );
381 int fh = f.pointSize(); 381 int fh = f.pointSize();
382 nfh = (((float)height())/(float)(mFontPixelSize+4))*fh; 382 nfh = (((float)height())/(float)(mFontPixelSize+4))*fh;
383 if ( nfh < 6 ) 383 if ( nfh < 6 )
384 nfh = 6; 384 nfh = 6;
385 f.setPointSize( nfh ); 385 f.setPointSize( nfh );
386 paint->setFont(f); 386 paint->setFont(f);
387 } 387 }
388 paint->fillRect ( x, yy, w, h, mBackgroundColor ); 388 paint->fillRect ( x, yy, w, h, mBackgroundColor );
389 static const QPixmap completedPxmp = SmallIcon("greenhook16"); 389 static const QPixmap completedPxmp = SmallIcon("greenhook16");
390 static const QPixmap overduePxmp = SmallIcon("redcross16"); 390 static const QPixmap overduePxmp = SmallIcon("redcross16");
391 if ( mIncidence->typeID() == todoID ) { 391 if ( mIncidence->typeID() == todoID ) {
392 Todo* tempTodo = static_cast<Todo*>(mIncidence); 392 Todo* tempTodo = static_cast<Todo*>(mIncidence);
393 int xx = pos().x()+(width()-completedPxmp.width()-3 ); 393 int xx = pos().x()+(width()-completedPxmp.width()-3 );
394 int yyy = yy+3; 394 int yyy = yy+3;
395 if ( tempTodo->isCompleted() ) 395 if ( tempTodo->isCompleted() )
396 paint->drawPixmap ( xx, yyy, completedPxmp ); 396 paint->drawPixmap ( xx, yyy, completedPxmp );
397 else { 397 else {
398 paint->drawPixmap ( xx, yyy, overduePxmp ); 398 paint->drawPixmap ( xx, yyy, overduePxmp );
399 399
400 } 400 }
401 } 401 }
402 bool addIcon = false; 402 bool addIcon = false;
403 if ( ! small || w > 3 * h || h > 3* w ) 403 if ( ! small || w > 3 * h || h > 3* w )
404 addIcon = updateIcons( paint, horLayout ); 404 addIcon = updateIcons( paint, horLayout );
405 405
406 //qDrawShadePanel (paint, x, yy, w, h, mColorGroup, selected , 2, 0); 406 //qDrawShadePanel (paint, x, yy, w, h, mColorGroup, selected , 2, 0);
407 qDrawWinPanel (paint, x, yy, w, h, mColorGroup, selected ,0); 407 qDrawWinPanel (paint, x, yy, w, h, mColorGroup, selected ,0);
408 //qDebug("draw rect %d %d %d %d ",x, yy, w, h ); 408 //qDebug("draw rect %d %d %d %d ",x, yy, w, h );
409 if ( ! small ) { 409 if ( ! small ) {
410 x += 3; yy += 3;w -= 6; h-= 5; 410 x += 3; yy += 3;w -= 6; h-= 5;
411 } else { 411 } else {
412 x += 2; yy += 1;w -= 4; h-= 4; 412 x += 2; yy += 1;w -= 4; h-= 4;
413 if ( nfh < 6.01 ) { 413 if ( nfh < 6.01 ) {
414 yy -= 2; 414 yy -= 2;
415 h += 4; 415 h += 4;
416 } 416 }
417 else 417 else
418 if ( nfh < h -2 ) 418 if ( nfh < h -2 )
419 ++yy; 419 ++yy;
420 } 420 }
421 int align; 421 int align;
422#ifndef DESKTOP_VERSION 422#ifndef DESKTOP_VERSION
423 align = ( AlignLeft|WordBreak|AlignTop); 423 align = ( AlignLeft|WordBreak|AlignTop);
424#else 424#else
425 align = ( AlignLeft|BreakAnywhere|WordBreak|AlignTop); 425 align = ( AlignLeft|BreakAnywhere|WordBreak|AlignTop);
426#endif 426#endif
427 if ( addIcon ) { 427 if ( addIcon ) {
428 if ( ! horLayout ) { 428 if ( ! horLayout ) {
429 x += AGENDA_ICON_SIZE+3; 429 x += AGENDA_ICON_SIZE+3;
430 w -= (AGENDA_ICON_SIZE+3); 430 w -= (AGENDA_ICON_SIZE+3);
431 } 431 }
432 else { 432 else {
433 yy+= AGENDA_ICON_SIZE+2; 433 yy+= AGENDA_ICON_SIZE+2;
434 h -=(AGENDA_ICON_SIZE+3); 434 h -=(AGENDA_ICON_SIZE+3);
435 } 435 }
436 } 436 }
437 if ( mWhiteText ) 437 if ( mWhiteText )
438 paint->setPen ( white); 438 paint->setPen ( white);
439 if ( x < 0 ) { 439 if ( x < 0 ) {
440 w = w+x-3; 440 w = w+x-3;
441 x = 3; 441 x = 3;
442 if ( !horLayout && addIcon ) 442 if ( !horLayout && addIcon )
443 x += AGENDA_ICON_SIZE+3; 443 x += AGENDA_ICON_SIZE+3;
444 if ( w > parentWidget()->width() ){ 444 if ( w > parentWidget()->width() ){
445 w = parentWidget()->width() - 6; 445 w = parentWidget()->width() - 6;
446#ifndef DESKTOP_VERSION 446#ifndef DESKTOP_VERSION
447 align = ( AlignHCenter|WordBreak|AlignTop); 447 align = ( AlignHCenter|WordBreak|AlignTop);
448#else 448#else
449 align = ( AlignHCenter|BreakAnywhere|WordBreak|AlignTop); 449 align = ( AlignHCenter|BreakAnywhere|WordBreak|AlignTop);
450#endif 450#endif
451 451
452 } 452 }
453 } 453 }
454 QRect dr; 454 QRect dr;
455 if ( w + x > parentWidget()->width() ) 455 if ( w + x > parentWidget()->width() )
456 w = parentWidget()->width()-x; 456 w = parentWidget()->width()-x;
457 paint->drawText ( x, yy, w, h, align, mDisplayedText, -1, &dr ); 457 paint->drawText ( x, yy, w, h, align, mDisplayedText, -1, &dr );
458 //qDebug("%d %d %d %d ", x, yy, w, h ); 458 //qDebug("%d %d %d %d ", x, yy, w, h );
459 if ( mIncidence->cancelled() ){ 459 if ( mIncidence->cancelled() ){
460 460
461 461
462 small = ( height() < 20 ); 462 small = ( height() < 20 );
463 463
464 if ( ! small ) { 464 if ( ! small ) {
465 QFontMetrics fm ( paint->font() ); 465 QFontMetrics fm ( paint->font() );
466 paint->drawLine(dr.left(), yy+fm.height()/2, dr.right()-2, yy+fm.height()/2); 466 paint->drawLine(dr.left(), yy+fm.height()/2, dr.right()-2, yy+fm.height()/2);
467 } 467 }
468 468
469 } 469 }
470 pa.end(); 470 pa.end();
471 471
472} 472}
473void KOAgendaItem::resizePixmap( int w , int h )
474{
475 paintPix()->resize( w, h );
476 473
477}
478QPixmap * KOAgendaItem::paintPix() 474QPixmap * KOAgendaItem::paintPix()
479{ 475{
480 static QPixmap* mPaintPix = 0; 476 static QPixmap* mPaintPix = 0;
481 if ( ! mPaintPix ) { 477 if ( ! mPaintPix ) {
482 int w = QApplication::desktop()->width(); 478 int w = QApplication::desktop()->width();
483 int h = QApplication::desktop()->height(); 479 int h = QApplication::desktop()->height();
484 mPaintPix = new QPixmap(w,h); 480 mPaintPix = new QPixmap(w,h);
485 } 481 }
486 return mPaintPix ; 482 return mPaintPix ;
487} 483}
488QPixmap * KOAgendaItem::paintPixAllday() 484QPixmap * KOAgendaItem::paintPixAllday()
489{ 485{
490 static QPixmap* mPaintPixA = 0; 486 static QPixmap* mPaintPixA = 0;
491 if ( ! mPaintPixA ) { 487 if ( ! mPaintPixA ) {
492 int w = QApplication::desktop()->width(); 488 int w = QApplication::desktop()->width();
493 int h = QApplication::desktop()->height()/3; 489 int h = QApplication::desktop()->height()/5;
494 mPaintPixA = new QPixmap(w,h); 490 mPaintPixA = new QPixmap(w,h);
495 } 491 }
496 return mPaintPixA ; 492 return mPaintPixA ;
497} 493}
498 494
499void KOAgendaItem::paintEvent ( QPaintEvent *e ) 495void KOAgendaItem::paintEvent ( QPaintEvent *e )
500{ 496{
501 497
502 if ( globalFlagBlockAgendaItemPaint ) 498 if ( globalFlagBlockAgendaItemPaint )
503 return; 499 return;
504 if ( globalFlagBlockAgenda > 0 && globalFlagBlockAgenda < 5 ) 500 if ( globalFlagBlockAgenda > 0 && globalFlagBlockAgenda < 5 )
505 return; 501 return;
506 int yy; 502 int yy;
507 if ( mAllDay ) 503 if ( mAllDay )
508 yy = y(); 504 yy = y();
509 else 505 else
510 yy = mCellYTop * ( height() / cellHeight() ); 506 yy = mCellYTop * ( height() / cellHeight() );
511 int xx = x(); 507 int xx = x();
512 508
513 if ( xPaintCoord != xx || yPaintCoord != yy || 509 if ( xPaintCoord != xx || yPaintCoord != yy ||
514 wPaintCoord != width() || hPaintCoord != height()) { 510 wPaintCoord != width() || hPaintCoord != height()) {
515 xPaintCoord= xx; 511 xPaintCoord= xx;
516 yPaintCoord = yy; 512 yPaintCoord = yy;
517 wPaintCoord = width(); 513 wPaintCoord = width();
518 hPaintCoord = height(); 514 hPaintCoord = height();
519 globalFlagBlockAgendaItemUpdate = 0; 515 globalFlagBlockAgendaItemUpdate = 0;
520 paintMe( mSelected ); 516 paintMe( mSelected );
521 //qDebug("calling paintMe "); 517 //qDebug("calling paintMe ");
522 globalFlagBlockAgendaItemUpdate = 1; 518 globalFlagBlockAgendaItemUpdate = 1;
523 if ( mSelected ) 519 if ( mSelected )
524 return; 520 return;
525 } 521 }
526 int rx, ry, rw, rh; 522 int rx, ry, rw, rh;
527 rx = e->rect().x(); 523 rx = e->rect().x();
528 ry = e->rect().y(); 524 ry = e->rect().y();
529 rw = e->rect().width(); 525 rw = e->rect().width();
530 rh = e->rect().height(); 526 rh = e->rect().height();
531 //qDebug(" paintevent %s %d %d %d %d", mIncidence->summary().latin1(), x(), yy, width(), height()); 527 //qDebug(" paintevent %s %d %d %d %d", mIncidence->summary().latin1(), x(), yy, width(), height());
532 528
533 QPixmap* paintFrom ; 529 QPixmap* paintFrom ;
534 if ( mSelected ) { 530 if ( mSelected ) {
535 paintMe( mSelected ); 531 paintMe( mSelected );
536 return; 532 return;
537 } else { 533 } else {
538 if ( mAllDay ) 534 if ( mAllDay )
539 paintFrom = paintPixAllday(); 535 paintFrom = paintPixAllday();
540 else 536 else
541 paintFrom = paintPix(); 537 paintFrom = paintPix();
542 } 538 }
543 xx += rx; 539 xx += rx;
544 540
545 if ( xx < 0 ) { 541 if ( xx < 0 ) {
546 rw = rw + xx; 542 rw = rw + xx;
547 rx -= xx; 543 rx -= xx;
548 xx = 0; 544 xx = 0;
549 if ( rw <= 1 ) { 545 if ( rw <= 1 ) {
550 //qDebug("KOAgendaItem::Width1 <= 1 (%d). Returning. %s",rw,mDisplayedText.latin1()); 546 //qDebug("KOAgendaItem::Width1 <= 1 (%d). Returning. %s",rw,mDisplayedText.latin1());
551 return; 547 return;
552 } 548 }
553 } 549 }
554 if ( paintFrom->width() < xx+rw ) { 550 if ( paintFrom->width() < xx+rw ) {
555 rw = paintFrom->width() - xx; 551 rw = paintFrom->width() - xx;
556 if ( rw <= 1 ) { 552 if ( rw <= 1 ) {
557 //qDebug("KOAgendaItem::Width2 <= 1 (%d). Returning.%s ",rw,mDisplayedText.latin1() ); 553 //qDebug("KOAgendaItem::Width2 <= 1 (%d). Returning.%s ",rw,mDisplayedText.latin1() );
558 return; 554 return;
559 } 555 }
560 } 556 }
561 //qDebug("%d %d %d %d %d %d %d",rx, ry, paintFrom, xx ,yPaintCoord+ry, rw, rh); 557 //qDebug("%d %d %d %d %d %d %d",rx, ry, paintFrom, xx ,yPaintCoord+ry, rw, rh);
562 bitBlt (this, rx, ry, paintFrom, xx ,yPaintCoord+ry, rw, rh ,CopyROP); 558 bitBlt (this, rx, ry, paintFrom, xx ,yPaintCoord+ry, rw, rh ,CopyROP);
563} 559}
564void KOAgendaItem::computeText() 560void KOAgendaItem::computeText()
565{ 561{
566 mDisplayedText = mIncidence->summary(); 562 mDisplayedText = mIncidence->summary();
567 if ( (mIncidence->typeID() == todoID ) ) { 563 if ( (mIncidence->typeID() == todoID ) ) {
568 if ( static_cast<Todo*>(mIncidence)->hasDueDate() ) { 564 if ( static_cast<Todo*>(mIncidence)->hasDueDate() ) {
569 if ( static_cast<Todo*>(mIncidence)->dtDue().date() < QDate::currentDate() ) 565 if ( static_cast<Todo*>(mIncidence)->dtDue().date() < QDate::currentDate() )
570 mDisplayedText += i18n(" (") +KGlobal::locale()->formatDate((static_cast<Todo*>(mIncidence))->dtDue().date(), true)+")"; 566 mDisplayedText += i18n(" (") +KGlobal::locale()->formatDate((static_cast<Todo*>(mIncidence))->dtDue().date(), true)+")";
571 else if ( !(mIncidence->doesFloat())) 567 else if ( !(mIncidence->doesFloat()))
572 mDisplayedText += i18n(" (") +KGlobal::locale()->formatTime((static_cast<Todo*>(mIncidence))->dtDue().time())+")"; 568 mDisplayedText += i18n(" (") +KGlobal::locale()->formatTime((static_cast<Todo*>(mIncidence))->dtDue().time())+")";
573 } 569 }
574 } else { 570 } else {
575 if ( !(mIncidence->doesFloat()) && KOPrefs::instance()->mShowTimeInAgenda) 571 if ( !(mIncidence->doesFloat()) && KOPrefs::instance()->mShowTimeInAgenda)
576 mDisplayedText += ": " +KGlobal::locale()->formatTime((static_cast<Event*>(mIncidence))->dtStart().time()) + " - " + KGlobal::locale()->formatTime((static_cast<Event*>(mIncidence))->dtEnd().time()) ; 572 mDisplayedText += ": " +KGlobal::locale()->formatTime((static_cast<Event*>(mIncidence))->dtStart().time()) + " - " + KGlobal::locale()->formatTime((static_cast<Event*>(mIncidence))->dtEnd().time()) ;
577 573
578 if ( mAllDay ) { 574 if ( mAllDay ) {
579 if ( mIncidence->dtStart().date().addDays(3) < mIncidence->dtEnd().date() ) { 575 if ( mIncidence->dtStart().date().addDays(3) < mIncidence->dtEnd().date() ) {
580 if ( mIncidence->doesRecur() ) { 576 if ( mIncidence->doesRecur() ) {
581 mDisplayedText += " (" + mIncidence->recurrence()->recurrenceText() + ")"; 577 mDisplayedText += " (" + mIncidence->recurrence()->recurrenceText() + ")";
582 } else { 578 } else {
583 mDisplayedText += ": " +KGlobal::locale()->formatDate((static_cast<Event*>(mIncidence))->dtStart().date(), true) + " - " + KGlobal::locale()->formatDate((static_cast<Event*>(mIncidence))->dtEnd().date(), true) ; 579 mDisplayedText += ": " +KGlobal::locale()->formatDate((static_cast<Event*>(mIncidence))->dtStart().date(), true) + " - " + KGlobal::locale()->formatDate((static_cast<Event*>(mIncidence))->dtEnd().date(), true) ;
584 } 580 }
585 } 581 }
586 } 582 }
587 } 583 }
588 584
589 if ( !mIncidence->location().isEmpty() ) { 585 if ( !mIncidence->location().isEmpty() ) {
diff --git a/korganizer/koagendaitem.h b/korganizer/koagendaitem.h
index 7103abe..3ed68b0 100644
--- a/korganizer/koagendaitem.h
+++ b/korganizer/koagendaitem.h
@@ -8,158 +8,157 @@
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19#ifndef KOAGENDAITEM_H 19#ifndef KOAGENDAITEM_H
20#define KOAGENDAITEM_H 20#define KOAGENDAITEM_H
21 21
22#include <qframe.h> 22#include <qframe.h>
23#include <qlabel.h> 23#include <qlabel.h>
24#include <qpixmap.h> 24#include <qpixmap.h>
25#include <qdatetime.h> 25#include <qdatetime.h>
26#include <qpalette.h> 26#include <qpalette.h>
27 27
28#include <libkcal/incidence.h> 28#include <libkcal/incidence.h>
29 29
30class KOAgendaItemWhatsThis; 30class KOAgendaItemWhatsThis;
31class QToolTipGroup; 31class QToolTipGroup;
32class QDragEnterEvent; 32class QDragEnterEvent;
33class QDropEvent; 33class QDropEvent;
34 34
35using namespace KCal; 35using namespace KCal;
36 36
37/* 37/*
38 The KOAgendaItem has to make sure that it receives all mouse events, which are 38 The KOAgendaItem has to make sure that it receives all mouse events, which are
39 to be used for dragging and resizing. That means it has to be installed as 39 to be used for dragging and resizing. That means it has to be installed as
40 eventfiler for its children, if it has children, and it has to pass mouse 40 eventfiler for its children, if it has children, and it has to pass mouse
41 events from the cildren to itself. See eventFilter(). 41 events from the cildren to itself. See eventFilter().
42*/ 42*/
43class KOAgendaItem : public QWidget 43class KOAgendaItem : public QWidget
44{ 44{
45 Q_OBJECT 45 Q_OBJECT
46 public: 46 public:
47 KOAgendaItem(Incidence *incidence, QDate qd, QWidget *parent, bool allday, const char *name=0, 47 KOAgendaItem(Incidence *incidence, QDate qd, QWidget *parent, bool allday, const char *name=0,
48 WFlags f=0 ); 48 WFlags f=0 );
49 ~KOAgendaItem(); 49 ~KOAgendaItem();
50 QString getWhatsThisText(); 50 QString getWhatsThisText();
51 void init ( Incidence *incidence, QDate qd ); 51 void init ( Incidence *incidence, QDate qd );
52 int cellX() { return mCellX; } 52 int cellX() { return mCellX; }
53 int cellXWidth() { return mCellXWidth; } 53 int cellXWidth() { return mCellXWidth; }
54 int cellYTop() { return mCellYTop; } 54 int cellYTop() { return mCellYTop; }
55 int cellYBottom() { return mCellYBottom; } 55 int cellYBottom() { return mCellYBottom; }
56 int cellHeight(); 56 int cellHeight();
57 int cellWidth(); 57 int cellWidth();
58 int subCell() { return mSubCell; } 58 int subCell() { return mSubCell; }
59 int subCells() { return mSubCells; } 59 int subCells() { return mSubCells; }
60 60
61 void setCellXY(int X, int YTop, int YBottom); 61 void setCellXY(int X, int YTop, int YBottom);
62 void setCellY(int YTop, int YBottom); 62 void setCellY(int YTop, int YBottom);
63 void setCellX(int XLeft, int XRight); 63 void setCellX(int XLeft, int XRight);
64 void setCellXWidth(int xwidth); 64 void setCellXWidth(int xwidth);
65 void setSubCell(int subCell); 65 void setSubCell(int subCell);
66 void setSubCells(int subCells); 66 void setSubCells(int subCells);
67 67
68 /** Start movement */ 68 /** Start movement */
69 void startMove(); 69 void startMove();
70 /** Reset to original values */ 70 /** Reset to original values */
71 void resetMove(); 71 void resetMove();
72 72
73 void moveRelative(int dx,int dy); 73 void moveRelative(int dx,int dy);
74 void expandTop(int dy); 74 void expandTop(int dy);
75 void expandBottom(int dy); 75 void expandBottom(int dy);
76 void expandLeft(int dx); 76 void expandLeft(int dx);
77 void expandRight(int dx); 77 void expandRight(int dx);
78 int mLastMoveXPos; 78 int mLastMoveXPos;
79 79
80 void setMultiItem(KOAgendaItem *first,KOAgendaItem *next, 80 void setMultiItem(KOAgendaItem *first,KOAgendaItem *next,
81 KOAgendaItem *last); 81 KOAgendaItem *last);
82 KOAgendaItem *firstMultiItem() { return mFirstMultiItem; } 82 KOAgendaItem *firstMultiItem() { return mFirstMultiItem; }
83 KOAgendaItem *nextMultiItem() { return mNextMultiItem; } 83 KOAgendaItem *nextMultiItem() { return mNextMultiItem; }
84 KOAgendaItem *lastMultiItem() { return mLastMultiItem; } 84 KOAgendaItem *lastMultiItem() { return mLastMultiItem; }
85 85
86 Incidence *incidence() const { return mIncidence; } 86 Incidence *incidence() const { return mIncidence; }
87 QDate itemDate() { return mDate; } 87 QDate itemDate() { return mDate; }
88 88
89 /** Update the date of this item's occurence (not in the event) */ 89 /** Update the date of this item's occurence (not in the event) */
90 void setItemDate(QDate qd); 90 void setItemDate(QDate qd);
91 91
92 void setText ( const QString & text ) { mDisplayedText = text; } 92 void setText ( const QString & text ) { mDisplayedText = text; }
93 QString text () { return mDisplayedText; } 93 QString text () { return mDisplayedText; }
94 94
95 virtual bool eventFilter ( QObject *, QEvent * ); 95 virtual bool eventFilter ( QObject *, QEvent * );
96 96
97 static QToolTipGroup *toolTipGroup(); 97 static QToolTipGroup *toolTipGroup();
98 98
99 QPtrList<KOAgendaItem> conflictItems(); 99 QPtrList<KOAgendaItem> conflictItems();
100 void setConflictItems(QPtrList<KOAgendaItem>); 100 void setConflictItems(QPtrList<KOAgendaItem>);
101 void addConflictItem(KOAgendaItem *ci); 101 void addConflictItem(KOAgendaItem *ci);
102 void paintMe( bool, QPainter* painter = 0 ); 102 void paintMe( bool, QPainter* painter = 0 );
103 void repaintMe(); 103 void repaintMe();
104 static void resizePixmap( int, int );
105 static QPixmap * paintPix(); 104 static QPixmap * paintPix();
106 static QPixmap * paintPixAllday(); 105 static QPixmap * paintPixAllday();
107 void updateItem(); 106 void updateItem();
108 void computeText(); 107 void computeText();
109 void recreateIncidence(); 108 void recreateIncidence();
110 bool checkLayout(); 109 bool checkLayout();
111 void initColor (); 110 void initColor ();
112 public slots: 111 public slots:
113 bool updateIcons( QPainter *, bool ); 112 bool updateIcons( QPainter *, bool );
114 void select(bool=true); 113 void select(bool=true);
115 114
116 protected: 115 protected:
117 void dragEnterEvent(QDragEnterEvent *e); 116 void dragEnterEvent(QDragEnterEvent *e);
118 void dropEvent(QDropEvent *e); 117 void dropEvent(QDropEvent *e);
119 void paintEvent ( QPaintEvent * ); 118 void paintEvent ( QPaintEvent * );
120 void resizeEvent ( QResizeEvent *ev ); 119 void resizeEvent ( QResizeEvent *ev );
121 120
122 private: 121 private:
123 KOAgendaItemWhatsThis* mKOAgendaItemWhatsThis; 122 KOAgendaItemWhatsThis* mKOAgendaItemWhatsThis;
124 bool mAllDay; 123 bool mAllDay;
125 bool mWhiteText; 124 bool mWhiteText;
126 int mCellX; 125 int mCellX;
127 int mCellXWidth; 126 int mCellXWidth;
128 int mCellYTop,mCellYBottom; 127 int mCellYTop,mCellYBottom;
129 int mSubCell; // subcell number of this item 128 int mSubCell; // subcell number of this item
130 int mSubCells; // Total number of subcells in cell of this item 129 int mSubCells; // Total number of subcells in cell of this item
131 int xPaintCoord; 130 int xPaintCoord;
132 int yPaintCoord; 131 int yPaintCoord;
133 int wPaintCoord; 132 int wPaintCoord;
134 int hPaintCoord; 133 int hPaintCoord;
135 // Variables to remember start position 134 // Variables to remember start position
136 int mStartCellX; 135 int mStartCellX;
137 int mStartCellXWidth; 136 int mStartCellXWidth;
138 int mStartCellYTop,mStartCellYBottom; 137 int mStartCellYTop,mStartCellYBottom;
139 int mLastMovePos; 138 int mLastMovePos;
140 139
141 // Multi item pointers 140 // Multi item pointers
142 KOAgendaItem *mFirstMultiItem; 141 KOAgendaItem *mFirstMultiItem;
143 KOAgendaItem *mNextMultiItem; 142 KOAgendaItem *mNextMultiItem;
144 KOAgendaItem *mLastMultiItem; 143 KOAgendaItem *mLastMultiItem;
145 144
146 int mFontPixelSize; 145 int mFontPixelSize;
147 Incidence *mIncidence; // corresponding event or todo 146 Incidence *mIncidence; // corresponding event or todo
148 QDate mDate; //date this events occurs (for recurrence) 147 QDate mDate; //date this events occurs (for recurrence)
149 //void showIcon( QLabel*, int ); 148 //void showIcon( QLabel*, int );
150 //QLabel *mTodoIconLabel; 149 //QLabel *mTodoIconLabel;
151 //QLabel *mItemLabel; 150 //QLabel *mItemLabel;
152 //QWidget *mIconBox; 151 //QWidget *mIconBox;
153 //QLabel *mIconAlarm,*mIconRecur,*mIconReadonly; 152 //QLabel *mIconAlarm,*mIconRecur,*mIconReadonly;
154 //QLabel *mIconReply,*mIconGroup,*mIconOrganizer; 153 //QLabel *mIconReply,*mIconGroup,*mIconOrganizer;
155 //QLabel *mIconMoreInfo; 154 //QLabel *mIconMoreInfo;
156 static QToolTipGroup *mToolTipGroup; 155 static QToolTipGroup *mToolTipGroup;
157 156
158 QColor mBackgroundColor; 157 QColor mBackgroundColor;
159 QColorGroup mColorGroup; 158 QColorGroup mColorGroup;
160 QString mDisplayedText; 159 QString mDisplayedText;
161 bool mSelected; 160 bool mSelected;
162 QPtrList<KOAgendaItem> mConflictItems; 161 QPtrList<KOAgendaItem> mConflictItems;
163}; 162};
164 163
165#endif // KOAGENDAITEM_H 164#endif // KOAGENDAITEM_H