author | zautrix <zautrix> | 2005-03-31 23:55:51 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-03-31 23:55:51 (UTC) |
commit | b76ad1e7e329051a47e28c9d132ce3fcd0b25c5c (patch) (unidiff) | |
tree | b0b3d0eb7a3d29981c183275aadeed0cbbef0007 /korganizer/komonthview.cpp | |
parent | c0fa26aa3b33c293853bdd7d028ddb0545e33c85 (diff) | |
download | kdepimpi-b76ad1e7e329051a47e28c9d132ce3fcd0b25c5c.zip kdepimpi-b76ad1e7e329051a47e28c9d132ce3fcd0b25c5c.tar.gz kdepimpi-b76ad1e7e329051a47e28c9d132ce3fcd0b25c5c.tar.bz2 |
fixes
-rw-r--r-- | korganizer/komonthview.cpp | 7 |
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 | } |
751 | void MonthViewCell::repaintfinishUpdateCell() | 751 | void 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 | } |
760 | void MonthViewCell::finishUpdateCell() | 760 | void 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 | } |
783 | void MonthViewCell::updateCell() | 783 | void 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 | ||
806 | void MonthViewCell::updateConfig( bool bigFont ) // = false | 806 | void 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 | ||
839 | void MonthViewCell::enableScrollBars( bool enabled ) | 839 | void 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 | ||
865 | Incidence *MonthViewCell::selectedIncidence() | 865 | Incidence *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 | ||
878 | QDate MonthViewCell::selectedIncidenceDate() | 878 | QDate 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 | ||
892 | void MonthViewCell::deselect() | 892 | void MonthViewCell::deselect() |
893 | { | 893 | { |
894 | clearSelection(); | 894 | clearSelection(); |
895 | enableScrollBars( false ); | 895 | enableScrollBars( false ); |
896 | // updateCell(); | 896 | // updateCell(); |
897 | } | 897 | } |
898 | void MonthViewCell::select() | 898 | void MonthViewCell::select() |
899 | { | 899 | { |
900 | ;// updateCell(); | 900 | ;// updateCell(); |
901 | } | 901 | } |
902 | 902 | ||
903 | void MonthViewCell::resizeEvent ( QResizeEvent * e ) | 903 | void 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 | ||
938 | void MonthViewCell::defaultAction( QListBoxItem *item ) | 938 | void 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 | } |
946 | void MonthViewCell::showDay() | 950 | void MonthViewCell::showDay() |
947 | { | 951 | { |
948 | emit showDaySignal( date() ); | 952 | emit showDaySignal( date() ); |
949 | } | 953 | } |
950 | void MonthViewCell::newEvent() | 954 | void 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 | } |
955 | void MonthViewCell::cellClicked( QListBoxItem *item ) | 959 | void 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 | ||
976 | void MonthViewCell::contextMenu( QListBoxItem *item ) | 980 | void 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 | ||
985 | void MonthViewCell::selection( QListBoxItem *item ) | 989 | void 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 | ||
998 | KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name) | 1002 | KOMonthView::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 | ||
1192 | int KOMonthView::maxDatesHint() | 1196 | int KOMonthView::maxDatesHint() |
1193 | { | 1197 | { |
1194 | return mNumCells; | 1198 | return mNumCells; |
1195 | } | 1199 | } |
1196 | 1200 | ||
1197 | int KOMonthView::currentDateCount() | 1201 | int KOMonthView::currentDateCount() |
1198 | { | 1202 | { |
1199 | return mNumCells; | 1203 | return mNumCells; |
1200 | } | 1204 | } |
1201 | 1205 | ||
1202 | QPtrList<Incidence> KOMonthView::selectedIncidences() | 1206 | QPtrList<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 | ||
1214 | DateList KOMonthView::selectedDates() | 1218 | DateList 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 | ||
1226 | void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd, | 1230 | void 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 | ||
1234 | void KOMonthView::updateConfig() | 1238 | void 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 | ||
1272 | void KOMonthView::updateDayLabels() | 1276 | void 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 | ||
1302 | void KOMonthView::showDates(const QDate &start, const QDate &) | 1306 | void 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 | ||
1365 | void KOMonthView::showEvents(QPtrList<Event>) | 1369 | void 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 | ||
1370 | void KOMonthView::changeEventDisplay(Event *, int) | 1374 | void 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 | ||
1377 | void KOMonthView::updateView() | 1382 | void 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 | ||
1501 | void KOMonthView::setKeyBoardFocus() | 1506 | void 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 | } |
1516 | void KOMonthView::setKeyBFocus() | 1521 | void 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 | } |
1521 | void KOMonthView::resizeEvent(QResizeEvent * e) | 1526 | void 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 | ||
1531 | void KOMonthView::slotComputeLayout() | 1536 | void 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 | } |
1539 | void KOMonthView::computeLayoutWeek() | 1544 | void 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 | ||