summaryrefslogtreecommitdiffabout
path: root/korganizer/komonthview.cpp
authorzautrix <zautrix>2005-03-31 23:55:51 (UTC)
committer zautrix <zautrix>2005-03-31 23:55:51 (UTC)
commitb76ad1e7e329051a47e28c9d132ce3fcd0b25c5c (patch) (unidiff)
treeb0b3d0eb7a3d29981c183275aadeed0cbbef0007 /korganizer/komonthview.cpp
parentc0fa26aa3b33c293853bdd7d028ddb0545e33c85 (diff)
downloadkdepimpi-b76ad1e7e329051a47e28c9d132ce3fcd0b25c5c.zip
kdepimpi-b76ad1e7e329051a47e28c9d132ce3fcd0b25c5c.tar.gz
kdepimpi-b76ad1e7e329051a47e28c9d132ce3fcd0b25c5c.tar.bz2
fixes
Diffstat (limited to 'korganizer/komonthview.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/komonthview.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index b9ce4f4..ab9a4b6 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -748,385 +748,389 @@ void MonthViewCell::insertTodo(Todo *todo)
748 insertItem( item ); 748 insertItem( item );
749 mToolTip.append( text ); 749 mToolTip.append( text );
750} 750}
751void MonthViewCell::repaintfinishUpdateCell() 751void MonthViewCell::repaintfinishUpdateCell()
752{ 752{
753 MonthViewItem *mitem = (MonthViewItem*) firstItem (); 753 MonthViewItem *mitem = (MonthViewItem*) firstItem ();
754 while ( mitem ) { 754 while ( mitem ) {
755 mitem->setBlockRepaint( false ); 755 mitem->setBlockRepaint( false );
756 updateItem ( mitem ); 756 updateItem ( mitem );
757 mitem = (MonthViewItem *)mitem->next(); 757 mitem = (MonthViewItem *)mitem->next();
758 } 758 }
759} 759}
760void MonthViewCell::finishUpdateCell() 760void MonthViewCell::finishUpdateCell()
761{ 761{
762 while ( mCurrentAvailItem ) { 762 while ( mCurrentAvailItem ) {
763 MonthViewItem *item = mCurrentAvailItem; 763 MonthViewItem *item = mCurrentAvailItem;
764 mCurrentAvailItem = (MonthViewItem *)item->next(); 764 mCurrentAvailItem = (MonthViewItem *)item->next();
765 mAvailItemList.append( item ); 765 mAvailItemList.append( item );
766 takeItem ( item ); 766 takeItem ( item );
767 } 767 }
768 768
769 769
770#ifdef DESKTOP_VERSION 770#ifdef DESKTOP_VERSION
771 if (mToolTip.count() > 0 ) { 771 if (mToolTip.count() > 0 ) {
772 mToolTip.sort(); 772 mToolTip.sort();
773 QToolTip::add(this,mToolTip.join("\n"),toolTipGroup(),""); 773 QToolTip::add(this,mToolTip.join("\n"),toolTipGroup(),"");
774 } 774 }
775#endif 775#endif
776 sort(); 776 sort();
777 //setMyPalette(); 777 //setMyPalette();
778 setMyPalette(); 778 setMyPalette();
779 779
780 resizeEvent( 0 ); 780 resizeEvent( 0 );
781 781
782} 782}
783void MonthViewCell::updateCell() 783void MonthViewCell::updateCell()
784{ 784{
785 //qDebug("MonthViewCell::updateCell() "); 785 //qDebug("MonthViewCell::updateCell() ");
786 if ( !mMonthView->isUpdatePossible() ) 786 if ( !mMonthView->isUpdatePossible() )
787 return; 787 return;
788 startUpdateCell(); 788 startUpdateCell();
789 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2); 789 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
790 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true ); 790 QPtrList<Event> events = mMonthView->calendar()->events( mDate, true );
791 Event *event; 791 Event *event;
792 for( event = events.first(); event; event = events.next() ) { // for event 792 for( event = events.first(); event; event = events.next() ) { // for event
793 insertEvent(event); 793 insertEvent(event);
794 } 794 }
795 // insert due todos 795 // insert due todos
796 QPtrList<Todo> todos = mMonthView->calendar()->todos( mDate ); 796 QPtrList<Todo> todos = mMonthView->calendar()->todos( mDate );
797 Todo *todo; 797 Todo *todo;
798 for(todo = todos.first(); todo; todo = todos.next()) { 798 for(todo = todos.first(); todo; todo = todos.next()) {
799 insertTodo( todo ); 799 insertTodo( todo );
800 } 800 }
801 finishUpdateCell(); 801 finishUpdateCell();
802 // if ( isVisible()) 802 // if ( isVisible())
803 //qApp->processEvents(); 803 //qApp->processEvents();
804} 804}
805 805
806void MonthViewCell::updateConfig( bool bigFont ) // = false 806void MonthViewCell::updateConfig( bool bigFont ) // = false
807{ 807{
808 808
809 if ( bigFont ) { 809 if ( bigFont ) {
810 QFont fo = KOPrefs::instance()->mMonthViewFont; 810 QFont fo = KOPrefs::instance()->mMonthViewFont;
811 int ps = fo.pointSize() + 2; 811 int ps = fo.pointSize() + 2;
812 if ( ps < 18 ) 812 if ( ps < 18 )
813 ps += 2; 813 ps += 2;
814 fo.setPointSize( ps ); 814 fo.setPointSize( ps );
815 setFont( fo ); 815 setFont( fo );
816 } else 816 } else
817 setFont( KOPrefs::instance()->mMonthViewFont ); 817 setFont( KOPrefs::instance()->mMonthViewFont );
818 818
819 QFontMetrics fm( font() ); 819 QFontMetrics fm( font() );
820 mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 ); 820 mLabelSize = fm.size( 0, "30" ) + QSize( 4, 2 );
821 mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 ); 821 mLabelBigSize = fm.size( 0, "Mag 30" ) + QSize( 2, 2 );
822 mHolidayPalette = mStandardPalette; 822 mHolidayPalette = mStandardPalette;
823 mPrimaryPalette = mStandardPalette; 823 mPrimaryPalette = mStandardPalette;
824 mNonPrimaryPalette = mStandardPalette; 824 mNonPrimaryPalette = mStandardPalette;
825 if ( KOPrefs::instance()->mMonthViewUsesDayColors ) { 825 if ( KOPrefs::instance()->mMonthViewUsesDayColors ) {
826 mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor ); 826 mHolidayPalette.setColor(QColorGroup::Base, KOPrefs::instance()->mMonthViewHolidayColor );
827 mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor ); 827 mHolidayPalette.setColor(QColorGroup::Background, KOPrefs::instance()->mMonthViewHolidayColor );
828 mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark()); 828 mHolidayPalette.setColor(QColorGroup::Foreground, KOPrefs::instance()->mMonthViewHolidayColor.dark());
829 mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark()); 829 mPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewOddColor.dark());
830 mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor); 830 mPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewOddColor);
831 mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor); 831 mPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewOddColor);
832 mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark()); 832 mNonPrimaryPalette.setColor(QColorGroup::Foreground,KOPrefs::instance()->mMonthViewEvenColor.dark());
833 mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor); 833 mNonPrimaryPalette.setColor(QColorGroup::Base,KOPrefs::instance()->mMonthViewEvenColor);
834 mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor); 834 mNonPrimaryPalette.setColor(QColorGroup::Background,KOPrefs::instance()->mMonthViewEvenColor);
835 } 835 }
836 //updateCell(); 836 //updateCell();
837} 837}
838 838
839void MonthViewCell::enableScrollBars( bool enabled ) 839void MonthViewCell::enableScrollBars( bool enabled )
840{ 840{
841 if ( enabled ) { 841 if ( enabled ) {
842 QListBoxItem *fi = firstItem (); 842 QListBoxItem *fi = firstItem ();
843 if (fi ) { 843 if (fi ) {
844 int ihei = fi->height( this ); 844 int ihei = fi->height( this );
845 int hei = numRows () * ihei; 845 int hei = numRows () * ihei;
846 if ( hei < height() - horizontalScrollBar()->height () ) { 846 if ( hei < height() - horizontalScrollBar()->height () ) {
847 setVScrollBarMode(QScrollView::AlwaysOff); 847 setVScrollBarMode(QScrollView::AlwaysOff);
848 } 848 }
849 else 849 else
850 setVScrollBarMode(QScrollView::Auto); 850 setVScrollBarMode(QScrollView::Auto);
851 if ( ihei *3 > height() ) 851 if ( ihei *3 > height() )
852 setHScrollBarMode(QScrollView::AlwaysOff); 852 setHScrollBarMode(QScrollView::AlwaysOff);
853 else 853 else
854 setHScrollBarMode(QScrollView::Auto); 854 setHScrollBarMode(QScrollView::Auto);
855 } else { 855 } else {
856 setVScrollBarMode(QScrollView::Auto); 856 setVScrollBarMode(QScrollView::Auto);
857 setHScrollBarMode(QScrollView::Auto); 857 setHScrollBarMode(QScrollView::Auto);
858 } 858 }
859 } else { 859 } else {
860 setVScrollBarMode(QScrollView::AlwaysOff); 860 setVScrollBarMode(QScrollView::AlwaysOff);
861 setHScrollBarMode(QScrollView::AlwaysOff); 861 setHScrollBarMode(QScrollView::AlwaysOff);
862 } 862 }
863} 863}
864 864
865Incidence *MonthViewCell::selectedIncidence() 865Incidence *MonthViewCell::selectedIncidence()
866{ 866{
867 int index = currentItem(); 867 int index = currentItem();
868 if ( index < 0 ) return 0; 868 if ( index < 0 ) return 0;
869 869
870 MonthViewItem *mitem = 870 MonthViewItem *mitem =
871 static_cast<MonthViewItem *>( item( index ) ); 871 static_cast<MonthViewItem *>( item( index ) );
872 872
873 if ( !mitem ) return 0; 873 if ( !mitem ) return 0;
874 874
875 return mitem->incidence(); 875 return mitem->incidence();
876} 876}
877 877
878QDate MonthViewCell::selectedIncidenceDate() 878QDate MonthViewCell::selectedIncidenceDate()
879{ 879{
880 QDate qd; 880 QDate qd;
881 int index = currentItem(); 881 int index = currentItem();
882 if ( index < 0 ) return qd; 882 if ( index < 0 ) return qd;
883 883
884 MonthViewItem *mitem = 884 MonthViewItem *mitem =
885 static_cast<MonthViewItem *>( item( index ) ); 885 static_cast<MonthViewItem *>( item( index ) );
886 886
887 if ( !mitem ) return qd; 887 if ( !mitem ) return qd;
888 888
889 return mitem->incidenceDate(); 889 return mitem->incidenceDate();
890} 890}
891 891
892void MonthViewCell::deselect() 892void MonthViewCell::deselect()
893{ 893{
894 clearSelection(); 894 clearSelection();
895 enableScrollBars( false ); 895 enableScrollBars( false );
896 // updateCell(); 896 // updateCell();
897} 897}
898void MonthViewCell::select() 898void MonthViewCell::select()
899{ 899{
900 ;// updateCell(); 900 ;// updateCell();
901} 901}
902 902
903void MonthViewCell::resizeEvent ( QResizeEvent * e ) 903void MonthViewCell::resizeEvent ( QResizeEvent * e )
904{ 904{
905 if ( !mMonthView->isUpdatePossible() ) 905 if ( !mMonthView->isUpdatePossible() )
906 return; 906 return;
907 //qDebug("++++++++++++++MonthViewCell::resizeEvent %d %d ", width(), height()); 907 //qDebug("++++++++++++++MonthViewCell::resizeEvent %d %d ", width(), height());
908 deselect(); 908 deselect();
909 mLabel->setMaximumHeight( height() - lineWidth()*2 ); 909 mLabel->setMaximumHeight( height() - lineWidth()*2 );
910 910
911 QString text; 911 QString text;
912 mLabel->setText( text ); 912 mLabel->setText( text );
913 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog; 913 bool smallDisplay = QApplication::desktop()->width() < 320 && KOPrefs::instance()->mMonthViewSatSunTog;
914 if ( KOPrefs::instance()->mMonthViewWeek || KOGlobals::self()->calendarSystem()->day( mDate ) == 1 || (mDate.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) { 914 if ( KOPrefs::instance()->mMonthViewWeek || KOGlobals::self()->calendarSystem()->day( mDate ) == 1 || (mDate.dayOfWeek() == 7 && !smallDisplay ) || KOPrefs::instance()->mMonthShowShort) {
915 text = KOGlobals::self()->calendarSystem()->monthName( mDate, true ) + " "; 915 text = KOGlobals::self()->calendarSystem()->monthName( mDate, true ) + " ";
916 mLabel->resize( mLabelBigSize ); 916 mLabel->resize( mLabelBigSize );
917 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) ); 917 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) );
918 } else { 918 } else {
919 mLabel->resize( mLabelSize ); 919 mLabel->resize( mLabelSize );
920 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) ); 920 text += QString::number( KOGlobals::self()->calendarSystem()->day(mDate) );
921 } 921 }
922 mLabel->setText( text ); 922 mLabel->setText( text );
923 923
924 int size = height() - mLabel->height() - lineWidth()-1; 924 int size = height() - mLabel->height() - lineWidth()-1;
925 //qDebug("LW %d ", lineWidth()); 925 //qDebug("LW %d ", lineWidth());
926 if ( size > 0 ) 926 if ( size > 0 )
927 verticalScrollBar()->setMaximumHeight( size ); 927 verticalScrollBar()->setMaximumHeight( size );
928 size = width() - mLabel->width() -lineWidth()-1; 928 size = width() - mLabel->width() -lineWidth()-1;
929 if ( size > 0 ) 929 if ( size > 0 )
930 horizontalScrollBar()->setMaximumWidth( size ); 930 horizontalScrollBar()->setMaximumWidth( size );
931 mLabel->move( width()-lineWidth() - mLabel->width(), height()-lineWidth() - mLabel->height() ); 931 mLabel->move( width()-lineWidth() - mLabel->width(), height()-lineWidth() - mLabel->height() );
932 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2); 932 //mLabel->setMaximumWidth( width() - mItemList->lineWidth()*2);
933 // mItemList->resize ( width(), height () ); 933 // mItemList->resize ( width(), height () );
934 if ( e ) 934 if ( e )
935 KNoScrollListBox::resizeEvent ( e ); 935 KNoScrollListBox::resizeEvent ( e );
936} 936}
937 937
938void MonthViewCell::defaultAction( QListBoxItem *item ) 938void MonthViewCell::defaultAction( QListBoxItem *item )
939{ 939{
940 if ( !item ) return; 940 if ( !item ) {
941 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
942 emit newEventSignal( dt );
943 return;
944 }
941 945
942 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item ); 946 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
943 Incidence *incidence = eventItem->incidence(); 947 Incidence *incidence = eventItem->incidence();
944 if ( incidence ) mMonthView->defaultAction( incidence ); 948 if ( incidence ) mMonthView->defaultAction( incidence );
945} 949}
946void MonthViewCell::showDay() 950void MonthViewCell::showDay()
947{ 951{
948 emit showDaySignal( date() ); 952 emit showDaySignal( date() );
949} 953}
950void MonthViewCell::newEvent() 954void MonthViewCell::newEvent()
951{ 955{
952 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) ); 956 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
953 emit newEventSignal( dt ); 957 emit newEventSignal( dt );
954} 958}
955void MonthViewCell::cellClicked( QListBoxItem *item ) 959void MonthViewCell::cellClicked( QListBoxItem *item )
956{ 960{
957 static QListBoxItem * lastClicked = 0; 961 static QListBoxItem * lastClicked = 0;
958 if ( item == 0 ) { 962 if ( item == 0 ) {
959 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) ); 963 QDateTime dt( date(), QTime( KOPrefs::instance()->mStartTime, 0 ) );
960 emit newEventSignal( dt ); 964 emit newEventSignal( dt );
961 return; 965 return;
962 } 966 }
963 /* 967 /*
964 if ( lastClicked ) 968 if ( lastClicked )
965 if ( ! item ) { 969 if ( ! item ) {
966 if ( lastClicked->listBox() != item->listBox() ) 970 if ( lastClicked->listBox() != item->listBox() )
967 lastClicked->listBox()->clearSelection(); 971 lastClicked->listBox()->clearSelection();
968 } 972 }
969 */ 973 */
970 974
971 mMonthView->setSelectedCell( this ); 975 mMonthView->setSelectedCell( this );
972 if( KOPrefs::instance()->mEnableMonthScroll || KOPrefs::instance()->mMonthViewWeek ) enableScrollBars( true ); 976 if( KOPrefs::instance()->mEnableMonthScroll || KOPrefs::instance()->mMonthViewWeek ) enableScrollBars( true );
973 select(); 977 select();
974} 978}
975 979
976void MonthViewCell::contextMenu( QListBoxItem *item ) 980void MonthViewCell::contextMenu( QListBoxItem *item )
977{ 981{
978 if ( !item ) return; 982 if ( !item ) return;
979 983
980 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item ); 984 MonthViewItem *eventItem = static_cast<MonthViewItem *>( item );
981 Incidence *incidence = eventItem->incidence(); 985 Incidence *incidence = eventItem->incidence();
982 if ( incidence ) mMonthView->showContextMenu( incidence ); 986 if ( incidence ) mMonthView->showContextMenu( incidence );
983} 987}
984 988
985void MonthViewCell::selection( QListBoxItem *item ) 989void MonthViewCell::selection( QListBoxItem *item )
986{ 990{
987 if ( !item ) return; 991 if ( !item ) return;
988 992
989 mMonthView->setSelectedCell( this ); 993 mMonthView->setSelectedCell( this );
990} 994}
991 995
992 996
993// ******************************************************************************* 997// *******************************************************************************
994// ******************************************************************************* 998// *******************************************************************************
995// ******************************************************************************* 999// *******************************************************************************
996 1000
997 1001
998KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name) 1002KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
999 : KOEventView( calendar, parent, name ), 1003 : KOEventView( calendar, parent, name ),
1000 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ), 1004 mDaysPerWeek( 7 ), mNumWeeks( 6 ), mNumCells( mDaysPerWeek * mNumWeeks ),
1001 mWidthLongDayLabel( 0 ), mSelectedCell( 0 ) 1005 mWidthLongDayLabel( 0 ), mSelectedCell( 0 )
1002{ 1006{
1003 mFlagKeyPressed = false; 1007 mFlagKeyPressed = false;
1004 mShortDayLabelsM = false; 1008 mShortDayLabelsM = false;
1005 mShortDayLabelsW = false; 1009 mShortDayLabelsW = false;
1006 skipResize = false; 1010 skipResize = false;
1007 clPending = true; 1011 clPending = true;
1008 mNavigatorBar = new NavigatorBar( QDate::currentDate(), this, "useBigPixmaps" ); 1012 mNavigatorBar = new NavigatorBar( QDate::currentDate(), this, "useBigPixmaps" );
1009 mWidStack = new QWidgetStack( this ); 1013 mWidStack = new QWidgetStack( this );
1010 QVBoxLayout* hb = new QVBoxLayout( this ); 1014 QVBoxLayout* hb = new QVBoxLayout( this );
1011 mMonthView = new QWidget( mWidStack ); 1015 mMonthView = new QWidget( mWidStack );
1012 mWeekView = new QWidget( mWidStack ); 1016 mWeekView = new QWidget( mWidStack );
1013#if QT_VERSION >= 0x030000 1017#if QT_VERSION >= 0x030000
1014 mWidStack->addWidget(mMonthView ); 1018 mWidStack->addWidget(mMonthView );
1015 mWidStack->addWidget(mWeekView ); 1019 mWidStack->addWidget(mWeekView );
1016#else 1020#else
1017 mWidStack->addWidget( mMonthView, 1 ); 1021 mWidStack->addWidget( mMonthView, 1 );
1018 mWidStack->addWidget( mWeekView , 1 ); 1022 mWidStack->addWidget( mWeekView , 1 );
1019#endif 1023#endif
1020 hb->addWidget( mNavigatorBar ); 1024 hb->addWidget( mNavigatorBar );
1021 hb->addWidget( mWidStack ); 1025 hb->addWidget( mWidStack );
1022 mShowWeekView = KOPrefs::instance()->mMonthViewWeek; 1026 mShowWeekView = KOPrefs::instance()->mMonthViewWeek;
1023 updatePossible = false; 1027 updatePossible = false;
1024 //updatePossible = true; 1028 //updatePossible = true;
1025 mCells.setAutoDelete( true ); 1029 mCells.setAutoDelete( true );
1026 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; 1030 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
1027 mDayLabels.resize( mDaysPerWeek ); 1031 mDayLabels.resize( mDaysPerWeek );
1028 mDayLabelsW.resize( mDaysPerWeek ); 1032 mDayLabelsW.resize( mDaysPerWeek );
1029 QFont bfont = font(); 1033 QFont bfont = font();
1030 if ( QApplication::desktop()->width() < 650 ) { 1034 if ( QApplication::desktop()->width() < 650 ) {
1031 bfont.setPointSize( bfont.pointSize() - 2 ); 1035 bfont.setPointSize( bfont.pointSize() - 2 );
1032 } 1036 }
1033 bfont.setBold( true ); 1037 bfont.setBold( true );
1034 int i; 1038 int i;
1035 1039
1036 for( i = 0; i < mDaysPerWeek; i++ ) { 1040 for( i = 0; i < mDaysPerWeek; i++ ) {
1037 QLabel *label = new QLabel( mMonthView ); 1041 QLabel *label = new QLabel( mMonthView );
1038 label->setFont(bfont); 1042 label->setFont(bfont);
1039 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 1043 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
1040 label->setLineWidth(1); 1044 label->setLineWidth(1);
1041 label->setAlignment(AlignCenter); 1045 label->setAlignment(AlignCenter);
1042 mDayLabels.insert( i, label ); 1046 mDayLabels.insert( i, label );
1043 label = new QLabel( mWeekView ); 1047 label = new QLabel( mWeekView );
1044 label->setFont(bfont); 1048 label->setFont(bfont);
1045 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 1049 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
1046 label->setLineWidth(1); 1050 label->setLineWidth(1);
1047 label->setAlignment(AlignCenter); 1051 label->setAlignment(AlignCenter);
1048 mDayLabelsW.insert( i, label ); 1052 mDayLabelsW.insert( i, label );
1049 } 1053 }
1050 1054
1051 bfont.setBold( false ); 1055 bfont.setBold( false );
1052 mWeekLabels.resize( mNumWeeks+1 ); 1056 mWeekLabels.resize( mNumWeeks+1 );
1053 mWeekLabelsW.resize( 2 ); 1057 mWeekLabelsW.resize( 2 );
1054 for( i = 0; i < mNumWeeks+1; i++ ) { 1058 for( i = 0; i < mNumWeeks+1; i++ ) {
1055 KOWeekButton *label = new KOWeekButton( mMonthView ); 1059 KOWeekButton *label = new KOWeekButton( mMonthView );
1056 label->setFocusPolicy(NoFocus); 1060 label->setFocusPolicy(NoFocus);
1057 label->setFont(bfont); 1061 label->setFont(bfont);
1058 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) ); 1062 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) );
1059 label->setFlat(true); 1063 label->setFlat(true);
1060 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed")); 1064 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed"));
1061 //label->setFrameStyle(QFrame::Panel|QFrame::Raised); 1065 //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
1062 //label->setLineWidth(1); 1066 //label->setLineWidth(1);
1063 //label->setAlignment(AlignCenter); 1067 //label->setAlignment(AlignCenter);
1064 mWeekLabels.insert( i, label ); 1068 mWeekLabels.insert( i, label );
1065 } 1069 }
1066 mWeekLabels[mNumWeeks]->setText( i18n("W")); 1070 mWeekLabels[mNumWeeks]->setText( i18n("W"));
1067 mWeekLabels[0]->setFocusPolicy(WheelFocus); 1071 mWeekLabels[0]->setFocusPolicy(WheelFocus);
1068 QWhatsThis::add(mWeekLabels[mNumWeeks],i18n("Click on this to\nselect week number")); 1072 QWhatsThis::add(mWeekLabels[mNumWeeks],i18n("Click on this to\nselect week number"));
1069 1073
1070 for( i = 0; i < 1+1; i++ ) { 1074 for( i = 0; i < 1+1; i++ ) {
1071 KOWeekButton *label = new KOWeekButton( mWeekView ); 1075 KOWeekButton *label = new KOWeekButton( mWeekView );
1072 label->setFocusPolicy(NoFocus); 1076 label->setFocusPolicy(NoFocus);
1073 label->setFont(bfont); 1077 label->setFont(bfont);
1074 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) ); 1078 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) );
1075 label->setFlat(true); 1079 label->setFlat(true);
1076 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed")); 1080 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed"));
1077 //label->setFrameStyle(QFrame::Panel|QFrame::Raised); 1081 //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
1078 //label->setLineWidth(1); 1082 //label->setLineWidth(1);
1079 //label->setAlignment(AlignCenter); 1083 //label->setAlignment(AlignCenter);
1080 mWeekLabelsW.insert( i, label ); 1084 mWeekLabelsW.insert( i, label );
1081 } 1085 }
1082 mWeekLabelsW[1]->setText( i18n("W")); 1086 mWeekLabelsW[1]->setText( i18n("W"));
1083 mWeekLabelsW[0]->setFocusPolicy(WheelFocus); 1087 mWeekLabelsW[0]->setFocusPolicy(WheelFocus);
1084 1088
1085 1089
1086 int row, col; 1090 int row, col;
1087 mCells.resize( mNumCells ); 1091 mCells.resize( mNumCells );
1088 for( row = 0; row < mNumWeeks; ++row ) { 1092 for( row = 0; row < mNumWeeks; ++row ) {
1089 for( col = 0; col < mDaysPerWeek; ++col ) { 1093 for( col = 0; col < mDaysPerWeek; ++col ) {
1090 MonthViewCell *cell = new MonthViewCell( this, mMonthView ); 1094 MonthViewCell *cell = new MonthViewCell( this, mMonthView );
1091 mCells.insert( row * mDaysPerWeek + col, cell ); 1095 mCells.insert( row * mDaysPerWeek + col, cell );
1092 1096
1093 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 1097 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
1094 SLOT( defaultAction( Incidence * ) ) ); 1098 SLOT( defaultAction( Incidence * ) ) );
1095 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 1099 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
1096 SIGNAL( newEventSignal( QDateTime ) ) ); 1100 SIGNAL( newEventSignal( QDateTime ) ) );
1097 connect( cell, SIGNAL( showDaySignal( QDate ) ), 1101 connect( cell, SIGNAL( showDaySignal( QDate ) ),
1098 SIGNAL( showDaySignal( QDate ) ) ); 1102 SIGNAL( showDaySignal( QDate ) ) );
1099 } 1103 }
1100 } 1104 }
1101 mCellsW.resize( mDaysPerWeek ); 1105 mCellsW.resize( mDaysPerWeek );
1102 for( col = 0; col < mDaysPerWeek; ++col ) { 1106 for( col = 0; col < mDaysPerWeek; ++col ) {
1103 MonthViewCell *cell = new MonthViewCell( this, mWeekView ); 1107 MonthViewCell *cell = new MonthViewCell( this, mWeekView );
1104 mCellsW.insert( col, cell ); 1108 mCellsW.insert( col, cell );
1105 1109
1106 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 1110 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
1107 SLOT( defaultAction( Incidence * ) ) ); 1111 SLOT( defaultAction( Incidence * ) ) );
1108 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 1112 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
1109 SIGNAL( newEventSignal( QDateTime ) ) ); 1113 SIGNAL( newEventSignal( QDateTime ) ) );
1110 connect( cell, SIGNAL( showDaySignal( QDate ) ), 1114 connect( cell, SIGNAL( showDaySignal( QDate ) ),
1111 SIGNAL( showDaySignal( QDate ) ) ); 1115 SIGNAL( showDaySignal( QDate ) ) );
1112 cell->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont ); 1116 cell->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont );
1113 } 1117 }
1114 1118
1115 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) ); 1119 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) );
1116 mContextMenu = eventPopup(); 1120 mContextMenu = eventPopup();
1117 // updateConfig(); //useless here... 1121 // updateConfig(); //useless here...
1118 // ... but we need mWidthLongDayLabel computed 1122 // ... but we need mWidthLongDayLabel computed
1119 QFontMetrics fontmetric(mDayLabels[0]->font()); 1123 QFontMetrics fontmetric(mDayLabels[0]->font());
1120 mWidthLongDayLabel = 0; 1124 mWidthLongDayLabel = 0;
1121 for (int i = 0; i < 7; i++) { 1125 for (int i = 0; i < 7; i++) {
1122 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1)); 1126 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1));
1123 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width; 1127 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width;
1124 } 1128 }
1125 1129
1126 //mWeekLabels[mNumWeeks]->setText( i18n("W")); 1130 //mWeekLabels[mNumWeeks]->setText( i18n("W"));
1127 1131
1128#if 0 1132#if 0
1129 if ( mShowWeekView ) 1133 if ( mShowWeekView )
1130 mWidStack->raiseWidget( mWeekView ); 1134 mWidStack->raiseWidget( mWeekView );
1131 else 1135 else
1132 mWidStack->raiseWidget( mMonthView ); 1136 mWidStack->raiseWidget( mMonthView );
@@ -1182,384 +1186,385 @@ void KOMonthView::switchView()
1182 computeLayout(); 1186 computeLayout();
1183 updateConfig(); 1187 updateConfig();
1184 } 1188 }
1185 if ( mShowWeekView ) 1189 if ( mShowWeekView )
1186 mWidStack->raiseWidget( mWeekView ); 1190 mWidStack->raiseWidget( mWeekView );
1187 else 1191 else
1188 mWidStack->raiseWidget( mMonthView ); 1192 mWidStack->raiseWidget( mMonthView );
1189 clPending = false; 1193 clPending = false;
1190} 1194}
1191 1195
1192int KOMonthView::maxDatesHint() 1196int KOMonthView::maxDatesHint()
1193{ 1197{
1194 return mNumCells; 1198 return mNumCells;
1195} 1199}
1196 1200
1197int KOMonthView::currentDateCount() 1201int KOMonthView::currentDateCount()
1198{ 1202{
1199 return mNumCells; 1203 return mNumCells;
1200} 1204}
1201 1205
1202QPtrList<Incidence> KOMonthView::selectedIncidences() 1206QPtrList<Incidence> KOMonthView::selectedIncidences()
1203{ 1207{
1204 QPtrList<Incidence> selected; 1208 QPtrList<Incidence> selected;
1205 1209
1206 if ( mSelectedCell ) { 1210 if ( mSelectedCell ) {
1207 Incidence *incidence = mSelectedCell->selectedIncidence(); 1211 Incidence *incidence = mSelectedCell->selectedIncidence();
1208 if ( incidence ) selected.append( incidence ); 1212 if ( incidence ) selected.append( incidence );
1209 } 1213 }
1210 1214
1211 return selected; 1215 return selected;
1212} 1216}
1213 1217
1214DateList KOMonthView::selectedDates() 1218DateList KOMonthView::selectedDates()
1215{ 1219{
1216 DateList selected; 1220 DateList selected;
1217 1221
1218 if ( mSelectedCell ) { 1222 if ( mSelectedCell ) {
1219 QDate qd = mSelectedCell->selectedIncidenceDate(); 1223 QDate qd = mSelectedCell->selectedIncidenceDate();
1220 if ( qd.isValid() ) selected.append( qd ); 1224 if ( qd.isValid() ) selected.append( qd );
1221 } 1225 }
1222 1226
1223 return selected; 1227 return selected;
1224} 1228}
1225 1229
1226void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd, 1230void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd,
1227 const QDate &td) 1231 const QDate &td)
1228{ 1232{
1229#ifndef KORG_NOPRINTER 1233#ifndef KORG_NOPRINTER
1230 calPrinter->preview(CalPrinter::Month, fd, td); 1234 calPrinter->preview(CalPrinter::Month, fd, td);
1231#endif 1235#endif
1232} 1236}
1233 1237
1234void KOMonthView::updateConfig() 1238void KOMonthView::updateConfig()
1235{ 1239{
1236 1240
1237 int mWeekStartsMonday = KGlobal::locale()->weekStartsMonday(); 1241 int mWeekStartsMonday = KGlobal::locale()->weekStartsMonday();
1238 1242
1239 if ( mShowWeekView || KOPrefs::instance()->mMonthViewSatSunTog ) { 1243 if ( mShowWeekView || KOPrefs::instance()->mMonthViewSatSunTog ) {
1240 mWeekStartsMonday = true; 1244 mWeekStartsMonday = true;
1241 } 1245 }
1242 QFontMetrics fontmetric(mDayLabels[0]->font()); 1246 QFontMetrics fontmetric(mDayLabels[0]->font());
1243 mWidthLongDayLabel = 0; 1247 mWidthLongDayLabel = 0;
1244 1248
1245 for (int i = 0; i < 7; i++) { 1249 for (int i = 0; i < 7; i++) {
1246 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1)); 1250 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1));
1247 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width; 1251 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width;
1248 } 1252 }
1249 bool temp = mShowSatSunComp ; 1253 bool temp = mShowSatSunComp ;
1250 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; 1254 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
1251 if ( ! mShowWeekView ) { 1255 if ( ! mShowWeekView ) {
1252 if ( temp != KOPrefs::instance()->mMonthViewSatSunTog ) 1256 if ( temp != KOPrefs::instance()->mMonthViewSatSunTog )
1253 computeLayout(); 1257 computeLayout();
1254 } 1258 }
1255 updateDayLabels(); 1259 updateDayLabels();
1256 //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks); 1260 //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks);
1257 //int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks; 1261 //int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks;
1258 //resizeEvent( 0 ); 1262 //resizeEvent( 0 );
1259 for (uint i = 0; i < mCells.count(); ++i) { 1263 for (uint i = 0; i < mCells.count(); ++i) {
1260 mCells[i]->updateConfig(); 1264 mCells[i]->updateConfig();
1261 } 1265 }
1262 1266
1263 for (uint i = 0; i < mCellsW.count(); ++i) { 1267 for (uint i = 0; i < mCellsW.count(); ++i) {
1264 mCellsW[i]->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont); 1268 mCellsW[i]->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont);
1265 } 1269 }
1266#ifdef DESKTOP_VERSION 1270#ifdef DESKTOP_VERSION
1267 MonthViewCell::toolTipGroup()->setEnabled(KOPrefs::instance()->mEnableToolTips); 1271 MonthViewCell::toolTipGroup()->setEnabled(KOPrefs::instance()->mEnableToolTips);
1268#endif 1272#endif
1269 updateView(); 1273 updateView();
1270} 1274}
1271 1275
1272void KOMonthView::updateDayLabels() 1276void KOMonthView::updateDayLabels()
1273{ 1277{
1274 1278
1275 QPtrVector<QLabel> *mDayLabelsT; 1279 QPtrVector<QLabel> *mDayLabelsT;
1276 1280
1277 mDayLabelsT = &mDayLabelsW; 1281 mDayLabelsT = &mDayLabelsW;
1278 for (int i = 0; i < 7; i++) { 1282 for (int i = 0; i < 7; i++) {
1279 { 1283 {
1280 bool show = mShortDayLabelsW; 1284 bool show = mShortDayLabelsW;
1281 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() ) 1285 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() )
1282 show = true; 1286 show = true;
1283 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show)); 1287 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show));
1284 } 1288 }
1285 } 1289 }
1286 mDayLabelsT = &mDayLabels; 1290 mDayLabelsT = &mDayLabels;
1287 for (int i = 0; i < 7; i++) { 1291 for (int i = 0; i < 7; i++) {
1288 if (KGlobal::locale()->weekStartsMonday() || KOPrefs::instance()->mMonthViewSatSunTog ) { 1292 if (KGlobal::locale()->weekStartsMonday() || KOPrefs::instance()->mMonthViewSatSunTog ) {
1289 bool show = mShortDayLabelsM; 1293 bool show = mShortDayLabelsM;
1290 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() ) 1294 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() )
1291 show = true; 1295 show = true;
1292 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show)); 1296 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show));
1293 } else { 1297 } else {
1294 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabelsM)); 1298 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabelsM));
1295 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabelsM)); 1299 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabelsM));
1296 1300
1297 } 1301 }
1298 } 1302 }
1299 1303
1300} 1304}
1301 1305
1302void KOMonthView::showDates(const QDate &start, const QDate &) 1306void KOMonthView::showDates(const QDate &start, const QDate &)
1303{ 1307{
1304 // kdDebug() << "KOMonthView::showDates(): " << start.toString() << endl; 1308 // kdDebug() << "KOMonthView::showDates(): " << start.toString() << endl;
1305 1309
1306 QPtrVector<MonthViewCell> *cells; 1310 QPtrVector<MonthViewCell> *cells;
1307 QPtrVector<QLabel> *dayLabels; 1311 QPtrVector<QLabel> *dayLabels;
1308 QPtrVector<KOWeekButton> *weekLabels; 1312 QPtrVector<KOWeekButton> *weekLabels;
1309 int weekNum = 6; 1313 int weekNum = 6;
1310 mStartDate = start; 1314 mStartDate = start;
1311 if ( mShowWeekView ) { 1315 if ( mShowWeekView ) {
1312 weekNum = 1; 1316 weekNum = 1;
1313 cells = &mCellsW; 1317 cells = &mCellsW;
1314 dayLabels = &mDayLabelsW; 1318 dayLabels = &mDayLabelsW;
1315 weekLabels = &mWeekLabelsW; 1319 weekLabels = &mWeekLabelsW;
1316 if ( !KGlobal::locale()->weekStartsMonday() ) { 1320 if ( !KGlobal::locale()->weekStartsMonday() ) {
1317 mStartDate = mStartDate.addDays( 1 ); 1321 mStartDate = mStartDate.addDays( 1 );
1318 } 1322 }
1319 } else { 1323 } else {
1320 cells = &mCells; 1324 cells = &mCells;
1321 dayLabels = &mDayLabels; 1325 dayLabels = &mDayLabels;
1322 weekLabels = &mWeekLabels; 1326 weekLabels = &mWeekLabels;
1323 } 1327 }
1324 1328
1325 int mWeekStartsMonday = KGlobal::locale()->weekStartsMonday(); 1329 int mWeekStartsMonday = KGlobal::locale()->weekStartsMonday();
1326 1330
1327 if ( mShowWeekView || KOPrefs::instance()->mMonthViewSatSunTog ) { 1331 if ( mShowWeekView || KOPrefs::instance()->mMonthViewSatSunTog ) {
1328 mWeekStartsMonday = true; 1332 mWeekStartsMonday = true;
1329 } 1333 }
1330 int startWeekDay = mWeekStartsMonday ? 1 : 7; 1334 int startWeekDay = mWeekStartsMonday ? 1 : 7;
1331 1335
1332 while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) { 1336 while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) {
1333 mStartDate = mStartDate.addDays( -1 ); 1337 mStartDate = mStartDate.addDays( -1 );
1334 } 1338 }
1335 bool primary = false; 1339 bool primary = false;
1336 uint i; 1340 uint i;
1337 for( i = 0; i < (*cells).size(); ++i ) { 1341 for( i = 0; i < (*cells).size(); ++i ) {
1338 QDate date = mStartDate.addDays( i ); 1342 QDate date = mStartDate.addDays( i );
1339 (*cells)[i]->setDate( date ); 1343 (*cells)[i]->setDate( date );
1340 1344
1341#ifndef KORG_NOPLUGINS 1345#ifndef KORG_NOPLUGINS
1342 // add holiday, if present 1346 // add holiday, if present
1343 QString hstring(KOCore::self()->holiday(date)); 1347 QString hstring(KOCore::self()->holiday(date));
1344 (*cells)[i]->setHoliday( hstring ); 1348 (*cells)[i]->setHoliday( hstring );
1345#endif 1349#endif
1346 1350
1347 } 1351 }
1348 QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 ); 1352 QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 );
1349 for( i = 0; i < weekNum; ++i ) { 1353 for( i = 0; i < weekNum; ++i ) {
1350 int wno; 1354 int wno;
1351 // remember, according to ISO 8601, the first week of the year is the 1355 // remember, according to ISO 8601, the first week of the year is the
1352 // first week that contains a thursday. Thus we must subtract off 4, 1356 // first week that contains a thursday. Thus we must subtract off 4,
1353 // not just 1. 1357 // not just 1.
1354 int dayOfYear = date.dayOfYear(); 1358 int dayOfYear = date.dayOfYear();
1355 if (dayOfYear % 7 != 0) 1359 if (dayOfYear % 7 != 0)
1356 wno = dayOfYear / 7 + 1; 1360 wno = dayOfYear / 7 + 1;
1357 else 1361 else
1358 wno =dayOfYear / 7; 1362 wno =dayOfYear / 7;
1359 (*weekLabels)[i]->setWeekNum( wno ); 1363 (*weekLabels)[i]->setWeekNum( wno );
1360 date = date.addDays( 7 ); 1364 date = date.addDays( 7 );
1361 } 1365 }
1362 updateView(); 1366 updateView();
1363} 1367}
1364 1368
1365void KOMonthView::showEvents(QPtrList<Event>) 1369void KOMonthView::showEvents(QPtrList<Event>)
1366{ 1370{
1367 qDebug("KOMonthView::selectEvents is not implemented yet. "); 1371 qDebug("KOMonthView::selectEvents is not implemented yet. ");
1368} 1372}
1369 1373
1370void KOMonthView::changeEventDisplay(Event *, int) 1374void KOMonthView::changeEventDisplay(Event *, int)
1371{ 1375{
1372 // this should be re-written to be much more efficient, but this 1376 // this should be re-written to be much more efficient, but this
1373 // quick-and-dirty-hack gets the job done for right now. 1377 // quick-and-dirty-hack gets the job done for right now.
1378 qDebug("KOMonthView::changeEventDisplay ");
1374 updateView(); 1379 updateView();
1375} 1380}
1376 1381
1377void KOMonthView::updateView() 1382void KOMonthView::updateView()
1378{ 1383{
1379 1384
1380 if ( !updatePossible ) 1385 if ( !updatePossible )
1381 return; 1386 return;
1382 //qDebug("UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU "); 1387 //qDebug("UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU ");
1383 //QTime ti; 1388 //QTime ti;
1384 //ti.start(); 1389 //ti.start();
1385 clearSelection(); 1390 clearSelection();
1386 QPtrVector<MonthViewCell> *cells; 1391 QPtrVector<MonthViewCell> *cells;
1387 if ( mShowWeekView ) { 1392 if ( mShowWeekView ) {
1388 cells = &mCellsW; 1393 cells = &mCellsW;
1389 } else { 1394 } else {
1390 cells = &mCells; 1395 cells = &mCells;
1391 } 1396 }
1392#if 1 1397#if 1
1393 int i; 1398 int i;
1394 int timeSpan = (*cells).size()-1; 1399 int timeSpan = (*cells).size()-1;
1395 if ( KOPrefs::instance()->mMonthViewWeek ) 1400 if ( KOPrefs::instance()->mMonthViewWeek )
1396 timeSpan = 6; 1401 timeSpan = 6;
1397 for( i = 0; i < timeSpan + 1; ++i ) { 1402 for( i = 0; i < timeSpan + 1; ++i ) {
1398 (*cells)[i]->startUpdateCell(); 1403 (*cells)[i]->startUpdateCell();
1399 } 1404 }
1400 1405
1401 QPtrList<Event> events = calendar()->events(); 1406 QPtrList<Event> events = calendar()->events();
1402 Event *event; 1407 Event *event;
1403 QDateTime dt; 1408 QDateTime dt;
1404 bool ok; 1409 bool ok;
1405 QDate endDate = mStartDate.addDays( timeSpan ); 1410 QDate endDate = mStartDate.addDays( timeSpan );
1406 for( event = events.first(); event; event = events.next() ) { // for event 1411 for( event = events.first(); event; event = events.next() ) { // for event
1407 if ( event->doesRecur() ) { 1412 if ( event->doesRecur() ) {
1408 bool last; 1413 bool last;
1409 QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last ); 1414 QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last );
1410 QDateTime incidenceEnd; 1415 QDateTime incidenceEnd;
1411 int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() ); 1416 int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() );
1412 bool invalid = false; 1417 bool invalid = false;
1413 while( true ) { 1418 while( true ) {
1414 if ( incidenceStart.isValid() ) { 1419 if ( incidenceStart.isValid() ) {
1415 incidenceEnd = incidenceStart.addDays( eventlen ); 1420 incidenceEnd = incidenceStart.addDays( eventlen );
1416 int st = incidenceStart.date().daysTo( endDate ); 1421 int st = incidenceStart.date().daysTo( endDate );
1417 if ( st >= 0 ) { // start before timeend 1422 if ( st >= 0 ) { // start before timeend
1418 int end = mStartDate.daysTo( incidenceEnd.date() ); 1423 int end = mStartDate.daysTo( incidenceEnd.date() );
1419 if ( end >= 0 ) { // end after timestart --- got one! 1424 if ( end >= 0 ) { // end after timestart --- got one!
1420 //normalize 1425 //normalize
1421 st = timeSpan - st; 1426 st = timeSpan - st;
1422 if ( st < 0 ) st = 0; 1427 if ( st < 0 ) st = 0;
1423 if ( end > timeSpan ) end = timeSpan; 1428 if ( end > timeSpan ) end = timeSpan;
1424 int iii; 1429 int iii;
1425 //qDebug("found %s %d %d ",event->summary().latin1(), st, end ); 1430 //qDebug("found %s %d %d ",event->summary().latin1(), st, end );
1426 for ( iii = st;iii<= end;++iii) 1431 for ( iii = st;iii<= end;++iii)
1427 (*cells)[iii]->insertEvent( event ); 1432 (*cells)[iii]->insertEvent( event );
1428 } 1433 }
1429 } 1434 }
1430 } else { 1435 } else {
1431 if ( invalid ) 1436 if ( invalid )
1432 break; 1437 break;
1433 invalid = true; 1438 invalid = true;
1434 //qDebug("invalid %s", event->summary().latin1()); 1439 //qDebug("invalid %s", event->summary().latin1());
1435 incidenceStart = QDateTime( mStartDate ).addSecs( -2 );; 1440 incidenceStart = QDateTime( mStartDate ).addSecs( -2 );;
1436 } 1441 }
1437 if ( last ) 1442 if ( last )
1438 break; 1443 break;
1439 bool ok; 1444 bool ok;
1440 incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok ); 1445 incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok );
1441 if ( ! ok ) 1446 if ( ! ok )
1442 break; 1447 break;
1443 if ( incidenceStart.date() > endDate ) 1448 if ( incidenceStart.date() > endDate )
1444 break; 1449 break;
1445 } 1450 }
1446 } else { // no recur 1451 } else { // no recur
1447 int st = event->dtStart().date().daysTo( endDate ); 1452 int st = event->dtStart().date().daysTo( endDate );
1448 if ( st >= 0 ) { // start before timeend 1453 if ( st >= 0 ) { // start before timeend
1449 int end = mStartDate.daysTo( event->dtEnd().date() ); 1454 int end = mStartDate.daysTo( event->dtEnd().date() );
1450 if ( end >= 0 ) { // end after timestart --- got one! 1455 if ( end >= 0 ) { // end after timestart --- got one!
1451 //normalize 1456 //normalize
1452 st = timeSpan - st; 1457 st = timeSpan - st;
1453 if ( st < 0 ) st = 0; 1458 if ( st < 0 ) st = 0;
1454 if ( end > timeSpan ) end = timeSpan; 1459 if ( end > timeSpan ) end = timeSpan;
1455 int iii; 1460 int iii;
1456 for ( iii = st;iii<= end;++iii) 1461 for ( iii = st;iii<= end;++iii)
1457 (*cells)[iii]->insertEvent( event ); 1462 (*cells)[iii]->insertEvent( event );
1458 } 1463 }
1459 } 1464 }
1460 } 1465 }
1461 } 1466 }
1462 // insert due todos 1467 // insert due todos
1463 QPtrList<Todo> todos = calendar()->todos( ); 1468 QPtrList<Todo> todos = calendar()->todos( );
1464 Todo *todo; 1469 Todo *todo;
1465 for(todo = todos.first(); todo; todo = todos.next()) { 1470 for(todo = todos.first(); todo; todo = todos.next()) {
1466 //insertTodo( todo ); 1471 //insertTodo( todo );
1467 if ( todo->hasDueDate() ) { 1472 if ( todo->hasDueDate() ) {
1468 int day = mStartDate.daysTo( todo->dtDue().date() ); 1473 int day = mStartDate.daysTo( todo->dtDue().date() );
1469 if ( day >= 0 && day < timeSpan + 1) { 1474 if ( day >= 0 && day < timeSpan + 1) {
1470 (*cells)[day]->insertTodo( todo ); 1475 (*cells)[day]->insertTodo( todo );
1471 } 1476 }
1472 } 1477 }
1473 } 1478 }
1474 1479
1475 for( i = 0; i < timeSpan+1; ++i ) { 1480 for( i = 0; i < timeSpan+1; ++i ) {
1476 (*cells)[i]->finishUpdateCell(); 1481 (*cells)[i]->finishUpdateCell();
1477 } 1482 }
1478 processSelectionChange(); 1483 processSelectionChange();
1479 //qApp->processEvents(); 1484 //qApp->processEvents();
1480 for( i = 0; i < timeSpan+1; ++i ) { 1485 for( i = 0; i < timeSpan+1; ++i ) {
1481 (*cells)[i]->repaintfinishUpdateCell(); 1486 (*cells)[i]->repaintfinishUpdateCell();
1482 } 1487 }
1483 setKeyBFocus(); 1488 setKeyBFocus();
1484#else 1489#else
1485 // old code 1490 // old code
1486 //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ "); 1491 //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ");
1487 int i; 1492 int i;
1488 for( i = 0; i < (*cells).count(); ++i ) { 1493 for( i = 0; i < (*cells).count(); ++i ) {
1489 (*cells)[i]->updateCell(); 1494 (*cells)[i]->updateCell();
1490 } 1495 }
1491 1496
1492 //qDebug("KOMonthView::updateView() "); 1497 //qDebug("KOMonthView::updateView() ");
1493 processSelectionChange(); 1498 processSelectionChange();
1494 // qDebug("---------------------------------------------------------------------+ "); 1499 // qDebug("---------------------------------------------------------------------+ ");
1495 (*cells)[0]->setFocus(); 1500 (*cells)[0]->setFocus();
1496#endif 1501#endif
1497 1502
1498 //qDebug("update time %d ", ti.elapsed()); 1503 //qDebug("update time %d ", ti.elapsed());
1499} 1504}
1500 1505
1501void KOMonthView::setKeyBoardFocus() 1506void KOMonthView::setKeyBoardFocus()
1502{ 1507{
1503 bool shootAgain = false; 1508 bool shootAgain = false;
1504 if ( mShowWeekView ) { 1509 if ( mShowWeekView ) {
1505 shootAgain = !mWeekLabelsW[0]->hasFocus(); 1510 shootAgain = !mWeekLabelsW[0]->hasFocus();
1506 mWeekLabelsW[0]->setFocus(); 1511 mWeekLabelsW[0]->setFocus();
1507 } 1512 }
1508 else { 1513 else {
1509 shootAgain = !mWeekLabels[0]->hasFocus(); 1514 shootAgain = !mWeekLabels[0]->hasFocus();
1510 mWeekLabels[0]->setFocus(); 1515 mWeekLabels[0]->setFocus();
1511 } 1516 }
1512 if ( shootAgain ) { 1517 if ( shootAgain ) {
1513 QTimer::singleShot( 0, this, SLOT ( setKeyBFocus() ) ); 1518 QTimer::singleShot( 0, this, SLOT ( setKeyBFocus() ) );
1514 } 1519 }
1515} 1520}
1516void KOMonthView::setKeyBFocus() 1521void KOMonthView::setKeyBFocus()
1517{ 1522{
1518 //qDebug("KOMonthView::setKeyBFocus() "); 1523 //qDebug("KOMonthView::setKeyBFocus() ");
1519 QTimer::singleShot( 0, this, SLOT ( setKeyBoardFocus() ) ); 1524 QTimer::singleShot( 0, this, SLOT ( setKeyBoardFocus() ) );
1520} 1525}
1521void KOMonthView::resizeEvent(QResizeEvent * e) 1526void KOMonthView::resizeEvent(QResizeEvent * e)
1522{ 1527{
1523 //qDebug("KOMonthView::resizeEvent %d %d -- %d %d ", e->size().width(), e->size().height(), e->oldSize().width(), e->oldSize().height()); 1528 //qDebug("KOMonthView::resizeEvent %d %d -- %d %d ", e->size().width(), e->size().height(), e->oldSize().width(), e->oldSize().height());
1524 if ( isVisible() ) { 1529 if ( isVisible() ) {
1525 //qDebug("KOMonthView::isVisible "); 1530 //qDebug("KOMonthView::isVisible ");
1526 slotComputeLayout(); 1531 slotComputeLayout();
1527 } else 1532 } else
1528 mComputeLayoutTimer->start( 100 ); 1533 mComputeLayoutTimer->start( 100 );
1529} 1534}
1530 1535
1531void KOMonthView::slotComputeLayout() 1536void KOMonthView::slotComputeLayout()
1532{ 1537{
1533 mComputeLayoutTimer->stop(); 1538 mComputeLayoutTimer->stop();
1534 //qDebug("KOMonthView::Post - resizeEvent %d %d ", width(), height() ); 1539 //qDebug("KOMonthView::Post - resizeEvent %d %d ", width(), height() );
1535 computeLayout(); 1540 computeLayout();
1536 clPending = true; 1541 clPending = true;
1537 setKeyBFocus(); 1542 setKeyBFocus();
1538} 1543}
1539void KOMonthView::computeLayoutWeek() 1544void KOMonthView::computeLayoutWeek()
1540{ 1545{
1541 static int lastWid = 0; 1546 static int lastWid = 0;
1542 static int lastHei = 0; 1547 static int lastHei = 0;
1543 int daysToShow; 1548 int daysToShow;
1544 bool combinedSatSun = false; 1549 bool combinedSatSun = false;
1545 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { 1550 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) {
1546 daysToShow = 6; 1551 daysToShow = 6;
1547 combinedSatSun = true; 1552 combinedSatSun = true;
1548 } 1553 }
1549 int tWid = topLevelWidget()->size().width(); 1554 int tWid = topLevelWidget()->size().width();
1550 int tHei = topLevelWidget()->size().height(); 1555 int tHei = topLevelWidget()->size().height();
1551 1556
1552 int wid = width();//e 1557 int wid = width();//e
1553 int hei = height()-1-mNavigatorBar->height(); 1558 int hei = height()-1-mNavigatorBar->height();
1554 1559
1555 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) 1560 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei )
1556 return; 1561 return;
1557 1562
1558 if ( lastWid == width() && lastHei == height() ) { 1563 if ( lastWid == width() && lastHei == height() ) {
1559 //qDebug("KOListWeekView::No compute layout needed "); 1564 //qDebug("KOListWeekView::No compute layout needed ");
1560 return; 1565 return;
1561 } 1566 }
1562 lastWid = width(); 1567 lastWid = width();
1563 lastHei = height(); 1568 lastHei = height();
1564 1569
1565 1570