summaryrefslogtreecommitdiffabout
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--korganizer/kodaymatrix.cpp89
-rw-r--r--korganizer/kodaymatrix.h2
2 files changed, 76 insertions, 15 deletions
diff --git a/korganizer/kodaymatrix.cpp b/korganizer/kodaymatrix.cpp
index 9181936..15a1cb4 100644
--- a/korganizer/kodaymatrix.cpp
+++ b/korganizer/kodaymatrix.cpp
@@ -620,5 +620,6 @@ void KODayMatrix::dropEvent(QDropEvent *e)
void KODayMatrix::paintEvent(QPaintEvent * pevent)
{
- if ( width() <= 0 || height() <= 0 )
+ QRect sz = frameRect();
+ if ( sz.width() <= 0 || sz.height() <= 0 )
return;
if ( mPendingUpdateBeforeRepaint ) {
@@ -626,15 +627,20 @@ void KODayMatrix::paintEvent(QPaintEvent * pevent)
mPendingUpdateBeforeRepaint = false;
}
- if ( myPix.width() != width() || myPix.height()!=height() ) {
- myPix.resize(size() );
+ if ( myPix.width() != sz.width() || myPix.height()!=sz.height() ) {
+ myPix.resize(sz.size() );
}
QPainter p(&myPix);
p.setFont(font());
- QRect sz = frameRect();
+
int dheight = daysize.height();
int dwidth = daysize.width();
int row,col;
int selw, selh;
+ int xyOff = frameWidth();
+ int colModulo = sz.width() % 7;
+ int rowModulo = sz.height() % 6;
+ qDebug("off %d col %d row %d ",xyOff,colModulo,rowModulo );
+
bool isRTL = KOGlobals::self()->reverseLayout();
@@ -672,21 +678,62 @@ void KODayMatrix::paintEvent(QPaintEvent * pevent)
QColor selcol = KOPrefs::instance()->mHighlightColor;
+
+
+ int addCol = 0;
+ int addRow = 0;
+#if 0
+ if ( colModulo ) {
+ if ( col >= 7 - colModulo )
+ addCol = col - 7 + colModulo;
+ }
+ if ( rowModulo ) {
+ if ( row >= 6 - rowModulo )
+ addRow = row - 5 + rowModulo;
+ }
+#endif
+
+
+
+
+
if (row == mSelEndT/7) {
+ if ( rowModulo ) {
+ if ( row >= 6 - rowModulo )
+ addRow = row - 5 + rowModulo;
+ }
+ if ( colModulo ) {
+ if ( mSelEndT-mSelStartT+1 >= 7 - colModulo )
+ addCol = mSelEndT-mSelStartT+1 - 7 + colModulo;
+ }
// Single row selection
- p.fillRect(isRTL ? (7 - (mSelEndT-mSelStartT+1) - col)*dwidth : col*dwidth,
- row*dheight, (mSelEndT-mSelStartT+1)*dwidth, dheight, selcol);
+ if ( row == 0)
+ addRow = 1;
+ p.fillRect(isRTL ? (7 - (mSelEndT-mSelStartT+1) - col)*dwidth : col*dwidth+1,
+ row*dheight+addRow, (mSelEndT-mSelStartT+1)*dwidth+addCol, dheight+1, selcol);
} else {
// draw first row to the right
- p.fillRect(isRTL ? 0 : col*dwidth, row*dheight, (7-col)*dwidth,
+ if ( row == 0)
+ addRow = 1;
+ p.fillRect(isRTL ? 0 : col*dwidth+1, row*dheight+addRow, (7-col)*dwidth+colModulo,
dheight, selcol);
// draw full block till last line
selh = mSelEndT/7-row;
if (selh > 1) {
- p.fillRect(0, (row+1)*dheight, 7*dwidth, (selh-1)*dheight,selcol);
+ p.fillRect(1, (row+1)*dheight, 7*dwidth+colModulo, (selh-1)*dheight,selcol);
}
// draw last block from left to mSelEndT
selw = mSelEndT-7*(mSelEndT/7)+1;
- p.fillRect(isRTL ? (7-selw)*dwidth : 0, (row+selh)*dheight,
- selw*dwidth, dheight, selcol);
+ //qDebug("esl %d ",selw );
+ int add = 0;
+ if ( colModulo ) {
+ add = 7 - colModulo;
+ if ( selw > add )
+ add = selw - add;
+ else
+ add = 0;
+ }
+ //qDebug("add %d ", add);
+ p.fillRect(isRTL ? (7-selw)*dwidth : 1, (row+selh)*dheight,
+ selw*dwidth+add, dheight, selcol);
}
}
@@ -770,5 +817,17 @@ void KODayMatrix::paintEvent(QPaintEvent * pevent)
}
- p.drawText(col*dwidth, row*dheight, dwidth, dheight,
+ int addCol = 0;
+ int addRow = 0;
+ if ( colModulo ) {
+ if ( col >= 7 - colModulo )
+ addCol = col - 7 + colModulo;
+ }
+ if ( rowModulo ) {
+ if ( row >= 6 - rowModulo )
+ addRow = row - 5 + rowModulo;
+ }
+ //qDebug("add %d %d -- %d %d ", col, addCol, row, addRow);
+ ++addCol;++addCol;
+ p.drawText(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight,
Qt::AlignHCenter | Qt::AlignVCenter, daylbls[i]);
@@ -784,5 +843,7 @@ void KODayMatrix::paintEvent(QPaintEvent * pevent)
}
}
- bitBlt (this, 0, 0, &myPix, 0 ,0,width(), height() ,CopyROP);
+ int off = xyOff;
+ bitBlt (this, off, off, &myPix, 0 ,0,width(), height() ,CopyROP);
+ //qDebug("ffffffffff %d ", off);
}
@@ -802,6 +863,6 @@ QSize KODayMatrix::sizeHint() const
QFontMetrics fm ( font() );
- int wid = fm.width( "30") *7+7;
- int hei = fm.height() * 6+4;
+ int wid = fm.width( "30") *7+3;
+ int hei = fm.height() * 6+3;
//qDebug("KODayMatrix::sizeHint()********************* %d %d", wid , hei);
return QSize ( wid, hei );
diff --git a/korganizer/kodaymatrix.h b/korganizer/kodaymatrix.h
index 39946de..f4016b6 100644
--- a/korganizer/kodaymatrix.h
+++ b/korganizer/kodaymatrix.h
@@ -172,5 +172,5 @@ public:
QString getWhatsThisText( QPoint ) ;
QSize sizeHint() const;
-
+ QRect frameRect () const { int wid = frameWidth(); return QRect(0+wid,0+wid,width()-wid-wid,height()-wid-wid);}
public slots:
/** Recalculates all the flags of the days in the matrix like holidays or events