-rw-r--r-- | korganizer/kodaymatrix.cpp | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/korganizer/kodaymatrix.cpp b/korganizer/kodaymatrix.cpp index 507f18e..f864022 100644 --- a/korganizer/kodaymatrix.cpp +++ b/korganizer/kodaymatrix.cpp | |||
@@ -446,32 +446,34 @@ int KODayMatrix::getDayIndexFrom(int x, int y) | |||
446 | return 7*(y/daysize.height()) + (KOGlobals::self()->reverseLayout() ? | 446 | return 7*(y/daysize.height()) + (KOGlobals::self()->reverseLayout() ? |
447 | 6 - x/daysize.width() : x/daysize.width()); | 447 | 6 - x/daysize.width() : x/daysize.width()); |
448 | } | 448 | } |
449 | 449 | ||
450 | // ---------------------------------------------------------------------------- | 450 | // ---------------------------------------------------------------------------- |
451 | // M O U S E E V E N T H A N D L I N G | 451 | // M O U S E E V E N T H A N D L I N G |
452 | // ---------------------------------------------------------------------------- | 452 | // ---------------------------------------------------------------------------- |
453 | 453 | ||
454 | void KODayMatrix::mousePressEvent (QMouseEvent* e) | 454 | void KODayMatrix::mousePressEvent (QMouseEvent* e) |
455 | { | 455 | { |
456 | 456 | ||
457 | if ( e->button() == LeftButton ) | 457 | if ( e->button() == LeftButton ) |
458 | mouseDown = true; | 458 | mouseDown = true; |
459 | mSelStart = getDayIndexFrom(e->x(), e->y()); | 459 | mSelStart = getDayIndexFrom(e->x(), e->y()); |
460 | if (mSelStart > NUMDAYS-1) mSelStart=NUMDAYS-1; | 460 | if (mSelStart > NUMDAYS-1) mSelStart=NUMDAYS-1; |
461 | mSelInit = mSelStart; | 461 | mSelInit = mSelStart; |
462 | mSelEnd = mSelStart; | ||
463 | repaint(false); | ||
462 | } | 464 | } |
463 | 465 | ||
464 | void KODayMatrix::mouseReleaseEvent (QMouseEvent* e) | 466 | void KODayMatrix::mouseReleaseEvent (QMouseEvent* e) |
465 | { | 467 | { |
466 | if ( e->button() == LeftButton ) | 468 | if ( e->button() == LeftButton ) |
467 | if ( ! mouseDown ) { | 469 | if ( ! mouseDown ) { |
468 | return; | 470 | return; |
469 | } | 471 | } |
470 | else | 472 | else |
471 | mouseDown = false; | 473 | mouseDown = false; |
472 | int tmp = getDayIndexFrom(e->x(), e->y()); | 474 | int tmp = getDayIndexFrom(e->x(), e->y()); |
473 | if (tmp > NUMDAYS-1) tmp=NUMDAYS-1; | 475 | if (tmp > NUMDAYS-1) tmp=NUMDAYS-1; |
474 | 476 | ||
475 | if (mSelInit > tmp) { | 477 | if (mSelInit > tmp) { |
476 | mSelEnd = mSelInit; | 478 | mSelEnd = mSelInit; |
477 | if (tmp != mSelStart) { | 479 | if (tmp != mSelStart) { |
@@ -627,33 +629,33 @@ void KODayMatrix::paintEvent(QPaintEvent * pevent) | |||
627 | mPendingUpdateBeforeRepaint = false; | 629 | mPendingUpdateBeforeRepaint = false; |
628 | } | 630 | } |
629 | if ( myPix.width() != sz.width() || myPix.height()!=sz.height() ) { | 631 | if ( myPix.width() != sz.width() || myPix.height()!=sz.height() ) { |
630 | myPix.resize(sz.size() ); | 632 | myPix.resize(sz.size() ); |
631 | } | 633 | } |
632 | QPainter p(&myPix); | 634 | QPainter p(&myPix); |
633 | p.setFont(font()); | 635 | p.setFont(font()); |
634 | 636 | ||
635 | 637 | ||
636 | int dheight = daysize.height(); | 638 | int dheight = daysize.height(); |
637 | int dwidth = daysize.width(); | 639 | int dwidth = daysize.width(); |
638 | int row,col; | 640 | int row,col; |
639 | int selw, selh; | 641 | int selw, selh; |
640 | int xyOff = frameWidth(); | 642 | int xyOff = frameWidth(); |
641 | int colModulo = sz.width() % 7; | 643 | int colModulo = sz.width() % 7; |
642 | int rowModulo = sz.height() % 6; | 644 | int rowModulo = sz.height() % 6; |
643 | //qDebug("off %d col %d row %d ",xyOff,colModulo,rowModulo ); | 645 | qDebug("col %d row %d ",colModulo,rowModulo ); |
644 | 646 | ||
645 | bool isRTL = KOGlobals::self()->reverseLayout(); | 647 | bool isRTL = KOGlobals::self()->reverseLayout(); |
646 | 648 | ||
647 | // draw background and topleft frame | 649 | // draw background and topleft frame |
648 | p.fillRect(pevent->rect(), mDefaultBackColor); | 650 | p.fillRect(pevent->rect(), mDefaultBackColor); |
649 | p.setPen(mDefaultTextColor); | 651 | p.setPen(mDefaultTextColor); |
650 | p.drawRect(0, 0, sz.width()+1, sz.height()+1); | 652 | p.drawRect(0, 0, sz.width()+1, sz.height()+1); |
651 | int mSelStartT = mSelStart; | 653 | int mSelStartT = mSelStart; |
652 | int mSelEndT = mSelEnd; | 654 | int mSelEndT = mSelEnd; |
653 | if ( mSelEndT >= NUMDAYS ) | 655 | if ( mSelEndT >= NUMDAYS ) |
654 | mSelEndT = NUMDAYS-1; | 656 | mSelEndT = NUMDAYS-1; |
655 | // draw selected days with highlighted background color | 657 | // draw selected days with highlighted background color |
656 | if (mSelStart != NOSELECTION) { | 658 | if (mSelStart != NOSELECTION) { |
657 | bool skip = false; | 659 | bool skip = false; |
658 | if ( ! mouseDown ) { | 660 | if ( ! mouseDown ) { |
659 | int mo = days[20].month(); | 661 | int mo = days[20].month(); |
@@ -663,54 +665,36 @@ void KODayMatrix::paintEvent(QPaintEvent * pevent) | |||
663 | skip = true; | 665 | skip = true; |
664 | } else { | 666 | } else { |
665 | if ( days[mSelStartT].month() != mo ) { | 667 | if ( days[mSelStartT].month() != mo ) { |
666 | int add = days[mSelStartT].daysInMonth ()-days[mSelStartT].day(); | 668 | int add = days[mSelStartT].daysInMonth ()-days[mSelStartT].day(); |
667 | mSelStartT += add +1; | 669 | mSelStartT += add +1; |
668 | } | 670 | } |
669 | if ( days[mSelEndT].month() != mo ) { | 671 | if ( days[mSelEndT].month() != mo ) { |
670 | int sub = days[mSelEndT].day(); | 672 | int sub = days[mSelEndT].day(); |
671 | mSelEndT -= sub ; | 673 | mSelEndT -= sub ; |
672 | } | 674 | } |
673 | } | 675 | } |
674 | } | 676 | } |
675 | if ( ! skip ) { | 677 | if ( ! skip ) { |
676 | row = mSelStartT/7; | 678 | row = mSelStartT/7; |
677 | col = mSelStartT -row*7; | 679 | col = mSelStartT -row*7; |
678 | QColor selcol = KOPrefs::instance()->mHighlightColor; | 680 | QColor selcol = KOPrefs::instance()->mHighlightColor; |
679 | |||
680 | |||
681 | |||
682 | int addCol = 0; | 681 | int addCol = 0; |
683 | int addRow = 0; | 682 | int addRow = 0; |
684 | int addRow2 = 0; | 683 | int addRow2 = 0; |
685 | int addCol2 = 0; | 684 | int addCol2 = 0; |
686 | #if 0 | ||
687 | if ( colModulo ) { | ||
688 | if ( col >= 7 - colModulo ) | ||
689 | addCol = col - 7 + colModulo; | ||
690 | } | ||
691 | if ( rowModulo ) { | ||
692 | if ( row >= 6 - rowModulo ) | ||
693 | addRow = row - 5 + rowModulo; | ||
694 | } | ||
695 | #endif | ||
696 | |||
697 | |||
698 | |||
699 | |||
700 | |||
701 | if (row == mSelEndT/7) { | 685 | if (row == mSelEndT/7) { |
702 | if ( rowModulo ) { | 686 | if ( rowModulo ) { |
703 | if ( row >= 6 - rowModulo ) | 687 | if ( row >= 6 - rowModulo ) |
704 | addRow = row - 5 + rowModulo; | 688 | addRow = row - 5 + rowModulo; |
705 | } | 689 | } |
706 | if ( colModulo ) { | 690 | if ( colModulo ) { |
707 | int colt1 = mSelEndT%7; | 691 | int colt1 = mSelEndT%7; |
708 | //qDebug("colt1 %d ", colt1 ); | 692 | //qDebug("colt1 %d ", colt1 ); |
709 | if ( colt1 >= 7 - colModulo ) | 693 | if ( colt1 >= 7 - colModulo ) |
710 | addCol = colt1 - 7 + colModulo+1; | 694 | addCol = colt1 - 7 + colModulo+1; |
711 | int colt = mSelStartT%7; | 695 | int colt = mSelStartT%7; |
712 | if ( colt >= 7 - colModulo ) | 696 | if ( colt >= 7 - colModulo ) |
713 | addCol2 = colt - 7 + colModulo; | 697 | addCol2 = colt - 7 + colModulo; |
714 | addCol -= addCol2; | 698 | addCol -= addCol2; |
715 | //qDebug("COL %d %d %d %d ",col , colt1 ,addCol ,addCol2 ); | 699 | //qDebug("COL %d %d %d %d ",col , colt1 ,addCol ,addCol2 ); |
716 | } | 700 | } |
@@ -779,49 +763,63 @@ void KODayMatrix::paintEvent(QPaintEvent * pevent) | |||
779 | p.setPen(actcol); | 763 | p.setPen(actcol); |
780 | } | 764 | } |
781 | if (actcol == mDefaultTextColorShaded) { | 765 | if (actcol == mDefaultTextColorShaded) { |
782 | if ( ! mouseDown ) { | 766 | if ( ! mouseDown ) { |
783 | continue; | 767 | continue; |
784 | } | 768 | } |
785 | } | 769 | } |
786 | //Reset pen color after selected days block | 770 | //Reset pen color after selected days block |
787 | if (i == mSelEndT+1) { | 771 | if (i == mSelEndT+1) { |
788 | p.setPen(actcol); | 772 | p.setPen(actcol); |
789 | } | 773 | } |
790 | 774 | ||
791 | // if today then draw rectangle around day | 775 | // if today then draw rectangle around day |
792 | if (today == i) { | 776 | if (today == i) { |
793 | tmppen = p.pen(); | 777 | tmppen = p.pen(); |
794 | QPen mTodayPen(p.pen()); | 778 | QPen mTodayPen(p.pen()); |
795 | 779 | if ( daysize.width() < 20 ) | |
796 | mTodayPen.setWidth(mTodayMarginWidth); | 780 | mTodayPen.setWidth(1); |
781 | else | ||
782 | mTodayPen.setWidth(mTodayMarginWidth); | ||
797 | //draw red rectangle for holidays | 783 | //draw red rectangle for holidays |
798 | if (!mHolidays[i].isNull()) { | 784 | if (!mHolidays[i].isNull()) { |
799 | if (actcol == mDefaultTextColor) { | 785 | if (actcol == mDefaultTextColor) { |
800 | mTodayPen.setColor(KOPrefs::instance()->mHolidayColor); | 786 | mTodayPen.setColor(KOPrefs::instance()->mHolidayColor); |
801 | } else { | 787 | } else { |
802 | mTodayPen.setColor(mHolidayColorShaded); | 788 | mTodayPen.setColor(mHolidayColorShaded); |
803 | } | 789 | } |
804 | } | 790 | } |
805 | //draw gray rectangle for today if in selection | 791 | //draw gray rectangle for today if in selection |
806 | if (i >= mSelStartT && i <= mSelEndT) { | 792 | if (i >= mSelStartT && i <= mSelEndT) { |
807 | QColor grey("grey"); | 793 | QColor grey("grey"); |
808 | mTodayPen.setColor(grey); | 794 | mTodayPen.setColor(grey); |
809 | } | 795 | } |
810 | p.setPen(mTodayPen); | 796 | p.setPen(mTodayPen); |
811 | p.drawRect(col*dwidth, row*dheight, dwidth, dheight); | 797 | |
798 | |||
799 | int addCol = 0; | ||
800 | int addRow = 0; | ||
801 | if (rowModulo) { | ||
802 | if ( row >= 6 - rowModulo ) | ||
803 | addRow = row - 5 + rowModulo; | ||
804 | } | ||
805 | if ( colModulo ) { | ||
806 | if ( col >= 7 - colModulo ) | ||
807 | addCol = col - 6 + colModulo-1; | ||
808 | } | ||
809 | p.drawRect(col*dwidth+addCol, row*dheight+addRow, dwidth, dheight+1); | ||
812 | p.setPen(tmppen); | 810 | p.setPen(tmppen); |
813 | } | 811 | } |
814 | 812 | ||
815 | // if any events are on that day then draw it using a bold font | 813 | // if any events are on that day then draw it using a bold font |
816 | if (events[i] > 0) { | 814 | if (events[i] > 0) { |
817 | QFont myFont = font(); | 815 | QFont myFont = font(); |
818 | myFont.setBold(true); | 816 | myFont.setBold(true); |
819 | p.setFont(myFont); | 817 | p.setFont(myFont); |
820 | } | 818 | } |
821 | 819 | ||
822 | // if it is a holiday then use the default holiday color | 820 | // if it is a holiday then use the default holiday color |
823 | if (!mHolidays[i].isNull()) { | 821 | if (!mHolidays[i].isNull()) { |
824 | if ( bDays.testBit(i) ) { | 822 | if ( bDays.testBit(i) ) { |
825 | p.setPen(Qt::green); | 823 | p.setPen(Qt::green); |
826 | } else { | 824 | } else { |
827 | if (actcol == mDefaultTextColor) { | 825 | if (actcol == mDefaultTextColor) { |