summaryrefslogtreecommitdiffabout
path: root/korganizer/komonthview.cpp
Unidiff
Diffstat (limited to 'korganizer/komonthview.cpp') (more/less context) (show whitespace changes)
-rw-r--r--korganizer/komonthview.cpp26
1 files changed, 23 insertions, 3 deletions
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index 9fd1f68..8ee5bc3 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -901,192 +901,197 @@ KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
901 label->setFont(bfont); 901 label->setFont(bfont);
902 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 902 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
903 label->setLineWidth(1); 903 label->setLineWidth(1);
904 label->setAlignment(AlignCenter); 904 label->setAlignment(AlignCenter);
905 mDayLabels.insert( i, label ); 905 mDayLabels.insert( i, label );
906 label = new QLabel( mWeekView ); 906 label = new QLabel( mWeekView );
907 label->setFont(bfont); 907 label->setFont(bfont);
908 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 908 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
909 label->setLineWidth(1); 909 label->setLineWidth(1);
910 label->setAlignment(AlignCenter); 910 label->setAlignment(AlignCenter);
911 mDayLabelsW.insert( i, label ); 911 mDayLabelsW.insert( i, label );
912 } 912 }
913 913
914 bfont.setBold( false ); 914 bfont.setBold( false );
915 mWeekLabels.resize( mNumWeeks+1 ); 915 mWeekLabels.resize( mNumWeeks+1 );
916 mWeekLabelsW.resize( 2 ); 916 mWeekLabelsW.resize( 2 );
917 for( i = 0; i < mNumWeeks+1; i++ ) { 917 for( i = 0; i < mNumWeeks+1; i++ ) {
918 KOWeekButton *label = new KOWeekButton( mMonthView ); 918 KOWeekButton *label = new KOWeekButton( mMonthView );
919 label->setFocusPolicy(NoFocus); 919 label->setFocusPolicy(NoFocus);
920 label->setFont(bfont); 920 label->setFont(bfont);
921 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) ); 921 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) );
922 label->setFlat(true); 922 label->setFlat(true);
923 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed")); 923 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed"));
924 //label->setFrameStyle(QFrame::Panel|QFrame::Raised); 924 //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
925 //label->setLineWidth(1); 925 //label->setLineWidth(1);
926 //label->setAlignment(AlignCenter); 926 //label->setAlignment(AlignCenter);
927 mWeekLabels.insert( i, label ); 927 mWeekLabels.insert( i, label );
928 } 928 }
929 mWeekLabels[mNumWeeks]->setText( i18n("W")); 929 mWeekLabels[mNumWeeks]->setText( i18n("W"));
930 QWhatsThis::add(mWeekLabels[mNumWeeks],i18n("Click on this to\nselect week number")); 930 QWhatsThis::add(mWeekLabels[mNumWeeks],i18n("Click on this to\nselect week number"));
931 931
932 for( i = 0; i < 1+1; i++ ) { 932 for( i = 0; i < 1+1; i++ ) {
933 KOWeekButton *label = new KOWeekButton( mWeekView ); 933 KOWeekButton *label = new KOWeekButton( mWeekView );
934 label->setFocusPolicy(NoFocus); 934 label->setFocusPolicy(NoFocus);
935 label->setFont(bfont); 935 label->setFont(bfont);
936 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) ); 936 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) );
937 label->setFlat(true); 937 label->setFlat(true);
938 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed")); 938 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed"));
939 //label->setFrameStyle(QFrame::Panel|QFrame::Raised); 939 //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
940 //label->setLineWidth(1); 940 //label->setLineWidth(1);
941 //label->setAlignment(AlignCenter); 941 //label->setAlignment(AlignCenter);
942 mWeekLabelsW.insert( i, label ); 942 mWeekLabelsW.insert( i, label );
943 } 943 }
944 mWeekLabelsW[1]->setText( i18n("W")); 944 mWeekLabelsW[1]->setText( i18n("W"));
945 945
946 946
947 int row, col; 947 int row, col;
948 mCells.resize( mNumCells ); 948 mCells.resize( mNumCells );
949 for( row = 0; row < mNumWeeks; ++row ) { 949 for( row = 0; row < mNumWeeks; ++row ) {
950 for( col = 0; col < mDaysPerWeek; ++col ) { 950 for( col = 0; col < mDaysPerWeek; ++col ) {
951 MonthViewCell *cell = new MonthViewCell( this, mMonthView ); 951 MonthViewCell *cell = new MonthViewCell( this, mMonthView );
952 mCells.insert( row * mDaysPerWeek + col, cell ); 952 mCells.insert( row * mDaysPerWeek + col, cell );
953 953
954 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 954 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
955 SLOT( defaultAction( Incidence * ) ) ); 955 SLOT( defaultAction( Incidence * ) ) );
956 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 956 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
957 SIGNAL( newEventSignal( QDateTime ) ) ); 957 SIGNAL( newEventSignal( QDateTime ) ) );
958 connect( cell, SIGNAL( showDaySignal( QDate ) ), 958 connect( cell, SIGNAL( showDaySignal( QDate ) ),
959 SIGNAL( showDaySignal( QDate ) ) ); 959 SIGNAL( showDaySignal( QDate ) ) );
960 } 960 }
961 } 961 }
962 mCellsW.resize( mDaysPerWeek ); 962 mCellsW.resize( mDaysPerWeek );
963 for( col = 0; col < mDaysPerWeek; ++col ) { 963 for( col = 0; col < mDaysPerWeek; ++col ) {
964 MonthViewCell *cell = new MonthViewCell( this, mWeekView ); 964 MonthViewCell *cell = new MonthViewCell( this, mWeekView );
965 mCellsW.insert( col, cell ); 965 mCellsW.insert( col, cell );
966 966
967 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 967 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
968 SLOT( defaultAction( Incidence * ) ) ); 968 SLOT( defaultAction( Incidence * ) ) );
969 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 969 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
970 SIGNAL( newEventSignal( QDateTime ) ) ); 970 SIGNAL( newEventSignal( QDateTime ) ) );
971 connect( cell, SIGNAL( showDaySignal( QDate ) ), 971 connect( cell, SIGNAL( showDaySignal( QDate ) ),
972 SIGNAL( showDaySignal( QDate ) ) ); 972 SIGNAL( showDaySignal( QDate ) ) );
973 cell->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont ); 973 cell->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont );
974 } 974 }
975 975
976 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) ); 976 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) );
977 mContextMenu = eventPopup(); 977 mContextMenu = eventPopup();
978 // updateConfig(); //useless here... 978 // updateConfig(); //useless here...
979 // ... but we need mWidthLongDayLabel computed 979 // ... but we need mWidthLongDayLabel computed
980 QFontMetrics fontmetric(mDayLabels[0]->font()); 980 QFontMetrics fontmetric(mDayLabels[0]->font());
981 mWidthLongDayLabel = 0; 981 mWidthLongDayLabel = 0;
982 for (int i = 0; i < 7; i++) { 982 for (int i = 0; i < 7; i++) {
983 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1)); 983 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1));
984 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width; 984 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width;
985 } 985 }
986 986
987 //mWeekLabels[mNumWeeks]->setText( i18n("W")); 987 //mWeekLabels[mNumWeeks]->setText( i18n("W"));
988 988
989#if 0 989#if 0
990 if ( mShowWeekView ) 990 if ( mShowWeekView )
991 mWidStack->raiseWidget( mWeekView ); 991 mWidStack->raiseWidget( mWeekView );
992 else 992 else
993 mWidStack->raiseWidget( mMonthView ); 993 mWidStack->raiseWidget( mMonthView );
994#endif 994#endif
995 995
996 emit incidenceSelected( 0 ); 996 emit incidenceSelected( 0 );
997
998 mComputeLayoutTimer = new QTimer( this );
999 connect (mComputeLayoutTimer ,SIGNAL(timeout()), this, SLOT ( slotComputeLayout()));
1000
1001
997#ifndef DESKTOP_VERSION 1002#ifndef DESKTOP_VERSION
998 resize( QApplication::desktop()->size() ); 1003 resize( QApplication::desktop()->size() );
999#else 1004#else
1000 resize(640, 480 ); 1005 resize(640, 480 );
1001 updatePossible = true; 1006 updatePossible = true;
1002#endif 1007#endif
1003 computeLayout(); 1008 computeLayout();
1004 1009
1005 if ( mShowWeekView ) 1010 if ( mShowWeekView )
1006 mWidStack->raiseWidget( mWeekView ); 1011 mWidStack->raiseWidget( mWeekView );
1007 else 1012 else
1008 mWidStack->raiseWidget( mMonthView ); 1013 mWidStack->raiseWidget( mMonthView );
1009} 1014}
1010 1015
1011KOMonthView::~KOMonthView() 1016KOMonthView::~KOMonthView()
1012{ 1017{
1013 delete mContextMenu; 1018 delete mContextMenu;
1014} 1019}
1015 1020
1016void KOMonthView::selectInternalWeekNum ( int n ) 1021void KOMonthView::selectInternalWeekNum ( int n )
1017{ 1022{
1018 switchView(); 1023 switchView();
1019 if ( !KOPrefs::instance()->mMonthViewWeek ) 1024 if ( !KOPrefs::instance()->mMonthViewWeek )
1020 emit selectMonth (); 1025 emit selectMonth ();
1021 else 1026 else
1022 emit selectWeekNum ( n ); 1027 emit selectWeekNum ( n );
1023} 1028}
1024 1029
1025int KOMonthView::currentWeek() 1030int KOMonthView::currentWeek()
1026{ 1031{
1027 if ( mShowWeekView ) 1032 if ( mShowWeekView )
1028 return mWeekLabelsW[0]->getWeekNum(); 1033 return mWeekLabelsW[0]->getWeekNum();
1029 return mWeekLabels[0]->getWeekNum(); 1034 return mWeekLabels[0]->getWeekNum();
1030} 1035}
1031void KOMonthView::switchView() 1036void KOMonthView::switchView()
1032{ 1037{
1033 if ( selectedCell( ) ) 1038 if ( selectedCell( ) )
1034 selectedCell()->deselect(); 1039 selectedCell()->deselect();
1035 mShowWeekView = !mShowWeekView; 1040 mShowWeekView = !mShowWeekView;
1036 KOPrefs::instance()->mMonthViewWeek = mShowWeekView; 1041 KOPrefs::instance()->mMonthViewWeek = mShowWeekView;
1037 if ( clPending ) { 1042 if ( clPending ) {
1038 computeLayout(); 1043 computeLayout();
1039 updateConfig(); 1044 updateConfig();
1040 } 1045 }
1041 if ( mShowWeekView ) 1046 if ( mShowWeekView )
1042 mWidStack->raiseWidget( mWeekView ); 1047 mWidStack->raiseWidget( mWeekView );
1043 else 1048 else
1044 mWidStack->raiseWidget( mMonthView ); 1049 mWidStack->raiseWidget( mMonthView );
1045 clPending = false; 1050 clPending = false;
1046} 1051}
1047 1052
1048int KOMonthView::maxDatesHint() 1053int KOMonthView::maxDatesHint()
1049{ 1054{
1050 return mNumCells; 1055 return mNumCells;
1051} 1056}
1052 1057
1053int KOMonthView::currentDateCount() 1058int KOMonthView::currentDateCount()
1054{ 1059{
1055 return mNumCells; 1060 return mNumCells;
1056} 1061}
1057 1062
1058QPtrList<Incidence> KOMonthView::selectedIncidences() 1063QPtrList<Incidence> KOMonthView::selectedIncidences()
1059{ 1064{
1060 QPtrList<Incidence> selected; 1065 QPtrList<Incidence> selected;
1061 1066
1062 if ( mSelectedCell ) { 1067 if ( mSelectedCell ) {
1063 Incidence *incidence = mSelectedCell->selectedIncidence(); 1068 Incidence *incidence = mSelectedCell->selectedIncidence();
1064 if ( incidence ) selected.append( incidence ); 1069 if ( incidence ) selected.append( incidence );
1065 } 1070 }
1066 1071
1067 return selected; 1072 return selected;
1068} 1073}
1069 1074
1070DateList KOMonthView::selectedDates() 1075DateList KOMonthView::selectedDates()
1071{ 1076{
1072 DateList selected; 1077 DateList selected;
1073 1078
1074 if ( mSelectedCell ) { 1079 if ( mSelectedCell ) {
1075 QDate qd = mSelectedCell->selectedIncidenceDate(); 1080 QDate qd = mSelectedCell->selectedIncidenceDate();
1076 if ( qd.isValid() ) selected.append( qd ); 1081 if ( qd.isValid() ) selected.append( qd );
1077 } 1082 }
1078 1083
1079 return selected; 1084 return selected;
1080} 1085}
1081 1086
1082void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd, 1087void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd,
1083 const QDate &td) 1088 const QDate &td)
1084{ 1089{
1085#ifndef KORG_NOPRINTER 1090#ifndef KORG_NOPRINTER
1086 calPrinter->preview(CalPrinter::Month, fd, td); 1091 calPrinter->preview(CalPrinter::Month, fd, td);
1087#endif 1092#endif
1088} 1093}
1089 1094
1090void KOMonthView::updateConfig() 1095void KOMonthView::updateConfig()
1091{ 1096{
1092 1097
@@ -1258,352 +1263,367 @@ void KOMonthView::updateView()
1258 QDate endDate = mStartDate.addDays( timeSpan ); 1263 QDate endDate = mStartDate.addDays( timeSpan );
1259 for( event = events.first(); event; event = events.next() ) { // for event 1264 for( event = events.first(); event; event = events.next() ) { // for event
1260 if ( event->doesRecur() ) { 1265 if ( event->doesRecur() ) {
1261 bool last; 1266 bool last;
1262 QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last ); 1267 QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last );
1263 QDateTime incidenceEnd; 1268 QDateTime incidenceEnd;
1264 int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() ); 1269 int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() );
1265 bool invalid = false; 1270 bool invalid = false;
1266 while( true ) { 1271 while( true ) {
1267 if ( incidenceStart.isValid() ) { 1272 if ( incidenceStart.isValid() ) {
1268 incidenceEnd = incidenceStart.addDays( eventlen ); 1273 incidenceEnd = incidenceStart.addDays( eventlen );
1269 int st = incidenceStart.date().daysTo( endDate ); 1274 int st = incidenceStart.date().daysTo( endDate );
1270 if ( st >= 0 ) { // start before timeend 1275 if ( st >= 0 ) { // start before timeend
1271 int end = mStartDate.daysTo( incidenceEnd.date() ); 1276 int end = mStartDate.daysTo( incidenceEnd.date() );
1272 if ( end >= 0 ) { // end after timestart --- got one! 1277 if ( end >= 0 ) { // end after timestart --- got one!
1273 //normalize 1278 //normalize
1274 st = timeSpan - st; 1279 st = timeSpan - st;
1275 if ( st < 0 ) st = 0; 1280 if ( st < 0 ) st = 0;
1276 if ( end > timeSpan ) end = timeSpan; 1281 if ( end > timeSpan ) end = timeSpan;
1277 int iii; 1282 int iii;
1278 //qDebug("found %s %d %d ",event->summary().latin1(), st, end ); 1283 //qDebug("found %s %d %d ",event->summary().latin1(), st, end );
1279 for ( iii = st;iii<= end;++iii) 1284 for ( iii = st;iii<= end;++iii)
1280 (*cells)[iii]->insertEvent( event ); 1285 (*cells)[iii]->insertEvent( event );
1281 } 1286 }
1282 } 1287 }
1283 } else { 1288 } else {
1284 if ( invalid ) 1289 if ( invalid )
1285 break; 1290 break;
1286 invalid = true; 1291 invalid = true;
1287 //qDebug("invalid %s", event->summary().latin1()); 1292 //qDebug("invalid %s", event->summary().latin1());
1288 incidenceStart = QDateTime( mStartDate ).addSecs( -2 );; 1293 incidenceStart = QDateTime( mStartDate ).addSecs( -2 );;
1289 } 1294 }
1290 if ( last ) 1295 if ( last )
1291 break; 1296 break;
1292 bool ok; 1297 bool ok;
1293 incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok ); 1298 incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok );
1294 if ( ! ok ) 1299 if ( ! ok )
1295 break; 1300 break;
1296 if ( incidenceStart.date() > endDate ) 1301 if ( incidenceStart.date() > endDate )
1297 break; 1302 break;
1298 } 1303 }
1299 } else { // no recur 1304 } else { // no recur
1300 int st = event->dtStart().date().daysTo( endDate ); 1305 int st = event->dtStart().date().daysTo( endDate );
1301 if ( st >= 0 ) { // start before timeend 1306 if ( st >= 0 ) { // start before timeend
1302 int end = mStartDate.daysTo( event->dtEnd().date() ); 1307 int end = mStartDate.daysTo( event->dtEnd().date() );
1303 if ( end >= 0 ) { // end after timestart --- got one! 1308 if ( end >= 0 ) { // end after timestart --- got one!
1304 //normalize 1309 //normalize
1305 st = timeSpan - st; 1310 st = timeSpan - st;
1306 if ( st < 0 ) st = 0; 1311 if ( st < 0 ) st = 0;
1307 if ( end > timeSpan ) end = timeSpan; 1312 if ( end > timeSpan ) end = timeSpan;
1308 int iii; 1313 int iii;
1309 for ( iii = st;iii<= end;++iii) 1314 for ( iii = st;iii<= end;++iii)
1310 (*cells)[iii]->insertEvent( event ); 1315 (*cells)[iii]->insertEvent( event );
1311 } 1316 }
1312 } 1317 }
1313 } 1318 }
1314 } 1319 }
1315 // insert due todos 1320 // insert due todos
1316 QPtrList<Todo> todos = calendar()->todos( ); 1321 QPtrList<Todo> todos = calendar()->todos( );
1317 Todo *todo; 1322 Todo *todo;
1318 for(todo = todos.first(); todo; todo = todos.next()) { 1323 for(todo = todos.first(); todo; todo = todos.next()) {
1319 //insertTodo( todo ); 1324 //insertTodo( todo );
1320 if ( todo->hasDueDate() ) { 1325 if ( todo->hasDueDate() ) {
1321 int day = mStartDate.daysTo( todo->dtDue().date() ); 1326 int day = mStartDate.daysTo( todo->dtDue().date() );
1322 if ( day >= 0 && day < timeSpan + 1) { 1327 if ( day >= 0 && day < timeSpan + 1) {
1323 (*cells)[day]->insertTodo( todo ); 1328 (*cells)[day]->insertTodo( todo );
1324 } 1329 }
1325 } 1330 }
1326 } 1331 }
1327 1332
1328 for( i = 0; i < timeSpan+1; ++i ) { 1333 for( i = 0; i < timeSpan+1; ++i ) {
1329 (*cells)[i]->finishUpdateCell(); 1334 (*cells)[i]->finishUpdateCell();
1330 } 1335 }
1331 processSelectionChange(); 1336 processSelectionChange();
1332 (*cells)[0]->setFocus(); 1337 (*cells)[0]->setFocus();
1333 1338
1334 1339
1335#else 1340#else
1336 // old code 1341 // old code
1337 //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ "); 1342 //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ");
1338 int i; 1343 int i;
1339 for( i = 0; i < (*cells).count(); ++i ) { 1344 for( i = 0; i < (*cells).count(); ++i ) {
1340 (*cells)[i]->updateCell(); 1345 (*cells)[i]->updateCell();
1341 } 1346 }
1342 1347
1343 //qDebug("KOMonthView::updateView() "); 1348 //qDebug("KOMonthView::updateView() ");
1344 processSelectionChange(); 1349 processSelectionChange();
1345 // qDebug("---------------------------------------------------------------------+ "); 1350 // qDebug("---------------------------------------------------------------------+ ");
1346 (*cells)[0]->setFocus(); 1351 (*cells)[0]->setFocus();
1347#endif 1352#endif
1348 1353
1349 //qDebug("update time %d ", ti.elapsed()); 1354 //qDebug("update time %d ", ti.elapsed());
1350} 1355}
1351 1356
1352void KOMonthView::resizeEvent(QResizeEvent * e) 1357void KOMonthView::resizeEvent(QResizeEvent * e)
1353{ 1358{
1354 //qDebug("KOMonthView::resizeEvent %d %d -- %d %d ", e->size().width(), e->size().height(), e->oldSize().width(), e->oldSize().height()); 1359 qDebug("KOMonthView::resizeEvent %d %d -- %d %d ", e->size().width(), e->size().height(), e->oldSize().width(), e->oldSize().height());
1360 if ( isVisible() ) {
1361 qDebug("KOMonthView::isVisible ");
1362 slotComputeLayout();
1363 } else
1364 mComputeLayoutTimer->start( 100 );
1365}
1366
1367void KOMonthView::slotComputeLayout()
1368{
1369 mComputeLayoutTimer->stop();
1370 qDebug("KOMonthView::Post - resizeEvent %d %d ", width(), height() );
1355 computeLayout(); 1371 computeLayout();
1356 clPending = true; 1372 clPending = true;
1357 if ( mShowWeekView ) 1373 if ( mShowWeekView )
1358 mCellsW[0]->setFocus(); 1374 mCellsW[0]->setFocus();
1359 else 1375 else
1360 mCells[0]->setFocus(); 1376 mCells[0]->setFocus();
1377
1361} 1378}
1362void KOMonthView::computeLayoutWeek() 1379void KOMonthView::computeLayoutWeek()
1363{ 1380{
1364 static int lastWid = 0; 1381 static int lastWid = 0;
1365 static int lastHei = 0; 1382 static int lastHei = 0;
1366 int daysToShow; 1383 int daysToShow;
1367 bool combinedSatSun = false; 1384 bool combinedSatSun = false;
1368 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { 1385 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) {
1369 daysToShow = 6; 1386 daysToShow = 6;
1370 combinedSatSun = true; 1387 combinedSatSun = true;
1371 } 1388 }
1372 int tWid = topLevelWidget()->size().width(); 1389 int tWid = topLevelWidget()->size().width();
1373 int tHei = topLevelWidget()->size().height(); 1390 int tHei = topLevelWidget()->size().height();
1374 1391
1375 int wid = width();//e 1392 int wid = width();//e
1376 int hei = height()-1-mNavigatorBar->height(); 1393 int hei = height()-1-mNavigatorBar->height();
1377 1394
1378 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) 1395 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei )
1379 return; 1396 return;
1380 1397
1381 if ( lastWid == width() && lastHei == height() ) 1398 if ( lastWid == width() && lastHei == height() ) {
1399 qDebug("KOListWeekView::No compute layout needed ");
1382 return; 1400 return;
1401 }
1383 lastWid = width(); 1402 lastWid = width();
1384 lastHei = height(); 1403 lastHei = height();
1385 1404
1386 1405
1387 if ( wid < hei ) 1406 if ( wid < hei )
1388 daysToShow = 2; 1407 daysToShow = 2;
1389 else 1408 else
1390 daysToShow = 3; 1409 daysToShow = 3;
1391 mShowSatSunComp = true; 1410 mShowSatSunComp = true;
1392 combinedSatSun = true; 1411 combinedSatSun = true;
1393 1412
1394 //qDebug("KOMonthView::computeLayout() WWW ------------------------------------ "); 1413 //qDebug("KOMonthView::computeLayout() WWW ------------------------------------ ");
1395 QFontMetrics fm ( mWeekLabels[0]->font() ); 1414 QFontMetrics fm ( mWeekLabels[0]->font() );
1396 int weeklabelwid = fm.width( "888" ); 1415 int weeklabelwid = fm.width( "888" );
1397 wid -= weeklabelwid; 1416 wid -= weeklabelwid;
1398 1417
1399 int colWid = wid / daysToShow; 1418 int colWid = wid / daysToShow;
1400 int lastCol = wid - ( colWid*6 ); 1419 int lastCol = wid - ( colWid*6 );
1401 int dayLabelHei = mDayLabelsW[0]->sizeHint().height(); 1420 int dayLabelHei = mDayLabelsW[0]->sizeHint().height();
1402 int cellHei = (hei - (5- daysToShow )*dayLabelHei) /(5- daysToShow ); 1421 int cellHei = (hei - (5- daysToShow )*dayLabelHei) /(5- daysToShow );
1403 int colModulo = wid % daysToShow; 1422 int colModulo = wid % daysToShow;
1404 int rowModulo = (hei- (5- daysToShow )*dayLabelHei) % daysToShow-1; 1423 int rowModulo = (hei- (5- daysToShow )*dayLabelHei) % daysToShow-1;
1405 //qDebug("rowmod %d ", rowModulo); 1424 //qDebug("rowmod %d ", rowModulo);
1406 int i; 1425 int i;
1407 int x,y,w,h; 1426 int x,y,w,h;
1408 x= 0; 1427 x= 0;
1409 y= 0; 1428 y= 0;
1410 w = colWid; 1429 w = colWid;
1411 h = dayLabelHei ; 1430 h = dayLabelHei ;
1412 for ( i = 0; i < 7; i++) { 1431 for ( i = 0; i < 7; i++) {
1413 if ( i && !( i % daysToShow) && i < 6) { 1432 if ( i && !( i % daysToShow) && i < 6) {
1414 y += hei/(5-daysToShow); 1433 y += hei/(5-daysToShow);
1415 x = 0; 1434 x = 0;
1416 w = colWid; 1435 w = colWid;
1417 } 1436 }
1418 if ( ((i) % daysToShow) >= daysToShow-colModulo ) { 1437 if ( ((i) % daysToShow) >= daysToShow-colModulo ) {
1419 ++w; 1438 ++w;
1420 } 1439 }
1421 if ( i >= 5 ) { 1440 if ( i >= 5 ) {
1422 mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,w/2+w%2,h); 1441 mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,w/2+w%2,h);
1423 x -= (w/2 ); 1442 x -= (w/2 );
1424 } 1443 }
1425 else 1444 else
1426 mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,w,h); 1445 mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,w,h);
1427 x += w; 1446 x += w;
1428 } 1447 }
1429 x= 0; 1448 x= 0;
1430 y= dayLabelHei; 1449 y= dayLabelHei;
1431 w = colWid; 1450 w = colWid;
1432 h = cellHei; 1451 h = cellHei;
1433 for ( i = 0; i < mCellsW.count(); ++i) { 1452 for ( i = 0; i < mCellsW.count(); ++i) {
1434 if ( i > 6 ) { 1453 if ( i > 6 ) {
1435 mCellsW[i]->hide(); 1454 mCellsW[i]->hide();
1436 continue; 1455 continue;
1437 } 1456 }
1438 1457
1439 w = colWid; 1458 w = colWid;
1440 if ( ((i) % daysToShow) >= daysToShow-colModulo ) { 1459 if ( ((i) % daysToShow) >= daysToShow-colModulo ) {
1441 ++w; 1460 ++w;
1442 } 1461 }
1443 if ( i == (daysToShow-1-rowModulo)*7) 1462 if ( i == (daysToShow-1-rowModulo)*7)
1444 ++h; 1463 ++h;
1445 1464
1446 if ( i >= 5 ) { 1465 if ( i >= 5 ) {
1447 if ( i ==5 ) { 1466 if ( i ==5 ) {
1448 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h/2 ); 1467 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h/2 );
1449 x -= w ;y += h/2; 1468 x -= w ;y += h/2;
1450 } else { 1469 } else {
1451 if ( ((i-1) % daysToShow) >= daysToShow-colModulo ) { 1470 if ( ((i-1) % daysToShow) >= daysToShow-colModulo ) {
1452 ++w; 1471 ++w;
1453 } 1472 }
1454 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h-h/2 ); 1473 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h-h/2 );
1455 y -= h/2; 1474 y -= h/2;
1456 } 1475 }
1457 } else 1476 } else
1458 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h ); 1477 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h );
1459 1478
1460 1479
1461 x += w; 1480 x += w;
1462 if ( x + w/2 > wid ) { 1481 if ( x + w/2 > wid ) {
1463 x = 0; 1482 x = 0;
1464 y += h+dayLabelHei ; 1483 y += h+dayLabelHei ;
1465 } 1484 }
1466 } 1485 }
1467 y= dayLabelHei; 1486 y= dayLabelHei;
1468 h = cellHei ; 1487 h = cellHei ;
1469 mWeekLabelsW[0]->setGeometry( 0,y,weeklabelwid,hei-dayLabelHei); 1488 mWeekLabelsW[0]->setGeometry( 0,y,weeklabelwid,hei-dayLabelHei);
1470 mWeekLabelsW[1]->setGeometry( 0,0,weeklabelwid,dayLabelHei); 1489 mWeekLabelsW[1]->setGeometry( 0,0,weeklabelwid,dayLabelHei);
1471 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height()); 1490 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height());
1472 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height()); 1491 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height());
1473 mShortDayLabelsW = mDayLabelsW[0]->width()-2 < mWidthLongDayLabel ; 1492 mShortDayLabelsW = mDayLabelsW[0]->width()-2 < mWidthLongDayLabel ;
1474 updateDayLabels(); 1493 updateDayLabels();
1475 //bool forceUpdate = !updatePossible; 1494 //bool forceUpdate = !updatePossible;
1476 updatePossible = true; 1495 updatePossible = true;
1477 //mWeekLabels[mNumWeeks]->setText( i18n("M")); 1496 //mWeekLabels[mNumWeeks]->setText( i18n("M"));
1478 //if ( forceUpdate ) 1497 //if ( forceUpdate )
1479 // updateView(); 1498 // updateView();
1480} 1499}
1481void KOMonthView::computeLayout() 1500void KOMonthView::computeLayout()
1482{ 1501{
1483 1502
1484 1503
1485 static int lastWid = 0; 1504 static int lastWid = 0;
1486 static int lastHei = 0; 1505 static int lastHei = 0;
1487 1506
1488 if ( mShowWeekView ){ 1507 if ( mShowWeekView ){
1489 computeLayoutWeek(); 1508 computeLayoutWeek();
1490 return; 1509 return;
1491 } 1510 }
1492 int daysToShow = 7; 1511 int daysToShow = 7;
1493 bool combinedSatSun = false; 1512 bool combinedSatSun = false;
1494 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { 1513 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) {
1495 daysToShow = 6; 1514 daysToShow = 6;
1496 combinedSatSun = true; 1515 combinedSatSun = true;
1497 } 1516 }
1498 int tWid = topLevelWidget()->size().width(); 1517 int tWid = topLevelWidget()->size().width();
1499 int tHei = topLevelWidget()->size().height(); 1518 int tHei = topLevelWidget()->size().height();
1500 1519
1501 int wid = width();//e 1520 int wid = width();//e
1502 int hei = height()-1-mNavigatorBar->height(); 1521 int hei = height()-1-mNavigatorBar->height();
1503 1522
1504 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) { 1523 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) {
1505 return; 1524 return;
1506 } 1525 }
1507 if ( lastWid == width() && lastHei == height() ){ 1526 if ( lastWid == width() && lastHei == height() ){
1527 qDebug("KOMonthview::No compute layout needed ");
1508 return; 1528 return;
1509 } 1529 }
1510 1530
1511 lastWid = width(); 1531 lastWid = width();
1512 lastHei = height(); 1532 lastHei = height();
1513 //qDebug("KOMonthView::computeLayout() MMM ------------------------------------ "); 1533 qDebug("KOMonthView::computeLayout() MMM ------------------- ");
1514 QFontMetrics fm ( mWeekLabels[0]->font() ); 1534 QFontMetrics fm ( mWeekLabels[0]->font() );
1515 int weeklabelwid = fm.width( "888" ); 1535 int weeklabelwid = fm.width( "888" );
1516 wid -= weeklabelwid; 1536 wid -= weeklabelwid;
1517 1537
1518 int colWid = wid / daysToShow; 1538 int colWid = wid / daysToShow;
1519 int lastCol = wid - ( colWid*6 ); 1539 int lastCol = wid - ( colWid*6 );
1520 int dayLabelHei = mDayLabels[0]->sizeHint().height(); 1540 int dayLabelHei = mDayLabels[0]->sizeHint().height();
1521 int cellHei = (hei - dayLabelHei) /6; 1541 int cellHei = (hei - dayLabelHei) /6;
1522 int colModulo = wid % daysToShow; 1542 int colModulo = wid % daysToShow;
1523 int rowModulo = (hei- dayLabelHei) % 6; 1543 int rowModulo = (hei- dayLabelHei) % 6;
1524 //qDebug("rowmod %d ", rowModulo); 1544 //qDebug("rowmod %d ", rowModulo);
1525 int i; 1545 int i;
1526 int x,y,w,h; 1546 int x,y,w,h;
1527 x= 0; 1547 x= 0;
1528 y= 0; 1548 y= 0;
1529 w = colWid; 1549 w = colWid;
1530 h = dayLabelHei ; 1550 h = dayLabelHei ;
1531 for ( i = 0; i < 7; i++) { 1551 for ( i = 0; i < 7; i++) {
1532 if ( i == daysToShow-colModulo ) 1552 if ( i == daysToShow-colModulo )
1533 ++w; 1553 ++w;
1534 if ( combinedSatSun ) { 1554 if ( combinedSatSun ) {
1535 if ( i >= daysToShow-1 ) { 1555 if ( i >= daysToShow-1 ) {
1536 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w/2,h); 1556 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w/2,h);
1537 x -= w/2 ; 1557 x -= w/2 ;
1538 } 1558 }
1539 else 1559 else
1540 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h); 1560 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h);
1541 } else 1561 } else
1542 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h); 1562 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h);
1543 x += w; 1563 x += w;
1544 } 1564 }
1545 x= 0; 1565 x= 0;
1546 y= dayLabelHei; 1566 y= dayLabelHei;
1547 w = colWid; 1567 w = colWid;
1548 h = cellHei ; 1568 h = cellHei ;
1549 for ( i = 0; i < mCells.count(); ++i) { 1569 for ( i = 0; i < mCells.count(); ++i) {
1550 //qDebug("iii %d ", i); 1570 //qDebug("iii %d ", i);
1551 w = colWid; 1571 w = colWid;
1552 if ( ((i) % 7) >= 7-colModulo ) { 1572 if ( ((i) % 7) >= 7-colModulo ) {
1553 ++w; 1573 ++w;
1554 } 1574 }
1555 if ( i == (6-rowModulo)*7) 1575 if ( i == (6-rowModulo)*7)
1556 ++h; 1576 ++h;
1557 if ( combinedSatSun ) { 1577 if ( combinedSatSun ) {
1558 if ( (i)%7 >= daysToShow-1 ) { 1578 if ( (i)%7 >= daysToShow-1 ) {
1559 if ( (i)%7 == daysToShow-1 ) { 1579 if ( (i)%7 == daysToShow-1 ) {
1560 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h/2 ); 1580 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h/2 );
1561 x -= w ;y += h/2; 1581 x -= w ;y += h/2;
1562 } else { 1582 } else {
1563 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h-h/2 ); 1583 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h-h/2 );
1564 y -= h/2; 1584 y -= h/2;
1565 } 1585 }
1566 } else 1586 } else
1567 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h ); 1587 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h );
1568 1588
1569 } 1589 }
1570 else 1590 else
1571 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h ); 1591 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h );
1572 x += w; 1592 x += w;
1573 if ( x + w/2 > wid ) { 1593 if ( x + w/2 > wid ) {
1574 x = 0; 1594 x = 0;
1575 y += h; 1595 y += h;
1576 } 1596 }
1577 } 1597 }
1578 y= dayLabelHei; 1598 y= dayLabelHei;
1579 h = cellHei ; 1599 h = cellHei ;
1580 for ( i = 0; i < 6; i++) { 1600 for ( i = 0; i < 6; i++) {
1581 if ( i == (6-rowModulo)) 1601 if ( i == (6-rowModulo))
1582 ++h; 1602 ++h;
1583 mWeekLabels[i]->setGeometry( 0,y,weeklabelwid,h); 1603 mWeekLabels[i]->setGeometry( 0,y,weeklabelwid,h);
1584 y += h; 1604 y += h;
1585 } 1605 }
1586 mWeekLabels[6]->setGeometry( 0,0,weeklabelwid,dayLabelHei); 1606 mWeekLabels[6]->setGeometry( 0,0,weeklabelwid,dayLabelHei);
1587 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height()); 1607 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height());
1588 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height()); 1608 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height());
1589 mShortDayLabelsM = mDayLabels[0]->width()-2 < mWidthLongDayLabel ; 1609 mShortDayLabelsM = mDayLabels[0]->width()-2 < mWidthLongDayLabel ;
1590 updateDayLabels(); 1610 updateDayLabels();
1591 //bool forceUpdate = !updatePossible; 1611 //bool forceUpdate = !updatePossible;
1592 updatePossible = true; 1612 updatePossible = true;
1593 //mWeekLabels[mNumWeeks]->setText( i18n("W")); 1613 //mWeekLabels[mNumWeeks]->setText( i18n("W"));
1594} 1614}
1595 1615
1596void KOMonthView::showContextMenu( Incidence *incidence ) 1616void KOMonthView::showContextMenu( Incidence *incidence )
1597{ 1617{
1598 mContextMenu->showIncidencePopup(incidence); 1618 mContextMenu->showIncidencePopup(incidence);
1599 /* 1619 /*
1600 if( incidence && incidence->type() == "Event" ) { 1620 if( incidence && incidence->type() == "Event" ) {
1601 Event *event = static_cast<Event *>(incidence); 1621 Event *event = static_cast<Event *>(incidence);
1602 mContextMenu->showEventPopup(event); 1622 mContextMenu->showEventPopup(event);
1603 } else { 1623 } else {
1604 kdDebug() << "MonthView::showContextMenu(): cast failed." << endl; 1624 kdDebug() << "MonthView::showContextMenu(): cast failed." << endl;
1605 } 1625 }
1606 */ 1626 */
1607} 1627}
1608MonthViewCell * KOMonthView::selectedCell( ) 1628MonthViewCell * KOMonthView::selectedCell( )
1609{ 1629{