author | zautrix <zautrix> | 2005-07-07 12:30:17 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-07-07 12:30:17 (UTC) |
commit | 766b53919de14b8faec22db32b6a750acde0b760 (patch) (side-by-side diff) | |
tree | bb07c0af89b0dddf4257a61e9f5b1cf23c4a282a /korganizer/komonthview.cpp | |
parent | b4d85da57e2d558ec088af6f3b2a34b1854462c0 (diff) | |
download | kdepimpi-766b53919de14b8faec22db32b6a750acde0b760.zip kdepimpi-766b53919de14b8faec22db32b6a750acde0b760.tar.gz kdepimpi-766b53919de14b8faec22db32b6a750acde0b760.tar.bz2 |
fixesss
-rw-r--r-- | korganizer/komonthview.cpp | 124 |
1 files changed, 95 insertions, 29 deletions
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp index 2289977..53bbe28 100644 --- a/korganizer/komonthview.cpp +++ b/korganizer/komonthview.cpp @@ -1503,49 +1503,50 @@ void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd, calPrinter->preview(CalPrinter::Month, fd, td); #endif } #endif void KOMonthView::updateConfig() { int mWeekStartsMonday = KGlobal::locale()->weekStartsMonday(); if ( mShowWeekView || KOPrefs::instance()->mMonthViewSatSunTog ) { mWeekStartsMonday = true; } QFontMetrics fontmetric(mDayLabels[0]->font()); mWidthLongDayLabel = 0; for (int i = 0; i < 7; i++) { int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1)); if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width; } bool temp = mShowSatSunComp ; mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; if ( ! mShowWeekView ) { if ( temp != KOPrefs::instance()->mMonthViewSatSunTog ) computeLayout(); - } + } else + doComputeLayoutWeek(); updateDayLabels(); //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks); //int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks; //resizeEvent( 0 ); for (uint i = 0; i < mCells.count(); ++i) { mCells[i]->updateConfig(); } for (uint i = 0; i < mCellsW.count(); ++i) { mCellsW[i]->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont); } #ifdef DESKTOP_VERSION MonthViewCell::toolTipGroup()->setEnabled(KOPrefs::instance()->mEnableToolTips); #endif updateView(); } void KOMonthView::updateDayLabels() { QPtrVector<QLabel> *mDayLabelsT; mDayLabelsT = &mDayLabelsW; for (int i = 0; i < 7; i++) { @@ -1794,196 +1795,261 @@ void KOMonthView::setKeyBoardFocus() } else { shootAgain = !mWeekLabels[mNumWeeks]->hasFocus(); mWeekLabels[mNumWeeks]->setFocus(); } --mKBFcounter; if ( shootAgain && mKBFcounter > 0 ) { QTimer::singleShot( 50, this, SLOT ( setKeyBoardFocus() ) ); } } void KOMonthView::setKeyBFocus() { //qDebug("KOMonthView::setKeyBFocus() "); mKBFcounter = 10; QTimer::singleShot( 0, this, SLOT ( setKeyBoardFocus() ) ); } void KOMonthView::resizeEvent(QResizeEvent * e) { //qDebug("KOMonthView::resizeEvent %d %d -- %d %d ", e->size().width(), e->size().height(), e->oldSize().width(), e->oldSize().height()); if ( isVisible() ) { //qDebug("KOMonthView::isVisible "); slotComputeLayout(); } else mComputeLayoutTimer->start( 100 ); - KOEventView::resizeEvent( e ); + if ( e ) + KOEventView::resizeEvent( e ); } void KOMonthView::slotComputeLayout() { mComputeLayoutTimer->stop(); //qDebug("KOMonthView::Post - resizeEvent %d %d ", width(), height() ); computeLayout(); clPending = true; setKeyBFocus(); } -void KOMonthView::computeLayoutWeek() + +void KOMonthView::doComputeLayoutWeek() { - static int lastWid = 0; - static int lastHei = 0; + int daysToShow; bool combinedSatSun = false; if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { daysToShow = 6; combinedSatSun = true; } - int tWid = topLevelWidget()->size().width(); - int tHei = topLevelWidget()->size().height(); - int wid = width();//e int hei = height()-1-mNavigatorBar->height(); - - if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) - return; - - if ( lastWid == width() && lastHei == height() ) { - //qDebug("KOListWeekView::No compute layout needed "); - return; - } - lastWid = width(); - lastHei = height(); - - - if ( wid < hei ) + if ( !KOPrefs::instance()->mMonthViewWeekRowlayout ) { daysToShow = 2; - else - daysToShow = 3; + } else { + if ( wid < hei ) + daysToShow = 2; + else + daysToShow = 3; + } + bool landscape = (daysToShow == 3); mShowSatSunComp = true; combinedSatSun = true; //qDebug("KOMonthView::computeLayout() WWW ------------------------------------ "); QFontMetrics fm ( mWeekLabels[0]->font() ); int weeklabelwid = fm.width( "888" ); wid -= weeklabelwid; int colWid = wid / daysToShow; int dayLabelHei = mDayLabelsW[0]->sizeHint().height(); int cellHei = (hei - (5- daysToShow )*dayLabelHei) /(5- daysToShow ); int colModulo = wid % daysToShow; int rowModulo = (hei- (5- daysToShow )*dayLabelHei) % daysToShow-1; //qDebug("rowmod %d ", rowModulo); int i; int x,y,w,h; x= 0; y= 0; w = colWid; h = dayLabelHei ; for ( i = 0; i < 7; i++) { if ( i && !( i % daysToShow) && i < 6) { y += hei/(5-daysToShow); x = 0; w = colWid; } if ( ((i) % daysToShow) >= daysToShow-colModulo ) { ++w; } + int xC,yC,wC,hC; if ( i >= 5 ) { int wi = width() - x - weeklabelwid; if ( i == 5 ) { - mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,wi/2+wi%2,h); + xC = x+weeklabelwid; + yC = y; + wC = wi/2+wi%2; + hC = h; } else { - mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,wi,h); + xC = x+weeklabelwid; + yC = y; + wC = wi; + hC = h; } x = x - w + wi - (wi/2 ); } else { int wi = w; if ( !(( i+1) % daysToShow)) { wi = width() - x - weeklabelwid; } - mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,wi,h); + xC = x+weeklabelwid; + yC = y; + wC = wi; + hC = h; } + mDayLabelsW[mapWeekLayout(i,landscape)]->setGeometry( xC,yC,wC,hC); + + x += w; } x= 0; y= dayLabelHei; w = colWid; h = cellHei; int max = 0; int w_count = mCellsW.count(); for ( i = 0; i < w_count; ++i) { if ( i > 6 ) { mCellsW[i]->hide(); continue; } w = colWid; if ( ((i) % daysToShow) >= daysToShow-colModulo ) { ++w; } if ( i == (daysToShow-1-rowModulo)*7) ++h; + int xC,yC,wC,hC; if ( i >= 5 ) { if ( i ==5 ) { max = h/2; - mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,max ); + xC = x+weeklabelwid; + yC = y; + wC = w; + hC = max; x -= w ;y += h/2; } else { if ( ((i-1) % daysToShow) >= daysToShow-colModulo ) { ++w; } max = h-h/2; - mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,max ); + xC = x+weeklabelwid; + yC = y; + wC = w; + hC = max; y -= h/2; } } else { max = h; - mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h ); + xC = x+weeklabelwid; + yC = y; + wC = w; + hC = h; } + mCellsW[mapWeekLayout(i,landscape)]->setGeometry ( xC,yC,wC,hC ); x += w; if ( x + w/2 > wid ) { x = 0; y += h+dayLabelHei ; } //mCellsW[i]->dateLabel()->setMaximumHeight( max - mCellsW[i]->lineWidth()*2 ); } y= dayLabelHei; h = cellHei ; mWeekLabelsW[0]->setGeometry( 0,y,weeklabelwid,hei-dayLabelHei); mWeekLabelsW[1]->setGeometry( 0,0,weeklabelwid,dayLabelHei); // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height()); //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height()); mShortDayLabelsW = mDayLabelsW[0]->width()-2 < mWidthLongDayLabel ; updateDayLabels(); //bool forceUpdate = !updatePossible; updatePossible = true; //mWeekLabels[mNumWeeks]->setText( i18n("M")); //if ( forceUpdate ) // updateView(); } +void KOMonthView::computeLayoutWeek() +{ + static int lastWid = 0; + static int lastHei = 0; + int tWid = topLevelWidget()->size().width(); + int tHei = topLevelWidget()->size().height(); + int wid = width();//e + int hei = height()-1-mNavigatorBar->height(); + if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) + return; + + if ( lastWid == width() && lastHei == height() ) { + //qDebug("KOListWeekView::No compute layout needed "); + return; + } + lastWid = width(); + lastHei = height(); + doComputeLayoutWeek(); +} +int KOMonthView::mapWeekLayout( int index, bool landscape ) +{ + if ( KOPrefs::instance()->mMonthViewWeekRowlayout ) + return index; + int diff = 0; + if ( !landscape ) diff = 1; + switch( index ) { + case 0: + case 5: + case 6: + return index; + break; + case 1: + return 2+diff; + break; + case 2: + return 4-(3*diff); + break; + case 3: + return 1+(3*diff); + break; + case 4: + return 3-diff; + break; + default: + qDebug("KO: Error in mapping week layout "); + return index; + break; + } + return index; +} void KOMonthView::computeLayout() { static int lastWid = 0; static int lastHei = 0; if ( mShowWeekView ){ computeLayoutWeek(); return; } int daysToShow = 7; bool combinedSatSun = false; if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { daysToShow = 6; combinedSatSun = true; } int tWid = topLevelWidget()->size().width(); int tHei = topLevelWidget()->size().height(); int wid = width();//e int hei = height()-1-mNavigatorBar->height(); if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) { |