summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-08-17 13:06:53 (UTC)
committer zautrix <zautrix>2005-08-17 13:06:53 (UTC)
commit4b66565ed2db51bc636b7b4c12f19f036d9b80f3 (patch) (unidiff)
tree402372be9f52835e15757a51c18cfc46d47c8953
parent31393a99cd2b190e62a7a09a7739a14af83936d1 (diff)
downloadkdepimpi-4b66565ed2db51bc636b7b4c12f19f036d9b80f3.zip
kdepimpi-4b66565ed2db51bc636b7b4c12f19f036d9b80f3.tar.gz
kdepimpi-4b66565ed2db51bc636b7b4c12f19f036d9b80f3.tar.bz2
allday agenda item fix
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koagenda.cpp42
-rw-r--r--korganizer/koagendaitem.cpp20
-rw-r--r--korganizer/koagendaitem.h1
3 files changed, 44 insertions, 19 deletions
diff --git a/korganizer/koagenda.cpp b/korganizer/koagenda.cpp
index 88f5d99..796d633 100644
--- a/korganizer/koagenda.cpp
+++ b/korganizer/koagenda.cpp
@@ -954,16 +954,16 @@ void KOAgenda::performItemAction(QPoint viewportPos)
954 int dy; 954 int dy;
955 if (isMultiItem) dy = 0; 955 if (isMultiItem) dy = 0;
956 else dy = gy - mCurrentCellY; 956 else dy = gy - mCurrentCellY;
957 moveItem->moveRelative(gx - mCurrentCellX,dy); 957 moveItem->moveRelative(gx - mCurrentCellX,dy);
958 int x,y; 958 int x,y;
959 gridToContents(moveItem->cellX(),moveItem->cellYTop(),x,y); 959 gridToContents(moveItem->cellX(),moveItem->cellYTop(),x,y);
960 moveItem->resize(mGridSpacingX * moveItem->cellWidth(), 960 int diff = moveItem->resizeMe(mGridSpacingX, mGridSpacingX* moveItem->cellWidth(),
961 mGridSpacingY * moveItem->cellHeight()); 961 mGridSpacingY * moveItem->cellHeight());
962 moveItem->raise(); 962 moveItem->raise();
963 moveChild(moveItem,x,y); 963 moveChild(moveItem,x+diff,y);
964 moveItem = moveItem->nextMultiItem(); 964 moveItem = moveItem->nextMultiItem();
965 } 965 }
966 } else if (mActionType == RESIZETOP) { 966 } else if (mActionType == RESIZETOP) {
967 if (mCurrentCellY <= mActionItem->cellYBottom()) { 967 if (mCurrentCellY <= mActionItem->cellYBottom()) {
968 mActionItem->expandTop(gy - mCurrentCellY); 968 mActionItem->expandTop(gy - mCurrentCellY);
969 mActionItem->resize(mActionItem->width(), 969 mActionItem->resize(mActionItem->width(),
@@ -979,22 +979,23 @@ void KOAgenda::performItemAction(QPoint viewportPos)
979 mActionItem->resize(mActionItem->width(), 979 mActionItem->resize(mActionItem->width(),
980 mGridSpacingY * mActionItem->cellHeight()); 980 mGridSpacingY * mActionItem->cellHeight());
981 } 981 }
982 } else if (mActionType == RESIZELEFT) { 982 } else if (mActionType == RESIZELEFT) {
983 if (mCurrentCellX <= mActionItem->cellXWidth()) { 983 if (mCurrentCellX <= mActionItem->cellXWidth()) {
984 mActionItem->expandLeft(gx - mCurrentCellX); 984 mActionItem->expandLeft(gx - mCurrentCellX);
985 mActionItem->resize(mGridSpacingX * mActionItem->cellWidth(), 985 int diff = mActionItem->resizeMe(mGridSpacingX ,
986 mActionItem->height()); 986 mGridSpacingX * mActionItem->cellWidth(),
987 mActionItem->height());
987 int x,y; 988 int x,y;
988 gridToContents(mActionItem->cellX(),mActionItem->cellYTop(),x,y); 989 gridToContents(mActionItem->cellX(),mActionItem->cellYTop(),x,y);
989 moveChild(mActionItem,x,childY(mActionItem)); 990 moveChild(mActionItem,x+diff,childY(mActionItem));
990 } 991 }
991 } else if (mActionType == RESIZERIGHT) { 992 } else if (mActionType == RESIZERIGHT) {
992 if (mCurrentCellX >= mActionItem->cellX()) { 993 if (mCurrentCellX >= mActionItem->cellX()) {
993 mActionItem->expandRight(gx - mCurrentCellX); 994 mActionItem->expandRight(gx - mCurrentCellX);
994 mActionItem->resize(mGridSpacingX * mActionItem->cellWidth(), 995 mActionItem->resizeMe(mGridSpacingX, mGridSpacingX * mActionItem->cellWidth(),
995 mActionItem->height()); 996 mActionItem->height());
996 } 997 }
997 } 998 }
998 mCurrentCellX = gx; 999 mCurrentCellX = gx;
999 mCurrentCellY = gy; 1000 mCurrentCellY = gy;
1000 } 1001 }
@@ -1214,25 +1215,26 @@ void KOAgenda::placeSubCells(KOAgendaItem *placeItem)
1214 1215
1215 1216
1216 // Adjust sub cell geometry of all direct conflict items 1217 // Adjust sub cell geometry of all direct conflict items
1217 for ( item=conflictItems.first(); item != 0; 1218 for ( item=conflictItems.first(); item != 0;
1218 item=conflictItems.next() ) { 1219 item=conflictItems.next() ) {
1219 item->setSubCells(maxSubCells); 1220 item->setSubCells(maxSubCells);
1221 int diff = 0;
1220 if (mAllDayMode) { 1222 if (mAllDayMode) {
1221 item->resize(item->cellWidth() * mGridSpacingX, newSubCellWidth); 1223 diff = item->resizeMe( mGridSpacingX, item->cellWidth() * mGridSpacingX, newSubCellWidth);
1222 } else { 1224 } else {
1223 item->resize(newSubCellWidth, item->cellHeight() * mGridSpacingY); 1225 item->resize(newSubCellWidth, item->cellHeight() * mGridSpacingY);
1224 } 1226 }
1225 int x,y; 1227 int x,y;
1226 gridToContents(item->cellX(),item->cellYTop(),x,y); 1228 gridToContents(item->cellX(),item->cellYTop(),x,y);
1227 if (mAllDayMode) { 1229 if (mAllDayMode) {
1228 y += item->subCell() * newSubCellWidth; 1230 y += item->subCell() * newSubCellWidth;
1229 } else { 1231 } else {
1230 x += item->subCell() * newSubCellWidth; 1232 x += item->subCell() * newSubCellWidth;
1231 } 1233 }
1232 moveChild(item,x,y); 1234 moveChild(item,x+diff,y);
1233 // qDebug("moveChild %s %d %d ", item->incidence()->summary().latin1() ,x,y); 1235 // qDebug("moveChild %s %d %d ", item->incidence()->summary().latin1() ,x,y);
1234 //item->updateItem(); 1236 //item->updateItem();
1235 } 1237 }
1236 // Adjust sub cell geometry of all conflict items of all conflict items 1238 // Adjust sub cell geometry of all conflict items of all conflict items
1237 for ( item=conflictItems.first(); item != 0; 1239 for ( item=conflictItems.first(); item != 0;
1238 item=conflictItems.next() ) { 1240 item=conflictItems.next() ) {
@@ -1240,38 +1242,40 @@ void KOAgenda::placeSubCells(KOAgendaItem *placeItem)
1240 KOAgendaItem *item2; 1242 KOAgendaItem *item2;
1241 QPtrList<KOAgendaItem> conflictItems2 = item->conflictItems(); 1243 QPtrList<KOAgendaItem> conflictItems2 = item->conflictItems();
1242 for ( item2=conflictItems2.first(); item2 != 0; 1244 for ( item2=conflictItems2.first(); item2 != 0;
1243 item2=conflictItems2.next() ) { 1245 item2=conflictItems2.next() ) {
1244 if ( item2->subCells() != maxSubCells) { 1246 if ( item2->subCells() != maxSubCells) {
1245 item2->setSubCells(maxSubCells); 1247 item2->setSubCells(maxSubCells);
1248 int diff = 0;
1246 if (mAllDayMode) { 1249 if (mAllDayMode) {
1247 item2->resize(item2->cellWidth() * mGridSpacingX, newSubCellWidth); 1250 diff = item2->resizeMe(mGridSpacingX, item2->cellWidth() * mGridSpacingX, newSubCellWidth);
1248 } else { 1251 } else {
1249 item2->resize(newSubCellWidth, item2->cellHeight() * mGridSpacingY); 1252 item2->resize(newSubCellWidth, item2->cellHeight() * mGridSpacingY);
1250 } 1253 }
1251 int x,y; 1254 int x,y;
1252 gridToContents(item2->cellX(),item2->cellYTop(),x,y); 1255 gridToContents(item2->cellX(),item2->cellYTop(),x,y);
1253 if (mAllDayMode) { 1256 if (mAllDayMode) {
1254 y += item2->subCell() * newSubCellWidth; 1257 y += item2->subCell() * newSubCellWidth;
1255 } else { 1258 } else {
1256 x += item2->subCell() * newSubCellWidth; 1259 x += item2->subCell() * newSubCellWidth;
1257 } 1260 }
1258 moveChild(item2,x,y); 1261 moveChild(item2,x+diff,y);
1259 //qDebug("setttttt %d %s",maxSubCells, item2->text().latin1() ); 1262 //qDebug("setttttt %d %s",maxSubCells, item2->text().latin1() );
1260 } 1263 }
1261 } 1264 }
1262 } 1265 }
1263 } 1266 }
1264 } else { 1267 } else {
1265 placeItem->setSubCell(0); 1268 placeItem->setSubCell(0);
1266 placeItem->setSubCells(1); 1269 placeItem->setSubCells(1);
1267 if (mAllDayMode) placeItem->resize(placeItem->width(),mGridSpacingY); 1270 int diff = 0;
1271 if (mAllDayMode) diff = placeItem->resizeMe( mGridSpacingX, placeItem->width(),mGridSpacingY);
1268 else placeItem->resize(mGridSpacingX,placeItem->height()); 1272 else placeItem->resize(mGridSpacingX,placeItem->height());
1269 int x,y; 1273 int x,y;
1270 gridToContents(placeItem->cellX(),placeItem->cellYTop(),x,y); 1274 gridToContents(placeItem->cellX(),placeItem->cellYTop(),x,y);
1271 moveChild(placeItem,x,y); 1275 moveChild(placeItem,x+diff,y);
1272 } 1276 }
1273 placeItem->setConflictItems(conflictItems); 1277 placeItem->setConflictItems(conflictItems);
1274 // for ( item=conflictItems.first(); item != 0; 1278 // for ( item=conflictItems.first(); item != 0;
1275// item=conflictItems.next() ) { 1279// item=conflictItems.next() ) {
1276// //item->updateItem(); 1280// //item->updateItem();
1277// //qDebug("xxx item->updateItem() %s %d %d", item->incidence()->summary().latin1(),item->x(), item->y() ); 1281// //qDebug("xxx item->updateItem() %s %d %d", item->incidence()->summary().latin1(),item->x(), item->y() );
@@ -1392,28 +1396,29 @@ void KOAgenda::finishUpdate()
1392 globalFlagBlockAgendaItemPaint = 1; 1396 globalFlagBlockAgendaItemPaint = 1;
1393 // Adjust sub cell geometry of all conflict items of all conflict items of all conflict items ... of the conflict item with the max number of conflictitems 1397 // Adjust sub cell geometry of all conflict items of all conflict items of all conflict items ... of the conflict item with the max number of conflictitems
1394 for ( item=mItems.first(); item != 0; item=mItems.next() ) { 1398 for ( item=mItems.first(); item != 0; item=mItems.next() ) {
1395 if ( !item->checkLayout() ) { 1399 if ( !item->checkLayout() ) {
1396 //qDebug(" conflictitem found "); 1400 //qDebug(" conflictitem found ");
1397 int newSubCellWidth; 1401 int newSubCellWidth;
1402 int diff = 0;
1398 if (mAllDayMode) newSubCellWidth = mGridSpacingY / item->subCells(); 1403 if (mAllDayMode) newSubCellWidth = mGridSpacingY / item->subCells();
1399 else newSubCellWidth = mGridSpacingX / item->subCells(); 1404 else newSubCellWidth = mGridSpacingX / item->subCells();
1400 1405
1401 if (mAllDayMode) { 1406 if (mAllDayMode) {
1402 item->resize(item->cellWidth() * mGridSpacingX, newSubCellWidth); 1407 diff = item->resizeMe(mGridSpacingX, item->cellWidth() * mGridSpacingX, newSubCellWidth);
1403 } else { 1408 } else {
1404 item->resize(newSubCellWidth, item->cellHeight() * mGridSpacingY); 1409 item->resize(newSubCellWidth, item->cellHeight() * mGridSpacingY);
1405 } 1410 }
1406 int x,y; 1411 int x,y;
1407 gridToContents(item->cellX(),item->cellYTop(),x,y); 1412 gridToContents(item->cellX(),item->cellYTop(),x,y);
1408 if (mAllDayMode) { 1413 if (mAllDayMode) {
1409 y += item->subCell() * newSubCellWidth; 1414 y += item->subCell() * newSubCellWidth;
1410 } else { 1415 } else {
1411 x += item->subCell() * newSubCellWidth; 1416 x += item->subCell() * newSubCellWidth;
1412 } 1417 }
1413 moveChild(item,x,y); 1418 moveChild(item,x+diff,y);
1414 } 1419 }
1415 } 1420 }
1416 for ( item=mItems.first(); item != 0; item=mItems.next() ) { 1421 for ( item=mItems.first(); item != 0; item=mItems.next() ) {
1417 if ( !item->isVisible() ) 1422 if ( !item->isVisible() )
1418 item->show(); 1423 item->show();
1419 1424
@@ -1833,13 +1838,13 @@ KOAgendaItem *KOAgenda::insertAllDayItem (Incidence *event,QDate qd,int XBegin,i
1833 } 1838 }
1834 1839
1835 KOAgendaItem *agendaItem = getNewItem(event,qd,viewport()); 1840 KOAgendaItem *agendaItem = getNewItem(event,qd,viewport());
1836 1841
1837 agendaItem->setCellXY(XBegin,0,0); 1842 agendaItem->setCellXY(XBegin,0,0);
1838 agendaItem->setCellXWidth(XEnd); 1843 agendaItem->setCellXWidth(XEnd);
1839 agendaItem->resize(mGridSpacingX * agendaItem->cellWidth(),mGridSpacingY); 1844 agendaItem->resizeMe(mGridSpacingX, mGridSpacingX * agendaItem->cellWidth(),mGridSpacingY);
1840 1845
1841 //addChild(agendaItem,XBegin*mGridSpacingX,0); 1846 //addChild(agendaItem,XBegin*mGridSpacingX,0);
1842 mItems.append(agendaItem); 1847 mItems.append(agendaItem);
1843 1848
1844 placeSubCells(agendaItem); 1849 placeSubCells(agendaItem);
1845 1850
@@ -1939,16 +1944,17 @@ void KOAgenda::computeSizes()
1939 // resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY * mRows + 1 ); 1944 // resizeContents( mGridSpacingX * mColumns + 1 , mGridSpacingY * mRows + 1 );
1940 1945
1941 KOAgendaItem *item; 1946 KOAgendaItem *item;
1942 int subCellWidth; 1947 int subCellWidth;
1943 for ( item=mItems.first(); item != 0; item=mItems.next() ) { 1948 for ( item=mItems.first(); item != 0; item=mItems.next() ) {
1944 subCellWidth = mGridSpacingY / item->subCells(); 1949 subCellWidth = mGridSpacingY / item->subCells();
1945 item->resize(mGridSpacingX * item->cellWidth(),subCellWidth); 1950 int diff = 0;
1946 moveChild(item,KOGlobals::self()->reverseLayout() ? 1951 diff = item->resizeMe(mGridSpacingX ,mGridSpacingX * item->cellWidth(),subCellWidth);
1952 moveChild(item,(KOGlobals::self()->reverseLayout() ?
1947 (mColumns - 1 - item->cellX()) * mGridSpacingX : 1953 (mColumns - 1 - item->cellX()) * mGridSpacingX :
1948 item->cellX() * mGridSpacingX, 1954 item->cellX() * mGridSpacingX) + diff,
1949 item->subCell() * subCellWidth); 1955 item->subCell() * subCellWidth);
1950 } 1956 }
1951 KOPrefs::instance()->mAllDaySize = mGridSpacingY; 1957 KOPrefs::instance()->mAllDaySize = mGridSpacingY;
1952 } else { 1958 } else {
1953 mGridSpacingX = (width() - verticalScrollBar()->width()-frameOffset)/mColumns; 1959 mGridSpacingX = (width() - verticalScrollBar()->width()-frameOffset)/mColumns;
1954 if (height() > mGridSpacingY * mRows + 1 ) { 1960 if (height() > mGridSpacingY * mRows + 1 ) {
diff --git a/korganizer/koagendaitem.cpp b/korganizer/koagendaitem.cpp
index 49ad9b8..7a685d8 100644
--- a/korganizer/koagendaitem.cpp
+++ b/korganizer/koagendaitem.cpp
@@ -653,13 +653,31 @@ int KOAgendaItem::cellHeight()
653 ret = 1; 653 ret = 1;
654 mCellYBottom = 0; 654 mCellYBottom = 0;
655 mCellYTop = 0; 655 mCellYTop = 0;
656 } 656 }
657 return ret; 657 return ret;
658} 658}
659 659// it may be that allday agenda items have a needed width > 32000
660// this code is to fix this problem
661int KOAgendaItem::resizeMe( int grid, int wid, int hei )
662{
663 int diff = 0;
664 if ( mCellX < -3 && mAllDay ) {
665 diff = (mCellX + 3) * -grid;
666 //qDebug("%s: cellX %d diff %d wid %d grid %d ", mDisplayedText.latin1(), mCellX, diff, wid, grid);
667 if ( diff >= wid ) {
668 // qDebug("KOAgendaItem::resizeMe: diff >= wid: diff %d wid %d ", diff, wid);
669 //diff = 0;
670 }
671 }
672 if ( wid == width() || diff >= wid )
673 resize( wid, hei );
674 else
675 resize( wid - diff, hei );
676 return diff;
677}
660/* 678/*
661 Return height of item in units of agenda cells 679 Return height of item in units of agenda cells
662*/ 680*/
663int KOAgendaItem::cellWidth() 681int KOAgendaItem::cellWidth()
664{ 682{
665 return mCellXWidth - mCellX + 1; 683 return mCellXWidth - mCellX + 1;
diff --git a/korganizer/koagendaitem.h b/korganizer/koagendaitem.h
index 2b26e95..97acd4c 100644
--- a/korganizer/koagendaitem.h
+++ b/korganizer/koagendaitem.h
@@ -106,12 +106,13 @@ class KOAgendaItem : public QWidget
106 void updateItem(); 106 void updateItem();
107 void computeText(); 107 void computeText();
108 void recreateIncidence(); 108 void recreateIncidence();
109 bool checkLayout(); 109 bool checkLayout();
110 void initColor (); 110 void initColor ();
111 bool isAllDay() { return mAllDay; } 111 bool isAllDay() { return mAllDay; }
112 int resizeMe( int grid, int wid, int hei );
112 public slots: 113 public slots:
113 bool updateIcons( QPainter *, bool ); 114 bool updateIcons( QPainter *, bool );
114 void select(bool=true); 115 void select(bool=true);
115 void repaintItem(); 116 void repaintItem();
116 117
117 protected: 118 protected: