-rw-r--r-- | korganizer/koagenda.cpp | 172 |
1 files changed, 80 insertions, 92 deletions
diff --git a/korganizer/koagenda.cpp b/korganizer/koagenda.cpp index 14f52b8..ed7a443 100644 --- a/korganizer/koagenda.cpp +++ b/korganizer/koagenda.cpp | |||
@@ -300,136 +300,127 @@ void KOAgenda::init() | |||
300 | else | 300 | else |
301 | setVScrollBarMode(AlwaysOff); | 301 | setVScrollBarMode(AlwaysOff); |
302 | 302 | ||
303 | setStartHour(KOPrefs::instance()->mDayBegins); | 303 | setStartHour(KOPrefs::instance()->mDayBegins); |
304 | 304 | ||
305 | calculateWorkingHours(); | 305 | calculateWorkingHours(); |
306 | 306 | ||
307 | connect(verticalScrollBar(),SIGNAL(valueChanged(int)), | 307 | connect(verticalScrollBar(),SIGNAL(valueChanged(int)), |
308 | SLOT(checkScrollBoundaries(int))); | 308 | SLOT(checkScrollBoundaries(int))); |
309 | 309 | ||
310 | // Create the Marcus Bains line. | 310 | // Create the Marcus Bains line. |
311 | if(mAllDayMode) | 311 | if(mAllDayMode) |
312 | mMarcusBains = 0; | 312 | mMarcusBains = 0; |
313 | else { | 313 | else { |
314 | mMarcusBains = new MarcusBains(this); | 314 | mMarcusBains = new MarcusBains(this); |
315 | addChild(mMarcusBains); | 315 | addChild(mMarcusBains); |
316 | } | 316 | } |
317 | mPopupKind = 0; | 317 | mPopupKind = 0; |
318 | mPopupItem = 0; | 318 | mPopupItem = 0; |
319 | } | 319 | } |
320 | 320 | ||
321 | void KOAgenda::clear() | 321 | void KOAgenda::clear() |
322 | { | 322 | { |
323 | KOAgendaItem *item; | 323 | KOAgendaItem *item; |
324 | for ( item=mItems.first(); item != 0; item=mItems.next() ) { | 324 | for ( item=mItems.first(); item != 0; item=mItems.next() ) { |
325 | mUnusedItems.append( item ); | 325 | mUnusedItems.append( item ); |
326 | //item->hide(); | 326 | //item->hide(); |
327 | } | 327 | } |
328 | mItems.clear(); | 328 | mItems.clear(); |
329 | mSelectedItem = 0; | 329 | mSelectedItem = 0; |
330 | clearSelection(); | 330 | clearSelection(); |
331 | } | 331 | } |
332 | 332 | ||
333 | void KOAgenda::clearSelection() | 333 | void KOAgenda::clearSelection() |
334 | { | 334 | { |
335 | mSelectionCellX = 0; | 335 | mSelectionCellX = 0; |
336 | mSelectionYTop = 0; | 336 | mSelectionYTop = 0; |
337 | mSelectionHeight = 0; | 337 | mSelectionHeight = 0; |
338 | } | 338 | } |
339 | 339 | ||
340 | void KOAgenda::marcus_bains() | 340 | void KOAgenda::marcus_bains() |
341 | { | 341 | { |
342 | if(mMarcusBains) mMarcusBains->updateLocation(true); | 342 | if(mMarcusBains) mMarcusBains->updateLocation(true); |
343 | } | 343 | } |
344 | 344 | ||
345 | 345 | ||
346 | void KOAgenda::changeColumns(int columns) | 346 | void KOAgenda::changeColumns(int columns) |
347 | { | 347 | { |
348 | if (columns == 0) { | 348 | if (columns == 0) { |
349 | kdDebug() << "KOAgenda::changeColumns() called with argument 0" << endl; | 349 | qDebug("KOAgenda::changeColumns() called with argument 0 "); |
350 | return; | 350 | return; |
351 | } | 351 | } |
352 | 352 | clear(); | |
353 | clear(); | 353 | mColumns = columns; |
354 | |||
355 | mColumns = columns; | ||
356 | // setMinimumSize(mColumns * 10, mGridSpacingY + 1); | ||
357 | // init(); | ||
358 | // update(); | ||
359 | //qDebug("KOAgenda::changeColumns "); | ||
360 | computeSizes(); | 354 | computeSizes(); |
361 | // QResizeEvent event( size(), size() ); | ||
362 | |||
363 | //QApplication::sendEvent( this, &event ); | ||
364 | } | 355 | } |
365 | 356 | ||
366 | /* | 357 | /* |
367 | This is the eventFilter function, which gets all events from the KOAgendaItems | 358 | This is the eventFilter function, which gets all events from the KOAgendaItems |
368 | contained in the agenda. It has to handle moving and resizing for all items. | 359 | contained in the agenda. It has to handle moving and resizing for all items. |
369 | */ | 360 | */ |
370 | bool KOAgenda::eventFilter ( QObject *object, QEvent *event ) | 361 | bool KOAgenda::eventFilter ( QObject *object, QEvent *event ) |
371 | { | 362 | { |
372 | // kdDebug() << "KOAgenda::eventFilter" << endl; | 363 | // kdDebug() << "KOAgenda::eventFilter" << endl; |
373 | switch(event->type()) { | 364 | switch(event->type()) { |
374 | case QEvent::MouseButtonPress: | 365 | case QEvent::MouseButtonPress: |
375 | case QEvent::MouseButtonDblClick: | 366 | case QEvent::MouseButtonDblClick: |
376 | case QEvent::MouseButtonRelease: | 367 | case QEvent::MouseButtonRelease: |
377 | case QEvent::MouseMove: | 368 | case QEvent::MouseMove: |
378 | return eventFilter_mouse(object, static_cast<QMouseEvent *>(event)); | 369 | return eventFilter_mouse(object, static_cast<QMouseEvent *>(event)); |
379 | 370 | ||
380 | case (QEvent::Leave): | 371 | case (QEvent::Leave): |
381 | if (!mActionItem) | 372 | if (!mActionItem) |
382 | setCursor(arrowCursor); | 373 | setCursor(arrowCursor); |
383 | return true; | 374 | return true; |
384 | 375 | ||
385 | default: | 376 | default: |
386 | return QScrollView::eventFilter(object,event); | 377 | return QScrollView::eventFilter(object,event); |
387 | } | 378 | } |
388 | } | 379 | } |
389 | void KOAgenda::popupMenu() | 380 | void KOAgenda::popupMenu() |
390 | { | 381 | { |
391 | mPopupTimer->stop(); | 382 | mPopupTimer->stop(); |
392 | if ( mPopupKind == 1 ) { | 383 | if ( mPopupKind == 1 ) { |
393 | if (mActionItem ) { | 384 | if (mActionItem ) { |
394 | endItemAction(); | 385 | endItemAction(); |
395 | } | 386 | } |
396 | mLeftMouseDown = false; // no more leftMouse computation | 387 | mLeftMouseDown = false; // no more leftMouse computation |
397 | if (mPopupItem) { | 388 | if (mPopupItem) { |
398 | selectItem(mPopupItem); | 389 | selectItem(mPopupItem); |
399 | emit showIncidencePopupSignal(mPopupItem->incidence()); | 390 | emit showIncidencePopupSignal(mPopupItem->incidence()); |
400 | 391 | ||
401 | } | 392 | } |
402 | } else if ( mPopupKind == 2 ) { | 393 | } else if ( mPopupKind == 2 ) { |
403 | if ( mLeftMouseDown ) { // we have a simulated right click - clear left mouse action | 394 | if ( mLeftMouseDown ) { // we have a simulated right click - clear left mouse action |
404 | endSelectAction( false ); // do not emit new event signal | 395 | endSelectAction( false ); // do not emit new event signal |
405 | mLeftMouseDown = false; // no more leftMouse computation | 396 | mLeftMouseDown = false; // no more leftMouse computation |
406 | } | 397 | } |
407 | mNewItemPopup->popup( mPopupPos); | 398 | mNewItemPopup->popup( mPopupPos); |
408 | } | 399 | } |
409 | mLeftMouseDown = false; | 400 | mLeftMouseDown = false; |
410 | mPopupItem = 0; | 401 | mPopupItem = 0; |
411 | mPopupKind = 0; | 402 | mPopupKind = 0; |
412 | } | 403 | } |
413 | 404 | ||
414 | bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me) | 405 | bool KOAgenda::eventFilter_mouse(QObject *object, QMouseEvent *me) |
415 | { | 406 | { |
416 | //qDebug("KOAgenda::eventFilter_mous "); | 407 | //qDebug("KOAgenda::eventFilter_mous "); |
417 | QPoint viewportPos; | 408 | QPoint viewportPos; |
418 | if (object != viewport()) { | 409 | if (object != viewport()) { |
419 | viewportPos = ((QWidget *)object)->mapToParent(me->pos()); | 410 | viewportPos = ((QWidget *)object)->mapToParent(me->pos()); |
420 | } else { | 411 | } else { |
421 | viewportPos = me->pos(); | 412 | viewportPos = me->pos(); |
422 | } | 413 | } |
423 | static int startX = 0; | 414 | static int startX = 0; |
424 | static int startY = 0; | 415 | static int startY = 0; |
425 | static int blockmoveDist = ( QApplication::desktop()->width() < 480 ? 15 : 20 ); | 416 | static int blockmoveDist = ( QApplication::desktop()->width() < 480 ? 15 : 20 ); |
426 | static bool blockMoving = true; | 417 | static bool blockMoving = true; |
427 | switch (me->type()) { | 418 | switch (me->type()) { |
428 | case QEvent::MouseButtonPress: | 419 | case QEvent::MouseButtonPress: |
429 | if (me->button() == LeftButton) { | 420 | if (me->button() == LeftButton) { |
430 | mPopupTimer->start( 600 ); | 421 | mPopupTimer->start( 600 ); |
431 | mLeftMouseDown = true; | 422 | mLeftMouseDown = true; |
432 | } | 423 | } |
433 | blockMoving = true; | 424 | blockMoving = true; |
434 | startX = viewportPos.x(); | 425 | startX = viewportPos.x(); |
435 | startY = viewportPos.y(); | 426 | startY = viewportPos.y(); |
@@ -1703,109 +1694,106 @@ void KOAgenda::updateTodo( Todo * todo, int days, bool remove) | |||
1703 | else | 1694 | else |
1704 | dt = todo->dtDue(); | 1695 | dt = todo->dtDue(); |
1705 | if ( overdue ) { | 1696 | if ( overdue ) { |
1706 | currentDate = QDate::currentDate(); | 1697 | currentDate = QDate::currentDate(); |
1707 | days += todo->dtDue().date().daysTo( currentDate ); | 1698 | days += todo->dtDue().date().daysTo( currentDate ); |
1708 | } | 1699 | } |
1709 | else | 1700 | else |
1710 | currentDate = dt.date(); | 1701 | currentDate = dt.date(); |
1711 | 1702 | ||
1712 | if (( todo->doesFloat() || overdue) && !todo->hasCompletedDate() ) { | 1703 | if (( todo->doesFloat() || overdue) && !todo->hasCompletedDate() ) { |
1713 | if ( ! mAllDayMode ) return; | 1704 | if ( ! mAllDayMode ) return; |
1714 | // aldayagenda | 1705 | // aldayagenda |
1715 | globalFlagBlockAgendaItemPaint = 1; | 1706 | globalFlagBlockAgendaItemPaint = 1; |
1716 | item = insertAllDayItem(todo, currentDate,days, days); | 1707 | item = insertAllDayItem(todo, currentDate,days, days); |
1717 | item->show(); | 1708 | item->show(); |
1718 | 1709 | ||
1719 | } | 1710 | } |
1720 | else { | 1711 | else { |
1721 | if ( mAllDayMode ) return; | 1712 | if ( mAllDayMode ) return; |
1722 | // mAgenda | 1713 | // mAgenda |
1723 | globalFlagBlockAgendaItemPaint = 1; | 1714 | globalFlagBlockAgendaItemPaint = 1; |
1724 | int endY = timeToY(dt.time()) - 1; | 1715 | int endY = timeToY(dt.time()) - 1; |
1725 | int hi = 12/KOPrefs::instance()->mHourSize; | 1716 | int hi = 12/KOPrefs::instance()->mHourSize; |
1726 | int startY = endY - 1-hi; | 1717 | int startY = endY - 1-hi; |
1727 | item = insertItem(todo,currentDate,days,startY,endY); | 1718 | item = insertItem(todo,currentDate,days,startY,endY); |
1728 | item->show(); | 1719 | item->show(); |
1729 | } | 1720 | } |
1730 | qApp->processEvents(); | 1721 | qApp->processEvents(); |
1731 | globalFlagBlockAgendaItemPaint = 0; | 1722 | globalFlagBlockAgendaItemPaint = 0; |
1732 | QPtrList<KOAgendaItem> oldconflictItems = item->conflictItems(); | 1723 | QPtrList<KOAgendaItem> oldconflictItems = item->conflictItems(); |
1733 | KOAgendaItem *itemit; | 1724 | KOAgendaItem *itemit; |
1734 | for ( itemit=oldconflictItems.first(); itemit != 0; | 1725 | for ( itemit=oldconflictItems.first(); itemit != 0; |
1735 | itemit=oldconflictItems.next() ) { | 1726 | itemit=oldconflictItems.next() ) { |
1736 | globalFlagBlockAgendaItemUpdate = 0; | 1727 | globalFlagBlockAgendaItemUpdate = 0; |
1737 | itemit->repaintMe(); | 1728 | itemit->repaintMe(); |
1738 | globalFlagBlockAgendaItemUpdate = 1; | 1729 | globalFlagBlockAgendaItemUpdate = 1; |
1739 | itemit->repaint(); | 1730 | itemit->repaint(); |
1740 | } | 1731 | } |
1741 | globalFlagBlockAgendaItemUpdate = 0; | 1732 | globalFlagBlockAgendaItemUpdate = 0; |
1742 | item->repaintMe(); | 1733 | item->repaintMe(); |
1743 | globalFlagBlockAgendaItemUpdate = 1; | 1734 | globalFlagBlockAgendaItemUpdate = 1; |
1744 | item->repaint(); | 1735 | item->repaint(); |
1745 | } | 1736 | } |
1746 | /* | 1737 | /* |
1747 | Insert KOAgendaItem into agenda. | 1738 | Insert KOAgendaItem into agenda. |
1748 | */ | 1739 | */ |
1749 | KOAgendaItem *KOAgenda::insertItem (Incidence *event,QDate qd,int X,int YTop,int YBottom) | 1740 | KOAgendaItem *KOAgenda::insertItem (Incidence *event,QDate qd,int X,int YTop,int YBottom) |
1750 | { | 1741 | { |
1751 | //kdDebug() << "KOAgenda::insertItem:" << event->summary() << "-" << qd.toString() << " ;top, bottom:" << YTop << "," << YBottom << endl; | ||
1752 | |||
1753 | if (mAllDayMode) { | 1742 | if (mAllDayMode) { |
1754 | kdDebug() << "KOAgenda: calling insertItem in all-day mode is illegal." << endl; | 1743 | qDebug("KOAgenda: calling insertItem in all-day mode is illegal. "); |
1755 | return 0; | 1744 | return 0; |
1756 | } | 1745 | } |
1757 | 1746 | ||
1758 | KOAgendaItem *agendaItem = getNewItem(event,qd,viewport()); | 1747 | KOAgendaItem *agendaItem = getNewItem(event,qd,viewport()); |
1759 | //agendaItem->setFrameStyle(WinPanel|Raised); | 1748 | //agendaItem->setFrameStyle(WinPanel|Raised); |
1760 | 1749 | ||
1761 | int YSize = YBottom - YTop + 1; | 1750 | int YSize = YBottom - YTop + 1; |
1762 | if (YSize < 0) { | 1751 | if (YSize < 0) { |
1763 | kdDebug() << "KOAgenda::insertItem(): Text: " << agendaItem->text() << " YSize<0" << endl; | ||
1764 | YSize = 1; | 1752 | YSize = 1; |
1765 | } | 1753 | } |
1766 | int iheight = mGridSpacingY * YSize; | 1754 | int iheight = mGridSpacingY * YSize; |
1767 | 1755 | ||
1768 | agendaItem->resize(mGridSpacingX,iheight ); | 1756 | agendaItem->resize(mGridSpacingX,iheight ); |
1769 | agendaItem->setCellXY(X,YTop,YBottom); | 1757 | agendaItem->setCellXY(X,YTop,YBottom); |
1770 | agendaItem->setCellXWidth(X); | 1758 | agendaItem->setCellXWidth(X); |
1771 | 1759 | ||
1772 | //addChild(agendaItem,X*mGridSpacingX,YTop*mGridSpacingY); | 1760 | //addChild(agendaItem,X*mGridSpacingX,YTop*mGridSpacingY); |
1773 | mItems.append(agendaItem); | 1761 | mItems.append(agendaItem); |
1774 | 1762 | ||
1775 | placeSubCells(agendaItem); | 1763 | placeSubCells(agendaItem); |
1776 | 1764 | ||
1777 | //agendaItem->show(); | 1765 | //agendaItem->show(); |
1778 | 1766 | ||
1779 | marcus_bains(); | 1767 | marcus_bains(); |
1780 | 1768 | ||
1781 | return agendaItem; | 1769 | return agendaItem; |
1782 | } | 1770 | } |
1783 | 1771 | ||
1784 | 1772 | ||
1785 | /* | 1773 | /* |
1786 | Insert all-day KOAgendaItem into agenda. | 1774 | Insert all-day KOAgendaItem into agenda. |
1787 | */ | 1775 | */ |
1788 | KOAgendaItem *KOAgenda::insertAllDayItem (Incidence *event,QDate qd,int XBegin,int XEnd) | 1776 | KOAgendaItem *KOAgenda::insertAllDayItem (Incidence *event,QDate qd,int XBegin,int XEnd) |
1789 | { | 1777 | { |
1790 | if (!mAllDayMode) { | 1778 | if (!mAllDayMode) { |
1791 | return 0; | 1779 | return 0; |
1792 | } | 1780 | } |
1793 | 1781 | ||
1794 | KOAgendaItem *agendaItem = getNewItem(event,qd,viewport()); | 1782 | KOAgendaItem *agendaItem = getNewItem(event,qd,viewport()); |
1795 | 1783 | ||
1796 | agendaItem->setCellXY(XBegin,0,0); | 1784 | agendaItem->setCellXY(XBegin,0,0); |
1797 | agendaItem->setCellXWidth(XEnd); | 1785 | agendaItem->setCellXWidth(XEnd); |
1798 | agendaItem->resize(mGridSpacingX * agendaItem->cellWidth(),mGridSpacingY); | 1786 | agendaItem->resize(mGridSpacingX * agendaItem->cellWidth(),mGridSpacingY); |
1799 | 1787 | ||
1800 | //addChild(agendaItem,XBegin*mGridSpacingX,0); | 1788 | //addChild(agendaItem,XBegin*mGridSpacingX,0); |
1801 | mItems.append(agendaItem); | 1789 | mItems.append(agendaItem); |
1802 | 1790 | ||
1803 | placeSubCells(agendaItem); | 1791 | placeSubCells(agendaItem); |
1804 | 1792 | ||
1805 | //agendaItem->show(); | 1793 | //agendaItem->show(); |
1806 | 1794 | ||
1807 | return agendaItem; | 1795 | return agendaItem; |
1808 | } | 1796 | } |
1809 | 1797 | ||
1810 | 1798 | ||
1811 | void KOAgenda::insertMultiItem (Event *event,QDate qd,int XBegin,int XEnd, | 1799 | void KOAgenda::insertMultiItem (Event *event,QDate qd,int XBegin,int XEnd, |
@@ -1845,180 +1833,180 @@ void KOAgenda::insertMultiItem (Event *event,QDate qd,int XBegin,int XEnd, | |||
1845 | else setFirst = first; | 1833 | else setFirst = first; |
1846 | if (current == last) setLast = 0; | 1834 | if (current == last) setLast = 0; |
1847 | else setLast = last; | 1835 | else setLast = last; |
1848 | 1836 | ||
1849 | current->setMultiItem(setFirst,next,setLast); | 1837 | current->setMultiItem(setFirst,next,setLast); |
1850 | current = next; | 1838 | current = next; |
1851 | } | 1839 | } |
1852 | 1840 | ||
1853 | marcus_bains(); | 1841 | marcus_bains(); |
1854 | } | 1842 | } |
1855 | 1843 | ||
1856 | 1844 | ||
1857 | //QSizePolicy KOAgenda::sizePolicy() const | 1845 | //QSizePolicy KOAgenda::sizePolicy() const |
1858 | //{ | 1846 | //{ |
1859 | // Thought this would make the all-day event agenda minimum size and the | 1847 | // Thought this would make the all-day event agenda minimum size and the |
1860 | // normal agenda take the remaining space. But it doesn´t work. The QSplitter | 1848 | // normal agenda take the remaining space. But it doesn´t work. The QSplitter |
1861 | // don´t seem to think that an Expanding widget needs more space than a | 1849 | // don´t seem to think that an Expanding widget needs more space than a |
1862 | // Preferred one. | 1850 | // Preferred one. |
1863 | // But it doesn´t hurt, so it stays. | 1851 | // But it doesn´t hurt, so it stays. |
1864 | // if (mAllDayMode) { | 1852 | // if (mAllDayMode) { |
1865 | // return QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Preferred); | 1853 | // return QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Preferred); |
1866 | // } else { | 1854 | // } else { |
1867 | // return QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); | 1855 | // return QSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); |
1868 | // } | 1856 | // } |
1869 | //} | 1857 | //} |
1870 | void KOAgenda::finishResize ( ) | 1858 | void KOAgenda::finishResize ( ) |
1871 | { | 1859 | { |
1872 | //qDebug("finishResize+++++++++++++++++++++++++++++++ ( ) "); | 1860 | //qDebug("finishResize+++++++++++++++++++++++++++++++ ( ) "); |
1873 | if ( globalFlagBlockAgenda == 0 ) { | 1861 | if ( globalFlagBlockAgenda == 0 ) { |
1874 | finishUpdate(); | 1862 | finishUpdate(); |
1875 | //qDebug("finishUpdate() called "); | 1863 | //qDebug("finishUpdate() called "); |
1876 | } | 1864 | } |
1877 | } | 1865 | } |
1878 | /* | 1866 | /* |
1879 | Overridden from QScrollView to provide proper resizing of KOAgendaItems. | 1867 | Overridden from QScrollView to provide proper resizing of KOAgendaItems. |
1880 | */ | 1868 | */ |
1881 | void KOAgenda::resizeEvent ( QResizeEvent *ev ) | 1869 | void KOAgenda::resizeEvent ( QResizeEvent *ev ) |
1882 | { | 1870 | { |
1883 | 1871 | ||
1884 | mResizeTimer.start( 150 , true ); | 1872 | mResizeTimer.start( 150 , true ); |
1885 | computeSizes(); | 1873 | computeSizes(); |
1886 | return; | 1874 | return; |
1887 | 1875 | ||
1888 | } | 1876 | } |
1889 | void KOAgenda::computeSizes() | 1877 | void KOAgenda::computeSizes() |
1890 | { | 1878 | { |
1891 | if ( globalFlagBlockStartup ) | 1879 | if ( globalFlagBlockStartup ) |
1892 | return; | 1880 | return; |
1881 | int frameOffset = frameWidth() * 2 +1; | ||
1882 | if (mAllDayMode) { | ||
1883 | mGridSpacingX = (width()-frameOffset) / mColumns; | ||
1884 | mGridSpacingY = height() - 2 * frameWidth() - 1; | ||
1885 | resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY + 1); | ||
1886 | // mGridSpacingY = height(); | ||
1887 | // resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY * mRows + 1 ); | ||
1893 | 1888 | ||
1894 | if (mAllDayMode) { | 1889 | KOAgendaItem *item; |
1895 | mGridSpacingX = (width()-3) / mColumns; | 1890 | int subCellWidth; |
1896 | mGridSpacingY = height() - 2 * frameWidth() - 1; | 1891 | for ( item=mItems.first(); item != 0; item=mItems.next() ) { |
1897 | resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY + 1); | 1892 | subCellWidth = mGridSpacingY / item->subCells(); |
1898 | // mGridSpacingY = height(); | 1893 | item->resize(mGridSpacingX * item->cellWidth(),subCellWidth); |
1899 | // resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY * mRows + 1 ); | 1894 | moveChild(item,KOGlobals::self()->reverseLayout() ? |
1900 | 1895 | (mColumns - 1 - item->cellX()) * mGridSpacingX : | |
1901 | KOAgendaItem *item; | ||
1902 | int subCellWidth; | ||
1903 | for ( item=mItems.first(); item != 0; item=mItems.next() ) { | ||
1904 | subCellWidth = mGridSpacingY / item->subCells(); | ||
1905 | item->resize(mGridSpacingX * item->cellWidth(),subCellWidth); | ||
1906 | moveChild(item,KOGlobals::self()->reverseLayout() ? | ||
1907 | (mColumns - 1 - item->cellX()) * mGridSpacingX : | ||
1908 | item->cellX() * mGridSpacingX, | 1896 | item->cellX() * mGridSpacingX, |
1909 | item->subCell() * subCellWidth); | 1897 | item->subCell() * subCellWidth); |
1910 | } | 1898 | } |
1911 | KOPrefs::instance()->mAllDaySize = mGridSpacingY; | 1899 | KOPrefs::instance()->mAllDaySize = mGridSpacingY; |
1912 | } else { | 1900 | } else { |
1913 | mGridSpacingX = (width() - verticalScrollBar()->width()-3)/mColumns; | 1901 | mGridSpacingX = (width() - verticalScrollBar()->width()-frameOffset)/mColumns; |
1914 | if (height() > mGridSpacingY * mRows + 1 ) { | 1902 | if (height() > mGridSpacingY * mRows + 1 ) { |
1915 | KOPrefs::instance()->mHourSize = ((height())/mRows)+1; | 1903 | KOPrefs::instance()->mHourSize = ((height())/mRows)+1; |
1916 | mGridSpacingY = KOPrefs::instance()->mHourSize ; | 1904 | mGridSpacingY = KOPrefs::instance()->mHourSize ; |
1917 | resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY * mRows + 1 ); | 1905 | resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY * mRows + 1 ); |
1918 | emit resizedSignal(); | 1906 | emit resizedSignal(); |
1919 | } else | 1907 | } else |
1920 | resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY * mRows + 1 ); | 1908 | resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY * mRows + 1 ); |
1921 | KOAgendaItem *item; | 1909 | KOAgendaItem *item; |
1922 | int subCellWidth; | 1910 | int subCellWidth; |
1923 | 1911 | ||
1924 | for ( item=mItems.first(); item != 0; item=mItems.next() ) { | 1912 | for ( item=mItems.first(); item != 0; item=mItems.next() ) { |
1925 | subCellWidth = mGridSpacingX / item->subCells(); | 1913 | subCellWidth = mGridSpacingX / item->subCells(); |
1926 | item->resize(subCellWidth,item->height()); | 1914 | item->resize(subCellWidth,item->height()); |
1927 | moveChild(item,(KOGlobals::self()->reverseLayout() ? | 1915 | moveChild(item,(KOGlobals::self()->reverseLayout() ? |
1928 | (mColumns - 1 - item->cellX()) * mGridSpacingX : | 1916 | (mColumns - 1 - item->cellX()) * mGridSpacingX : |
1929 | item->cellX() * mGridSpacingX) + | 1917 | item->cellX() * mGridSpacingX) + |
1930 | item->subCell() * subCellWidth,childY(item)); | 1918 | item->subCell() * subCellWidth,childY(item)); |
1919 | } | ||
1920 | } | ||
1921 | int cw = contentsWidth(); | ||
1922 | int ch = contentsHeight(); | ||
1923 | if ( mAllDayMode ) { | ||
1924 | QPixmap* paintPixAll = KOAgendaItem::paintPixAllday(); | ||
1925 | if ( (paintPixAll->width() < cw || paintPixAll->height() < ch) && cw > 0 && ch > 0 ) | ||
1926 | paintPixAll->resize( cw, ch ); | ||
1927 | } else { | ||
1928 | QPixmap* paintPix = KOAgendaItem::paintPix(); | ||
1929 | if ( paintPix->width() < cw || paintPix->height() < ch ) | ||
1930 | KOAgendaItem::resizePixmap( cw , ch ); | ||
1931 | } | 1931 | } |
1932 | } | ||
1933 | int cw = contentsWidth(); | ||
1934 | int ch = contentsHeight(); | ||
1935 | if ( mAllDayMode ) { | ||
1936 | QPixmap* paintPixAll = KOAgendaItem::paintPixAllday(); | ||
1937 | if ( (paintPixAll->width() < cw || paintPixAll->height() < ch) && cw > 0 && ch > 0 ) | ||
1938 | paintPixAll->resize( cw, ch ); | ||
1939 | } else { | ||
1940 | QPixmap* paintPix = KOAgendaItem::paintPix(); | ||
1941 | if ( paintPix->width() < cw || paintPix->height() < ch ) | ||
1942 | KOAgendaItem::resizePixmap( cw , ch ); | ||
1943 | } | ||
1944 | 1932 | ||
1945 | checkScrollBoundaries(); | 1933 | checkScrollBoundaries(); |
1946 | marcus_bains(); | 1934 | marcus_bains(); |
1947 | drawContentsToPainter(); | 1935 | drawContentsToPainter(); |
1948 | viewport()->repaint(false); | 1936 | viewport()->repaint(false); |
1949 | } | 1937 | } |
1950 | 1938 | ||
1951 | void KOAgenda::scrollUp() | 1939 | void KOAgenda::scrollUp() |
1952 | { | 1940 | { |
1953 | scrollBy(0,-mScrollOffset); | 1941 | scrollBy(0,-mScrollOffset); |
1954 | } | 1942 | } |
1955 | 1943 | ||
1956 | 1944 | ||
1957 | void KOAgenda::scrollDown() | 1945 | void KOAgenda::scrollDown() |
1958 | { | 1946 | { |
1959 | scrollBy(0,mScrollOffset); | 1947 | scrollBy(0,mScrollOffset); |
1960 | } | 1948 | } |
1961 | 1949 | ||
1962 | void KOAgenda::popupAlarm() | 1950 | void KOAgenda::popupAlarm() |
1963 | { | 1951 | { |
1964 | if (!mClickedItem) { | 1952 | if (!mClickedItem) { |
1965 | qDebug("KOAgenda::popupAlarm() called without having a clicked item "); | 1953 | qDebug("KOAgenda::popupAlarm() called without having a clicked item "); |
1966 | return; | 1954 | return; |
1967 | } | 1955 | } |
1968 | // TODO: deal correctly with multiple alarms | 1956 | // TODO: deal correctly with multiple alarms |
1969 | Alarm* alarm; | 1957 | Alarm* alarm; |
1970 | QPtrList<Alarm> list(mClickedItem->incidence()->alarms()); | 1958 | QPtrList<Alarm> list(mClickedItem->incidence()->alarms()); |
1971 | for(alarm=list.first();alarm;alarm=list.next()) { | 1959 | for(alarm=list.first();alarm;alarm=list.next()) { |
1972 | alarm->toggleAlarm(); | 1960 | alarm->toggleAlarm(); |
1973 | } | 1961 | } |
1974 | emit itemModified( mClickedItem , KOGlobals::EVENTEDITED ); | 1962 | emit itemModified( mClickedItem , KOGlobals::EVENTEDITED ); |
1975 | mClickedItem->paintMe( true ); | 1963 | mClickedItem->paintMe( true ); |
1976 | mClickedItem->repaint( false ); | 1964 | mClickedItem->repaint( false ); |
1977 | } | 1965 | } |
1978 | 1966 | ||
1979 | /* | 1967 | /* |
1980 | Calculates the minimum width | 1968 | Calculates the minimum width |
1981 | */ | 1969 | */ |
1982 | int KOAgenda::minimumWidth() const | 1970 | int KOAgenda::minimumWidth() const |
1983 | { | 1971 | { |
1984 | // TODO:: develop a way to dynamically determine the minimum width | 1972 | // TODO:: develop a way to dynamically determine the minimum width |
1985 | int min = 100; | 1973 | int min = 100; |
1986 | 1974 | ||
1987 | return min; | 1975 | return min; |
1988 | } | 1976 | } |
1989 | 1977 | ||
1990 | void KOAgenda::updateConfig() | 1978 | void KOAgenda::updateConfig() |
1991 | { | 1979 | { |
1992 | if ( viewport()->backgroundColor() != KOPrefs::instance()->mAgendaBgColor) | 1980 | if ( viewport()->backgroundColor() != KOPrefs::instance()->mAgendaBgColor) |
1993 | viewport()->setBackgroundColor(KOPrefs::instance()->mAgendaBgColor); | 1981 | viewport()->setBackgroundColor(KOPrefs::instance()->mAgendaBgColor); |
1994 | if ( mAllDayMode ) { | 1982 | if ( mAllDayMode ) { |
1995 | mGridSpacingY = height() - 1 ;// KOPrefs::instance()->mAllDaySize; | 1983 | mGridSpacingY = height() - 1 ;// KOPrefs::instance()->mAllDaySize; |
1996 | //mGridSpacingY = KOPrefs::instance()->mAllDaySize; | 1984 | //mGridSpacingY = KOPrefs::instance()->mAllDaySize; |
1997 | resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY+1 ); | 1985 | resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY+1 ); |
1998 | // setMaximumHeight( mGridSpacingY+1 ); | 1986 | // setMaximumHeight( mGridSpacingY+1 ); |
1999 | viewport()->repaint( false ); | 1987 | viewport()->repaint( false ); |
2000 | //setFixedHeight( mGridSpacingY+1 ); | 1988 | //setFixedHeight( mGridSpacingY+1 ); |
2001 | //qDebug("KOPrefs:aaaaa:instance()->mAllDaySize %d ", KOPrefs::instance()->mAllDaySize); | 1989 | //qDebug("KOPrefs:aaaaa:instance()->mAllDaySize %d ", KOPrefs::instance()->mAllDaySize); |
2002 | } | 1990 | } |
2003 | else { | 1991 | else { |
2004 | mGridSpacingY = KOPrefs::instance()->mHourSize; | 1992 | mGridSpacingY = KOPrefs::instance()->mHourSize; |
2005 | calculateWorkingHours(); | 1993 | calculateWorkingHours(); |
2006 | marcus_bains(); | 1994 | marcus_bains(); |
2007 | } | 1995 | } |
2008 | } | 1996 | } |
2009 | 1997 | ||
2010 | void KOAgenda::checkScrollBoundaries() | 1998 | void KOAgenda::checkScrollBoundaries() |
2011 | { | 1999 | { |
2012 | // Invalidate old values to force update | 2000 | // Invalidate old values to force update |
2013 | mOldLowerScrollValue = -1; | 2001 | mOldLowerScrollValue = -1; |
2014 | mOldUpperScrollValue = -1; | 2002 | mOldUpperScrollValue = -1; |
2015 | 2003 | ||
2016 | checkScrollBoundaries(verticalScrollBar()->value()); | 2004 | checkScrollBoundaries(verticalScrollBar()->value()); |
2017 | } | 2005 | } |
2018 | 2006 | ||
2019 | void KOAgenda::checkScrollBoundaries(int v) | 2007 | void KOAgenda::checkScrollBoundaries(int v) |
2020 | { | 2008 | { |
2021 | if ( mGridSpacingY == 0 ) | 2009 | if ( mGridSpacingY == 0 ) |
2022 | return; | 2010 | return; |
2023 | int yMin = v/mGridSpacingY; | 2011 | int yMin = v/mGridSpacingY; |
2024 | int yMax = (v+visibleHeight())/mGridSpacingY; | 2012 | int yMax = (v+visibleHeight())/mGridSpacingY; |