summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/koagenda.cpp2
-rw-r--r--korganizer/koagendaview.cpp31
2 files changed, 2 insertions, 31 deletions
diff --git a/korganizer/koagenda.cpp b/korganizer/koagenda.cpp
index f860f7d..94c3b22 100644
--- a/korganizer/koagenda.cpp
+++ b/korganizer/koagenda.cpp
@@ -946,385 +946,385 @@ void KOAgenda::performItemAction(QPoint viewportPos)
946 mActionItem->expandLeft(gx - mCurrentCellX); 946 mActionItem->expandLeft(gx - mCurrentCellX);
947 mActionItem->resize(mGridSpacingX * mActionItem->cellWidth(), 947 mActionItem->resize(mGridSpacingX * mActionItem->cellWidth(),
948 mActionItem->height()); 948 mActionItem->height());
949 int x,y; 949 int x,y;
950 gridToContents(mActionItem->cellX(),mActionItem->cellYTop(),x,y); 950 gridToContents(mActionItem->cellX(),mActionItem->cellYTop(),x,y);
951 moveChild(mActionItem,x,childY(mActionItem)); 951 moveChild(mActionItem,x,childY(mActionItem));
952 } 952 }
953 } else if (mActionType == RESIZERIGHT) { 953 } else if (mActionType == RESIZERIGHT) {
954 if (mCurrentCellX >= mActionItem->cellX()) { 954 if (mCurrentCellX >= mActionItem->cellX()) {
955 mActionItem->expandRight(gx - mCurrentCellX); 955 mActionItem->expandRight(gx - mCurrentCellX);
956 mActionItem->resize(mGridSpacingX * mActionItem->cellWidth(), 956 mActionItem->resize(mGridSpacingX * mActionItem->cellWidth(),
957 mActionItem->height()); 957 mActionItem->height());
958 } 958 }
959 } 959 }
960 mCurrentCellX = gx; 960 mCurrentCellX = gx;
961 mCurrentCellY = gy; 961 mCurrentCellY = gy;
962 } 962 }
963} 963}
964 964
965void KOAgenda::endItemAction() 965void KOAgenda::endItemAction()
966{ 966{
967 967
968 if ( mItemMoved ) { 968 if ( mItemMoved ) {
969 KOAgendaItem *placeItem = mActionItem->firstMultiItem(); 969 KOAgendaItem *placeItem = mActionItem->firstMultiItem();
970 if ( !placeItem ) { 970 if ( !placeItem ) {
971 placeItem = mActionItem; 971 placeItem = mActionItem;
972 } 972 }
973 if ( placeItem->incidence()->recurrence()->doesRecur() ) { 973 if ( placeItem->incidence()->recurrence()->doesRecur() ) {
974 Incidence* oldInc = placeItem->incidence(); 974 Incidence* oldInc = placeItem->incidence();
975 placeItem->recreateIncidence(); 975 placeItem->recreateIncidence();
976 emit addToCalSignal(placeItem->incidence(), oldInc ); 976 emit addToCalSignal(placeItem->incidence(), oldInc );
977 } 977 }
978 int type = mActionType; 978 int type = mActionType;
979 if ( mAllDayMode ) 979 if ( mAllDayMode )
980 type = -1; 980 type = -1;
981 KOAgendaItem *modifiedItem = placeItem; 981 KOAgendaItem *modifiedItem = placeItem;
982 //emit itemModified( placeItem, mActionType /*KOGlobals::EVENTEDITED */); 982 //emit itemModified( placeItem, mActionType /*KOGlobals::EVENTEDITED */);
983 QPtrList<KOAgendaItem> oldconflictItems ;//= placeItem->conflictItems(); 983 QPtrList<KOAgendaItem> oldconflictItems ;//= placeItem->conflictItems();
984 KOAgendaItem *item; 984 KOAgendaItem *item;
985 985
986 if ( placeItem->incidence()->typeID() == todoID ) { 986 if ( placeItem->incidence()->typeID() == todoID ) {
987 mSelectedItem = 0; 987 mSelectedItem = 0;
988 //qDebug("todo %d %d %d ", mCurrentCellX, modifiedItem->cellX() ,modifiedItem->cellXWidth()); 988 //qDebug("todo %d %d %d ", mCurrentCellX, modifiedItem->cellX() ,modifiedItem->cellXWidth());
989 modifiedItem->mLastMoveXPos = mCurrentCellX; 989 modifiedItem->mLastMoveXPos = mCurrentCellX;
990 emit itemModified( modifiedItem, mActionType ); 990 emit itemModified( modifiedItem, mActionType );
991 } 991 }
992 else { 992 else {
993 993
994 994
995 globalFlagBlockAgendaItemPaint = 1; 995 globalFlagBlockAgendaItemPaint = 1;
996 for ( item=oldconflictItems.first(); item != 0; 996 for ( item=oldconflictItems.first(); item != 0;
997 item=oldconflictItems.next() ) { 997 item=oldconflictItems.next() ) {
998 placeSubCells(item); 998 placeSubCells(item);
999 } 999 }
1000 while ( placeItem ) { 1000 while ( placeItem ) {
1001 //qDebug("placeItem %s ", placeItem->incidence()->summary().latin1()); 1001 //qDebug("placeItem %s ", placeItem->incidence()->summary().latin1());
1002 oldconflictItems = placeItem->conflictItems(); 1002 oldconflictItems = placeItem->conflictItems();
1003 for ( item=oldconflictItems.first(); item != 0; 1003 for ( item=oldconflictItems.first(); item != 0;
1004 item=oldconflictItems.next() ) { 1004 item=oldconflictItems.next() ) {
1005 placeSubCells(item); 1005 placeSubCells(item);
1006 } 1006 }
1007 placeSubCells( placeItem ); 1007 placeSubCells( placeItem );
1008 placeItem = placeItem->nextMultiItem(); 1008 placeItem = placeItem->nextMultiItem();
1009 } 1009 }
1010 globalFlagBlockAgendaItemPaint = 0; 1010 globalFlagBlockAgendaItemPaint = 0;
1011 for ( item=oldconflictItems.first(); item != 0; 1011 for ( item=oldconflictItems.first(); item != 0;
1012 item=oldconflictItems.next() ) { 1012 item=oldconflictItems.next() ) {
1013 globalFlagBlockAgendaItemUpdate = 0; 1013 globalFlagBlockAgendaItemUpdate = 0;
1014 item->repaintMe(); 1014 item->repaintMe();
1015 globalFlagBlockAgendaItemUpdate = 1; 1015 globalFlagBlockAgendaItemUpdate = 1;
1016 item->repaint( false ); 1016 item->repaint( false );
1017 } 1017 }
1018 placeItem = modifiedItem; 1018 placeItem = modifiedItem;
1019 1019
1020 while ( placeItem ) { 1020 while ( placeItem ) {
1021 //qDebug("placeItem %s ", placeItem->incidence()->summary().latin1()); 1021 //qDebug("placeItem %s ", placeItem->incidence()->summary().latin1());
1022 globalFlagBlockAgendaItemUpdate = 0; 1022 globalFlagBlockAgendaItemUpdate = 0;
1023 placeItem->repaintMe(); 1023 placeItem->repaintMe();
1024 globalFlagBlockAgendaItemUpdate = 1; 1024 globalFlagBlockAgendaItemUpdate = 1;
1025 placeItem->repaint(false); 1025 placeItem->repaint(false);
1026 placeItem = placeItem->nextMultiItem(); 1026 placeItem = placeItem->nextMultiItem();
1027 } 1027 }
1028 emit itemModified( modifiedItem, mActionType ); 1028 emit itemModified( modifiedItem, mActionType );
1029 1029
1030 1030
1031 placeItem = modifiedItem; 1031 placeItem = modifiedItem;
1032 while ( placeItem ) { 1032 while ( placeItem ) {
1033 oldconflictItems = placeItem->conflictItems(); 1033 oldconflictItems = placeItem->conflictItems();
1034 for ( item=oldconflictItems.first(); item != 0; 1034 for ( item=oldconflictItems.first(); item != 0;
1035 item=oldconflictItems.next() ) { 1035 item=oldconflictItems.next() ) {
1036 placeSubCells(item); 1036 placeSubCells(item);
1037 } 1037 }
1038 placeSubCells( placeItem ); 1038 placeSubCells( placeItem );
1039 placeItem = placeItem->nextMultiItem(); 1039 placeItem = placeItem->nextMultiItem();
1040 1040
1041 } 1041 }
1042 placeItem = modifiedItem; 1042 placeItem = modifiedItem;
1043 while ( placeItem ) { 1043 while ( placeItem ) {
1044 oldconflictItems = placeItem->conflictItems(); 1044 oldconflictItems = placeItem->conflictItems();
1045 for ( item=oldconflictItems.first(); item != 0; 1045 for ( item=oldconflictItems.first(); item != 0;
1046 item=oldconflictItems.next() ) { 1046 item=oldconflictItems.next() ) {
1047 globalFlagBlockAgendaItemUpdate = 0; 1047 globalFlagBlockAgendaItemUpdate = 0;
1048 item->repaintMe(); 1048 item->repaintMe();
1049 globalFlagBlockAgendaItemUpdate = 1; 1049 globalFlagBlockAgendaItemUpdate = 1;
1050 item->repaint(false); 1050 item->repaint(false);
1051 } 1051 }
1052 placeItem = placeItem->nextMultiItem(); 1052 placeItem = placeItem->nextMultiItem();
1053 } 1053 }
1054 /* 1054 /*
1055 1055
1056 oldconflictItems = modifiedItem->conflictItems(); 1056 oldconflictItems = modifiedItem->conflictItems();
1057 for ( item=oldconflictItems.first(); item != 0; 1057 for ( item=oldconflictItems.first(); item != 0;
1058 item=oldconflictItems.next() ) { 1058 item=oldconflictItems.next() ) {
1059 globalFlagBlockAgendaItemUpdate = 0; 1059 globalFlagBlockAgendaItemUpdate = 0;
1060 item->paintMe(false); 1060 item->paintMe(false);
1061 globalFlagBlockAgendaItemUpdate = 1; 1061 globalFlagBlockAgendaItemUpdate = 1;
1062 item->repaint(false); 1062 item->repaint(false);
1063 } 1063 }
1064 */ 1064 */
1065 1065
1066 1066
1067 } 1067 }
1068 1068
1069 } 1069 }
1070 1070
1071 mScrollUpTimer.stop(); 1071 mScrollUpTimer.stop();
1072 mScrollDownTimer.stop(); 1072 mScrollDownTimer.stop();
1073 setCursor( arrowCursor ); 1073 setCursor( arrowCursor );
1074 mActionItem = 0; 1074 mActionItem = 0;
1075 mActionType = NOP; 1075 mActionType = NOP;
1076 mItemMoved = 0; 1076 mItemMoved = 0;
1077 1077
1078} 1078}
1079 1079
1080void KOAgenda::setNoActionCursor(KOAgendaItem *moveItem,QPoint viewportPos) 1080void KOAgenda::setNoActionCursor(KOAgendaItem *moveItem,QPoint viewportPos)
1081{ 1081{
1082// kdDebug() << "viewportPos: " << viewportPos.x() << "," << viewportPos.y() << endl; 1082// kdDebug() << "viewportPos: " << viewportPos.x() << "," << viewportPos.y() << endl;
1083// QPoint point = viewport()->mapToGlobal(viewportPos); 1083// QPoint point = viewport()->mapToGlobal(viewportPos);
1084// kdDebug() << "Global: " << point.x() << "," << point.y() << endl; 1084// kdDebug() << "Global: " << point.x() << "," << point.y() << endl;
1085// point = clipper()->mapFromGlobal(point); 1085// point = clipper()->mapFromGlobal(point);
1086// kdDebug() << "clipper: " << point.x() << "," << point.y() << endl; 1086// kdDebug() << "clipper: " << point.x() << "," << point.y() << endl;
1087 1087
1088 int x,y; 1088 int x,y;
1089 viewportToContents(viewportPos.x(),viewportPos.y(),x,y); 1089 viewportToContents(viewportPos.x(),viewportPos.y(),x,y);
1090// kdDebug() << "contents: " << x << "," << y << "\n" << endl; 1090// kdDebug() << "contents: " << x << "," << y << "\n" << endl;
1091 int gx,gy; 1091 int gx,gy;
1092 contentsToGrid(x,y,gx,gy); 1092 contentsToGrid(x,y,gx,gy);
1093 1093
1094 // Change cursor to resize cursor if appropriate 1094 // Change cursor to resize cursor if appropriate
1095 if (mAllDayMode) { 1095 if (mAllDayMode) {
1096 int gridDistanceX = (x - gx * mGridSpacingX); 1096 int gridDistanceX = (x - gx * mGridSpacingX);
1097 if (gridDistanceX < mResizeBorderWidth && 1097 if (gridDistanceX < mResizeBorderWidth &&
1098 moveItem->cellX() == gx) { 1098 moveItem->cellX() == gx) {
1099 setCursor(sizeHorCursor); 1099 setCursor(sizeHorCursor);
1100 } else if ((mGridSpacingX - gridDistanceX) < mResizeBorderWidth && 1100 } else if ((mGridSpacingX - gridDistanceX) < mResizeBorderWidth &&
1101 moveItem->cellXWidth() == gx) { 1101 moveItem->cellXWidth() == gx) {
1102 setCursor(sizeHorCursor); 1102 setCursor(sizeHorCursor);
1103 } else { 1103 } else {
1104 setCursor(arrowCursor); 1104 setCursor(arrowCursor);
1105 } 1105 }
1106 } else { 1106 } else {
1107 int gridDistanceY = (y - gy * mGridSpacingY); 1107 int gridDistanceY = (y - gy * mGridSpacingY);
1108 if (gridDistanceY < mResizeBorderWidth && 1108 if (gridDistanceY < mResizeBorderWidth &&
1109 moveItem->cellYTop() == gy && 1109 moveItem->cellYTop() == gy &&
1110 !moveItem->firstMultiItem()) { 1110 !moveItem->firstMultiItem()) {
1111 setCursor(sizeVerCursor); 1111 setCursor(sizeVerCursor);
1112 } else if ((mGridSpacingY - gridDistanceY) < mResizeBorderWidth && 1112 } else if ((mGridSpacingY - gridDistanceY) < mResizeBorderWidth &&
1113 moveItem->cellYBottom() == gy && 1113 moveItem->cellYBottom() == gy &&
1114 !moveItem->lastMultiItem()) { 1114 !moveItem->lastMultiItem()) {
1115 setCursor(sizeVerCursor); 1115 setCursor(sizeVerCursor);
1116 } else { 1116 } else {
1117 setCursor(arrowCursor); 1117 setCursor(arrowCursor);
1118 } 1118 }
1119 } 1119 }
1120} 1120}
1121 1121
1122 1122
1123/* 1123/*
1124 Place item in cell and take care that multiple items using the same cell do 1124 Place item in cell and take care that multiple items using the same cell do
1125 not overlap. This method is not yet optimal. It doesn´t use the maximum space 1125 not overlap. This method is not yet optimal. It doesn´t use the maximum space
1126 it can get in all cases. 1126 it can get in all cases.
1127 At the moment the method has a bug: When an item is placed only the sub cell 1127 At the moment the method has a bug: When an item is placed only the sub cell
1128 widths of the items are changed, which are within the Y region the item to 1128 widths of the items are changed, which are within the Y region the item to
1129 place spans. When the sub cell width change of one of this items affects a 1129 place spans. When the sub cell width change of one of this items affects a
1130 cell, where other items are, which do not overlap in Y with the item to place, 1130 cell, where other items are, which do not overlap in Y with the item to place,
1131 the display gets corrupted, although the corruption looks quite nice. 1131 the display gets corrupted, although the corruption looks quite nice.
1132*/ 1132*/
1133void KOAgenda::placeSubCells(KOAgendaItem *placeItem) 1133void KOAgenda::placeSubCells(KOAgendaItem *placeItem)
1134{ 1134{
1135 1135
1136 QPtrList<KOAgendaItem> conflictItems; 1136 QPtrList<KOAgendaItem> conflictItems;
1137 int maxSubCells = 0; 1137 int maxSubCells = 0;
1138 QIntDict<KOAgendaItem> subCellDict(5); 1138 QIntDict<KOAgendaItem> subCellDict(7);
1139 1139
1140 KOAgendaItem *item; 1140 KOAgendaItem *item;
1141 for ( item=mItems.first(); item != 0; item=mItems.next() ) { 1141 for ( item=mItems.first(); item != 0; item=mItems.next() ) {
1142 if (item != placeItem) { 1142 if (item != placeItem) {
1143 if (placeItem->cellX() <= item->cellXWidth() && 1143 if (placeItem->cellX() <= item->cellXWidth() &&
1144 placeItem->cellXWidth() >= item->cellX()) { 1144 placeItem->cellXWidth() >= item->cellX()) {
1145 if ((placeItem->cellYTop() <= item->cellYBottom()) && 1145 if ((placeItem->cellYTop() <= item->cellYBottom()) &&
1146 (placeItem->cellYBottom() >= item->cellYTop())) { 1146 (placeItem->cellYBottom() >= item->cellYTop())) {
1147 conflictItems.append(item); 1147 conflictItems.append(item);
1148 if (item->subCells() > maxSubCells) 1148 if (item->subCells() > maxSubCells)
1149 maxSubCells = item->subCells(); 1149 maxSubCells = item->subCells();
1150 subCellDict.insert(item->subCell(),item); 1150 subCellDict.insert(item->subCell(),item);
1151 } 1151 }
1152 } 1152 }
1153 } 1153 }
1154 } 1154 }
1155 1155
1156 if (conflictItems.count() > 0) { 1156 if (conflictItems.count() > 0) {
1157 // Look for unused sub cell and insert item 1157 // Look for unused sub cell and insert item
1158 int i; 1158 int i;
1159 for(i=0;i<maxSubCells;++i) { 1159 for(i=0;i<maxSubCells;++i) {
1160 if (!subCellDict.find(i)) { 1160 if (!subCellDict.find(i)) {
1161 placeItem->setSubCell(i); 1161 placeItem->setSubCell(i);
1162 break; 1162 break;
1163 } 1163 }
1164 } 1164 }
1165 if (i == maxSubCells) { 1165 if (i == maxSubCells) {
1166 placeItem->setSubCell(maxSubCells); 1166 placeItem->setSubCell(maxSubCells);
1167 maxSubCells++; // add new item to number of sub cells 1167 maxSubCells++; // add new item to number of sub cells
1168 } 1168 }
1169 1169
1170 // Prepare for sub cell geometry adjustment 1170 // Prepare for sub cell geometry adjustment
1171 int newSubCellWidth; 1171 int newSubCellWidth;
1172 if (mAllDayMode) newSubCellWidth = mGridSpacingY / maxSubCells; 1172 if (mAllDayMode) newSubCellWidth = mGridSpacingY / maxSubCells;
1173 else newSubCellWidth = mGridSpacingX / maxSubCells; 1173 else newSubCellWidth = mGridSpacingX / maxSubCells;
1174 conflictItems.append(placeItem); 1174 conflictItems.append(placeItem);
1175 1175
1176 1176
1177 // Adjust sub cell geometry of all direct conflict items 1177 // Adjust sub cell geometry of all direct conflict items
1178 for ( item=conflictItems.first(); item != 0; 1178 for ( item=conflictItems.first(); item != 0;
1179 item=conflictItems.next() ) { 1179 item=conflictItems.next() ) {
1180 item->setSubCells(maxSubCells); 1180 item->setSubCells(maxSubCells);
1181 if (mAllDayMode) { 1181 if (mAllDayMode) {
1182 item->resize(item->cellWidth() * mGridSpacingX, newSubCellWidth); 1182 item->resize(item->cellWidth() * mGridSpacingX, newSubCellWidth);
1183 } else { 1183 } else {
1184 item->resize(newSubCellWidth, item->cellHeight() * mGridSpacingY); 1184 item->resize(newSubCellWidth, item->cellHeight() * mGridSpacingY);
1185 } 1185 }
1186 int x,y; 1186 int x,y;
1187 gridToContents(item->cellX(),item->cellYTop(),x,y); 1187 gridToContents(item->cellX(),item->cellYTop(),x,y);
1188 if (mAllDayMode) { 1188 if (mAllDayMode) {
1189 y += item->subCell() * newSubCellWidth; 1189 y += item->subCell() * newSubCellWidth;
1190 } else { 1190 } else {
1191 x += item->subCell() * newSubCellWidth; 1191 x += item->subCell() * newSubCellWidth;
1192 } 1192 }
1193 moveChild(item,x,y); 1193 moveChild(item,x,y);
1194 // qDebug("moveChild %s %d %d ", item->incidence()->summary().latin1() ,x,y); 1194 // qDebug("moveChild %s %d %d ", item->incidence()->summary().latin1() ,x,y);
1195 //item->updateItem(); 1195 //item->updateItem();
1196 } 1196 }
1197 // Adjust sub cell geometry of all conflict items of all conflict items 1197 // Adjust sub cell geometry of all conflict items of all conflict items
1198 for ( item=conflictItems.first(); item != 0; 1198 for ( item=conflictItems.first(); item != 0;
1199 item=conflictItems.next() ) { 1199 item=conflictItems.next() ) {
1200 if ( placeItem != item ) { 1200 if ( placeItem != item ) {
1201 KOAgendaItem *item2; 1201 KOAgendaItem *item2;
1202 QPtrList<KOAgendaItem> conflictItems2 = item->conflictItems(); 1202 QPtrList<KOAgendaItem> conflictItems2 = item->conflictItems();
1203 for ( item2=conflictItems2.first(); item2 != 0; 1203 for ( item2=conflictItems2.first(); item2 != 0;
1204 item2=conflictItems2.next() ) { 1204 item2=conflictItems2.next() ) {
1205 if ( item2->subCells() != maxSubCells) { 1205 if ( item2->subCells() != maxSubCells) {
1206 item2->setSubCells(maxSubCells); 1206 item2->setSubCells(maxSubCells);
1207 if (mAllDayMode) { 1207 if (mAllDayMode) {
1208 item2->resize(item2->cellWidth() * mGridSpacingX, newSubCellWidth); 1208 item2->resize(item2->cellWidth() * mGridSpacingX, newSubCellWidth);
1209 } else { 1209 } else {
1210 item2->resize(newSubCellWidth, item2->cellHeight() * mGridSpacingY); 1210 item2->resize(newSubCellWidth, item2->cellHeight() * mGridSpacingY);
1211 } 1211 }
1212 int x,y; 1212 int x,y;
1213 gridToContents(item2->cellX(),item2->cellYTop(),x,y); 1213 gridToContents(item2->cellX(),item2->cellYTop(),x,y);
1214 if (mAllDayMode) { 1214 if (mAllDayMode) {
1215 y += item2->subCell() * newSubCellWidth; 1215 y += item2->subCell() * newSubCellWidth;
1216 } else { 1216 } else {
1217 x += item2->subCell() * newSubCellWidth; 1217 x += item2->subCell() * newSubCellWidth;
1218 } 1218 }
1219 moveChild(item2,x,y); 1219 moveChild(item2,x,y);
1220 //qDebug("setttttt %d %s",maxSubCells, item2->text().latin1() ); 1220 //qDebug("setttttt %d %s",maxSubCells, item2->text().latin1() );
1221 } 1221 }
1222 } 1222 }
1223 } 1223 }
1224 } 1224 }
1225 } else { 1225 } else {
1226 placeItem->setSubCell(0); 1226 placeItem->setSubCell(0);
1227 placeItem->setSubCells(1); 1227 placeItem->setSubCells(1);
1228 if (mAllDayMode) placeItem->resize(placeItem->width(),mGridSpacingY); 1228 if (mAllDayMode) placeItem->resize(placeItem->width(),mGridSpacingY);
1229 else placeItem->resize(mGridSpacingX,placeItem->height()); 1229 else placeItem->resize(mGridSpacingX,placeItem->height());
1230 int x,y; 1230 int x,y;
1231 gridToContents(placeItem->cellX(),placeItem->cellYTop(),x,y); 1231 gridToContents(placeItem->cellX(),placeItem->cellYTop(),x,y);
1232 moveChild(placeItem,x,y); 1232 moveChild(placeItem,x,y);
1233 } 1233 }
1234 placeItem->setConflictItems(conflictItems); 1234 placeItem->setConflictItems(conflictItems);
1235 // for ( item=conflictItems.first(); item != 0; 1235 // for ( item=conflictItems.first(); item != 0;
1236// item=conflictItems.next() ) { 1236// item=conflictItems.next() ) {
1237// //item->updateItem(); 1237// //item->updateItem();
1238// //qDebug("xxx item->updateItem() %s %d %d", item->incidence()->summary().latin1(),item->x(), item->y() ); 1238// //qDebug("xxx item->updateItem() %s %d %d", item->incidence()->summary().latin1(),item->x(), item->y() );
1239// } 1239// }
1240// placeItem->updateItem(); 1240// placeItem->updateItem();
1241} 1241}
1242 1242
1243void KOAgenda::drawContents(QPainter* p, int cx, int cy, int cw, int ch) 1243void KOAgenda::drawContents(QPainter* p, int cx, int cy, int cw, int ch)
1244{ 1244{
1245 if ( globalFlagBlockAgenda ) 1245 if ( globalFlagBlockAgenda )
1246 return; 1246 return;
1247 if ( ! mAllDayMode ) { 1247 if ( ! mAllDayMode ) {
1248 // currently not working for 1248 // currently not working for
1249 1249
1250 //qDebug("KOAgenda::drawContents "); 1250 //qDebug("KOAgenda::drawContents ");
1251 if ( mCurPixWid != contentsWidth() || mCurPixHei != contentsHeight() ) 1251 if ( mCurPixWid != contentsWidth() || mCurPixHei != contentsHeight() )
1252 ;//drawContentsToPainter(); 1252 ;//drawContentsToPainter();
1253 1253
1254 QPaintDevice* pd = p->device(); 1254 QPaintDevice* pd = p->device();
1255 p->end(); 1255 p->end();
1256 int vx, vy; 1256 int vx, vy;
1257 int selectionX = KOGlobals::self()->reverseLayout() ? 1257 int selectionX = KOGlobals::self()->reverseLayout() ?
1258 (mColumns - 1 - mSelectionCellX) * mGridSpacingX : 1258 (mColumns - 1 - mSelectionCellX) * mGridSpacingX :
1259 mSelectionCellX * mGridSpacingX; 1259 mSelectionCellX * mGridSpacingX;
1260 contentsToViewport ( cx, cy, vx,vy); 1260 contentsToViewport ( cx, cy, vx,vy);
1261 //qDebug(" %d %d %d %d %d", cx, cy, cw,ch,mGridSpacingX-1) ; 1261 //qDebug(" %d %d %d %d %d", cx, cy, cw,ch,mGridSpacingX-1) ;
1262 1262
1263 if ( !(selectionX == cx && cy == mSelectionYTop && cw ==mGridSpacingX && ch == mSelectionHeight ) ) { 1263 if ( !(selectionX == cx && cy == mSelectionYTop && cw ==mGridSpacingX && ch == mSelectionHeight ) ) {
1264 if ( mGridSpacingX == cw && mSelectionHeight > 0 && ( ( cx + cw ) >= selectionX && cx <= ( selectionX + mGridSpacingX ) && 1264 if ( mGridSpacingX == cw && mSelectionHeight > 0 && ( ( cx + cw ) >= selectionX && cx <= ( selectionX + mGridSpacingX ) &&
1265 ( cy + ch ) >= mSelectionYTop && cy <= ( mSelectionYTop + mSelectionHeight ) ) ) { 1265 ( cy + ch ) >= mSelectionYTop && cy <= ( mSelectionYTop + mSelectionHeight ) ) ) {
1266 1266
1267 int vxSel, vySel; 1267 int vxSel, vySel;
1268 contentsToViewport ( selectionX, mSelectionYTop, vxSel,vySel); 1268 contentsToViewport ( selectionX, mSelectionYTop, vxSel,vySel);
1269 int off = mSelectionHeight; 1269 int off = mSelectionHeight;
1270 if ( vySel < 0 ) 1270 if ( vySel < 0 )
1271 off += vySel; 1271 off += vySel;
1272 //qDebug("OFF %d %d %d", off,vySel, vy ); 1272 //qDebug("OFF %d %d %d", off,vySel, vy );
1273 bitBlt ( pd, vx, vy+off, &mPaintPixmap, cx, cy+off, cw , ch-off ,CopyROP); 1273 bitBlt ( pd, vx, vy+off, &mPaintPixmap, cx, cy+off, cw , ch-off ,CopyROP);
1274 } else { 1274 } else {
1275 bitBlt ( pd, vx, vy, &mPaintPixmap, cx, cy, cw, ch ,CopyROP); 1275 bitBlt ( pd, vx, vy, &mPaintPixmap, cx, cy, cw, ch ,CopyROP);
1276 } 1276 }
1277 } 1277 }
1278 if ( mSelectionHeight > 0 ) { 1278 if ( mSelectionHeight > 0 ) {
1279 //qDebug("---- %d %d %d %d ", selectionX, mSelectionYTop, mGridSpacingX, mSelectionHeight ); 1279 //qDebug("---- %d %d %d %d ", selectionX, mSelectionYTop, mGridSpacingX, mSelectionHeight );
1280 if ( ( cx + cw ) >= selectionX && cx <= ( selectionX + mGridSpacingX ) && 1280 if ( ( cx + cw ) >= selectionX && cx <= ( selectionX + mGridSpacingX ) &&
1281 ( cy + ch ) >= mSelectionYTop && cy <= ( mSelectionYTop + mSelectionHeight ) ) { 1281 ( cy + ch ) >= mSelectionYTop && cy <= ( mSelectionYTop + mSelectionHeight ) ) {
1282 contentsToViewport ( selectionX, mSelectionYTop, vx,vy); 1282 contentsToViewport ( selectionX, mSelectionYTop, vx,vy);
1283 bitBlt ( pd, vx+1, vy, &mHighlightPixmap, 0, mSelectionYTop, mGridSpacingX-1, mSelectionHeight ,CopyROP); 1283 bitBlt ( pd, vx+1, vy, &mHighlightPixmap, 0, mSelectionYTop, mGridSpacingX-1, mSelectionHeight ,CopyROP);
1284 } 1284 }
1285 } 1285 }
1286 p->begin( pd ); 1286 p->begin( pd );
1287 } else { 1287 } else {
1288 1288
1289 if ( mCurPixWid != contentsWidth() || mCurPixHei != contentsHeight() ) 1289 if ( mCurPixWid != contentsWidth() || mCurPixHei != contentsHeight() )
1290 ;//drawContentsToPainter(); 1290 ;//drawContentsToPainter();
1291 1291
1292 QPaintDevice* pd = p->device(); 1292 QPaintDevice* pd = p->device();
1293 p->end(); 1293 p->end();
1294 int vx, vy; 1294 int vx, vy;
1295 int selectionX = KOGlobals::self()->reverseLayout() ? 1295 int selectionX = KOGlobals::self()->reverseLayout() ?
1296 (mColumns - 1 - mSelectionCellX) * mGridSpacingX : 1296 (mColumns - 1 - mSelectionCellX) * mGridSpacingX :
1297 mSelectionCellX * mGridSpacingX; 1297 mSelectionCellX * mGridSpacingX;
1298 contentsToViewport ( cx, cy, vx,vy); 1298 contentsToViewport ( cx, cy, vx,vy);
1299 // qDebug(" %d %d %d %d ", cx, cy, cw,ch) ; 1299 // qDebug(" %d %d %d %d ", cx, cy, cw,ch) ;
1300 if ( !(selectionX == cx && cy == mSelectionYTop && cw ==mGridSpacingX && ch == mSelectionHeight ) ) 1300 if ( !(selectionX == cx && cy == mSelectionYTop && cw ==mGridSpacingX && ch == mSelectionHeight ) )
1301 bitBlt ( pd, vx, vy, &mPaintPixmap, cx, cy, cw, ch ,CopyROP); 1301 bitBlt ( pd, vx, vy, &mPaintPixmap, cx, cy, cw, ch ,CopyROP);
1302 1302
1303 if ( mSelectionHeight > 0 ) { 1303 if ( mSelectionHeight > 0 ) {
1304 //qDebug("---- %d %d %d %d ", selectionX, mSelectionYTop, mGridSpacingX, mSelectionHeight ); 1304 //qDebug("---- %d %d %d %d ", selectionX, mSelectionYTop, mGridSpacingX, mSelectionHeight );
1305 if ( ( cx + cw ) >= selectionX && cx <= ( selectionX + mGridSpacingX ) && 1305 if ( ( cx + cw ) >= selectionX && cx <= ( selectionX + mGridSpacingX ) &&
1306 ( cy + ch ) >= mSelectionYTop && cy <= ( mSelectionYTop + mSelectionHeight ) ) { 1306 ( cy + ch ) >= mSelectionYTop && cy <= ( mSelectionYTop + mSelectionHeight ) ) {
1307 contentsToViewport ( selectionX, mSelectionYTop, vx,vy); 1307 contentsToViewport ( selectionX, mSelectionYTop, vx,vy);
1308 bitBlt ( pd, vx+1, vy, &mHighlightPixmap, 0, mSelectionYTop, mGridSpacingX-1, mSelectionHeight ,CopyROP); 1308 bitBlt ( pd, vx+1, vy, &mHighlightPixmap, 0, mSelectionYTop, mGridSpacingX-1, mSelectionHeight ,CopyROP);
1309 } 1309 }
1310 } 1310 }
1311 p->begin( pd ); 1311 p->begin( pd );
1312 } 1312 }
1313 1313
1314} 1314}
1315 1315
1316void KOAgenda::finishUpdate() 1316void KOAgenda::finishUpdate()
1317{ 1317{
1318 1318
1319 KOAgendaItem *item; 1319 KOAgendaItem *item;
1320 globalFlagBlockAgendaItemPaint = 1; 1320 globalFlagBlockAgendaItemPaint = 1;
1321 // 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 1321 // 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
1322 for ( item=mItems.first(); item != 0; item=mItems.next() ) { 1322 for ( item=mItems.first(); item != 0; item=mItems.next() ) {
1323 if ( !item->checkLayout() ) { 1323 if ( !item->checkLayout() ) {
1324 //qDebug(" conflictitem found "); 1324 //qDebug(" conflictitem found ");
1325 int newSubCellWidth; 1325 int newSubCellWidth;
1326 if (mAllDayMode) newSubCellWidth = mGridSpacingY / item->subCells(); 1326 if (mAllDayMode) newSubCellWidth = mGridSpacingY / item->subCells();
1327 else newSubCellWidth = mGridSpacingX / item->subCells(); 1327 else newSubCellWidth = mGridSpacingX / item->subCells();
1328 1328
1329 if (mAllDayMode) { 1329 if (mAllDayMode) {
1330 item->resize(item->cellWidth() * mGridSpacingX, newSubCellWidth); 1330 item->resize(item->cellWidth() * mGridSpacingX, newSubCellWidth);
diff --git a/korganizer/koagendaview.cpp b/korganizer/koagendaview.cpp
index a42227c..5a63b35 100644
--- a/korganizer/koagendaview.cpp
+++ b/korganizer/koagendaview.cpp
@@ -932,608 +932,579 @@ void KOAgendaView::updateConfig()
932 932
933 933
934 // update config for children 934 // update config for children
935 mTimeLabels->updateConfig(); 935 mTimeLabels->updateConfig();
936 mAgenda->storePosition(); 936 mAgenda->storePosition();
937 mAgenda->updateConfig(); 937 mAgenda->updateConfig();
938 mAllDayAgenda->updateConfig(); 938 mAllDayAgenda->updateConfig();
939 // widget synchronization 939 // widget synchronization
940 //TODO: find a better way, maybe signal/slot 940 //TODO: find a better way, maybe signal/slot
941 mTimeLabels->positionChanged(); 941 mTimeLabels->positionChanged();
942 942
943 // for some reason, this needs to be called explicitly 943 // for some reason, this needs to be called explicitly
944 mTimeLabels->repaint(); 944 mTimeLabels->repaint();
945 945
946 mDummyAllDayLeft->setFixedWidth(mTimeLabels->width()); 946 mDummyAllDayLeft->setFixedWidth(mTimeLabels->width());
947 947
948 // ToolTips displaying summary of events 948 // ToolTips displaying summary of events
949 KOAgendaItem::toolTipGroup()->setEnabled(KOPrefs::instance() 949 KOAgendaItem::toolTipGroup()->setEnabled(KOPrefs::instance()
950 ->mEnableToolTips); 950 ->mEnableToolTips);
951 951
952 //setHolidayMasks(); 952 //setHolidayMasks();
953 953
954 //createDayLabels(); called by via updateView(); 954 //createDayLabels(); called by via updateView();
955 mEventIndicatorTop->setXOffset(mTimeLabels->width() + mAgenda->frameWidth()); 955 mEventIndicatorTop->setXOffset(mTimeLabels->width() + mAgenda->frameWidth());
956 updateView(); 956 updateView();
957 mAgenda->restorePosition(); 957 mAgenda->restorePosition();
958} 958}
959 959
960 960
961void KOAgendaView::updateEventDates(KOAgendaItem *item, int type) 961void KOAgendaView::updateEventDates(KOAgendaItem *item, int type)
962{ 962{
963 963
964 964
965 int xxx = item->cellX(); 965 int xxx = item->cellX();
966 //qDebug("KOAgendaView::updateEventDates %d %d %d %d %d", xxx, mMinY.at(xxx),mMaxY.at(xxx),item->cellYTop(),item->cellYBottom() ); 966 //qDebug("KOAgendaView::updateEventDates %d %d %d %d %d", xxx, mMinY.at(xxx),mMaxY.at(xxx),item->cellYTop(),item->cellYBottom() );
967 if ( mMinY.at(xxx) > item->cellYTop() ) 967 if ( mMinY.at(xxx) > item->cellYTop() )
968 mMinY.at(xxx) = item->cellYTop(); 968 mMinY.at(xxx) = item->cellYTop();
969 if ( mMaxY.at(xxx) < item->cellYBottom() ) 969 if ( mMaxY.at(xxx) < item->cellYBottom() )
970 mMaxY.at(xxx) = item->cellYBottom(); 970 mMaxY.at(xxx) = item->cellYBottom();
971 971
972 QDateTime startDt,endDt; 972 QDateTime startDt,endDt;
973 QDate startDate; 973 QDate startDate;
974 int lenInSecs; 974 int lenInSecs;
975 // if ( type == KOAgenda::RESIZETOP ) 975 // if ( type == KOAgenda::RESIZETOP )
976 // qDebug("RESIZETOP "); 976 // qDebug("RESIZETOP ");
977 // if ( type == KOAgenda::RESIZEBOTTOM ) 977 // if ( type == KOAgenda::RESIZEBOTTOM )
978 // qDebug("RESIZEBOTTOM "); 978 // qDebug("RESIZEBOTTOM ");
979 // if ( type == KOAgenda::MOVE ) 979 // if ( type == KOAgenda::MOVE )
980 // qDebug("MOVE "); 980 // qDebug("MOVE ");
981 if ( item->incidence()->typeID() == eventID ) { 981 if ( item->incidence()->typeID() == eventID ) {
982 startDt =item->incidence()->dtStart(); 982 startDt =item->incidence()->dtStart();
983 endDt = item->incidence()->dtEnd(); 983 endDt = item->incidence()->dtEnd();
984 lenInSecs = startDt.secsTo( endDt ); 984 lenInSecs = startDt.secsTo( endDt );
985 } 985 }
986 986
987 // emit incidenceItemChanged( item->incidence(), KOGlobals::EVENTEDITED ); 987 // emit incidenceItemChanged( item->incidence(), KOGlobals::EVENTEDITED );
988 988
989 if ( item->incidence()->typeID()== todoID && item->mLastMoveXPos > 0 ) { 989 if ( item->incidence()->typeID()== todoID && item->mLastMoveXPos > 0 ) {
990 startDate = mSelectedDates[item->mLastMoveXPos]; 990 startDate = mSelectedDates[item->mLastMoveXPos];
991 } else { 991 } else {
992 if (item->cellX() < 0) { 992 if (item->cellX() < 0) {
993 startDate = (mSelectedDates.first()).addDays(item->cellX()); 993 startDate = (mSelectedDates.first()).addDays(item->cellX());
994 } else { 994 } else {
995 startDate = mSelectedDates[item->cellX()]; 995 startDate = mSelectedDates[item->cellX()];
996 } 996 }
997 } 997 }
998 startDt.setDate(startDate); 998 startDt.setDate(startDate);
999 999
1000 if (item->incidence()->doesFloat()) { 1000 if (item->incidence()->doesFloat()) {
1001 endDt.setDate(startDate.addDays(item->cellWidth() - 1)); 1001 endDt.setDate(startDate.addDays(item->cellWidth() - 1));
1002 } else { 1002 } else {
1003 if ( type == KOAgenda::RESIZETOP || type == KOAgenda::MOVE ) 1003 if ( type == KOAgenda::RESIZETOP || type == KOAgenda::MOVE )
1004 startDt.setTime(mAgenda->gyToTime(item->cellYTop())); 1004 startDt.setTime(mAgenda->gyToTime(item->cellYTop()));
1005 if ( item->incidence()->typeID() == eventID ) { 1005 if ( item->incidence()->typeID() == eventID ) {
1006 if ( type == KOAgenda::MOVE ) { 1006 if ( type == KOAgenda::MOVE ) {
1007 endDt = startDt.addSecs(lenInSecs); 1007 endDt = startDt.addSecs(lenInSecs);
1008 1008
1009 } else if ( type == KOAgenda::RESIZEBOTTOM ) { 1009 } else if ( type == KOAgenda::RESIZEBOTTOM ) {
1010 if (item->lastMultiItem()) { 1010 if (item->lastMultiItem()) {
1011 endDt.setTime(mAgenda->gyToTime(item->lastMultiItem()->cellYBottom()+1)); 1011 endDt.setTime(mAgenda->gyToTime(item->lastMultiItem()->cellYBottom()+1));
1012 endDt.setDate(startDate. 1012 endDt.setDate(startDate.
1013 addDays(item->lastMultiItem()->cellX() - item->cellX())); 1013 addDays(item->lastMultiItem()->cellX() - item->cellX()));
1014 } else { 1014 } else {
1015 endDt.setTime(mAgenda->gyToTime(item->cellYBottom()+1)); 1015 endDt.setTime(mAgenda->gyToTime(item->cellYBottom()+1));
1016 endDt.setDate(startDate); 1016 endDt.setDate(startDate);
1017 } 1017 }
1018 } 1018 }
1019 } else { 1019 } else {
1020 // todo 1020 // todo
1021 if (item->lastMultiItem()) { 1021 if (item->lastMultiItem()) {
1022 endDt.setTime(mAgenda->gyToTime(item->lastMultiItem()->cellYBottom()+1)); 1022 endDt.setTime(mAgenda->gyToTime(item->lastMultiItem()->cellYBottom()+1));
1023 endDt.setDate(startDate. 1023 endDt.setDate(startDate.
1024 addDays(item->lastMultiItem()->cellX() - item->cellX())); 1024 addDays(item->lastMultiItem()->cellX() - item->cellX()));
1025 } else { 1025 } else {
1026 //qDebug("tem->cellYBottom() %d",item->cellYBottom() ); 1026 //qDebug("tem->cellYBottom() %d",item->cellYBottom() );
1027 if ( item->cellYBottom() > 0 ) 1027 if ( item->cellYBottom() > 0 )
1028 endDt.setTime(mAgenda->gyToTime(item->cellYBottom()+1)); 1028 endDt.setTime(mAgenda->gyToTime(item->cellYBottom()+1));
1029 else 1029 else
1030 endDt.setTime((static_cast<Todo*>(item->incidence()))->dtDue().time()); 1030 endDt.setTime((static_cast<Todo*>(item->incidence()))->dtDue().time());
1031 endDt.setDate(startDate); 1031 endDt.setDate(startDate);
1032 } 1032 }
1033 } 1033 }
1034 } 1034 }
1035 if ( item->incidence()->typeID() == eventID ) { 1035 if ( item->incidence()->typeID() == eventID ) {
1036 item->incidence()->setDtStart(startDt); 1036 item->incidence()->setDtStart(startDt);
1037 (static_cast<Event*>(item->incidence()))->setDtEnd(endDt); 1037 (static_cast<Event*>(item->incidence()))->setDtEnd(endDt);
1038 } else if ( item->incidence()->typeID() == todoID ) { 1038 } else if ( item->incidence()->typeID() == todoID ) {
1039 Todo* to = static_cast<Todo*>(item->incidence()); 1039 Todo* to = static_cast<Todo*>(item->incidence());
1040 1040
1041 to->setDtDue(endDt); 1041 to->setDtDue(endDt);
1042 if ( to->hasStartDate() ) { 1042 if ( to->hasStartDate() ) {
1043 if (to->dtStart() >= to->dtDue() ) 1043 if (to->dtStart() >= to->dtDue() )
1044 to->setDtStart(to->dtDue().addDays( -2 )); 1044 to->setDtStart(to->dtDue().addDays( -2 ));
1045 } 1045 }
1046 1046
1047 } 1047 }
1048 //qDebug("KOAgendaView::updateEventDates stsart %s end %s ", startDt.toString().latin1(), endDt.toString().latin1() ); 1048 //qDebug("KOAgendaView::updateEventDates stsart %s end %s ", startDt.toString().latin1(), endDt.toString().latin1() );
1049 item->incidence()->setRevision(item->incidence()->revision()+1); 1049 item->incidence()->setRevision(item->incidence()->revision()+1);
1050 item->setItemDate(startDt.date()); 1050 item->setItemDate(startDt.date());
1051 //item->updateItem(); 1051 //item->updateItem();
1052 if ( item->incidence()->typeID() == todoID ) { 1052 if ( item->incidence()->typeID() == todoID ) {
1053 emit todoMoved((Todo*)item->incidence(), KOGlobals::EVENTEDITED ); 1053 emit todoMoved((Todo*)item->incidence(), KOGlobals::EVENTEDITED );
1054 1054
1055 } 1055 }
1056 else 1056 else
1057 emit incidenceChanged(item->incidence(), KOGlobals::EVENTEDITED); 1057 emit incidenceChanged(item->incidence(), KOGlobals::EVENTEDITED);
1058 item->updateItem(); 1058 item->updateItem();
1059} 1059}
1060 1060
1061void KOAgendaView::showDates( const QDate &start, const QDate &end ) 1061void KOAgendaView::showDates( const QDate &start, const QDate &end )
1062{ 1062{
1063 // kdDebug() << "KOAgendaView::selectDates" << endl; 1063 // kdDebug() << "KOAgendaView::selectDates" << endl;
1064 1064
1065 mSelectedDates.clear(); 1065 mSelectedDates.clear();
1066 // qDebug("KOAgendaView::showDates "); 1066 // qDebug("KOAgendaView::showDates ");
1067 QDate d = start; 1067 QDate d = start;
1068 while (d <= end) { 1068 while (d <= end) {
1069 mSelectedDates.append(d); 1069 mSelectedDates.append(d);
1070 d = d.addDays( 1 ); 1070 d = d.addDays( 1 );
1071 } 1071 }
1072 1072
1073 // and update the view 1073 // and update the view
1074 fillAgenda(); 1074 fillAgenda();
1075} 1075}
1076 1076
1077 1077
1078void KOAgendaView::showEvents(QPtrList<Event>) 1078void KOAgendaView::showEvents(QPtrList<Event>)
1079{ 1079{
1080 kdDebug() << "KOAgendaView::showEvents() is not yet implemented" << endl; 1080 kdDebug() << "KOAgendaView::showEvents() is not yet implemented" << endl;
1081} 1081}
1082 1082
1083void KOAgendaView::changeEventDisplay(Event *, int) 1083void KOAgendaView::changeEventDisplay(Event *, int)
1084{ 1084{
1085 // qDebug("KOAgendaView::changeEventDisplay "); 1085 // qDebug("KOAgendaView::changeEventDisplay ");
1086 // kdDebug() << "KOAgendaView::changeEventDisplay" << endl; 1086 // kdDebug() << "KOAgendaView::changeEventDisplay" << endl;
1087 // this should be re-written to be MUCH smarter. Right now we 1087 // this should be re-written to be MUCH smarter. Right now we
1088 // are just playing dumb. 1088 // are just playing dumb.
1089 fillAgenda(); 1089 fillAgenda();
1090} 1090}
1091 1091
1092void KOAgendaView::fillAgenda(const QDate &) 1092void KOAgendaView::fillAgenda(const QDate &)
1093{ 1093{
1094 // qDebug("KOAgendaView::fillAgenda "); 1094 // qDebug("KOAgendaView::fillAgenda ");
1095 fillAgenda(); 1095 fillAgenda();
1096} 1096}
1097 1097
1098void KOAgendaView::fillAgenda() 1098void KOAgendaView::fillAgenda()
1099{ 1099{
1100 if ( globalFlagBlockStartup ) 1100 if ( globalFlagBlockStartup )
1101 return; 1101 return;
1102 if ( globalFlagBlockAgenda == 1 ) 1102 if ( globalFlagBlockAgenda == 1 )
1103 return; 1103 return;
1104 static bool onlyOne = false; 1104 static bool onlyOne = false;
1105 if ( onlyOne ) 1105 if ( onlyOne )
1106 return; 1106 return;
1107 onlyOne = true; 1107 onlyOne = true;
1108 //if ( globalFlagBlockAgenda == 2 ) 1108 //if ( globalFlagBlockAgenda == 2 )
1109 //globalFlagBlockAgenda = 0; 1109 //globalFlagBlockAgenda = 0;
1110 // globalFlagBlockPainting = false; 1110 // globalFlagBlockPainting = false;
1111 if ( globalFlagBlockAgenda == 0 ) 1111 if ( globalFlagBlockAgenda == 0 )
1112 globalFlagBlockAgenda = 1; 1112 globalFlagBlockAgenda = 1;
1113 // clearView(); 1113 // clearView();
1114 //qDebug("fillAgenda()++++ "); 1114 //qDebug("fillAgenda()++++ ");
1115 globalFlagBlockAgendaItemPaint = 1; 1115 globalFlagBlockAgendaItemPaint = 1;
1116 1116
1117 mAllDayAgenda->changeColumns(mSelectedDates.count()); 1117 mAllDayAgenda->changeColumns(mSelectedDates.count());
1118 mAgenda->changeColumns(mSelectedDates.count()); 1118 mAgenda->changeColumns(mSelectedDates.count());
1119 qApp->processEvents(); 1119 qApp->processEvents();
1120 mEventIndicatorTop->changeColumns(mSelectedDates.count()); 1120 mEventIndicatorTop->changeColumns(mSelectedDates.count());
1121 mEventIndicatorBottom->changeColumns(mSelectedDates.count()); 1121 mEventIndicatorBottom->changeColumns(mSelectedDates.count());
1122 setHolidayMasks(); 1122 setHolidayMasks();
1123 1123
1124 //mAgenda->hideUnused();
1125 //mAllDayAgenda->hideUnused();
1126
1127 // mAgenda->blockNextRepaint( false );
1128 // mAgenda->viewport()->repaint();
1129 // mAgenda->blockNextRepaint( true );
1130 mMinY.resize(mSelectedDates.count()); 1124 mMinY.resize(mSelectedDates.count());
1131 mMaxY.resize(mSelectedDates.count()); 1125 mMaxY.resize(mSelectedDates.count());
1132 1126
1133 QPtrList<Event> dayEvents; 1127 QPtrList<Event> dayEvents;
1134 1128
1135 // ToDo items shall be displayed for the day they are due, but only showed today if they are already overdue. 1129 // ToDo items shall be displayed for the day they are due, but only showed today if they are already overdue.
1136 // Therefore, gtodoset all of them. 1130 // Therefore, gtodoset all of them.
1137 QPtrList<Todo> todos = calendar()->todos(); 1131 QPtrList<Todo> todos = calendar()->todos();
1138 1132
1139 mAgenda->setDateList(mSelectedDates); 1133 mAgenda->setDateList(mSelectedDates);
1140 1134
1141 QDate today = QDate::currentDate(); 1135 QDate today = QDate::currentDate();
1142 1136
1143 DateList::ConstIterator dit; 1137 DateList::ConstIterator dit;
1144 int curCol = 0; 1138 int curCol = 0;
1145 for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) { 1139 for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) {
1146 QDate currentDate = *dit; 1140 QDate currentDate = *dit;
1147 // kdDebug() << "KOAgendaView::fillAgenda(): " << currentDate.toString() 1141 // kdDebug() << "KOAgendaView::fillAgenda(): " << currentDate.toString()
1148 // << endl; 1142 // << endl;
1149 1143
1150 dayEvents = calendar()->events(currentDate,true); 1144 dayEvents = calendar()->events(currentDate,false);
1151 1145
1152 // Default values, which can never be reached 1146 // Default values, which can never be reached
1153 mMinY[curCol] = mAgenda->timeToY(QTime(23,59)) + 1; 1147 mMinY[curCol] = mAgenda->timeToY(QTime(23,59)) + 1;
1154 mMaxY[curCol] = mAgenda->timeToY(QTime(0,0)) - 1; 1148 mMaxY[curCol] = mAgenda->timeToY(QTime(0,0)) - 1;
1155 1149
1156 unsigned int numEvent; 1150 unsigned int numEvent;
1157 for(numEvent=0;numEvent<dayEvents.count();++numEvent) { 1151 for(numEvent=0;numEvent<dayEvents.count();++numEvent) {
1158 Event *event = dayEvents.at(numEvent); 1152 Event *event = dayEvents.at(numEvent);
1159 if ( !KOPrefs::instance()->mShowSyncEvents && event->uid().left(2) == QString("la") ) 1153 if ( !KOPrefs::instance()->mShowSyncEvents && event->uid().left(2) == QString("la") )
1160 if ( event->uid().left(15) == QString("last-syncEvent-") ) 1154 if ( event->uid().left(15) == QString("last-syncEvent-") )
1161 continue; 1155 continue;
1162 // kdDebug() << " Event: " << event->summary() << endl; 1156 // kdDebug() << " Event: " << event->summary() << endl;
1163 1157
1164 int beginX = currentDate.daysTo(event->dtStart().date()) + curCol; 1158 int beginX = currentDate.daysTo(event->dtStart().date()) + curCol;
1165 int endX = currentDate.daysTo(event->dtEnd().date()) + curCol; 1159 int endX = currentDate.daysTo(event->dtEnd().date()) + curCol;
1166 1160
1167 // kdDebug() << " beginX: " << beginX << " endX: " << endX << endl; 1161 // kdDebug() << " beginX: " << beginX << " endX: " << endX << endl;
1168 1162
1169 if (event->doesFloat()) { 1163 if (event->doesFloat()) {
1170 if (event->recurrence()->doesRecur()) { 1164 if (event->recurrence()->doesRecur()) {
1171 if (event->isMultiDay() ) { 1165 if (event->isMultiDay() ) {
1172 endX = endX - beginX;// endX is now number of days 1166 endX = endX - beginX;// endX is now number of days
1173 if ( event->recursOn( currentDate ) ) { 1167 if ( event->recursOn( currentDate ) ) {
1174 endX += curCol; 1168 endX += curCol;
1175 beginX = curCol; 1169 beginX = curCol;
1176 mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX); 1170 mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX);
1177 } else { 1171 } else {
1178 //qDebug("days %d %s",endX , currentDate.toString().latin1()); 1172 //qDebug("days %d %s",endX , currentDate.toString().latin1());
1179 QDate dateit = currentDate.addDays( -endX ); 1173 QDate dateit = currentDate.addDays( -endX );
1180 if ( event->recursOn( dateit ) ) { 1174 if ( event->recursOn( dateit ) ) {
1181 //qDebug("found %d %d %d %s", endX,curCol, curCol-endX ,dateit.toString().latin1() ); 1175 //qDebug("found %d %d %d %s", endX,curCol, curCol-endX ,dateit.toString().latin1() );
1182 if ( curCol-endX < 0 ) { 1176 if ( curCol-endX < 0 ) {
1183 mAllDayAgenda->insertAllDayItem(event,currentDate,0,curCol); 1177 mAllDayAgenda->insertAllDayItem(event,currentDate,0,curCol);
1184 } 1178 }
1185 } 1179 }
1186 } 1180 }
1187 } else { 1181 } else {
1188 mAllDayAgenda->insertAllDayItem(event,currentDate,curCol,curCol); 1182 mAllDayAgenda->insertAllDayItem(event,currentDate,curCol,curCol);
1189 } 1183 }
1190 1184
1191 } else { 1185 } else {
1192 if (beginX <= 0 && curCol == 0) { 1186 if (beginX <= 0 && curCol == 0) {
1193 mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX); 1187 mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX);
1194 } else if (beginX == curCol) { 1188 } else if (beginX == curCol) {
1195 mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX); 1189 mAllDayAgenda->insertAllDayItem(event,currentDate,beginX,endX);
1196 } 1190 }
1197 } 1191 }
1198 } else if (event->isMultiDay()) { 1192 } else if (event->isMultiDay()) {
1199 if ( event->doesRecur () ) { 1193 if ( event->doesRecur () ) {
1200 QDate dateit = currentDate; 1194 QDate dateit = currentDate;
1201 int count = 0; 1195 int count = 0;
1202 int max = event->dtStart().daysTo( event->dtEnd() ) +2; 1196 int max = event->dtStart().daysTo( event->dtEnd() ) +2;
1203 while (! event->recursOn( dateit ) && count <= max ) { 1197 while (! event->recursOn( dateit ) && count <= max ) {
1204 ++count; 1198 ++count;
1205 dateit = dateit.addDays( -1 ); 1199 dateit = dateit.addDays( -1 );
1206 } 1200 }
1207 bool ok; 1201 bool ok;
1208 QDateTime nextOcstart = event->getNextOccurence( QDateTime(dateit) ,&ok ); 1202 QDateTime nextOcstart = event->getNextOccurence( QDateTime(dateit) ,&ok );
1209 if ( ok ) 1203 if ( ok )
1210 { 1204 {
1211 int secs = event->dtStart().secsTo( event->dtEnd() ); 1205 int secs = event->dtStart().secsTo( event->dtEnd() );
1212 QDateTime nextOcend =nextOcstart.addSecs( secs ); ; 1206 QDateTime nextOcend =nextOcstart.addSecs( secs ); ;
1213 beginX = currentDate.daysTo(nextOcstart.date()) + curCol; 1207 beginX = currentDate.daysTo(nextOcstart.date()) + curCol;
1214 endX = currentDate.daysTo(nextOcend.date()) + curCol; 1208 endX = currentDate.daysTo(nextOcend.date()) + curCol;
1215 1209
1216 } 1210 }
1217 } 1211 }
1218 int startY = mAgenda->timeToY(event->dtStart().time()); 1212 int startY = mAgenda->timeToY(event->dtStart().time());
1219 int endY = mAgenda->timeToY(event->dtEnd().time()) - 1; 1213 int endY = mAgenda->timeToY(event->dtEnd().time()) - 1;
1220 //qDebug("insert %d %d %d %d %d ",beginX,endX,startY,endY , curCol ); 1214 //qDebug("insert %d %d %d %d %d ",beginX,endX,startY,endY , curCol );
1221 if ((beginX <= 0 && curCol == 0) || beginX == curCol) { 1215 if ((beginX <= 0 && curCol == 0) || beginX == curCol) {
1222 //qDebug("insert!!! "); 1216 //qDebug("insert!!! ");
1223 mAgenda->insertMultiItem(event,currentDate,beginX,endX,startY,endY); 1217 mAgenda->insertMultiItem(event,currentDate,beginX,endX,startY,endY);
1224 } 1218 }
1225 if (beginX == curCol) { 1219 if (beginX == curCol) {
1226 mMaxY[curCol] = mAgenda->timeToY(QTime(23,59)); 1220 mMaxY[curCol] = mAgenda->timeToY(QTime(23,59));
1227 if (startY < mMinY[curCol]) mMinY[curCol] = startY; 1221 if (startY < mMinY[curCol]) mMinY[curCol] = startY;
1228 } else if (endX == curCol) { 1222 } else if (endX == curCol) {
1229 mMinY[curCol] = mAgenda->timeToY(QTime(0,0)); 1223 mMinY[curCol] = mAgenda->timeToY(QTime(0,0));
1230 if (endY > mMaxY[curCol]) mMaxY[curCol] = endY; 1224 if (endY > mMaxY[curCol]) mMaxY[curCol] = endY;
1231 } else { 1225 } else {
1232 mMinY[curCol] = mAgenda->timeToY(QTime(0,0)); 1226 mMinY[curCol] = mAgenda->timeToY(QTime(0,0));
1233 mMaxY[curCol] = mAgenda->timeToY(QTime(23,59)); 1227 mMaxY[curCol] = mAgenda->timeToY(QTime(23,59));
1234 } 1228 }
1235 } else { 1229 } else {
1236 int startY = mAgenda->timeToY(event->dtStart().time()); 1230 int startY = mAgenda->timeToY(event->dtStart().time());
1237 int endY = mAgenda->timeToY(event->dtEnd().time()) - 1; 1231 int endY = mAgenda->timeToY(event->dtEnd().time()) - 1;
1238 if (endY < startY) endY = startY; 1232 if (endY < startY) endY = startY;
1239 mAgenda->insertItem(event,currentDate,curCol,startY,endY); 1233 mAgenda->insertItem(event,currentDate,curCol,startY,endY);
1240 if (startY < mMinY[curCol]) mMinY[curCol] = startY; 1234 if (startY < mMinY[curCol]) mMinY[curCol] = startY;
1241 if (endY > mMaxY[curCol]) mMaxY[curCol] = endY; 1235 if (endY > mMaxY[curCol]) mMaxY[curCol] = endY;
1242 } 1236 }
1243 } 1237 }
1244 // ---------- [display Todos -------------- 1238 // ---------- [display Todos --------------
1245 unsigned int numTodo; 1239 unsigned int numTodo;
1246 for (numTodo = 0; numTodo < todos.count(); ++numTodo) { 1240 for (numTodo = 0; numTodo < todos.count(); ++numTodo) {
1247 Todo *todo = todos.at(numTodo); 1241 Todo *todo = todos.at(numTodo);
1248 1242
1249 if ( ! todo->hasDueDate() && !todo->hasCompletedDate()) continue; // todo shall not be displayed if it has no date 1243 if ( ! todo->hasDueDate() && !todo->hasCompletedDate()) continue; // todo shall not be displayed if it has no date
1250 if ( todo->hasCompletedDate() && !KOPrefs::instance()->mShowCompletedTodoInAgenda ) continue; 1244 if ( todo->hasCompletedDate() && !KOPrefs::instance()->mShowCompletedTodoInAgenda ) continue;
1251 // ToDo items shall be displayed for the day they are due, but only showed today if they are already overdue. 1245 // ToDo items shall be displayed for the day they are due, but only showed today if they are already overdue.
1252 // Already completed items can be displayed on their original due date 1246 // Already completed items can be displayed on their original due date
1253 //if not KOPrefs::instance()->mShowTodoInAgenda, show overdue in agenda 1247 //if not KOPrefs::instance()->mShowTodoInAgenda, show overdue in agenda
1254 bool overdue = (!todo->isCompleted()) && (todo->dtDue() < today) && KOPrefs::instance()->mShowTodoInAgenda; 1248 bool overdue = (!todo->isCompleted()) && (todo->dtDue() < today) && KOPrefs::instance()->mShowTodoInAgenda;
1255 bool fillIn = false; 1249 bool fillIn = false;
1256 if ( todo->hasCompletedDate() && todo->completed().date() == currentDate ) 1250 if ( todo->hasCompletedDate() && todo->completed().date() == currentDate )
1257 fillIn = true; 1251 fillIn = true;
1258 if ( ! fillIn && !todo->hasCompletedDate() ) 1252 if ( ! fillIn && !todo->hasCompletedDate() )
1259 fillIn = ((todo->dtDue().date() == currentDate) && !overdue) || ((currentDate == today) && overdue); 1253 fillIn = ((todo->dtDue().date() == currentDate) && !overdue) || ((currentDate == today) && overdue);
1260 if ( fillIn ) { 1254 if ( fillIn ) {
1261 if ( (todo->doesFloat() || overdue ) && !todo->hasCompletedDate() ) { // Todo has no due-time set or is already overdue 1255 if ( (todo->doesFloat() || overdue ) && !todo->hasCompletedDate() ) { // Todo has no due-time set or is already overdue
1262 if ( KOPrefs::instance()->mShowTodoInAgenda ) 1256 if ( KOPrefs::instance()->mShowTodoInAgenda )
1263 mAllDayAgenda->insertAllDayItem(todo, currentDate, curCol, curCol); 1257 mAllDayAgenda->insertAllDayItem(todo, currentDate, curCol, curCol);
1264 } 1258 }
1265 else { 1259 else {
1266 QDateTime dt; 1260 QDateTime dt;
1267 if ( todo->hasCompletedDate() ) 1261 if ( todo->hasCompletedDate() )
1268 dt = todo->completed(); 1262 dt = todo->completed();
1269 else 1263 else
1270 dt = todo->dtDue();; 1264 dt = todo->dtDue();;
1271 1265
1272 1266
1273 int endY = mAgenda->timeToY(dt.time()) - 1; 1267 int endY = mAgenda->timeToY(dt.time()) - 1;
1274 int hi = (18/KOPrefs::instance()->mHourSize); 1268 int hi = (18/KOPrefs::instance()->mHourSize);
1275 //qDebug("hei %d ",KOPrefs::instance()->mHourSize); 1269 //qDebug("hei %d ",KOPrefs::instance()->mHourSize);
1276 int startY = endY -hi; 1270 int startY = endY -hi;
1277 1271
1278 mAgenda->insertItem(todo,currentDate,curCol,startY,endY); 1272 mAgenda->insertItem(todo,currentDate,curCol,startY,endY);
1279 1273
1280 if (startY < mMinY[curCol]) mMinY[curCol] = startY; 1274 if (startY < mMinY[curCol]) mMinY[curCol] = startY;
1281 if (endY > mMaxY[curCol]) mMaxY[curCol] = endY; 1275 if (endY > mMaxY[curCol]) mMaxY[curCol] = endY;
1282 } 1276 }
1283 } 1277 }
1284 } 1278 }
1285 // ---------- display Todos] -------------- 1279 // ---------- display Todos] --------------
1286 1280
1287 ++curCol; 1281 ++curCol;
1288 } 1282 }
1289 mAgenda->hideUnused(); 1283 mAgenda->hideUnused();
1290 mAllDayAgenda->hideUnused(); 1284 mAllDayAgenda->hideUnused();
1291 mAgenda->checkScrollBoundaries(); 1285 mAgenda->checkScrollBoundaries();
1292
1293 deleteSelectedDateTime(); 1286 deleteSelectedDateTime();
1294
1295 createDayLabels(); 1287 createDayLabels();
1296 emit incidenceSelected( 0 ); 1288 emit incidenceSelected( 0 );
1297 1289
1298 if ( globalFlagBlockAgenda == 2 ) { 1290 if ( globalFlagBlockAgenda == 2 ) {
1299 if ( KOPrefs::instance()->mSetTimeToDayStartAt ) 1291 if ( KOPrefs::instance()->mSetTimeToDayStartAt )
1300 setStartHour( KOPrefs::instance()->mDayBegins ); 1292 setStartHour( KOPrefs::instance()->mDayBegins );
1301 else if ( KOPrefs::instance()->mCenterOnCurrentTime ) 1293 else if ( KOPrefs::instance()->mCenterOnCurrentTime )
1302 setStartHour( QTime::currentTime ().hour() ); 1294 setStartHour( QTime::currentTime ().hour() );
1303 // qApp->processEvents();
1304 } 1295 }
1305 qApp->processEvents(); 1296 qApp->processEvents();
1306 //qDebug("qApp->processEvents(); END ");
1307 globalFlagBlockAgenda = 0; 1297 globalFlagBlockAgenda = 0;
1308
1309 // mAgenda->hideUnused();
1310 //mAllDayAgenda->hideUnused();
1311 mAllDayAgenda->drawContentsToPainter(); 1298 mAllDayAgenda->drawContentsToPainter();
1312 mAgenda->drawContentsToPainter(); 1299 mAgenda->drawContentsToPainter();
1313 repaintAgenda(); 1300 repaintAgenda();
1314 onlyOne = false; 1301 onlyOne = false;
1315 // mAgenda->finishUpdate();
1316 //mAllDayAgenda->finishUpdate();
1317
1318 // repaintAgenda();
1319 //qApp->processEvents();
1320 // globalFlagBlockAgenda = 0;
1321} 1302}
1322void KOAgendaView::repaintAgenda() 1303void KOAgendaView::repaintAgenda()
1323{ 1304{
1324 // mAllDayAgenda->drawContentsToPainter();
1325// mAllDayAgenda->viewport()->repaint( false );
1326// mAgenda->drawContentsToPainter();
1327// mAgenda->viewport()->repaint( false );
1328// qApp->processEvents();
1329
1330 //qDebug("KOAgendaView::repaintAgenda() ");
1331 //qApp->processEvents();
1332 mAgenda->viewport()->repaint( false ); 1305 mAgenda->viewport()->repaint( false );
1333 mAllDayAgenda->viewport()->repaint( false ); 1306 mAllDayAgenda->viewport()->repaint( false );
1334 mAgenda->finishUpdate(); 1307 mAgenda->finishUpdate();
1335 mAllDayAgenda->finishUpdate(); 1308 mAllDayAgenda->finishUpdate();
1336} 1309}
1337 1310
1338 1311
1339void KOAgendaView::clearView() 1312void KOAgendaView::clearView()
1340{ 1313{
1341 // kdDebug() << "ClearView" << endl;
1342 mAllDayAgenda->clear(); 1314 mAllDayAgenda->clear();
1343 mAgenda->clear(); 1315 mAgenda->clear();
1344} 1316}
1345void KOAgendaView::clearList() 1317void KOAgendaView::clearList()
1346{ 1318{
1347 // kdDebug() << "ClearView" << endl;
1348 clearView(); 1319 clearView();
1349 mAllDayAgenda->hideUnused(); 1320 mAllDayAgenda->hideUnused();
1350 mAgenda->hideUnused(); 1321 mAgenda->hideUnused();
1351} 1322}
1352 1323
1353void KOAgendaView::printPreview(CalPrinter *calPrinter, const QDate &fd, 1324void KOAgendaView::printPreview(CalPrinter *calPrinter, const QDate &fd,
1354 const QDate &td) 1325 const QDate &td)
1355{ 1326{
1356#ifndef KORG_NOPRINTER 1327#ifndef KORG_NOPRINTER
1357 if (fd == td) 1328 if (fd == td)
1358 calPrinter->preview(CalPrinter::Day, fd, td); 1329 calPrinter->preview(CalPrinter::Day, fd, td);
1359 else 1330 else
1360 calPrinter->preview(CalPrinter::Week, fd, td); 1331 calPrinter->preview(CalPrinter::Week, fd, td);
1361#endif 1332#endif
1362} 1333}
1363 1334
1364// void KOAgendaView::updateMovedTodo() 1335// void KOAgendaView::updateMovedTodo()
1365// { 1336// {
1366// // updateConfig(); 1337// // updateConfig();
1367// // emit updateTodoViews(); 1338// // emit updateTodoViews();
1368// } 1339// }
1369 1340
1370void KOAgendaView::slotShowDateView( int mode , int d ) 1341void KOAgendaView::slotShowDateView( int mode , int d )
1371{ 1342{
1372 if ( d >= mSelectedDates.count() ) { 1343 if ( d >= mSelectedDates.count() ) {
1373 qDebug("KOAgendaView::slotShowDateView datecounterror %d d ", d, mSelectedDates.count() ); 1344 qDebug("KOAgendaView::slotShowDateView datecounterror %d d ", d, mSelectedDates.count() );
1374 1345
1375 } else { 1346 } else {
1376 QDate day = mSelectedDates[d]; 1347 QDate day = mSelectedDates[d];
1377 emit showDateView(mode , day ); 1348 emit showDateView(mode , day );
1378 } 1349 }
1379 1350
1380} 1351}
1381void KOAgendaView::newEvent(int gx, int gy) 1352void KOAgendaView::newEvent(int gx, int gy)
1382{ 1353{
1383 if (!mSelectedDates.count()) return; 1354 if (!mSelectedDates.count()) return;
1384 1355
1385 QDate day = mSelectedDates[gx]; 1356 QDate day = mSelectedDates[gx];
1386 1357
1387 QTime time = mAgenda->gyToTime(gy); 1358 QTime time = mAgenda->gyToTime(gy);
1388 QDateTime dt(day,time); 1359 QDateTime dt(day,time);
1389 // if ( dt < QDateTime::currentDateTime () ) 1360 // if ( dt < QDateTime::currentDateTime () )
1390 // dt = QDateTime::currentDateTime ().addSecs( 3600 ); 1361 // dt = QDateTime::currentDateTime ().addSecs( 3600 );
1391 emit newEventSignal(dt); 1362 emit newEventSignal(dt);
1392} 1363}
1393 1364
1394void KOAgendaView::newEvent(int gxStart, int gyStart, int gxEnd, int gyEnd) 1365void KOAgendaView::newEvent(int gxStart, int gyStart, int gxEnd, int gyEnd)
1395{ 1366{
1396 if (!mSelectedDates.count()) return; 1367 if (!mSelectedDates.count()) return;
1397 1368
1398 QDate dayStart = mSelectedDates[gxStart]; 1369 QDate dayStart = mSelectedDates[gxStart];
1399 QDate dayEnd = mSelectedDates[gxEnd]; 1370 QDate dayEnd = mSelectedDates[gxEnd];
1400 1371
1401 QTime timeStart = mAgenda->gyToTime(gyStart); 1372 QTime timeStart = mAgenda->gyToTime(gyStart);
1402 QTime timeEnd = mAgenda->gyToTime( gyEnd + 1 ); 1373 QTime timeEnd = mAgenda->gyToTime( gyEnd + 1 );
1403 1374
1404 QDateTime dtStart(dayStart,timeStart); 1375 QDateTime dtStart(dayStart,timeStart);
1405 QDateTime dtEnd(dayEnd,timeEnd); 1376 QDateTime dtEnd(dayEnd,timeEnd);
1406 1377
1407 emit newEventSignal(dtStart,dtEnd); 1378 emit newEventSignal(dtStart,dtEnd);
1408} 1379}
1409 1380
1410void KOAgendaView::newEventAllDay(int gx, int ) 1381void KOAgendaView::newEventAllDay(int gx, int )
1411{ 1382{
1412 if (!mSelectedDates.count()) return; 1383 if (!mSelectedDates.count()) return;
1413 1384
1414 QDate day = mSelectedDates[gx]; 1385 QDate day = mSelectedDates[gx];
1415 1386
1416 emit newEventSignal(day); 1387 emit newEventSignal(day);
1417} 1388}
1418void KOAgendaView::newTodoAllDay(int gx, int ) 1389void KOAgendaView::newTodoAllDay(int gx, int )
1419{ 1390{
1420 if (!mSelectedDates.count()) return; 1391 if (!mSelectedDates.count()) return;
1421 1392
1422 QDateTime day (mSelectedDates[gx] ); 1393 QDateTime day (mSelectedDates[gx] );
1423 emit newTodoSignal(day, true); 1394 emit newTodoSignal(day, true);
1424} 1395}
1425void KOAgendaView::newTodo(int gx, int gy ) 1396void KOAgendaView::newTodo(int gx, int gy )
1426{ 1397{
1427 if (!mSelectedDates.count()) return; 1398 if (!mSelectedDates.count()) return;
1428 QDate dayStart = mSelectedDates[gx]; 1399 QDate dayStart = mSelectedDates[gx];
1429 QTime timeStart = mAgenda->gyToTime(gy); 1400 QTime timeStart = mAgenda->gyToTime(gy);
1430 QDateTime dt (dayStart,timeStart); 1401 QDateTime dt (dayStart,timeStart);
1431 emit newTodoSignal( dt, false ); 1402 emit newTodoSignal( dt, false );
1432} 1403}
1433 1404
1434void KOAgendaView::updateEventIndicatorTop(int newY) 1405void KOAgendaView::updateEventIndicatorTop(int newY)
1435{ 1406{
1436 uint i; 1407 uint i;
1437 for(i=0;i<mMinY.size();++i) { 1408 for(i=0;i<mMinY.size();++i) {
1438 if (newY >= mMinY.at(i)) mEventIndicatorTop->enableColumn(i,true); 1409 if (newY >= mMinY.at(i)) mEventIndicatorTop->enableColumn(i,true);
1439 else mEventIndicatorTop->enableColumn(i,false); 1410 else mEventIndicatorTop->enableColumn(i,false);
1440 } 1411 }
1441 1412
1442 mEventIndicatorTop->update(); 1413 mEventIndicatorTop->update();
1443} 1414}
1444 1415
1445void KOAgendaView::updateEventIndicatorBottom(int newY) 1416void KOAgendaView::updateEventIndicatorBottom(int newY)
1446{ 1417{
1447 uint i; 1418 uint i;
1448 for(i=0;i<mMaxY.size();++i) { 1419 for(i=0;i<mMaxY.size();++i) {
1449 if (newY <= mMaxY.at(i)) mEventIndicatorBottom->enableColumn(i,true); 1420 if (newY <= mMaxY.at(i)) mEventIndicatorBottom->enableColumn(i,true);
1450 else mEventIndicatorBottom->enableColumn(i,false); 1421 else mEventIndicatorBottom->enableColumn(i,false);
1451 } 1422 }
1452 1423
1453 mEventIndicatorBottom->update(); 1424 mEventIndicatorBottom->update();
1454} 1425}
1455 1426
1456void KOAgendaView::startDrag(Event *event) 1427void KOAgendaView::startDrag(Event *event)
1457{ 1428{
1458#ifndef KORG_NODND 1429#ifndef KORG_NODND
1459 DndFactory factory( calendar() ); 1430 DndFactory factory( calendar() );
1460 ICalDrag *vd = factory.createDrag(event,this); 1431 ICalDrag *vd = factory.createDrag(event,this);
1461 if (vd->drag()) { 1432 if (vd->drag()) {
1462 kdDebug() << "KOAgendaView::startDrag(): Delete drag source" << endl; 1433 kdDebug() << "KOAgendaView::startDrag(): Delete drag source" << endl;
1463 } 1434 }
1464#endif 1435#endif
1465} 1436}
1466 1437
1467void KOAgendaView::readSettings() 1438void KOAgendaView::readSettings()
1468{ 1439{
1469 readSettings(KOGlobals::config()); 1440 readSettings(KOGlobals::config());
1470} 1441}
1471 1442
1472void KOAgendaView::readSettings(KConfig *config) 1443void KOAgendaView::readSettings(KConfig *config)
1473{ 1444{
1474 // kdDebug() << "KOAgendaView::readSettings()" << endl; 1445 // kdDebug() << "KOAgendaView::readSettings()" << endl;
1475 1446
1476 config->setGroup("Views"); 1447 config->setGroup("Views");
1477 1448
1478 //#ifndef KORG_NOSPLITTER 1449 //#ifndef KORG_NOSPLITTER
1479 QValueList<int> sizes = config->readIntListEntry("Separator AgendaView"); 1450 QValueList<int> sizes = config->readIntListEntry("Separator AgendaView");
1480 if (sizes.count() == 2) { 1451 if (sizes.count() == 2) {
1481 if ( sizes[0] < 20 ) { 1452 if ( sizes[0] < 20 ) {
1482 sizes[1] = sizes[1] +20 - sizes[0]; 1453 sizes[1] = sizes[1] +20 - sizes[0];
1483 sizes[0] = 20; 1454 sizes[0] = 20;
1484 } 1455 }
1485 mSplitterAgenda->setSizes(sizes); 1456 mSplitterAgenda->setSizes(sizes);
1486 // qDebug("read %d %d ",sizes[0],sizes[1] ); 1457 // qDebug("read %d %d ",sizes[0],sizes[1] );
1487 } 1458 }
1488 //#endif 1459 //#endif
1489 1460
1490 // updateConfig(); 1461 // updateConfig();
1491} 1462}
1492 1463
1493void KOAgendaView::writeSettings(KConfig *config) 1464void KOAgendaView::writeSettings(KConfig *config)
1494{ 1465{
1495 // kdDebug() << "KOAgendaView::writeSettings()" << endl; 1466 // kdDebug() << "KOAgendaView::writeSettings()" << endl;
1496 1467
1497 config->setGroup("Views"); 1468 config->setGroup("Views");
1498 1469
1499 //#ifndef KORG_NOSPLITTER 1470 //#ifndef KORG_NOSPLITTER
1500 QValueList<int> list = mSplitterAgenda->sizes(); 1471 QValueList<int> list = mSplitterAgenda->sizes();
1501 config->writeEntry("Separator AgendaView",list); 1472 config->writeEntry("Separator AgendaView",list);
1502 //qDebug("write %d %d ", list[0],list[1] ); 1473 //qDebug("write %d %d ", list[0],list[1] );
1503 //#endif 1474 //#endif
1504} 1475}
1505 1476
1506void KOAgendaView::setHolidayMasks() 1477void KOAgendaView::setHolidayMasks()
1507{ 1478{
1508 mHolidayMask.resize(mSelectedDates.count()); 1479 mHolidayMask.resize(mSelectedDates.count());
1509 1480
1510 uint i; 1481 uint i;
1511 for(i=0;i<mSelectedDates.count();++i) { 1482 for(i=0;i<mSelectedDates.count();++i) {
1512 QDate date = mSelectedDates[i]; 1483 QDate date = mSelectedDates[i];
1513 bool showSaturday = KOPrefs::instance()->mExcludeSaturdays && (date.dayOfWeek() == 6); 1484 bool showSaturday = KOPrefs::instance()->mExcludeSaturdays && (date.dayOfWeek() == 6);
1514 bool showSunday = KOPrefs::instance()->mExcludeHolidays && (date.dayOfWeek() == 7); 1485 bool showSunday = KOPrefs::instance()->mExcludeHolidays && (date.dayOfWeek() == 7);
1515 bool showHoliday = false; 1486 bool showHoliday = false;
1516 if ( KOPrefs::instance()->mExcludeHolidays ) { 1487 if ( KOPrefs::instance()->mExcludeHolidays ) {
1517 QPtrList<Event> events = calendar()->events( date, true ); 1488 QPtrList<Event> events = calendar()->events( date, true );
1518 Event *event; 1489 Event *event;
1519 for( event = events.first(); event; event = events.next() ) { 1490 for( event = events.first(); event; event = events.next() ) {
1520 if ( event->isHoliday()) { 1491 if ( event->isHoliday()) {
1521 showHoliday = true; 1492 showHoliday = true;
1522 break; 1493 break;
1523 } 1494 }
1524 } 1495 }
1525 1496
1526 } 1497 }
1527 1498
1528#ifndef KORG_NOPLUGINS 1499#ifndef KORG_NOPLUGINS
1529 bool showHoliday = KOPrefs::instance()->mExcludeHolidays && 1500 bool showHoliday = KOPrefs::instance()->mExcludeHolidays &&
1530 !KOCore::self()->holiday(date).isEmpty(); 1501 !KOCore::self()->holiday(date).isEmpty();
1531#endif 1502#endif
1532 bool showDay = showSaturday || showSunday || showHoliday; 1503 bool showDay = showSaturday || showSunday || showHoliday;
1533 1504
1534 if (showDay) { 1505 if (showDay) {
1535 mHolidayMask.at(i) = true; 1506 mHolidayMask.at(i) = true;
1536 } else { 1507 } else {
1537 mHolidayMask.at(i) = false; 1508 mHolidayMask.at(i) = false;
1538 } 1509 }
1539 } 1510 }