summaryrefslogtreecommitdiffabout
path: root/korganizer/komonthview.cpp
Side-by-side diff
Diffstat (limited to 'korganizer/komonthview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/komonthview.cpp124
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
@@ -1523,9 +1523,10 @@ void KOMonthView::updateConfig()
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 );
@@ -1814,9 +1815,10 @@ void KOMonthView::resizeEvent(QResizeEvent * e)
//qDebug("KOMonthView::isVisible ");
slotComputeLayout();
} else
mComputeLayoutTimer->start( 100 );
- KOEventView::resizeEvent( e );
+ if ( e )
+ KOEventView::resizeEvent( e );
}
void KOMonthView::slotComputeLayout()
{
@@ -1825,39 +1827,29 @@ void KOMonthView::slotComputeLayout()
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 ------------------------------------ ");
@@ -1885,24 +1877,37 @@ void KOMonthView::computeLayoutWeek()
}
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;
@@ -1922,25 +1927,36 @@ void KOMonthView::computeLayoutWeek()
}
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 ) {
@@ -1962,8 +1978,58 @@ void KOMonthView::computeLayoutWeek()
//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()
{