-rw-r--r-- | korganizer/koagendaview.cpp | 44 |
1 files changed, 37 insertions, 7 deletions
diff --git a/korganizer/koagendaview.cpp b/korganizer/koagendaview.cpp index 8e9add3..d43712f 100644 --- a/korganizer/koagendaview.cpp +++ b/korganizer/koagendaview.cpp | |||
@@ -588,48 +588,64 @@ void KOAgendaView::resizeEvent( QResizeEvent* e ) | |||
588 | { | 588 | { |
589 | //qDebug("KOAgendaView::resizeEvent( QResizeEvent* e ) %d ", e->size().width()); | 589 | //qDebug("KOAgendaView::resizeEvent( QResizeEvent* e ) %d ", e->size().width()); |
590 | bool uc = false; | 590 | bool uc = false; |
591 | int ow = e->oldSize().width(); | 591 | int ow = e->oldSize().width(); |
592 | int oh = e->oldSize().height(); | 592 | int oh = e->oldSize().height(); |
593 | int w = e->size().width(); | 593 | int w = e->size().width(); |
594 | int h = e->size().height(); | 594 | int h = e->size().height(); |
595 | if ( (ow > oh && w< h ) || (ow < oh && w > h ) ) { | 595 | if ( (ow > oh && w< h ) || (ow < oh && w > h ) ) { |
596 | if ( ! mBlockUpdating && !globalFlagBlockStartup && !globalFlagBlockAgenda ) | 596 | if ( ! mBlockUpdating && !globalFlagBlockStartup && !globalFlagBlockAgenda ) |
597 | uc = true; | 597 | uc = true; |
598 | //qDebug("view changed %d %d %d %d ", ow, oh , w , h); | 598 | //qDebug("view changed %d %d %d %d ", ow, oh , w , h); |
599 | } | 599 | } |
600 | mUpcomingWidth = e->size().width() ; | 600 | mUpcomingWidth = e->size().width() ; |
601 | if ( mBlockUpdating || uc ) { | 601 | if ( mBlockUpdating || uc ) { |
602 | mBlockUpdating = false; | 602 | mBlockUpdating = false; |
603 | //mAgenda->setMinimumSize(800 , 600 ); | 603 | //mAgenda->setMinimumSize(800 , 600 ); |
604 | //qDebug("mAgenda->resize+++++++++++++++ "); | 604 | //qDebug("mAgenda->resize+++++++++++++++ "); |
605 | updateConfig(); | 605 | updateConfig(); |
606 | //qDebug("KOAgendaView::Updating now possible "); | 606 | //qDebug("KOAgendaView::Updating now possible "); |
607 | } else | 607 | } else |
608 | createDayLabels(); | 608 | createDayLabels(); |
609 | //qDebug("resizeEvent end "); | 609 | //qDebug("resizeEvent end "); |
610 | 610 | ||
611 | } | 611 | } |
612 | void KOAgendaView::slotDaylabelClicked() | ||
613 | { | ||
614 | QString cap = ((QPushButton*) sender() )->caption(); | ||
615 | |||
616 | QDate firstDate = mSelectedDates.first(); | ||
617 | if ( cap == "0" ) | ||
618 | emit showDateView( 6, firstDate ); | ||
619 | else if ( cap != "last" ) { | ||
620 | if ( mSelectedDates.count() == 1) | ||
621 | emit showDateView( 9, firstDate.addDays( cap.toInt()-1 ) ); | ||
622 | else | ||
623 | emit showDateView( 3, firstDate.addDays( cap.toInt()-1 ) ); | ||
624 | } | ||
625 | else | ||
626 | showDateView( 10, firstDate.addDays(1 ) ); | ||
627 | } | ||
612 | void KOAgendaView::createDayLabels() | 628 | void KOAgendaView::createDayLabels() |
613 | { | 629 | { |
614 | 630 | ||
615 | if ( mBlockUpdating || globalFlagBlockLabel == 1) { | 631 | if ( mBlockUpdating || globalFlagBlockLabel == 1) { |
616 | // qDebug(" KOAgendaView::createDayLabels() blocked "); | 632 | // qDebug(" KOAgendaView::createDayLabels() blocked "); |
617 | return; | 633 | return; |
618 | 634 | ||
619 | } | 635 | } |
620 | int newHight; | 636 | int newHight; |
621 | 637 | ||
622 | // ### Before deleting and recreating we could check if mSelectedDates changed... | 638 | // ### Before deleting and recreating we could check if mSelectedDates changed... |
623 | // It would remove some flickering and gain speed (since this is called by | 639 | // It would remove some flickering and gain speed (since this is called by |
624 | // each updateView() call) | 640 | // each updateView() call) |
625 | 641 | ||
626 | int maxWid = mUpcomingWidth - mTimeLabels->width()- mAgenda->verticalScrollBar()->width() - 2; | 642 | int maxWid = mUpcomingWidth - mTimeLabels->width()- mAgenda->verticalScrollBar()->width() - 2; |
627 | mDayLabelsFrame->setMaximumWidth( mUpcomingWidth ); | 643 | mDayLabelsFrame->setMaximumWidth( mUpcomingWidth ); |
628 | if ( maxWid < 0 ) | 644 | if ( maxWid < 0 ) |
629 | maxWid = 20; | 645 | maxWid = 20; |
630 | 646 | ||
631 | QFont dlf = KOPrefs::instance()->mTimeLabelsFont; | 647 | QFont dlf = KOPrefs::instance()->mTimeLabelsFont; |
632 | QFontMetrics fm ( dlf ); | 648 | QFontMetrics fm ( dlf ); |
633 | int selCount = mSelectedDates.count(); | 649 | int selCount = mSelectedDates.count(); |
634 | QString dayTest = "Mon 20"; | 650 | QString dayTest = "Mon 20"; |
635 | int wid = fm.width( dayTest ); | 651 | int wid = fm.width( dayTest ); |
@@ -649,170 +665,184 @@ void KOAgendaView::createDayLabels() | |||
649 | int fontPoint = dlf.pointSize(); | 665 | int fontPoint = dlf.pointSize(); |
650 | if ( maxLen < 2 ) { | 666 | if ( maxLen < 2 ) { |
651 | int fontPoint = dlf.pointSize(); | 667 | int fontPoint = dlf.pointSize(); |
652 | while ( fontPoint > 4 ) { | 668 | while ( fontPoint > 4 ) { |
653 | --fontPoint; | 669 | --fontPoint; |
654 | dlf.setPointSize( fontPoint ); | 670 | dlf.setPointSize( fontPoint ); |
655 | QFontMetrics f( dlf ); | 671 | QFontMetrics f( dlf ); |
656 | wid = f.width( "20" ); | 672 | wid = f.width( "20" ); |
657 | needWid = wid * selCount; | 673 | needWid = wid * selCount; |
658 | if ( needWid < maxWid ) | 674 | if ( needWid < maxWid ) |
659 | break; | 675 | break; |
660 | } | 676 | } |
661 | maxLen = 2; | 677 | maxLen = 2; |
662 | } | 678 | } |
663 | //qDebug("Max len %d ", dayTest.length() ); | 679 | //qDebug("Max len %d ", dayTest.length() ); |
664 | 680 | ||
665 | QFontMetrics tempF( dlf ); | 681 | QFontMetrics tempF( dlf ); |
666 | newHight = tempF.height(); | 682 | newHight = tempF.height(); |
667 | mDayLabels->setFont( dlf ); | 683 | mDayLabels->setFont( dlf ); |
668 | // mLayoutDayLabels = new QHBoxLayout(mDayLabels);; | 684 | // mLayoutDayLabels = new QHBoxLayout(mDayLabels);; |
669 | // mLayoutDayLabels->addSpacing(mTimeLabels->width()); | 685 | // mLayoutDayLabels->addSpacing(mTimeLabels->width()); |
670 | //mLayoutDayLabels->addSpacing( 2 ); | 686 | //mLayoutDayLabels->addSpacing( 2 ); |
671 | // QFont lFont = dlf; | 687 | // QFont lFont = dlf; |
672 | bool appendLabels = false; | 688 | bool appendLabels = false; |
673 | QLabel *dayLabel; | 689 | QPushButton *dayLabel; |
674 | dayLabel = mDayLabelsList.first(); | 690 | dayLabel = mDayLabelsList.first(); |
675 | if ( !dayLabel ) { | 691 | if ( !dayLabel ) { |
676 | appendLabels = true; | 692 | appendLabels = true; |
677 | dayLabel = new QLabel(mDayLabels); | 693 | dayLabel = new QPushButton(mDayLabels); |
694 | dayLabel->setFlat( true ); | ||
695 | connect( dayLabel, SIGNAL( clicked() ), this, SLOT ( slotDaylabelClicked() ) ); | ||
696 | dayLabel->setFocusPolicy(NoFocus); | ||
678 | mDayLabelsList.append( dayLabel ); | 697 | mDayLabelsList.append( dayLabel ); |
679 | mLayoutDayLabels->addWidget(dayLabel); | 698 | mLayoutDayLabels->addWidget(dayLabel); |
680 | } | 699 | } |
681 | dayLabel->setFixedWidth( mTimeLabels->width()+2 ); | 700 | dayLabel->setFixedWidth( mTimeLabels->width()+2 ); |
682 | dayLabel->setFont( dlf ); | 701 | dayLabel->setFont( dlf ); |
683 | dayLabel->setAlignment(QLabel::AlignHCenter); | 702 | dayLabel->setCaption("0"); |
703 | //dayLabel->setAlignment(QLabel::AlignHCenter); | ||
684 | dayLabel->setText( KOGlobals::self()->calendarSystem()->monthName( mSelectedDates.first(), true ) ); | 704 | dayLabel->setText( KOGlobals::self()->calendarSystem()->monthName( mSelectedDates.first(), true ) ); |
685 | dayLabel->show(); | 705 | dayLabel->show(); |
686 | DateList::ConstIterator dit; | 706 | DateList::ConstIterator dit; |
687 | bool oneday = (mSelectedDates.first() == mSelectedDates.last() ); | 707 | bool oneday = (mSelectedDates.first() == mSelectedDates.last() ); |
708 | int counter = 0; | ||
688 | for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) { | 709 | for( dit = mSelectedDates.begin(); dit != mSelectedDates.end(); ++dit ) { |
710 | ++counter; | ||
689 | QDate date = *dit; | 711 | QDate date = *dit; |
690 | // QBoxLayout *dayLayout = new QVBoxLayout(mLayoutDayLabels); | 712 | // QBoxLayout *dayLayout = new QVBoxLayout(mLayoutDayLabels); |
691 | if ( ! appendLabels ) { | 713 | if ( ! appendLabels ) { |
692 | dayLabel = mDayLabelsList.next(); | 714 | dayLabel = mDayLabelsList.next(); |
693 | if ( !dayLabel ) | 715 | if ( !dayLabel ) |
694 | appendLabels = true; | 716 | appendLabels = true; |
695 | } | 717 | } |
696 | if ( appendLabels ) { | 718 | if ( appendLabels ) { |
697 | dayLabel = new QLabel(mDayLabels); | 719 | dayLabel = new QPushButton(mDayLabels); |
720 | dayLabel->setFlat( true ); | ||
721 | connect( dayLabel, SIGNAL( clicked() ), this, SLOT ( slotDaylabelClicked() ) ); | ||
722 | dayLabel->setFocusPolicy(NoFocus); | ||
698 | mDayLabelsList.append( dayLabel ); | 723 | mDayLabelsList.append( dayLabel ); |
699 | mLayoutDayLabels->addWidget(dayLabel); | 724 | mLayoutDayLabels->addWidget(dayLabel); |
700 | } | 725 | } |
701 | dayLabel->setMinimumWidth( 1 ); | 726 | dayLabel->setMinimumWidth( 1 ); |
702 | dayLabel->setMaximumWidth( 2048 ); | 727 | dayLabel->setMaximumWidth( 2048 ); |
703 | dayLabel->setFont( dlf ); | 728 | dayLabel->setFont( dlf ); |
704 | dayLabel->show(); | 729 | dayLabel->show(); |
730 | dayLabel->setCaption(QString::number( counter )); | ||
705 | QString str; | 731 | QString str; |
706 | int dW = KOGlobals::self()->calendarSystem()->dayOfWeek(date); | 732 | int dW = KOGlobals::self()->calendarSystem()->dayOfWeek(date); |
707 | QString dayName = KOGlobals::self()->calendarSystem()->weekDayName( dW, true ); | 733 | QString dayName = KOGlobals::self()->calendarSystem()->weekDayName( dW, true ); |
708 | switch ( maxLen ) { | 734 | switch ( maxLen ) { |
709 | case 2: | 735 | case 2: |
710 | str = QString::number( date.day() ); | 736 | str = QString::number( date.day() ); |
711 | break; | 737 | break; |
712 | 738 | ||
713 | case 3: | 739 | case 3: |
714 | str = dayName.left( 1 ) +QString::number( date.day()); | 740 | str = dayName.left( 1 ) +QString::number( date.day()); |
715 | 741 | ||
716 | break; | 742 | break; |
717 | case 4: | 743 | case 4: |
718 | str = dayName.left( 1 ) + " " +QString::number( date.day()); | 744 | str = dayName.left( 1 ) + " " +QString::number( date.day()); |
719 | 745 | ||
720 | break; | 746 | break; |
721 | case 5: | 747 | case 5: |
722 | str = dayName.left( 2 ) + " " +QString::number( date.day()); | 748 | str = dayName.left( 2 ) + " " +QString::number( date.day()); |
723 | 749 | ||
724 | break; | 750 | break; |
725 | case 6: | 751 | case 6: |
726 | str = dayName.left( 3 ) + " " +QString::number( date.day()); | 752 | str = dayName.left( 3 ) + " " +QString::number( date.day()); |
727 | break; | 753 | break; |
728 | 754 | ||
729 | default: | 755 | default: |
730 | break; | 756 | break; |
731 | } | 757 | } |
732 | if ( oneday ) { | 758 | if ( oneday ) { |
733 | QString addString; | 759 | QString addString; |
734 | if ( mSelectedDates.first() == QDateTime::currentDateTime().date() ) | 760 | if ( mSelectedDates.first() == QDateTime::currentDateTime().date() ) |
735 | addString = i18n("Today"); | 761 | addString = i18n("Today"); |
736 | else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(1) ) | 762 | else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(1) ) |
737 | addString = i18n("Tomorrow"); | 763 | addString = i18n("Tomorrow"); |
738 | else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(-1) ) | 764 | else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(-1) ) |
739 | addString = i18n("Yesterday"); | 765 | addString = i18n("Yesterday"); |
740 | else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(-2) ) | 766 | else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(-2) ) |
741 | addString = i18n("Day before yesterday"); | 767 | addString = i18n("Day before yesterday"); |
742 | else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(2) ) | 768 | else if ( mSelectedDates.first() == QDateTime::currentDateTime().date().addDays(2) ) |
743 | addString = i18n("Day after tomorrow"); | 769 | addString = i18n("Day after tomorrow"); |
744 | if ( !addString.isEmpty() ) { | 770 | if ( !addString.isEmpty() ) { |
745 | str = addString+", " + str; | 771 | str = addString+", " + str; |
746 | } | 772 | } |
747 | } | 773 | } |
748 | dayLabel->setText(str); | 774 | dayLabel->setText(str); |
749 | dayLabel->setAlignment(QLabel::AlignHCenter); | 775 | //dayLabel->setAlignment(QLabel::AlignHCenter); |
750 | if (date == QDate::currentDate()) { | 776 | if (date == QDate::currentDate()) { |
751 | QFont bFont = dlf; | 777 | QFont bFont = dlf; |
752 | bFont.setBold( true ); | 778 | bFont.setBold( true ); |
753 | dayLabel->setFont(bFont); | 779 | dayLabel->setFont(bFont); |
754 | } | 780 | } |
755 | //dayLayout->addWidget(dayLabel); | 781 | //dayLayout->addWidget(dayLabel); |
756 | 782 | ||
757 | #ifndef KORG_NOPLUGINS | 783 | #ifndef KORG_NOPLUGINS |
758 | CalendarDecoration::List cds = KOCore::self()->calendarDecorations(); | 784 | CalendarDecoration::List cds = KOCore::self()->calendarDecorations(); |
759 | CalendarDecoration *it; | 785 | CalendarDecoration *it; |
760 | for(it = cds.first(); it; it = cds.next()) { | 786 | for(it = cds.first(); it; it = cds.next()) { |
761 | QString text = it->shortText( date ); | 787 | QString text = it->shortText( date ); |
762 | if ( !text.isEmpty() ) { | 788 | if ( !text.isEmpty() ) { |
763 | QLabel *label = new QLabel(text,mDayLabels); | 789 | QLabel *label = new QLabel(text,mDayLabels); |
764 | label->setAlignment(AlignCenter); | 790 | label->setAlignment(AlignCenter); |
765 | dayLayout->addWidget(label); | 791 | dayLayout->addWidget(label); |
766 | } | 792 | } |
767 | } | 793 | } |
768 | 794 | ||
769 | for(it = cds.first(); it; it = cds.next()) { | 795 | for(it = cds.first(); it; it = cds.next()) { |
770 | QWidget *wid = it->smallWidget(mDayLabels,date); | 796 | QWidget *wid = it->smallWidget(mDayLabels,date); |
771 | if ( wid ) { | 797 | if ( wid ) { |
772 | // wid->setHeight(20); | 798 | // wid->setHeight(20); |
773 | dayLayout->addWidget(wid); | 799 | dayLayout->addWidget(wid); |
774 | } | 800 | } |
775 | } | 801 | } |
776 | #endif | 802 | #endif |
777 | } | 803 | } |
778 | if ( ! appendLabels ) { | 804 | if ( ! appendLabels ) { |
779 | dayLabel = mDayLabelsList.next(); | 805 | dayLabel = mDayLabelsList.next(); |
780 | if ( !dayLabel ) | 806 | if ( !dayLabel ) |
781 | appendLabels = true; | 807 | appendLabels = true; |
782 | } | 808 | } |
783 | if ( appendLabels ) { | 809 | if ( appendLabels ) { |
784 | dayLabel = new QLabel(mDayLabels); | 810 | dayLabel = new QPushButton(mDayLabels); |
811 | dayLabel->setFlat( true ); | ||
812 | connect( dayLabel, SIGNAL( clicked() ), this, SLOT ( slotDaylabelClicked() ) ); | ||
813 | dayLabel->setFocusPolicy(NoFocus); | ||
785 | mDayLabelsList.append( dayLabel ); | 814 | mDayLabelsList.append( dayLabel ); |
786 | mLayoutDayLabels->addWidget(dayLabel); | 815 | mLayoutDayLabels->addWidget(dayLabel); |
787 | } | 816 | } |
788 | //dayLabel->hide();//test only | 817 | //dayLabel->hide();//test only |
789 | 818 | ||
790 | int offset = (mAgenda->width() - mAgenda->verticalScrollBar()->width()-3 ) % mSelectedDates.count() ; | 819 | int offset = (mAgenda->width() - mAgenda->verticalScrollBar()->width()-3 ) % mSelectedDates.count() ; |
791 | if ( offset < 0 ) offset = 0; | 820 | if ( offset < 0 ) offset = 0; |
792 | //qDebug("mLayoutDayLabels->addSpacing %d ", mAgenda->verticalScrollBar()->width()+offset+2 ); | 821 | //qDebug("mLayoutDayLabels->addSpacing %d ", mAgenda->verticalScrollBar()->width()+offset+2 ); |
793 | dayLabel->setText("");//QString::number ( mSelectedDates.first().month() ) ); | 822 | dayLabel->setText(">");//QString::number ( mSelectedDates.first().month() ) ); |
794 | dayLabel->show(); | 823 | dayLabel->show(); |
824 | dayLabel->setCaption("last"); | ||
795 | dayLabel->setFixedWidth( mAgenda->verticalScrollBar()->width()+ offset ); | 825 | dayLabel->setFixedWidth( mAgenda->verticalScrollBar()->width()+ offset ); |
796 | //qDebug("setToFixed %d ", mAgenda->verticalScrollBar()->width()+ offset+2); | 826 | //qDebug("setToFixed %d ", mAgenda->verticalScrollBar()->width()+ offset+2); |
797 | //mLayoutDayLabels->addSpacing(mAgenda->verticalScrollBar()->width()+ offset+2); | 827 | //mLayoutDayLabels->addSpacing(mAgenda->verticalScrollBar()->width()+ offset+2); |
798 | if ( !appendLabels ) { | 828 | if ( !appendLabels ) { |
799 | dayLabel = mDayLabelsList.next(); | 829 | dayLabel = mDayLabelsList.next(); |
800 | while ( dayLabel ) { | 830 | while ( dayLabel ) { |
801 | //qDebug("!dayLabel %d",dayLabel ); | 831 | //qDebug("!dayLabel %d",dayLabel ); |
802 | dayLabel->hide(); | 832 | dayLabel->hide(); |
803 | dayLabel = mDayLabelsList.next(); | 833 | dayLabel = mDayLabelsList.next(); |
804 | } | 834 | } |
805 | } | 835 | } |
806 | //mDayLabelsFrame->show(); | 836 | //mDayLabelsFrame->show(); |
807 | //mDayLabels->show(); | 837 | //mDayLabels->show(); |
808 | //qDebug("heigt %d %d %d ",mDayLabelsFrame->height(), mDayLabelsFrame->sizeHint().height(), newHight); | 838 | //qDebug("heigt %d %d %d ",mDayLabelsFrame->height(), mDayLabelsFrame->sizeHint().height(), newHight); |
809 | //mDayLabelsFrame->resize( mAgenda->visibleWidth(), newHight ); | 839 | //mDayLabelsFrame->resize( mAgenda->visibleWidth(), newHight ); |
810 | mDayLabelsFrame->setFixedHeight( newHight ); | 840 | mDayLabelsFrame->setFixedHeight( newHight ); |
811 | } | 841 | } |
812 | 842 | ||
813 | int KOAgendaView::maxDatesHint() | 843 | int KOAgendaView::maxDatesHint() |
814 | { | 844 | { |
815 | // Not sure about the max number of events, so return 0 for now. | 845 | // Not sure about the max number of events, so return 0 for now. |
816 | return 0; | 846 | return 0; |
817 | } | 847 | } |
818 | 848 | ||