summaryrefslogtreecommitdiffabout
path: root/korganizer
authorzautrix <zautrix>2005-02-05 11:26:35 (UTC)
committer zautrix <zautrix>2005-02-05 11:26:35 (UTC)
commit86c0d35262454a31ed7d50d3e20cbdace954ebdf (patch) (unidiff)
tree7ded091fe9111fe20014f8edbc5f338293e36386 /korganizer
parent3a822a4c4867acb28dc1b3b9557918d0971f732c (diff)
downloadkdepimpi-86c0d35262454a31ed7d50d3e20cbdace954ebdf.zip
kdepimpi-86c0d35262454a31ed7d50d3e20cbdace954ebdf.tar.gz
kdepimpi-86c0d35262454a31ed7d50d3e20cbdace954ebdf.tar.bz2
another fixx
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/komonthview.cpp2
-rw-r--r--korganizer/kotodoviewitem.cpp26
-rw-r--r--korganizer/mainwindow.cpp11
3 files changed, 22 insertions, 17 deletions
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp
index 31c5659..cb519b2 100644
--- a/korganizer/komonthview.cpp
+++ b/korganizer/komonthview.cpp
@@ -821,758 +821,758 @@ KOMonthView::KOMonthView(Calendar *calendar, QWidget *parent, const char *name)
821 mDayLabelsW.resize( mDaysPerWeek ); 821 mDayLabelsW.resize( mDaysPerWeek );
822 QFont bfont = font(); 822 QFont bfont = font();
823 if ( QApplication::desktop()->width() < 650 ) { 823 if ( QApplication::desktop()->width() < 650 ) {
824 bfont.setPointSize( bfont.pointSize() - 2 ); 824 bfont.setPointSize( bfont.pointSize() - 2 );
825 } 825 }
826 bfont.setBold( true ); 826 bfont.setBold( true );
827 int i; 827 int i;
828 828
829 for( i = 0; i < mDaysPerWeek; i++ ) { 829 for( i = 0; i < mDaysPerWeek; i++ ) {
830 QLabel *label = new QLabel( mMonthView ); 830 QLabel *label = new QLabel( mMonthView );
831 label->setFont(bfont); 831 label->setFont(bfont);
832 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 832 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
833 label->setLineWidth(1); 833 label->setLineWidth(1);
834 label->setAlignment(AlignCenter); 834 label->setAlignment(AlignCenter);
835 mDayLabels.insert( i, label ); 835 mDayLabels.insert( i, label );
836 label = new QLabel( mWeekView ); 836 label = new QLabel( mWeekView );
837 label->setFont(bfont); 837 label->setFont(bfont);
838 label->setFrameStyle(QFrame::Panel|QFrame::Raised); 838 label->setFrameStyle(QFrame::Panel|QFrame::Raised);
839 label->setLineWidth(1); 839 label->setLineWidth(1);
840 label->setAlignment(AlignCenter); 840 label->setAlignment(AlignCenter);
841 mDayLabelsW.insert( i, label ); 841 mDayLabelsW.insert( i, label );
842 } 842 }
843 843
844 bfont.setBold( false ); 844 bfont.setBold( false );
845 mWeekLabels.resize( mNumWeeks+1 ); 845 mWeekLabels.resize( mNumWeeks+1 );
846 mWeekLabelsW.resize( 2 ); 846 mWeekLabelsW.resize( 2 );
847 for( i = 0; i < mNumWeeks+1; i++ ) { 847 for( i = 0; i < mNumWeeks+1; i++ ) {
848 KOWeekButton *label = new KOWeekButton( mMonthView ); 848 KOWeekButton *label = new KOWeekButton( mMonthView );
849 label->setFocusPolicy(NoFocus); 849 label->setFocusPolicy(NoFocus);
850 label->setFont(bfont); 850 label->setFont(bfont);
851 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) ); 851 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) );
852 label->setFlat(true); 852 label->setFlat(true);
853 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed")); 853 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed"));
854 //label->setFrameStyle(QFrame::Panel|QFrame::Raised); 854 //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
855 //label->setLineWidth(1); 855 //label->setLineWidth(1);
856 //label->setAlignment(AlignCenter); 856 //label->setAlignment(AlignCenter);
857 mWeekLabels.insert( i, label ); 857 mWeekLabels.insert( i, label );
858 } 858 }
859 mWeekLabels[mNumWeeks]->setText( i18n("W")); 859 mWeekLabels[mNumWeeks]->setText( i18n("W"));
860 QWhatsThis::add(mWeekLabels[mNumWeeks],i18n("Click on this to\nselect week number")); 860 QWhatsThis::add(mWeekLabels[mNumWeeks],i18n("Click on this to\nselect week number"));
861 861
862 for( i = 0; i < 1+1; i++ ) { 862 for( i = 0; i < 1+1; i++ ) {
863 KOWeekButton *label = new KOWeekButton( mWeekView ); 863 KOWeekButton *label = new KOWeekButton( mWeekView );
864 label->setFocusPolicy(NoFocus); 864 label->setFocusPolicy(NoFocus);
865 label->setFont(bfont); 865 label->setFont(bfont);
866 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) ); 866 connect( label, SIGNAL( selectWeekNum ( int )),this, SLOT( selectInternalWeekNum ( int )) );
867 label->setFlat(true); 867 label->setFlat(true);
868 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed")); 868 QWhatsThis::add(label,i18n("Click on the week number to\nshow week zoomed"));
869 //label->setFrameStyle(QFrame::Panel|QFrame::Raised); 869 //label->setFrameStyle(QFrame::Panel|QFrame::Raised);
870 //label->setLineWidth(1); 870 //label->setLineWidth(1);
871 //label->setAlignment(AlignCenter); 871 //label->setAlignment(AlignCenter);
872 mWeekLabelsW.insert( i, label ); 872 mWeekLabelsW.insert( i, label );
873 } 873 }
874 mWeekLabelsW[1]->setText( i18n("W")); 874 mWeekLabelsW[1]->setText( i18n("W"));
875 875
876 876
877 int row, col; 877 int row, col;
878 mCells.resize( mNumCells ); 878 mCells.resize( mNumCells );
879 for( row = 0; row < mNumWeeks; ++row ) { 879 for( row = 0; row < mNumWeeks; ++row ) {
880 for( col = 0; col < mDaysPerWeek; ++col ) { 880 for( col = 0; col < mDaysPerWeek; ++col ) {
881 MonthViewCell *cell = new MonthViewCell( this, mMonthView ); 881 MonthViewCell *cell = new MonthViewCell( this, mMonthView );
882 mCells.insert( row * mDaysPerWeek + col, cell ); 882 mCells.insert( row * mDaysPerWeek + col, cell );
883 883
884 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 884 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
885 SLOT( defaultAction( Incidence * ) ) ); 885 SLOT( defaultAction( Incidence * ) ) );
886 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 886 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
887 SIGNAL( newEventSignal( QDateTime ) ) ); 887 SIGNAL( newEventSignal( QDateTime ) ) );
888 connect( cell, SIGNAL( showDaySignal( QDate ) ), 888 connect( cell, SIGNAL( showDaySignal( QDate ) ),
889 SIGNAL( showDaySignal( QDate ) ) ); 889 SIGNAL( showDaySignal( QDate ) ) );
890 } 890 }
891 } 891 }
892 mCellsW.resize( mDaysPerWeek ); 892 mCellsW.resize( mDaysPerWeek );
893 for( col = 0; col < mDaysPerWeek; ++col ) { 893 for( col = 0; col < mDaysPerWeek; ++col ) {
894 MonthViewCell *cell = new MonthViewCell( this, mWeekView ); 894 MonthViewCell *cell = new MonthViewCell( this, mWeekView );
895 mCellsW.insert( col, cell ); 895 mCellsW.insert( col, cell );
896 896
897 connect( cell, SIGNAL( defaultAction( Incidence * ) ), 897 connect( cell, SIGNAL( defaultAction( Incidence * ) ),
898 SLOT( defaultAction( Incidence * ) ) ); 898 SLOT( defaultAction( Incidence * ) ) );
899 connect( cell, SIGNAL( newEventSignal( QDateTime ) ), 899 connect( cell, SIGNAL( newEventSignal( QDateTime ) ),
900 SIGNAL( newEventSignal( QDateTime ) ) ); 900 SIGNAL( newEventSignal( QDateTime ) ) );
901 connect( cell, SIGNAL( showDaySignal( QDate ) ), 901 connect( cell, SIGNAL( showDaySignal( QDate ) ),
902 SIGNAL( showDaySignal( QDate ) ) ); 902 SIGNAL( showDaySignal( QDate ) ) );
903 cell->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont ); 903 cell->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont );
904 } 904 }
905 905
906 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) ); 906 //connect( mWeekLabels[mNumWeeks], SIGNAL( clicked() ), SLOT( switchView() ) );
907 mContextMenu = eventPopup(); 907 mContextMenu = eventPopup();
908 // updateConfig(); //useless here 908 // updateConfig(); //useless here
909 909
910 //mWeekLabels[mNumWeeks]->setText( i18n("W")); 910 //mWeekLabels[mNumWeeks]->setText( i18n("W"));
911#if 0 911#if 0
912 mWidStack = new QWidgetStack( this ); 912 mWidStack = new QWidgetStack( this );
913 mMonthView = new QWidget( mWidStack ); 913 mMonthView = new QWidget( mWidStack );
914 mWeekView = new QWidget( mWidStack ); 914 mWeekView = new QWidget( mWidStack );
915#endif 915#endif
916 if ( mShowWeekView ) 916 if ( mShowWeekView )
917 mWidStack->raiseWidget( mWeekView ); 917 mWidStack->raiseWidget( mWeekView );
918 else 918 else
919 mWidStack->raiseWidget( mMonthView ); 919 mWidStack->raiseWidget( mMonthView );
920 920
921 emit incidenceSelected( 0 ); 921 emit incidenceSelected( 0 );
922} 922}
923 923
924KOMonthView::~KOMonthView() 924KOMonthView::~KOMonthView()
925{ 925{
926 delete mContextMenu; 926 delete mContextMenu;
927} 927}
928 928
929void KOMonthView::selectInternalWeekNum ( int n ) 929void KOMonthView::selectInternalWeekNum ( int n )
930{ 930{
931 switchView(); 931 switchView();
932 emit selectWeekNum ( n ); 932 emit selectWeekNum ( n );
933} 933}
934 934
935int KOMonthView::currentWeek() 935int KOMonthView::currentWeek()
936{ 936{
937 if ( mShowWeekView ) 937 if ( mShowWeekView )
938 return mWeekLabelsW[0]->getWeekNum(); 938 return mWeekLabelsW[0]->getWeekNum();
939 return mWeekLabels[0]->getWeekNum(); 939 return mWeekLabels[0]->getWeekNum();
940} 940}
941void KOMonthView::switchView() 941void KOMonthView::switchView()
942{ 942{
943 943
944 if ( selectedCell( ) ) 944 if ( selectedCell( ) )
945 selectedCell()->deselect(); 945 selectedCell()->deselect();
946 mShowWeekView = !mShowWeekView; 946 mShowWeekView = !mShowWeekView;
947 KOPrefs::instance()->mMonthViewWeek = mShowWeekView; 947 KOPrefs::instance()->mMonthViewWeek = mShowWeekView;
948 //emit showNavigator( !mShowWeekView ); 948 //emit showNavigator( !mShowWeekView );
949 if ( clPending ) { 949 if ( clPending ) {
950 computeLayout(); 950 computeLayout();
951 updateConfig(); 951 updateConfig();
952 } 952 }
953 if ( mShowWeekView ) 953 if ( mShowWeekView )
954 mWidStack->raiseWidget( mWeekView ); 954 mWidStack->raiseWidget( mWeekView );
955 else 955 else
956 mWidStack->raiseWidget( mMonthView ); 956 mWidStack->raiseWidget( mMonthView );
957 clPending = false; 957 clPending = false;
958} 958}
959 959
960int KOMonthView::maxDatesHint() 960int KOMonthView::maxDatesHint()
961{ 961{
962 return mNumCells; 962 return mNumCells;
963} 963}
964 964
965int KOMonthView::currentDateCount() 965int KOMonthView::currentDateCount()
966{ 966{
967 return mNumCells; 967 return mNumCells;
968} 968}
969 969
970QPtrList<Incidence> KOMonthView::selectedIncidences() 970QPtrList<Incidence> KOMonthView::selectedIncidences()
971{ 971{
972 QPtrList<Incidence> selected; 972 QPtrList<Incidence> selected;
973 973
974 if ( mSelectedCell ) { 974 if ( mSelectedCell ) {
975 Incidence *incidence = mSelectedCell->selectedIncidence(); 975 Incidence *incidence = mSelectedCell->selectedIncidence();
976 if ( incidence ) selected.append( incidence ); 976 if ( incidence ) selected.append( incidence );
977 } 977 }
978 978
979 return selected; 979 return selected;
980} 980}
981 981
982DateList KOMonthView::selectedDates() 982DateList KOMonthView::selectedDates()
983{ 983{
984 DateList selected; 984 DateList selected;
985 985
986 if ( mSelectedCell ) { 986 if ( mSelectedCell ) {
987 QDate qd = mSelectedCell->selectedIncidenceDate(); 987 QDate qd = mSelectedCell->selectedIncidenceDate();
988 if ( qd.isValid() ) selected.append( qd ); 988 if ( qd.isValid() ) selected.append( qd );
989 } 989 }
990 990
991 return selected; 991 return selected;
992} 992}
993 993
994void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd, 994void KOMonthView::printPreview(CalPrinter *calPrinter, const QDate &fd,
995 const QDate &td) 995 const QDate &td)
996{ 996{
997#ifndef KORG_NOPRINTER 997#ifndef KORG_NOPRINTER
998 calPrinter->preview(CalPrinter::Month, fd, td); 998 calPrinter->preview(CalPrinter::Month, fd, td);
999#endif 999#endif
1000} 1000}
1001 1001
1002void KOMonthView::updateConfig() 1002void KOMonthView::updateConfig()
1003{ 1003{
1004 1004
1005 mWeekStartsMonday = KGlobal::locale()->weekStartsMonday(); 1005 mWeekStartsMonday = KGlobal::locale()->weekStartsMonday();
1006 1006
1007 if ( mShowWeekView ) { 1007 if ( mShowWeekView ) {
1008 mWeekStartsMonday = true; 1008 mWeekStartsMonday = true;
1009 } 1009 }
1010 QFontMetrics fontmetric(mDayLabels[0]->font()); 1010 QFontMetrics fontmetric(mDayLabels[0]->font());
1011 mWidthLongDayLabel = 0; 1011 mWidthLongDayLabel = 0;
1012 1012
1013 for (int i = 0; i < 7; i++) { 1013 for (int i = 0; i < 7; i++) {
1014 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1)); 1014 int width = fontmetric.width(KOGlobals::self()->calendarSystem()->weekDayName(i+1));
1015 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width; 1015 if ( width > mWidthLongDayLabel ) mWidthLongDayLabel = width;
1016 } 1016 }
1017 bool temp = mShowSatSunComp ; 1017 bool temp = mShowSatSunComp ;
1018 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ; 1018 mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ;
1019 if ( ! mShowWeekView ) { 1019 if ( ! mShowWeekView ) {
1020 if ( temp != KOPrefs::instance()->mMonthViewSatSunTog ) 1020 if ( temp != KOPrefs::instance()->mMonthViewSatSunTog )
1021 computeLayout(); 1021 computeLayout();
1022 } 1022 }
1023 updateDayLabels(); 1023 updateDayLabels();
1024 //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks); 1024 //qDebug("KOMonthView::updateConfig() %d %d %d ",height(), mDayLabels[0]->sizeHint().height() ,mNumWeeks);
1025 //int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks; 1025 //int cellHeight = (height() - mDayLabels[0]->sizeHint().height()) /mNumWeeks;
1026 //resizeEvent( 0 ); 1026 //resizeEvent( 0 );
1027 for (uint i = 0; i < mCells.count(); ++i) { 1027 for (uint i = 0; i < mCells.count(); ++i) {
1028 mCells[i]->updateConfig(); 1028 mCells[i]->updateConfig();
1029 } 1029 }
1030 1030
1031 for (uint i = 0; i < mCellsW.count(); ++i) { 1031 for (uint i = 0; i < mCellsW.count(); ++i) {
1032 mCellsW[i]->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont); 1032 mCellsW[i]->updateConfig(KOPrefs::instance()->mMonthViewUsesBigFont);
1033 } 1033 }
1034#ifdef DESKTOP_VERSION 1034#ifdef DESKTOP_VERSION
1035 MonthViewCell::toolTipGroup()->setEnabled(KOPrefs::instance()->mEnableToolTips); 1035 MonthViewCell::toolTipGroup()->setEnabled(KOPrefs::instance()->mEnableToolTips);
1036#endif 1036#endif
1037 updateView(); 1037 updateView();
1038} 1038}
1039 1039
1040void KOMonthView::updateDayLabels() 1040void KOMonthView::updateDayLabels()
1041{ 1041{
1042 1042
1043 QPtrVector<QLabel> *mDayLabelsT; 1043 QPtrVector<QLabel> *mDayLabelsT;
1044#if 0 1044#if 0
1045 if (mShowWeekView ) 1045 if (mShowWeekView )
1046 mDayLabelsT = &mDayLabelsW; 1046 mDayLabelsT = &mDayLabelsW;
1047 else 1047 else
1048 mDayLabelsT = &mDayLabels; 1048 mDayLabelsT = &mDayLabels;
1049#endif 1049#endif
1050 1050
1051 mDayLabelsT = &mDayLabelsW; 1051 mDayLabelsT = &mDayLabelsW;
1052 for (int i = 0; i < 7; i++) { 1052 for (int i = 0; i < 7; i++) {
1053 if (mWeekStartsMonday) { 1053 if (mWeekStartsMonday) {
1054 bool show = mShortDayLabels; 1054 bool show = mShortDayLabels;
1055 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() ) 1055 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() )
1056 show = true; 1056 show = true;
1057 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show)); 1057 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show));
1058 } else { 1058 } else {
1059 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabels)); 1059 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabels));
1060 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabels)); 1060 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabels));
1061 1061
1062 } 1062 }
1063 } 1063 }
1064 mDayLabelsT = &mDayLabels; 1064 mDayLabelsT = &mDayLabels;
1065 for (int i = 0; i < 7; i++) { 1065 for (int i = 0; i < 7; i++) {
1066 if (mWeekStartsMonday) { 1066 if (mWeekStartsMonday) {
1067 bool show = mShortDayLabels; 1067 bool show = mShortDayLabels;
1068 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() ) 1068 if ( i > 4 && mShowSatSunComp && mWidthLongDayLabel > (*mDayLabelsT)[i]->width() )
1069 show = true; 1069 show = true;
1070 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show)); 1070 (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i+1,show));
1071 } else { 1071 } else {
1072 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabels)); 1072 if (i==0) (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(7,mShortDayLabels));
1073 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabels)); 1073 else (*mDayLabelsT)[i]->setText(KOGlobals::self()->calendarSystem()->weekDayName(i,mShortDayLabels));
1074 1074
1075 } 1075 }
1076 } 1076 }
1077 1077
1078} 1078}
1079 1079
1080void KOMonthView::showDates(const QDate &start, const QDate &) 1080void KOMonthView::showDates(const QDate &start, const QDate &)
1081{ 1081{
1082 // kdDebug() << "KOMonthView::showDates(): " << start.toString() << endl; 1082 // kdDebug() << "KOMonthView::showDates(): " << start.toString() << endl;
1083 1083
1084 QPtrVector<MonthViewCell> *cells; 1084 QPtrVector<MonthViewCell> *cells;
1085 QPtrVector<QLabel> *dayLabels; 1085 QPtrVector<QLabel> *dayLabels;
1086 QPtrVector<KOWeekButton> *weekLabels; 1086 QPtrVector<KOWeekButton> *weekLabels;
1087 int weekNum = 6; 1087 int weekNum = 6;
1088 if ( mShowWeekView ) { 1088 if ( mShowWeekView ) {
1089 weekNum = 1; 1089 weekNum = 1;
1090 cells = &mCellsW; 1090 cells = &mCellsW;
1091 dayLabels = &mDayLabelsW; 1091 dayLabels = &mDayLabelsW;
1092 weekLabels = &mWeekLabelsW; 1092 weekLabels = &mWeekLabelsW;
1093 } else { 1093 } else {
1094 cells = &mCells; 1094 cells = &mCells;
1095 dayLabels = &mDayLabels; 1095 dayLabels = &mDayLabels;
1096 weekLabels = &mWeekLabels; 1096 weekLabels = &mWeekLabels;
1097 } 1097 }
1098 1098
1099 mStartDate = start; 1099 mStartDate = start;
1100 1100
1101 int startWeekDay = mWeekStartsMonday ? 1 : 7; 1101 int startWeekDay = mWeekStartsMonday ? 1 : 7;
1102 1102
1103 while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) { 1103 while( KOGlobals::self()->calendarSystem()->dayOfWeek(mStartDate) != startWeekDay ) {
1104 mStartDate = mStartDate.addDays( -1 ); 1104 mStartDate = mStartDate.addDays( -1 );
1105 } 1105 }
1106 1106
1107 bool primary = false; 1107 bool primary = false;
1108 uint i; 1108 uint i;
1109 for( i = 0; i < (*cells).size(); ++i ) { 1109 for( i = 0; i < (*cells).size(); ++i ) {
1110 QDate date = mStartDate.addDays( i ); 1110 QDate date = mStartDate.addDays( i );
1111 (*cells)[i]->setDate( date ); 1111 (*cells)[i]->setDate( date );
1112 1112
1113#ifndef KORG_NOPLUGINS 1113#ifndef KORG_NOPLUGINS
1114 // add holiday, if present 1114 // add holiday, if present
1115 QString hstring(KOCore::self()->holiday(date)); 1115 QString hstring(KOCore::self()->holiday(date));
1116 (*cells)[i]->setHoliday( hstring ); 1116 (*cells)[i]->setHoliday( hstring );
1117#endif 1117#endif
1118 1118
1119 } 1119 }
1120 QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 ); 1120 QDate date = mStartDate.addDays( mWeekStartsMonday ? 3 : 4 );
1121 for( i = 0; i < weekNum; ++i ) { 1121 for( i = 0; i < weekNum; ++i ) {
1122 int wno; 1122 int wno;
1123 // remember, according to ISO 8601, the first week of the year is the 1123 // remember, according to ISO 8601, the first week of the year is the
1124 // first week that contains a thursday. Thus we must subtract off 4, 1124 // first week that contains a thursday. Thus we must subtract off 4,
1125 // not just 1. 1125 // not just 1.
1126 int dayOfYear = date.dayOfYear(); 1126 int dayOfYear = date.dayOfYear();
1127 if (dayOfYear % 7 != 0) 1127 if (dayOfYear % 7 != 0)
1128 wno = dayOfYear / 7 + 1; 1128 wno = dayOfYear / 7 + 1;
1129 else 1129 else
1130 wno =dayOfYear / 7; 1130 wno =dayOfYear / 7;
1131 (*weekLabels)[i]->setWeekNum( wno ); 1131 (*weekLabels)[i]->setWeekNum( wno );
1132 date = date.addDays( 7 ); 1132 date = date.addDays( 7 );
1133 } 1133 }
1134 updateView(); 1134 updateView();
1135} 1135}
1136 1136
1137void KOMonthView::showEvents(QPtrList<Event>) 1137void KOMonthView::showEvents(QPtrList<Event>)
1138{ 1138{
1139 qDebug("KOMonthView::selectEvents is not implemented yet. "); 1139 qDebug("KOMonthView::selectEvents is not implemented yet. ");
1140} 1140}
1141 1141
1142void KOMonthView::changeEventDisplay(Event *, int) 1142void KOMonthView::changeEventDisplay(Event *, int)
1143{ 1143{
1144 // this should be re-written to be much more efficient, but this 1144 // this should be re-written to be much more efficient, but this
1145 // quick-and-dirty-hack gets the job done for right now. 1145 // quick-and-dirty-hack gets the job done for right now.
1146 updateView(); 1146 updateView();
1147} 1147}
1148 1148
1149void KOMonthView::updateView() 1149void KOMonthView::updateView()
1150{ 1150{
1151 1151
1152 if ( !updatePossible ) 1152 if ( !updatePossible )
1153 return; 1153 return;
1154 //QTime ti; 1154 //QTime ti;
1155 //ti.start(); 1155 //ti.start();
1156 QPtrVector<MonthViewCell> *cells; 1156 QPtrVector<MonthViewCell> *cells;
1157 if ( mShowWeekView ) { 1157 if ( mShowWeekView ) {
1158 cells = &mCellsW; 1158 cells = &mCellsW;
1159 } else { 1159 } else {
1160 cells = &mCells; 1160 cells = &mCells;
1161 } 1161 }
1162#if 1 1162#if 1
1163 int i; 1163 int i;
1164 int timeSpan = (*cells).size()-1; 1164 int timeSpan = (*cells).size()-1;
1165 if ( KOPrefs::instance()->mMonthViewWeek ) 1165 if ( KOPrefs::instance()->mMonthViewWeek )
1166 timeSpan = 6; 1166 timeSpan = 6;
1167 for( i = 0; i < timeSpan + 1; ++i ) { 1167 for( i = 0; i < timeSpan + 1; ++i ) {
1168 (*cells)[i]->startUpdateCell(); 1168 (*cells)[i]->startUpdateCell();
1169 } 1169 }
1170 1170
1171 QPtrList<Event> events = calendar()->events(); 1171 QPtrList<Event> events = calendar()->events();
1172 Event *event; 1172 Event *event;
1173 QDateTime dt; 1173 QDateTime dt;
1174 bool ok; 1174 bool ok;
1175 QDate endDate = mStartDate.addDays( timeSpan ); 1175 QDate endDate = mStartDate.addDays( timeSpan );
1176 for( event = events.first(); event; event = events.next() ) { // for event 1176 for( event = events.first(); event; event = events.next() ) { // for event
1177 if ( event->doesRecur() ) { 1177 if ( event->doesRecur() ) {
1178 bool last; 1178 bool last;
1179 QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last ); 1179 QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last );
1180 QDateTime incidenceEnd; 1180 QDateTime incidenceEnd;
1181 int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() ); 1181 int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() );
1182 bool invalid = false; 1182 bool invalid = false;
1183 while( true ) { 1183 while( true ) {
1184 if ( incidenceStart.isValid() ) { 1184 if ( incidenceStart.isValid() ) {
1185 incidenceEnd = incidenceStart.addDays( eventlen ); 1185 incidenceEnd = incidenceStart.addDays( eventlen );
1186 int st = incidenceStart.date().daysTo( endDate ); 1186 int st = incidenceStart.date().daysTo( endDate );
1187 if ( st >= 0 ) { // start before timeend 1187 if ( st >= 0 ) { // start before timeend
1188 int end = mStartDate.daysTo( incidenceEnd.date() ); 1188 int end = mStartDate.daysTo( incidenceEnd.date() );
1189 if ( end >= 0 ) { // end after timestart --- got one! 1189 if ( end >= 0 ) { // end after timestart --- got one!
1190 //normalize 1190 //normalize
1191 st = timeSpan - st; 1191 st = timeSpan - st;
1192 if ( st < 0 ) st = 0; 1192 if ( st < 0 ) st = 0;
1193 if ( end > timeSpan ) end = timeSpan; 1193 if ( end > timeSpan ) end = timeSpan;
1194 int iii; 1194 int iii;
1195 //qDebug("found %s %d %d ",event->summary().latin1(), st, end ); 1195 //qDebug("found %s %d %d ",event->summary().latin1(), st, end );
1196 for ( iii = st;iii<= end;++iii) 1196 for ( iii = st;iii<= end;++iii)
1197 (*cells)[iii]->insertEvent( event ); 1197 (*cells)[iii]->insertEvent( event );
1198 } 1198 }
1199 } 1199 }
1200 } else { 1200 } else {
1201 if ( invalid ) 1201 if ( invalid )
1202 break; 1202 break;
1203 invalid = true; 1203 invalid = true;
1204 //qDebug("invalid %s", event->summary().latin1()); 1204 //qDebug("invalid %s", event->summary().latin1());
1205 incidenceStart = QDateTime( mStartDate ); 1205 incidenceStart = QDateTime( mStartDate ).addSecs( -2 );;
1206 } 1206 }
1207 if ( last ) 1207 if ( last )
1208 break; 1208 break;
1209 bool ok; 1209 bool ok;
1210 incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok ); 1210 incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok );
1211 if ( ! ok ) 1211 if ( ! ok )
1212 break; 1212 break;
1213 if ( incidenceStart.date() > endDate ) 1213 if ( incidenceStart.date() > endDate )
1214 break; 1214 break;
1215 } 1215 }
1216 } else { // no recur 1216 } else { // no recur
1217 int st = event->dtStart().date().daysTo( endDate ); 1217 int st = event->dtStart().date().daysTo( endDate );
1218 if ( st >= 0 ) { // start before timeend 1218 if ( st >= 0 ) { // start before timeend
1219 int end = mStartDate.daysTo( event->dtEnd().date() ); 1219 int end = mStartDate.daysTo( event->dtEnd().date() );
1220 if ( end >= 0 ) { // end after timestart --- got one! 1220 if ( end >= 0 ) { // end after timestart --- got one!
1221 //normalize 1221 //normalize
1222 st = timeSpan - st; 1222 st = timeSpan - st;
1223 if ( st < 0 ) st = 0; 1223 if ( st < 0 ) st = 0;
1224 if ( end > timeSpan ) end = timeSpan; 1224 if ( end > timeSpan ) end = timeSpan;
1225 int iii; 1225 int iii;
1226 for ( iii = st;iii<= end;++iii) 1226 for ( iii = st;iii<= end;++iii)
1227 (*cells)[iii]->insertEvent( event ); 1227 (*cells)[iii]->insertEvent( event );
1228 } 1228 }
1229 } 1229 }
1230 } 1230 }
1231 } 1231 }
1232 // insert due todos 1232 // insert due todos
1233 QPtrList<Todo> todos = calendar()->todos( ); 1233 QPtrList<Todo> todos = calendar()->todos( );
1234 Todo *todo; 1234 Todo *todo;
1235 for(todo = todos.first(); todo; todo = todos.next()) { 1235 for(todo = todos.first(); todo; todo = todos.next()) {
1236 //insertTodo( todo ); 1236 //insertTodo( todo );
1237 if ( todo->hasDueDate() ) { 1237 if ( todo->hasDueDate() ) {
1238 int day = mStartDate.daysTo( todo->dtDue().date() ); 1238 int day = mStartDate.daysTo( todo->dtDue().date() );
1239 if ( day >= 0 && day < timeSpan + 1) { 1239 if ( day >= 0 && day < timeSpan + 1) {
1240 (*cells)[day]->insertTodo( todo ); 1240 (*cells)[day]->insertTodo( todo );
1241 } 1241 }
1242 } 1242 }
1243 } 1243 }
1244 1244
1245 for( i = 0; i < timeSpan+1; ++i ) { 1245 for( i = 0; i < timeSpan+1; ++i ) {
1246 (*cells)[i]->finishUpdateCell(); 1246 (*cells)[i]->finishUpdateCell();
1247 } 1247 }
1248 processSelectionChange(); 1248 processSelectionChange();
1249 (*cells)[0]->setFocus(); 1249 (*cells)[0]->setFocus();
1250 1250
1251 1251
1252#else 1252#else
1253 // old code 1253 // old code
1254 //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ "); 1254 //qDebug("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ");
1255 int i; 1255 int i;
1256 for( i = 0; i < (*cells).count(); ++i ) { 1256 for( i = 0; i < (*cells).count(); ++i ) {
1257 (*cells)[i]->updateCell(); 1257 (*cells)[i]->updateCell();
1258 } 1258 }
1259 1259
1260 //qDebug("KOMonthView::updateView() "); 1260 //qDebug("KOMonthView::updateView() ");
1261 processSelectionChange(); 1261 processSelectionChange();
1262 // qDebug("---------------------------------------------------------------------+ "); 1262 // qDebug("---------------------------------------------------------------------+ ");
1263 (*cells)[0]->setFocus(); 1263 (*cells)[0]->setFocus();
1264#endif 1264#endif
1265 1265
1266 //qDebug("update time %d ", ti.elapsed()); 1266 //qDebug("update time %d ", ti.elapsed());
1267} 1267}
1268 1268
1269void KOMonthView::resizeEvent(QResizeEvent * e) 1269void KOMonthView::resizeEvent(QResizeEvent * e)
1270{ 1270{
1271 computeLayout(); 1271 computeLayout();
1272 clPending = true; 1272 clPending = true;
1273 if ( mShowWeekView ) 1273 if ( mShowWeekView )
1274 mCellsW[0]->setFocus(); 1274 mCellsW[0]->setFocus();
1275 else 1275 else
1276 mCells[0]->setFocus(); 1276 mCells[0]->setFocus();
1277} 1277}
1278void KOMonthView::computeLayoutWeek() 1278void KOMonthView::computeLayoutWeek()
1279{ 1279{
1280 1280
1281 int daysToShow; 1281 int daysToShow;
1282 bool combinedSatSun = false; 1282 bool combinedSatSun = false;
1283 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { 1283 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) {
1284 daysToShow = 6; 1284 daysToShow = 6;
1285 combinedSatSun = true; 1285 combinedSatSun = true;
1286 } 1286 }
1287 int tWid = topLevelWidget()->size().width(); 1287 int tWid = topLevelWidget()->size().width();
1288 int tHei = topLevelWidget()->size().height(); 1288 int tHei = topLevelWidget()->size().height();
1289 1289
1290 int wid = size().width();//e 1290 int wid = size().width();//e
1291 int hei = size().height()-1; 1291 int hei = size().height()-1;
1292 1292
1293 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) 1293 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei )
1294 return; 1294 return;
1295 1295
1296 if ( wid < hei ) 1296 if ( wid < hei )
1297 daysToShow = 2; 1297 daysToShow = 2;
1298 else 1298 else
1299 daysToShow = 3; 1299 daysToShow = 3;
1300 mShowSatSunComp = true; 1300 mShowSatSunComp = true;
1301 combinedSatSun = true; 1301 combinedSatSun = true;
1302 1302
1303 //qDebug("KOMonthView::computeLayout()------------------------------------ "); 1303 //qDebug("KOMonthView::computeLayout()------------------------------------ ");
1304 QFontMetrics fm ( mWeekLabels[0]->font() ); 1304 QFontMetrics fm ( mWeekLabels[0]->font() );
1305 int weeklabelwid = fm.width( "888" ); 1305 int weeklabelwid = fm.width( "888" );
1306 wid -= weeklabelwid; 1306 wid -= weeklabelwid;
1307 1307
1308 int colWid = wid / daysToShow; 1308 int colWid = wid / daysToShow;
1309 int lastCol = wid - ( colWid*6 ); 1309 int lastCol = wid - ( colWid*6 );
1310 int dayLabelHei = mDayLabelsW[0]->sizeHint().height(); 1310 int dayLabelHei = mDayLabelsW[0]->sizeHint().height();
1311 int cellHei = (hei - (5- daysToShow )*dayLabelHei) /(5- daysToShow ); 1311 int cellHei = (hei - (5- daysToShow )*dayLabelHei) /(5- daysToShow );
1312 int colModulo = wid % daysToShow; 1312 int colModulo = wid % daysToShow;
1313 int rowModulo = (hei- (5- daysToShow )*dayLabelHei) % daysToShow-1; 1313 int rowModulo = (hei- (5- daysToShow )*dayLabelHei) % daysToShow-1;
1314 //qDebug("rowmod %d ", rowModulo); 1314 //qDebug("rowmod %d ", rowModulo);
1315 int i; 1315 int i;
1316 int x,y,w,h; 1316 int x,y,w,h;
1317 x= 0; 1317 x= 0;
1318 y= 0; 1318 y= 0;
1319 w = colWid; 1319 w = colWid;
1320 h = dayLabelHei ; 1320 h = dayLabelHei ;
1321 for ( i = 0; i < 7; i++) { 1321 for ( i = 0; i < 7; i++) {
1322 if ( i && !( i % daysToShow) && i < 6) { 1322 if ( i && !( i % daysToShow) && i < 6) {
1323 y += hei/(5-daysToShow); 1323 y += hei/(5-daysToShow);
1324 x = 0; 1324 x = 0;
1325 w = colWid; 1325 w = colWid;
1326 } 1326 }
1327 if ( ((i) % daysToShow) >= daysToShow-colModulo ) { 1327 if ( ((i) % daysToShow) >= daysToShow-colModulo ) {
1328 ++w; 1328 ++w;
1329 } 1329 }
1330 if ( i >= 5 ) { 1330 if ( i >= 5 ) {
1331 mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,w/2+w%2,h); 1331 mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,w/2+w%2,h);
1332 x -= (w/2 ); 1332 x -= (w/2 );
1333 } 1333 }
1334 else 1334 else
1335 mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,w,h); 1335 mDayLabelsW[i]->setGeometry( x+weeklabelwid,y,w,h);
1336 x += w; 1336 x += w;
1337 } 1337 }
1338 x= 0; 1338 x= 0;
1339 y= dayLabelHei; 1339 y= dayLabelHei;
1340 w = colWid; 1340 w = colWid;
1341 h = cellHei; 1341 h = cellHei;
1342 for ( i = 0; i < mCellsW.count(); ++i) { 1342 for ( i = 0; i < mCellsW.count(); ++i) {
1343 if ( i > 6 ) { 1343 if ( i > 6 ) {
1344 mCellsW[i]->hide(); 1344 mCellsW[i]->hide();
1345 continue; 1345 continue;
1346 } 1346 }
1347 1347
1348 w = colWid; 1348 w = colWid;
1349 if ( ((i) % daysToShow) >= daysToShow-colModulo ) { 1349 if ( ((i) % daysToShow) >= daysToShow-colModulo ) {
1350 ++w; 1350 ++w;
1351 } 1351 }
1352 if ( i == (daysToShow-1-rowModulo)*7) 1352 if ( i == (daysToShow-1-rowModulo)*7)
1353 ++h; 1353 ++h;
1354 1354
1355 if ( i >= 5 ) { 1355 if ( i >= 5 ) {
1356 if ( i ==5 ) { 1356 if ( i ==5 ) {
1357 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h/2 ); 1357 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h/2 );
1358 x -= w ;y += h/2; 1358 x -= w ;y += h/2;
1359 } else { 1359 } else {
1360 if ( ((i-1) % daysToShow) >= daysToShow-colModulo ) { 1360 if ( ((i-1) % daysToShow) >= daysToShow-colModulo ) {
1361 ++w; 1361 ++w;
1362 } 1362 }
1363 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h-h/2 ); 1363 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h-h/2 );
1364 y -= h/2; 1364 y -= h/2;
1365 } 1365 }
1366 } else 1366 } else
1367 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h ); 1367 mCellsW[i]->setGeometry ( x+weeklabelwid,y,w,h );
1368 1368
1369 1369
1370 x += w; 1370 x += w;
1371 if ( x + w/2 > wid ) { 1371 if ( x + w/2 > wid ) {
1372 x = 0; 1372 x = 0;
1373 y += h+dayLabelHei ; 1373 y += h+dayLabelHei ;
1374 } 1374 }
1375 } 1375 }
1376 y= dayLabelHei; 1376 y= dayLabelHei;
1377 h = cellHei ; 1377 h = cellHei ;
1378 mWeekLabelsW[0]->setGeometry( 0,y,weeklabelwid,hei-dayLabelHei); 1378 mWeekLabelsW[0]->setGeometry( 0,y,weeklabelwid,hei-dayLabelHei);
1379 mWeekLabelsW[1]->setGeometry( 0,0,weeklabelwid,dayLabelHei); 1379 mWeekLabelsW[1]->setGeometry( 0,0,weeklabelwid,dayLabelHei);
1380 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height()); 1380 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height());
1381 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height()); 1381 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height());
1382 mShortDayLabels = mDayLabelsW[0]->width() < mWidthLongDayLabel ; 1382 mShortDayLabels = mDayLabelsW[0]->width() < mWidthLongDayLabel ;
1383 updateDayLabels(); 1383 updateDayLabels();
1384 bool forceUpdate = !updatePossible; 1384 bool forceUpdate = !updatePossible;
1385 updatePossible = true; 1385 updatePossible = true;
1386 //mWeekLabels[mNumWeeks]->setText( i18n("M")); 1386 //mWeekLabels[mNumWeeks]->setText( i18n("M"));
1387 if ( forceUpdate ) 1387 if ( forceUpdate )
1388 updateView(); 1388 updateView();
1389} 1389}
1390void KOMonthView::computeLayout() 1390void KOMonthView::computeLayout()
1391{ 1391{
1392 // select the appropriate heading string size. E.g. "Wednesday" or "Wed". 1392 // select the appropriate heading string size. E.g. "Wednesday" or "Wed".
1393 // note this only changes the text if the requested size crosses the 1393 // note this only changes the text if the requested size crosses the
1394 // threshold between big enough to support the full name and not big 1394 // threshold between big enough to support the full name and not big
1395 // enough. 1395 // enough.
1396 if ( mShowWeekView ){ 1396 if ( mShowWeekView ){
1397 computeLayoutWeek(); 1397 computeLayoutWeek();
1398 return; 1398 return;
1399 } 1399 }
1400 int daysToShow = 7; 1400 int daysToShow = 7;
1401 bool combinedSatSun = false; 1401 bool combinedSatSun = false;
1402 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) { 1402 if (mShowSatSunComp = KOPrefs::instance()->mMonthViewSatSunTog ) {
1403 daysToShow = 6; 1403 daysToShow = 6;
1404 combinedSatSun = true; 1404 combinedSatSun = true;
1405 } 1405 }
1406 int tWid = topLevelWidget()->size().width(); 1406 int tWid = topLevelWidget()->size().width();
1407 int tHei = topLevelWidget()->size().height(); 1407 int tHei = topLevelWidget()->size().height();
1408 1408
1409 int wid = size().width();//e 1409 int wid = size().width();//e
1410 int hei = size().height()-1; 1410 int hei = size().height()-1;
1411 1411
1412 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei ) 1412 if ( ((wid *3)/2) < tWid && (( hei *3) /2) < tHei )
1413 return; 1413 return;
1414 //qDebug("KOMonthView::computeLayout()------------------------------------ "); 1414 //qDebug("KOMonthView::computeLayout()------------------------------------ ");
1415 QFontMetrics fm ( mWeekLabels[0]->font() ); 1415 QFontMetrics fm ( mWeekLabels[0]->font() );
1416 int weeklabelwid = fm.width( "888" ); 1416 int weeklabelwid = fm.width( "888" );
1417 wid -= weeklabelwid; 1417 wid -= weeklabelwid;
1418 1418
1419 int colWid = wid / daysToShow; 1419 int colWid = wid / daysToShow;
1420 int lastCol = wid - ( colWid*6 ); 1420 int lastCol = wid - ( colWid*6 );
1421 int dayLabelHei = mDayLabels[0]->sizeHint().height(); 1421 int dayLabelHei = mDayLabels[0]->sizeHint().height();
1422 int cellHei = (hei - dayLabelHei) /6; 1422 int cellHei = (hei - dayLabelHei) /6;
1423 int colModulo = wid % daysToShow; 1423 int colModulo = wid % daysToShow;
1424 int rowModulo = (hei- dayLabelHei) % 6; 1424 int rowModulo = (hei- dayLabelHei) % 6;
1425 //qDebug("rowmod %d ", rowModulo); 1425 //qDebug("rowmod %d ", rowModulo);
1426 int i; 1426 int i;
1427 int x,y,w,h; 1427 int x,y,w,h;
1428 x= 0; 1428 x= 0;
1429 y= 0; 1429 y= 0;
1430 w = colWid; 1430 w = colWid;
1431 h = dayLabelHei ; 1431 h = dayLabelHei ;
1432 for ( i = 0; i < 7; i++) { 1432 for ( i = 0; i < 7; i++) {
1433 if ( i == daysToShow-colModulo ) 1433 if ( i == daysToShow-colModulo )
1434 ++w; 1434 ++w;
1435 if ( combinedSatSun ) { 1435 if ( combinedSatSun ) {
1436 if ( i >= daysToShow-1 ) { 1436 if ( i >= daysToShow-1 ) {
1437 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w/2,h); 1437 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w/2,h);
1438 x -= w/2 ; 1438 x -= w/2 ;
1439 } 1439 }
1440 else 1440 else
1441 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h); 1441 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h);
1442 } else 1442 } else
1443 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h); 1443 mDayLabels[i]->setGeometry( x+weeklabelwid,y,w,h);
1444 x += w; 1444 x += w;
1445 } 1445 }
1446 x= 0; 1446 x= 0;
1447 y= dayLabelHei; 1447 y= dayLabelHei;
1448 w = colWid; 1448 w = colWid;
1449 h = cellHei ; 1449 h = cellHei ;
1450 for ( i = 0; i < mCells.count(); ++i) { 1450 for ( i = 0; i < mCells.count(); ++i) {
1451 w = colWid; 1451 w = colWid;
1452 if ( ((i) % 7) >= 7-colModulo ) { 1452 if ( ((i) % 7) >= 7-colModulo ) {
1453 ++w; 1453 ++w;
1454 } 1454 }
1455 if ( i == (6-rowModulo)*7) 1455 if ( i == (6-rowModulo)*7)
1456 ++h; 1456 ++h;
1457 if ( combinedSatSun ) { 1457 if ( combinedSatSun ) {
1458 if ( (i)%7 >= daysToShow-1 ) { 1458 if ( (i)%7 >= daysToShow-1 ) {
1459 if ( (i)%7 == daysToShow-1 ) { 1459 if ( (i)%7 == daysToShow-1 ) {
1460 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h/2 ); 1460 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h/2 );
1461 x -= w ;y += h/2; 1461 x -= w ;y += h/2;
1462 } else { 1462 } else {
1463 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h-h/2 ); 1463 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h-h/2 );
1464 y -= h/2; 1464 y -= h/2;
1465 } 1465 }
1466 } else 1466 } else
1467 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h ); 1467 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h );
1468 1468
1469 } 1469 }
1470 else 1470 else
1471 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h ); 1471 mCells[i]->setGeometry ( x+weeklabelwid,y,w,h );
1472 x += w; 1472 x += w;
1473 if ( x + w/2 > wid ) { 1473 if ( x + w/2 > wid ) {
1474 x = 0; 1474 x = 0;
1475 y += h; 1475 y += h;
1476 } 1476 }
1477 } 1477 }
1478 y= dayLabelHei; 1478 y= dayLabelHei;
1479 h = cellHei ; 1479 h = cellHei ;
1480 for ( i = 0; i < 6; i++) { 1480 for ( i = 0; i < 6; i++) {
1481 if ( i == (6-rowModulo)) 1481 if ( i == (6-rowModulo))
1482 ++h; 1482 ++h;
1483 mWeekLabels[i]->setGeometry( 0,y,weeklabelwid,h); 1483 mWeekLabels[i]->setGeometry( 0,y,weeklabelwid,h);
1484 y += h; 1484 y += h;
1485 } 1485 }
1486 mWeekLabels[6]->setGeometry( 0,0,weeklabelwid,dayLabelHei); 1486 mWeekLabels[6]->setGeometry( 0,0,weeklabelwid,dayLabelHei);
1487 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height()); 1487 // qDebug("RRRRRRRRRRRRR %d %d old %d %d", e->size().width(),e->size().height() , e->oldSize().width(),e->oldSize().height());
1488 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height()); 1488 //qDebug("parent %d %d ", topLevelWidget()->size().width(), topLevelWidget()->size().height());
1489 mShortDayLabels = mDayLabels[0]->width() < mWidthLongDayLabel ; 1489 mShortDayLabels = mDayLabels[0]->width() < mWidthLongDayLabel ;
1490 updateDayLabels(); 1490 updateDayLabels();
1491 bool forceUpdate = !updatePossible; 1491 bool forceUpdate = !updatePossible;
1492 updatePossible = true; 1492 updatePossible = true;
1493 //mWeekLabels[mNumWeeks]->setText( i18n("W")); 1493 //mWeekLabels[mNumWeeks]->setText( i18n("W"));
1494 if ( forceUpdate ) 1494 if ( forceUpdate )
1495 updateView(); 1495 updateView();
1496} 1496}
1497 1497
1498void KOMonthView::showContextMenu( Incidence *incidence ) 1498void KOMonthView::showContextMenu( Incidence *incidence )
1499{ 1499{
1500 mContextMenu->showIncidencePopup(incidence); 1500 mContextMenu->showIncidencePopup(incidence);
1501 /* 1501 /*
1502 if( incidence && incidence->type() == "Event" ) { 1502 if( incidence && incidence->type() == "Event" ) {
1503 Event *event = static_cast<Event *>(incidence); 1503 Event *event = static_cast<Event *>(incidence);
1504 mContextMenu->showEventPopup(event); 1504 mContextMenu->showEventPopup(event);
1505 } else { 1505 } else {
1506 kdDebug() << "MonthView::showContextMenu(): cast failed." << endl; 1506 kdDebug() << "MonthView::showContextMenu(): cast failed." << endl;
1507 } 1507 }
1508 */ 1508 */
1509} 1509}
1510MonthViewCell * KOMonthView::selectedCell( ) 1510MonthViewCell * KOMonthView::selectedCell( )
1511{ 1511{
1512 return mSelectedCell; 1512 return mSelectedCell;
1513} 1513}
1514void KOMonthView::setSelectedCell( MonthViewCell *cell ) 1514void KOMonthView::setSelectedCell( MonthViewCell *cell )
1515{ 1515{
1516 // qDebug("KOMonthView::setSelectedCell "); 1516 // qDebug("KOMonthView::setSelectedCell ");
1517 if ( mSelectedCell && mSelectedCell != cell ) { 1517 if ( mSelectedCell && mSelectedCell != cell ) {
1518 MonthViewCell * mvc = mSelectedCell; 1518 MonthViewCell * mvc = mSelectedCell;
1519 mSelectedCell = cell; 1519 mSelectedCell = cell;
1520 mvc->deselect(); 1520 mvc->deselect();
1521 } else 1521 } else
1522 mSelectedCell = cell; 1522 mSelectedCell = cell;
1523 // if ( mSelectedCell ) 1523 // if ( mSelectedCell )
1524 // mSelectedCell->select(); 1524 // mSelectedCell->select();
1525 if ( !mSelectedCell ) 1525 if ( !mSelectedCell )
1526 emit incidenceSelected( 0 ); 1526 emit incidenceSelected( 0 );
1527 else 1527 else
1528 emit incidenceSelected( mSelectedCell->selectedIncidence() ); 1528 emit incidenceSelected( mSelectedCell->selectedIncidence() );
1529} 1529}
1530 1530
1531void KOMonthView::processSelectionChange() 1531void KOMonthView::processSelectionChange()
1532{ 1532{
1533 QPtrList<Incidence> incidences = selectedIncidences(); 1533 QPtrList<Incidence> incidences = selectedIncidences();
1534 if (incidences.count() > 0) { 1534 if (incidences.count() > 0) {
1535 emit incidenceSelected( incidences.first() ); 1535 emit incidenceSelected( incidences.first() );
1536 } else { 1536 } else {
1537 emit incidenceSelected( 0 ); 1537 emit incidenceSelected( 0 );
1538 } 1538 }
1539} 1539}
1540 1540
1541void KOMonthView::clearSelection() 1541void KOMonthView::clearSelection()
1542{ 1542{
1543 if ( mSelectedCell ) { 1543 if ( mSelectedCell ) {
1544 mSelectedCell->deselect(); 1544 mSelectedCell->deselect();
1545 mSelectedCell = 0; 1545 mSelectedCell = 0;
1546 } 1546 }
1547} 1547}
1548void KOMonthView::keyPressEvent ( QKeyEvent * e ) 1548void KOMonthView::keyPressEvent ( QKeyEvent * e )
1549{ 1549{
1550 //qDebug("KOMonthView::keyPressEvent "); 1550 //qDebug("KOMonthView::keyPressEvent ");
1551 switch(e->key()) { 1551 switch(e->key()) {
1552 case Key_Up: 1552 case Key_Up:
1553 { 1553 {
1554 emit prevMonth(); 1554 emit prevMonth();
1555 mCells[0]->setFocus(); 1555 mCells[0]->setFocus();
1556 } 1556 }
1557 e->accept(); 1557 e->accept();
1558 break; 1558 break;
1559 case Key_Down: 1559 case Key_Down:
1560 { 1560 {
1561 emit nextMonth(); 1561 emit nextMonth();
1562 mCells[0]->setFocus(); 1562 mCells[0]->setFocus();
1563 1563
1564 } 1564 }
1565 e->accept(); 1565 e->accept();
1566 break; 1566 break;
1567 case Key_Return: 1567 case Key_Return:
1568 case Key_Enter: 1568 case Key_Enter:
1569 { 1569 {
1570 selectInternalWeekNum ( currentWeek() ); 1570 selectInternalWeekNum ( currentWeek() );
1571 } 1571 }
1572 e->accept(); 1572 e->accept();
1573 break; 1573 break;
1574 default: 1574 default:
1575 e->ignore(); 1575 e->ignore();
1576 break; 1576 break;
1577 } 1577 }
1578} 1578}
diff --git a/korganizer/kotodoviewitem.cpp b/korganizer/kotodoviewitem.cpp
index 6bdee18..78d4027 100644
--- a/korganizer/kotodoviewitem.cpp
+++ b/korganizer/kotodoviewitem.cpp
@@ -1,468 +1,464 @@
1/* 1/*
2 This file is part of KOrganizer. 2 This file is part of KOrganizer.
3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2000,2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18*/ 18*/
19 19
20#include <klocale.h> 20#include <klocale.h>
21#include <kdebug.h> 21#include <kdebug.h>
22#include <qapp.h> 22#include <qapp.h>
23 23
24#include <kiconloader.h> 24#include <kiconloader.h>
25#include "kotodoviewitem.h" 25#include "kotodoviewitem.h"
26#include "kotodoview.h" 26#include "kotodoview.h"
27#include "koprefs.h" 27#include "koprefs.h"
28 28
29KOTodoViewItem::KOTodoViewItem( QListView *parent, Todo *todo, KOTodoView *kotodo) 29KOTodoViewItem::KOTodoViewItem( QListView *parent, Todo *todo, KOTodoView *kotodo)
30 : QCheckListItem( parent , "", CheckBox ), mTodo( todo ), mTodoView( kotodo ) 30 : QCheckListItem( parent , "", CheckBox ), mTodo( todo ), mTodoView( kotodo )
31{ 31{
32 construct(); 32 construct();
33} 33}
34 34
35KOTodoViewItem::KOTodoViewItem( KOTodoViewItem *parent, Todo *todo, KOTodoView *kotodo ) 35KOTodoViewItem::KOTodoViewItem( KOTodoViewItem *parent, Todo *todo, KOTodoView *kotodo )
36 : QCheckListItem( parent, "", CheckBox ), mTodo( todo ), mTodoView( kotodo ) 36 : QCheckListItem( parent, "", CheckBox ), mTodo( todo ), mTodoView( kotodo )
37{ 37{
38 construct(); 38 construct();
39} 39}
40 40
41QString KOTodoViewItem::key(int column,bool) const 41QString KOTodoViewItem::key(int column,bool) const
42{ 42{
43 QMap<int,QString>::ConstIterator it = mKeyMap.find(column); 43 QMap<int,QString>::ConstIterator it = mKeyMap.find(column);
44 if (it == mKeyMap.end()) { 44 if (it == mKeyMap.end()) {
45 return text(column).lower(); 45 return text(column).lower();
46 } else { 46 } else {
47 return *it; 47 return *it;
48 } 48 }
49} 49}
50 50
51void KOTodoViewItem:: setup() 51void KOTodoViewItem:: setup()
52{ 52{
53 53
54 int h = 20; 54 int h = 20;
55 if ( listView () ) { 55 if ( listView () ) {
56 QFontMetrics fm ( listView ()->font () ); 56 QFontMetrics fm ( listView ()->font () );
57 h = fm.height(); 57 h = fm.height();
58 } 58 }
59 setHeight( h ); 59 setHeight( h );
60 60
61} 61}
62void KOTodoViewItem::setSortKey(int column,const QString &key) 62void KOTodoViewItem::setSortKey(int column,const QString &key)
63{ 63{
64 mKeyMap.insert(column,key); 64 mKeyMap.insert(column,key);
65} 65}
66 66
67#if QT_VERSION >= 0x030000 67#if QT_VERSION >= 0x030000
68void KOTodoViewItem::paintBranches(QPainter *p,const QColorGroup & cg,int w, 68void KOTodoViewItem::paintBranches(QPainter *p,const QColorGroup & cg,int w,
69 int y,int h) 69 int y,int h)
70{ 70{
71 QListViewItem::paintBranches(p,cg,w,y,h); 71 QListViewItem::paintBranches(p,cg,w,y,h);
72} 72}
73#else 73#else
74#endif 74#endif
75 75
76void KOTodoViewItem::construct() 76void KOTodoViewItem::construct()
77{ 77{
78 // qDebug("KOTodoViewItem::construct() "); 78 // qDebug("KOTodoViewItem::construct() ");
79 m_init = true; 79 m_init = true;
80 QString keyd = "=="; 80 QString keyd = "==";
81 QString keyt = "=="; 81 QString keyt = "==";
82 QString skeyd = "=="; 82 QString skeyd = "==";
83 QString skeyt = "=="; 83 QString skeyt = "==";
84 84
85 setOn(mTodo->isCompleted()); 85 setOn(mTodo->isCompleted());
86 setText(0,mTodo->summary()); 86 setText(0,mTodo->summary());
87 setText(1,QString::number(mTodo->priority())); 87 setText(1,QString::number(mTodo->priority()));
88 setText(2,i18n("%1 %").arg(QString::number(mTodo->percentComplete()))); 88 setText(2,i18n("%1 %").arg(QString::number(mTodo->percentComplete())));
89 if (mTodo->percentComplete()<100) { 89 if (mTodo->percentComplete()<100) {
90 if (mTodo->isCompleted()) setSortKey(2,QString::number(999)); 90 if (mTodo->isCompleted()) setSortKey(2,QString::number(999));
91 else setSortKey(2,QString::number(mTodo->percentComplete())); 91 else setSortKey(2,QString::number(mTodo->percentComplete()));
92 } 92 }
93 else { 93 else {
94 if (mTodo->isCompleted()) setSortKey(2,QString::number(999)); 94 if (mTodo->isCompleted()) setSortKey(2,QString::number(999));
95 else setSortKey(2,QString::number(99)); 95 else setSortKey(2,QString::number(99));
96 } 96 }
97 if (mTodo->hasDueDate()) { 97 if (mTodo->hasDueDate()) {
98 setText(3, mTodo->dtDueDateStr()); 98 setText(3, mTodo->dtDueDateStr());
99 QDate d = mTodo->dtDue().date(); 99 QDate d = mTodo->dtDue().date();
100 keyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); 100 keyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
101 // setSortKey(3,keyd); 101 // setSortKey(3,keyd);
102 if (mTodo->doesFloat()) { 102 if (mTodo->doesFloat()) {
103 setText(4,""); 103 setText(4,"");
104 } 104 }
105 else { 105 else {
106 setText(4,mTodo->dtDueTimeStr()); 106 setText(4,mTodo->dtDueTimeStr());
107 QTime t = mTodo->dtDue().time(); 107 QTime t = mTodo->dtDue().time();
108 keyt.sprintf("%02d%02d",t.hour(),t.minute()); 108 keyt.sprintf("%02d%02d",t.hour(),t.minute());
109 //setSortKey(4,keyt); 109 //setSortKey(4,keyt);
110 } 110 }
111 } else { 111 } else {
112 setText(3,""); 112 setText(3,"");
113 setText(4,""); 113 setText(4,"");
114 } 114 }
115 setSortKey(3,keyd); 115 setSortKey(3,keyd);
116 setSortKey(4,keyt); 116 setSortKey(4,keyt);
117 117
118 if (mTodo->isCompleted()) setSortKey(1,"6" + QString::number(mTodo->priority())+keyd+keyt); 118 if (mTodo->isCompleted()) setSortKey(1,"6" + QString::number(mTodo->priority())+keyd+keyt);
119 else setSortKey(1,QString::number(mTodo->priority())+keyd+keyt); 119 else setSortKey(1,QString::number(mTodo->priority())+keyd+keyt);
120 120
121 121
122 122
123 if (mTodo->hasStartDate()) { 123 if (mTodo->hasStartDate()) {
124 setText(5, mTodo->dtStartDateStr()); 124 setText(5, mTodo->dtStartDateStr());
125 QDate d = mTodo->dtStart().date(); 125 QDate d = mTodo->dtStart().date();
126 skeyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); 126 skeyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
127 127
128 if (mTodo->doesFloat()) { 128 if (mTodo->doesFloat()) {
129 setText(6,""); 129 setText(6,"");
130 } 130 }
131 else { 131 else {
132 setText(6,mTodo->dtStartTimeStr()); 132 setText(6,mTodo->dtStartTimeStr());
133 QTime t = mTodo->dtStart().time(); 133 QTime t = mTodo->dtStart().time();
134 skeyt.sprintf("%02d%02d",t.hour(),t.minute()); 134 skeyt.sprintf("%02d%02d",t.hour(),t.minute());
135 135
136 } 136 }
137 } else { 137 } else {
138 setText(5,""); 138 setText(5,"");
139 setText(6,""); 139 setText(6,"");
140 } 140 }
141 setSortKey(5,skeyd); 141 setSortKey(5,skeyd);
142 setSortKey(6,skeyt); 142 setSortKey(6,skeyt);
143 143
144 setText(7,mTodo->cancelled() ? i18n("Yes") : i18n("No")); 144 setText(7,mTodo->cancelled() ? i18n("Yes") : i18n("No"));
145 setText(8,mTodo->categoriesStr()); 145 setText(8,mTodo->categoriesStr());
146 146
147#if 0 147#if 0
148 // Find sort id in description. It's the text behind the last '#' character 148 // Find sort id in description. It's the text behind the last '#' character
149 // found in the description. White spaces are removed from beginning and end 149 // found in the description. White spaces are removed from beginning and end
150 // of sort id. 150 // of sort id.
151 int pos = mTodo->description().findRev('#'); 151 int pos = mTodo->description().findRev('#');
152 if (pos < 0) { 152 if (pos < 0) {
153 setText(6,""); 153 setText(6,"");
154 } else { 154 } else {
155 QString str = mTodo->description().mid(pos+1); 155 QString str = mTodo->description().mid(pos+1);
156 str.stripWhiteSpace(); 156 str.stripWhiteSpace();
157 setText(6,str); 157 setText(6,str);
158 } 158 }
159#endif 159#endif
160 160
161 m_known = false; 161 m_known = false;
162 m_init = false; 162 m_init = false;
163 163
164 setMyPixmap(); 164 setMyPixmap();
165 165
166} 166}
167void KOTodoViewItem::setMyPixmap() 167void KOTodoViewItem::setMyPixmap()
168{ 168{
169 int size = 5; 169 int size = 5;
170 QPixmap pixi = QPixmap( 1, 1 ); 170 QPixmap pixi = QPixmap( 1, 1 );
171 // if ( !mTodo->isCompleted() && mTodo->hasDueDate() && mTodo->dtDue() < QDateTime::currentDateTime() ) { 171 // if ( !mTodo->isCompleted() && mTodo->hasDueDate() && mTodo->dtDue() < QDateTime::currentDateTime() ) {
172// pixi = SmallIcon("redcross16"); 172// pixi = SmallIcon("redcross16");
173// } else { 173// } else {
174 QPainter p; 174 QPainter p;
175 175
176 int pixSize = 0; 176 int pixSize = 0;
177 QPixmap pPix = QPixmap( size, size ); 177 QPixmap pPix = QPixmap( size, size );
178 if ( mTodo->description().length() > 0 ) { 178 if ( mTodo->description().length() > 0 ) {
179 pixi.resize(size, pixSize+size); 179 pixi.resize(size, pixSize+size);
180 pPix.fill( Qt::darkGreen ); 180 pPix.fill( Qt::darkGreen );
181 p.begin( &pixi ); 181 p.begin( &pixi );
182 p. drawPixmap ( 0, pixSize, pPix); 182 p. drawPixmap ( 0, pixSize, pPix);
183 p.end(); 183 p.end();
184 pixSize += size; 184 pixSize += size;
185 } 185 }
186 if ( mTodo->isAlarmEnabled() ) { 186 if ( mTodo->isAlarmEnabled() ) {
187 pixi.resize(size, pixSize+size); 187 pixi.resize(size, pixSize+size);
188 pPix.fill( Qt::red ); 188 pPix.fill( Qt::red );
189 p.begin( &pixi ); 189 p.begin( &pixi );
190 p. drawPixmap ( 0, pixSize, pPix); 190 p. drawPixmap ( 0, pixSize, pPix);
191 p.end(); 191 p.end();
192 pixSize += size; 192 pixSize += size;
193 } 193 }
194 // } 194 // }
195 if ( pixi.width() > 1 ) { 195 if ( pixi.width() > 1 ) {
196 setPixmap ( 0,pixi ) ; 196 setPixmap ( 0,pixi ) ;
197 } else { 197 } else {
198 setPixmap ( 0,QPixmap() ) ; 198 setPixmap ( 0,QPixmap() ) ;
199 } 199 }
200} 200}
201void KOTodoViewItem::stateChange(bool state) 201void KOTodoViewItem::stateChange(bool state)
202{ 202{
203 // qDebug("KOTodoViewItem::stateChange "); 203 // qDebug("KOTodoViewItem::stateChange ");
204 // do not change setting on startup 204 // do not change setting on startup
205 if ( m_init ) return; 205 if ( m_init ) return;
206 if (isOn()!=state) { 206 if (isOn()!=state) {
207 setOn(state); 207 setOn(state);
208 //qDebug("SETON "); 208 //qDebug("SETON ");
209 return; 209 return;
210 } 210 }
211 if ( mTodo->isCompleted() == state ) { 211 if ( mTodo->isCompleted() == state ) {
212 //qDebug("STATECHANGE:nothing to do "); 212 //qDebug("STATECHANGE:nothing to do ");
213 return; 213 return;
214 } 214 }
215 QString keyd = "=="; 215 QString keyd = "==";
216 QString keyt = "=="; 216 QString keyt = "==";
217 //qDebug("KOTodoViewItem::stateChange %s ", text(0).latin1()); 217 //qDebug("KOTodoViewItem::stateChange %s ", text(0).latin1());
218 mTodo->setCompleted(state); 218 mTodo->setCompleted(state);
219 if (state) mTodo->setCompleted(QDateTime::currentDateTime()); 219 if (state) mTodo->setCompleted(QDateTime::currentDateTime());
220 220
221 if (mTodo->hasDueDate()) { 221 if (mTodo->hasDueDate()) {
222 setText(3, mTodo->dtDueDateStr()); 222 setText(3, mTodo->dtDueDateStr());
223 QDate d = mTodo->dtDue().date(); 223 QDate d = mTodo->dtDue().date();
224 keyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day()); 224 keyd.sprintf("%04d%02d%02d",d.year(),d.month(),d.day());
225 setSortKey(3,keyd); 225 setSortKey(3,keyd);
226 if (mTodo->doesFloat()) { 226 if (mTodo->doesFloat()) {
227 setText(4,""); 227 setText(4,"");
228 } 228 }
229 else { 229 else {
230 setText(4,mTodo->dtDueTimeStr()); 230 setText(4,mTodo->dtDueTimeStr());
231 QTime t = mTodo->dtDue().time(); 231 QTime t = mTodo->dtDue().time();
232 keyt.sprintf("%02d%02d",t.hour(),t.minute()); 232 keyt.sprintf("%02d%02d",t.hour(),t.minute());
233 setSortKey(4,keyt); 233 setSortKey(4,keyt);
234 } 234 }
235 } 235 }
236 if (mTodo->isCompleted()) setSortKey(1,QString::number(9)+keyd+keyt); 236 if (mTodo->isCompleted()) setSortKey(1,QString::number(9)+keyd+keyt);
237 else setSortKey(1,QString::number(mTodo->priority())+keyd+keyt); 237 else setSortKey(1,QString::number(mTodo->priority())+keyd+keyt);
238 238
239 setText(2,i18n("%1 %").arg(QString::number(mTodo->percentComplete()))); 239 setText(2,i18n("%1 %").arg(QString::number(mTodo->percentComplete())));
240 if (mTodo->percentComplete()<100) { 240 if (mTodo->percentComplete()<100) {
241 if (mTodo->isCompleted()) setSortKey(2,QString::number(999)); 241 if (mTodo->isCompleted()) setSortKey(2,QString::number(999));
242 else setSortKey(2,QString::number(mTodo->percentComplete())); 242 else setSortKey(2,QString::number(mTodo->percentComplete()));
243 } 243 }
244 else { 244 else {
245 if (mTodo->isCompleted()) setSortKey(2,QString::number(999)); 245 if (mTodo->isCompleted()) setSortKey(2,QString::number(999));
246 else setSortKey(2,QString::number(99)); 246 else setSortKey(2,QString::number(99));
247 } 247 }
248 if ( state ) { 248 if ( state ) {
249 QListViewItem * myChild = firstChild(); 249 QListViewItem * myChild = firstChild();
250 KOTodoViewItem *item; 250 KOTodoViewItem *item;
251 while( myChild ) { 251 while( myChild ) {
252 //qDebug("stateCH "); 252 //qDebug("stateCH ");
253 item = static_cast<KOTodoViewItem*>(myChild); 253 item = static_cast<KOTodoViewItem*>(myChild);
254 item->stateChange(state); 254 item->stateChange(state);
255 myChild = myChild->nextSibling(); 255 myChild = myChild->nextSibling();
256 } 256 }
257 } else { 257 } else {
258 QListViewItem * myChild = parent(); 258 QListViewItem * myChild = parent();
259 if ( myChild ) 259 if ( myChild )
260 (static_cast<KOTodoViewItem*>(myChild))->stateChange(state); 260 (static_cast<KOTodoViewItem*>(myChild))->stateChange(state);
261 } 261 }
262 mTodoView->modified(true); 262 mTodoView->modified(true);
263 setMyPixmap(); 263 setMyPixmap();
264 mTodoView->setTodoModified( mTodo ); 264 mTodoView->setTodoModified( mTodo );
265} 265}
266 266
267bool KOTodoViewItem::isAlternate() 267bool KOTodoViewItem::isAlternate()
268{ 268{
269#ifndef KORG_NOLVALTERNATION 269#ifndef KORG_NOLVALTERNATION
270 KOTodoListView *lv = static_cast<KOTodoListView *>(listView()); 270 KOTodoListView *lv = static_cast<KOTodoListView *>(listView());
271 if (lv && lv->alternateBackground().isValid()) 271 if (lv && lv->alternateBackground().isValid())
272 { 272 {
273 KOTodoViewItem *above = 0; 273 KOTodoViewItem *above = 0;
274 above = dynamic_cast<KOTodoViewItem *>(itemAbove()); 274 above = dynamic_cast<KOTodoViewItem *>(itemAbove());
275 m_known = above ? above->m_known : true; 275 m_known = above ? above->m_known : true;
276 if (m_known) 276 if (m_known)
277 { 277 {
278 m_odd = above ? !above->m_odd : false; 278 m_odd = above ? !above->m_odd : false;
279 } 279 }
280 else 280 else
281 { 281 {
282 KOTodoViewItem *item; 282 KOTodoViewItem *item;
283 bool previous = true; 283 bool previous = true;
284 if (QListViewItem::parent()) 284 if (QListViewItem::parent())
285 { 285 {
286 item = dynamic_cast<KOTodoViewItem *>(QListViewItem::parent()); 286 item = dynamic_cast<KOTodoViewItem *>(QListViewItem::parent());
287 if (item) 287 if (item)
288 previous = item->m_odd; 288 previous = item->m_odd;
289 item = dynamic_cast<KOTodoViewItem *>(QListViewItem::parent()->firstChild()); 289 item = dynamic_cast<KOTodoViewItem *>(QListViewItem::parent()->firstChild());
290 } 290 }
291 else 291 else
292 { 292 {
293 item = dynamic_cast<KOTodoViewItem *>(lv->firstChild()); 293 item = dynamic_cast<KOTodoViewItem *>(lv->firstChild());
294 } 294 }
295 295
296 while(item) 296 while(item)
297 { 297 {
298 item->m_odd = previous = !previous; 298 item->m_odd = previous = !previous;
299 item->m_known = true; 299 item->m_known = true;
300 item = dynamic_cast<KOTodoViewItem *>(item->nextSibling()); 300 item = dynamic_cast<KOTodoViewItem *>(item->nextSibling());
301 } 301 }
302 } 302 }
303 return m_odd; 303 return m_odd;
304 } 304 }
305 return false; 305 return false;
306#else 306#else
307 return false; 307 return false;
308#endif 308#endif
309} 309}
310 310
311void KOTodoViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment) 311void KOTodoViewItem::paintCell(QPainter *p, const QColorGroup &cg, int column, int width, int alignment)
312{ 312{
313 QColorGroup _cg = cg; 313 QColorGroup _cg = cg;
314 QColorGroup::ColorRole role; 314 QColorGroup::ColorRole role;
315 if ( KOPrefs::instance()->mTodoViewUsesForegroundColor ) 315 if ( KOPrefs::instance()->mTodoViewUsesForegroundColor )
316 role = QColorGroup::Text; 316 role = QColorGroup::Text;
317 else 317 else
318 role = QColorGroup::Base; 318 role = QColorGroup::Base;
319 //#ifndef KORG_NOLVALTERNATION 319 //#ifndef KORG_NOLVALTERNATION
320 // if (isAlternate()) 320 // if (isAlternate())
321 // _cg.setColor(QColorGroup::Base, static_cast< KOTodoListView* >(listView())->alternateBackground()); 321 // _cg.setColor(QColorGroup::Base, static_cast< KOTodoListView* >(listView())->alternateBackground());
322 bool setColor = KOPrefs::instance()->mTodoViewUsesCatColors; 322 bool setColor = KOPrefs::instance()->mTodoViewUsesCatColors;
323 QColor colorToSet; 323 QColor colorToSet;
324 if ( setColor ) { 324 if ( setColor ) {
325 QStringList categories = mTodo->categories(); 325 QStringList categories = mTodo->categories();
326 QString cat = categories.first(); 326 QString cat = categories.first();
327 if ( !cat.isEmpty()) { 327 if ( !cat.isEmpty()) {
328 colorToSet = *(KOPrefs::instance()->categoryColor(cat) ); 328 colorToSet = *(KOPrefs::instance()->categoryColor(cat) );
329 } else 329 } else
330 setColor = false; 330 setColor = false;
331 } 331 }
332 if (mTodo->hasDueDate()) { 332
333 if (mTodo->dtDue().date()==QDate::currentDate() && 333 int odue = mTodo->hasDueSubTodo( !isOpen());
334 !mTodo->isCompleted()) { 334 if (odue == 2) {
335 //_cg.setColor( role , KOPrefs::instance()->mTodoDueTodayColor); 335 colorToSet = KOPrefs::instance()->mTodoOverdueColor;
336 colorToSet = KOPrefs::instance()->mTodoDueTodayColor; 336 setColor = true;
337 setColor = true; 337 } else if ( odue == 1 ) {
338 } 338 colorToSet = KOPrefs::instance()->mTodoDueTodayColor;
339 if (mTodo->dtDue().date() < QDate::currentDate() && 339 setColor = true;
340 !mTodo->isCompleted()) { 340 }
341 //_cg.setColor( role, KOPrefs::instance()->mTodoOverdueColor); 341
342 colorToSet = KOPrefs::instance()->mTodoOverdueColor;
343 setColor = true;
344 }
345 }
346 342
347 if ( setColor ) { 343 if ( setColor ) {
348 _cg.setColor(role,colorToSet ); 344 _cg.setColor(role,colorToSet );
349 if ( role == QColorGroup::Base) { 345 if ( role == QColorGroup::Base) {
350 int rgb = colorToSet.red(); 346 int rgb = colorToSet.red();
351 rgb += colorToSet.blue()/2; 347 rgb += colorToSet.blue()/2;
352 rgb += colorToSet.green(); 348 rgb += colorToSet.green();
353 if ( rgb < 200 ) 349 if ( rgb < 200 )
354 _cg.setColor(QColorGroup::Text,Qt::white ); 350 _cg.setColor(QColorGroup::Text,Qt::white );
355 } 351 }
356 } 352 }
357 //#endif 353 //#endif
358 if ( column > 0 ){ 354 if ( column > 0 ){
359 if ( column == 2 && !KOPrefs::instance()->mTodoViewShowsPercentage ) { 355 if ( column == 2 && !KOPrefs::instance()->mTodoViewShowsPercentage ) {
360 p->save(); 356 p->save();
361 int progress = (int)(( (width-6)*mTodo->percentComplete())/100.0 + 0.5); 357 int progress = (int)(( (width-6)*mTodo->percentComplete())/100.0 + 0.5);
362 358
363 p->fillRect( 0, 0, width, height(), _cg.base() ); // background 359 p->fillRect( 0, 0, width, height(), _cg.base() ); // background
364 // p->setPen(Qt::black ); //border 360 // p->setPen(Qt::black ); //border
365 // p->setBrush( KOPrefs::instance()->mHighlightColorKGlobalSettings::baseColor() ); //filling 361 // p->setBrush( KOPrefs::instance()->mHighlightColorKGlobalSettings::baseColor() ); //filling
366 QColor fc = KOPrefs::instance()->mHighlightColor; 362 QColor fc = KOPrefs::instance()->mHighlightColor;
367 if ( mTodo->percentComplete() == 100 ) 363 if ( mTodo->percentComplete() == 100 )
368 fc = darkGreen; 364 fc = darkGreen;
369 p->drawRect( 2, 2, width-4, height()-4); 365 p->drawRect( 2, 2, width-4, height()-4);
370 p->fillRect( 3, 3, progress, height()-6, 366 p->fillRect( 3, 3, progress, height()-6,
371 fc ); 367 fc );
372 p->restore(); 368 p->restore();
373 } else { 369 } else {
374 QCheckListItem::paintCell(p, _cg, column, width, alignment); 370 QCheckListItem::paintCell(p, _cg, column, width, alignment);
375 } 371 }
376 return; 372 return;
377 } 373 }
378 374
379 int align = alignment; 375 int align = alignment;
380 376
381 if ( !p ) 377 if ( !p )
382 return; 378 return;
383 379
384 p->fillRect( 0, 0, width, height(), _cg.brush( QColorGroup::Base ) ); 380 p->fillRect( 0, 0, width, height(), _cg.brush( QColorGroup::Base ) );
385 381
386 QListView *lv = listView(); 382 QListView *lv = listView();
387 if ( !lv ) 383 if ( !lv )
388 return; 384 return;
389 int marg = 2;//lv->itemMargin(); 385 int marg = 2;//lv->itemMargin();
390 int r = 0; 386 int r = 0;
391 QCheckListItem::Type myType = QCheckListItem::CheckBox; 387 QCheckListItem::Type myType = QCheckListItem::CheckBox;
392 int BoxSize = 20; 388 int BoxSize = 20;
393 int boxOffset = 2; 389 int boxOffset = 2;
394 int xOffset = 2; 390 int xOffset = 2;
395 if (qApp->desktop()->width() < 300 ) { 391 if (qApp->desktop()->width() < 300 ) {
396 BoxSize = 14; 392 BoxSize = 14;
397 boxOffset = -1; 393 boxOffset = -1;
398 xOffset = 1; 394 xOffset = 1;
399 // marg = 0; 395 // marg = 0;
400 } 396 }
401 if ( height() < BoxSize ) { 397 if ( height() < BoxSize ) {
402 boxOffset = boxOffset - ((BoxSize - height())/2) ; 398 boxOffset = boxOffset - ((BoxSize - height())/2) ;
403 // qDebug("boxOffset %d height %d", boxOffset, height() ); 399 // qDebug("boxOffset %d height %d", boxOffset, height() );
404 BoxSize = height(); 400 BoxSize = height();
405 401
406 } 402 }
407 //bool winStyle = lv->style() == WindowsStyle; 403 //bool winStyle = lv->style() == WindowsStyle;
408 404
409 int lineStart = 5; 405 int lineStart = 5;
410 if ( myType == Controller ) { 406 if ( myType == Controller ) {
411 if ( !pixmap( 0 ) ) 407 if ( !pixmap( 0 ) )
412 r += BoxSize + 4; 408 r += BoxSize + 4;
413 } else { 409 } else {
414 ASSERT( lv ); //### 410 ASSERT( lv ); //###
415 //QFontMetrics fm( lv->font() ); 411 //QFontMetrics fm( lv->font() );
416 //int d = fm.height(); 412 //int d = fm.height();
417 int x = 0; 413 int x = 0;
418 int y = (height() - BoxSize) / 2; 414 int y = (height() - BoxSize) / 2;
419 //p->setPen( QPen( _cg.text(), winStyle ? 2 : 1 ) ); 415 //p->setPen( QPen( _cg.text(), winStyle ? 2 : 1 ) );
420 if ( myType == CheckBox ) { 416 if ( myType == CheckBox ) {
421 if ( isEnabled() ) 417 if ( isEnabled() )
422 p->setPen( QPen( _cg.text(), 1 ) ); 418 p->setPen( QPen( _cg.text(), 1 ) );
423 else 419 else
424 p->setPen( QPen( listView()->palette().color( QPalette::Disabled, QColorGroup::Text ), 1 ) ); 420 p->setPen( QPen( listView()->palette().color( QPalette::Disabled, QColorGroup::Text ), 1 ) );
425 p->drawRect( x+marg, y+2, BoxSize-4, BoxSize-4 ); 421 p->drawRect( x+marg, y+2, BoxSize-4, BoxSize-4 );
426 lineStart = x+marg; 422 lineStart = x+marg;
427 ///////////////////// 423 /////////////////////
428 x++; 424 x++;
429 y++; 425 y++;
430 if ( isOn() ) { 426 if ( isOn() ) {
431 QPointArray a( 7*2 ); 427 QPointArray a( 7*2 );
432 int i, xx, yy; 428 int i, xx, yy;
433 xx = x+xOffset+marg+(boxOffset/2); 429 xx = x+xOffset+marg+(boxOffset/2);
434 yy = y+5+boxOffset; 430 yy = y+5+boxOffset;
435 for ( i=0; i<3; i++ ) { 431 for ( i=0; i<3; i++ ) {
436 a.setPoint( 2*i, xx, yy ); 432 a.setPoint( 2*i, xx, yy );
437 a.setPoint( 2*i+1, xx, yy+2 ); 433 a.setPoint( 2*i+1, xx, yy+2 );
438 // qDebug(" "); 434 // qDebug(" ");
439 xx++; yy++; 435 xx++; yy++;
440 } 436 }
441 yy -= 2; 437 yy -= 2;
442 for ( i=3; i<7; i++ ) { 438 for ( i=3; i<7; i++ ) {
443 a.setPoint( 2*i, xx, yy ); 439 a.setPoint( 2*i, xx, yy );
444 a.setPoint( 2*i+1, xx, yy+2 ); 440 a.setPoint( 2*i+1, xx, yy+2 );
445 xx++; yy--; 441 xx++; yy--;
446 } 442 }
447 p->setPen( darkGreen ); 443 p->setPen( darkGreen );
448 p->drawLineSegments( a ); 444 p->drawLineSegments( a );
449 } 445 }
450 //////////////////////// 446 ////////////////////////
451 } 447 }
452 r += BoxSize + 4; 448 r += BoxSize + 4;
453 } 449 }
454 450
455 p->translate( r, 0 ); 451 p->translate( r, 0 );
456 p->setPen( QPen( _cg.text() ) ); 452 p->setPen( QPen( _cg.text() ) );
457 QListViewItem::paintCell( p, _cg, column, width - r, align ); 453 QListViewItem::paintCell( p, _cg, column, width - r, align );
458 if ( mTodo->cancelled () ) { 454 if ( mTodo->cancelled () ) {
459 p->setPen( black ); 455 p->setPen( black );
460 QRect br = p->boundingRect( 1,1,1,1,0,mTodo->summary() ); 456 QRect br = p->boundingRect( 1,1,1,1,0,mTodo->summary() );
461 int wid = br.width() +lineStart; 457 int wid = br.width() +lineStart;
462 if ( wid > width-3 ) 458 if ( wid > width-3 )
463 wid = width-3; 459 wid = width-3;
464 p->drawLine( lineStart, height()/2+1, wid, height()/2+1 ); 460 p->drawLine( lineStart, height()/2+1, wid, height()/2+1 );
465 461
466 } 462 }
467 463
468} 464}
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index a2c20a8..5bc8c00 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -965,769 +965,778 @@ void MainWindow::initActions()
965 day7_action->addTo( iconToolBar ); 965 day7_action->addTo( iconToolBar );
966 if (p-> mShowIconMonth) 966 if (p-> mShowIconMonth)
967 month_action->addTo( iconToolBar ); 967 month_action->addTo( iconToolBar );
968 if (p-> mShowIconTodoview) 968 if (p-> mShowIconTodoview)
969 todoview_action->addTo( iconToolBar ); 969 todoview_action->addTo( iconToolBar );
970 if (p-> mShowIconJournal) 970 if (p-> mShowIconJournal)
971 viewjournal_action->addTo( iconToolBar ); 971 viewjournal_action->addTo( iconToolBar );
972 icon = loadPixmap( pathString + "2leftarrowB" ); 972 icon = loadPixmap( pathString + "2leftarrowB" );
973 configureToolBarMenu->insertItem(icon, i18n("Prev. month"), 200, 14); 973 configureToolBarMenu->insertItem(icon, i18n("Prev. month"), 200, 14);
974 if (p-> mShowIconBackFast) { 974 if (p-> mShowIconBackFast) {
975 action = new QAction( i18n("Prev. month"), icon, i18n("Prev. month"),0 , this ); 975 action = new QAction( i18n("Prev. month"), icon, i18n("Prev. month"),0 , this );
976 connect( action, SIGNAL( activated() ), 976 connect( action, SIGNAL( activated() ),
977 mView, SLOT( goPreviousMonth() ) ); 977 mView, SLOT( goPreviousMonth() ) );
978 action->addTo( iconToolBar ); 978 action->addTo( iconToolBar );
979 } 979 }
980 icon = loadPixmap( pathString + "1leftarrowB" ); 980 icon = loadPixmap( pathString + "1leftarrowB" );
981 configureToolBarMenu->insertItem(icon, i18n("Go backward"), 210,15); 981 configureToolBarMenu->insertItem(icon, i18n("Go backward"), 210,15);
982 if (p-> mShowIconBack) { 982 if (p-> mShowIconBack) {
983 action = new QAction( i18n("Go backward"), icon, i18n("Go backward"),0 , this ); 983 action = new QAction( i18n("Go backward"), icon, i18n("Go backward"),0 , this );
984 connect( action, SIGNAL( activated() ), 984 connect( action, SIGNAL( activated() ),
985 mView, SLOT( goPrevious() ) ); 985 mView, SLOT( goPrevious() ) );
986 action->addTo( iconToolBar ); 986 action->addTo( iconToolBar );
987 } 987 }
988 icon = loadPixmap( pathString + "today" ); 988 icon = loadPixmap( pathString + "today" );
989 configureToolBarMenu->insertItem(icon, i18n("Go to Today"), 130); 989 configureToolBarMenu->insertItem(icon, i18n("Go to Today"), 130);
990 if (p-> mShowIconToday) 990 if (p-> mShowIconToday)
991 today_action->addTo( iconToolBar ); 991 today_action->addTo( iconToolBar );
992 icon = loadPixmap( pathString + "1rightarrowB" ); 992 icon = loadPixmap( pathString + "1rightarrowB" );
993 configureToolBarMenu->insertItem(icon, i18n("Go forward"), 220); 993 configureToolBarMenu->insertItem(icon, i18n("Go forward"), 220);
994 if (p-> mShowIconForward) { 994 if (p-> mShowIconForward) {
995 action = new QAction( i18n("Go forward"), icon, i18n("Go forward"),0 , this ); 995 action = new QAction( i18n("Go forward"), icon, i18n("Go forward"),0 , this );
996 connect( action, SIGNAL( activated() ), 996 connect( action, SIGNAL( activated() ),
997 mView, SLOT( goNext() ) ); 997 mView, SLOT( goNext() ) );
998 action->addTo( iconToolBar ); 998 action->addTo( iconToolBar );
999 } 999 }
1000 icon = loadPixmap( pathString + "2rightarrowB" ); 1000 icon = loadPixmap( pathString + "2rightarrowB" );
1001 configureToolBarMenu->insertItem(icon, i18n("Next month"), 230); 1001 configureToolBarMenu->insertItem(icon, i18n("Next month"), 230);
1002 if (p-> mShowIconForwardFast) { 1002 if (p-> mShowIconForwardFast) {
1003 action = new QAction( i18n("Next month"), icon, i18n("Next month"),0 , this ); 1003 action = new QAction( i18n("Next month"), icon, i18n("Next month"),0 , this );
1004 connect( action, SIGNAL( activated() ), 1004 connect( action, SIGNAL( activated() ),
1005 mView, SLOT( goNextMonth() ) ); 1005 mView, SLOT( goNextMonth() ) );
1006 action->addTo( iconToolBar ); 1006 action->addTo( iconToolBar );
1007 } 1007 }
1008 1008
1009 1009
1010 configureToolBarMenu->insertItem(i18n("What's This?"), 300); 1010 configureToolBarMenu->insertItem(i18n("What's This?"), 300);
1011 1011
1012 if (p-> mShowIconNewEvent) 1012 if (p-> mShowIconNewEvent)
1013 configureToolBarMenu->setItemChecked( 10, true ); 1013 configureToolBarMenu->setItemChecked( 10, true );
1014 if (p->mShowIconNewTodo ) 1014 if (p->mShowIconNewTodo )
1015 configureToolBarMenu->setItemChecked( 20, true ); 1015 configureToolBarMenu->setItemChecked( 20, true );
1016 if (p-> mShowIconSearch) 1016 if (p-> mShowIconSearch)
1017 configureToolBarMenu->setItemChecked( 120, true ); 1017 configureToolBarMenu->setItemChecked( 120, true );
1018 if (p-> mShowIconList) 1018 if (p-> mShowIconList)
1019 configureToolBarMenu->setItemChecked( 30, true ); 1019 configureToolBarMenu->setItemChecked( 30, true );
1020 if (p-> mShowIconDay1) 1020 if (p-> mShowIconDay1)
1021 configureToolBarMenu->setItemChecked( 40, true ); 1021 configureToolBarMenu->setItemChecked( 40, true );
1022 if (p-> mShowIconDay5) 1022 if (p-> mShowIconDay5)
1023 configureToolBarMenu->setItemChecked( 50, true ); 1023 configureToolBarMenu->setItemChecked( 50, true );
1024 if (p-> mShowIconDay7) 1024 if (p-> mShowIconDay7)
1025 configureToolBarMenu->setItemChecked( 60, true ); 1025 configureToolBarMenu->setItemChecked( 60, true );
1026 if (p-> mShowIconMonth) 1026 if (p-> mShowIconMonth)
1027 configureToolBarMenu->setItemChecked( 70, true ); 1027 configureToolBarMenu->setItemChecked( 70, true );
1028 if (p-> mShowIconTodoview) 1028 if (p-> mShowIconTodoview)
1029 configureToolBarMenu->setItemChecked( 80, true ); 1029 configureToolBarMenu->setItemChecked( 80, true );
1030 if (p-> mShowIconBackFast) 1030 if (p-> mShowIconBackFast)
1031 configureToolBarMenu->setItemChecked( 200, true ); 1031 configureToolBarMenu->setItemChecked( 200, true );
1032 if (p-> mShowIconBack) 1032 if (p-> mShowIconBack)
1033 configureToolBarMenu->setItemChecked( 210, true ); 1033 configureToolBarMenu->setItemChecked( 210, true );
1034 if (p-> mShowIconToday) 1034 if (p-> mShowIconToday)
1035 configureToolBarMenu->setItemChecked( 130, true ); 1035 configureToolBarMenu->setItemChecked( 130, true );
1036 if (p-> mShowIconForward) 1036 if (p-> mShowIconForward)
1037 configureToolBarMenu->setItemChecked( 220, true ); 1037 configureToolBarMenu->setItemChecked( 220, true );
1038 if (p-> mShowIconForwardFast) 1038 if (p-> mShowIconForwardFast)
1039 configureToolBarMenu->setItemChecked( 230, true ); 1039 configureToolBarMenu->setItemChecked( 230, true );
1040 if (p-> mShowIconNextDays) 1040 if (p-> mShowIconNextDays)
1041 configureToolBarMenu->setItemChecked( 100, true ); 1041 configureToolBarMenu->setItemChecked( 100, true );
1042 if (p-> mShowIconNext) 1042 if (p-> mShowIconNext)
1043 configureToolBarMenu->setItemChecked( 110, true ); 1043 configureToolBarMenu->setItemChecked( 110, true );
1044 if (p-> mShowIconJournal) 1044 if (p-> mShowIconJournal)
1045 configureToolBarMenu->setItemChecked( 90, true ); 1045 configureToolBarMenu->setItemChecked( 90, true );
1046 if (p-> mShowIconWhatsThis) 1046 if (p-> mShowIconWhatsThis)
1047 configureToolBarMenu->setItemChecked( 300, true ); 1047 configureToolBarMenu->setItemChecked( 300, true );
1048 1048
1049 QLabel* dummy = new QLabel( iconToolBar ); 1049 QLabel* dummy = new QLabel( iconToolBar );
1050 dummy->setBackgroundColor( iconToolBar->backgroundColor() ); 1050 dummy->setBackgroundColor( iconToolBar->backgroundColor() );
1051 if (!p-> mShowIconStretch) 1051 if (!p-> mShowIconStretch)
1052 iconToolBar->setStretchableWidget ( dummy ) ; 1052 iconToolBar->setStretchableWidget ( dummy ) ;
1053 else 1053 else
1054 configureToolBarMenu->setItemChecked( 5, true ); 1054 configureToolBarMenu->setItemChecked( 5, true );
1055 if (p-> mShowIconWhatsThis) 1055 if (p-> mShowIconWhatsThis)
1056 QWhatsThis::whatsThisButton ( iconToolBar ); 1056 QWhatsThis::whatsThisButton ( iconToolBar );
1057 connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) ); 1057 connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) );
1058 configureAgenda( p->mHourSize ); 1058 configureAgenda( p->mHourSize );
1059 connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) ); 1059 connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) );
1060} 1060}
1061 1061
1062void MainWindow::exportToPhone( int mode ) 1062void MainWindow::exportToPhone( int mode )
1063{ 1063{
1064 1064
1065 //ex2phone->insertItem(i18n("Complete calendar..."), 1 ); 1065 //ex2phone->insertItem(i18n("Complete calendar..."), 1 );
1066 //ex2phone->insertItem(i18n("Filtered calendar..."), 2 ); 1066 //ex2phone->insertItem(i18n("Filtered calendar..."), 2 );
1067 KOex2phonePrefs ex2phone; 1067 KOex2phonePrefs ex2phone;
1068 1068
1069 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection ); 1069 ex2phone.mPhoneConnection->setText( KPimGlobalPrefs::instance()->mEx2PhoneConnection );
1070 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice ); 1070 ex2phone.mPhoneDevice->setText( KPimGlobalPrefs::instance()->mEx2PhoneDevice );
1071 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel ); 1071 ex2phone.mPhoneModel->setText( KPimGlobalPrefs::instance()->mEx2PhoneModel );
1072 if ( mode == 1 ) 1072 if ( mode == 1 )
1073 ex2phone.setCaption(i18n("Export complete calendar")); 1073 ex2phone.setCaption(i18n("Export complete calendar"));
1074 if ( mode == 2 ) 1074 if ( mode == 2 )
1075 ex2phone.setCaption(i18n("Export filtered calendar")); 1075 ex2phone.setCaption(i18n("Export filtered calendar"));
1076 1076
1077 if ( !ex2phone.exec() ) { 1077 if ( !ex2phone.exec() ) {
1078 return; 1078 return;
1079 } 1079 }
1080 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text(); 1080 KPimGlobalPrefs::instance()->mEx2PhoneConnection = ex2phone.mPhoneConnection->text();
1081 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text(); 1081 KPimGlobalPrefs::instance()->mEx2PhoneDevice = ex2phone.mPhoneDevice->text();
1082 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text(); 1082 KPimGlobalPrefs::instance()->mEx2PhoneModel = ex2phone.mPhoneModel->text();
1083 1083
1084 int inFuture = 0; 1084 int inFuture = 0;
1085 if ( ex2phone.mWriteBackFuture->isChecked() ) 1085 if ( ex2phone.mWriteBackFuture->isChecked() )
1086 inFuture = ex2phone.mWriteBackFutureWeeks->value(); 1086 inFuture = ex2phone.mWriteBackFutureWeeks->value();
1087 QPtrList<Incidence> delSel; 1087 QPtrList<Incidence> delSel;
1088 if ( mode == 1 ) 1088 if ( mode == 1 )
1089 delSel = mCalendar->rawIncidences(); 1089 delSel = mCalendar->rawIncidences();
1090 if ( mode == 2 ) 1090 if ( mode == 2 )
1091 delSel = mCalendar->incidences(); 1091 delSel = mCalendar->incidences();
1092 CalendarLocal* cal = new CalendarLocal(); 1092 CalendarLocal* cal = new CalendarLocal();
1093 cal->setLocalTime(); 1093 cal->setLocalTime();
1094 Incidence *incidence = delSel.first(); 1094 Incidence *incidence = delSel.first();
1095 QDateTime cur = QDateTime::currentDateTime().addDays( -7 ); 1095 QDateTime cur = QDateTime::currentDateTime().addDays( -7 );
1096 QDateTime end = cur.addDays( ( inFuture +1 ) *7 ); 1096 QDateTime end = cur.addDays( ( inFuture +1 ) *7 );
1097 while ( incidence ) { 1097 while ( incidence ) {
1098 if ( incidence->type() != "Journal" ) { 1098 if ( incidence->type() != "Journal" ) {
1099 bool add = true; 1099 bool add = true;
1100 if ( inFuture ) { 1100 if ( inFuture ) {
1101 QDateTime dt; 1101 QDateTime dt;
1102 if ( incidence->type() == "Todo" ) { 1102 if ( incidence->type() == "Todo" ) {
1103 Todo * t = (Todo*)incidence; 1103 Todo * t = (Todo*)incidence;
1104 if ( t->hasDueDate() ) 1104 if ( t->hasDueDate() )
1105 dt = t->dtDue(); 1105 dt = t->dtDue();
1106 else 1106 else
1107 dt = cur.addSecs( 62 ); 1107 dt = cur.addSecs( 62 );
1108 } 1108 }
1109 else { 1109 else {
1110 bool ok; 1110 bool ok;
1111 dt = incidence->getNextOccurence( cur, &ok ); 1111 dt = incidence->getNextOccurence( cur, &ok );
1112 if ( !ok ) 1112 if ( !ok )
1113 dt = cur.addSecs( -62 ); 1113 dt = cur.addSecs( -62 );
1114 } 1114 }
1115 if ( dt < cur || dt > end ) { 1115 if ( dt < cur || dt > end ) {
1116 add = false; 1116 add = false;
1117 } 1117 }
1118 } 1118 }
1119 if ( add ) { 1119 if ( add ) {
1120 Incidence *in = incidence->clone(); 1120 Incidence *in = incidence->clone();
1121 cal->addIncidence( in ); 1121 cal->addIncidence( in );
1122 } 1122 }
1123 } 1123 }
1124 incidence = delSel.next(); 1124 incidence = delSel.next();
1125 } 1125 }
1126 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice, 1126 PhoneAccess::writeConfig( KPimGlobalPrefs::instance()->mEx2PhoneDevice,
1127 KPimGlobalPrefs::instance()->mEx2PhoneConnection, 1127 KPimGlobalPrefs::instance()->mEx2PhoneConnection,
1128 KPimGlobalPrefs::instance()->mEx2PhoneModel ); 1128 KPimGlobalPrefs::instance()->mEx2PhoneModel );
1129 1129
1130 setCaption( i18n("Writing to phone...")); 1130 setCaption( i18n("Writing to phone..."));
1131 if ( PhoneFormat::writeToPhone( cal ) ) 1131 if ( PhoneFormat::writeToPhone( cal ) )
1132 setCaption( i18n("Export to phone successful!")); 1132 setCaption( i18n("Export to phone successful!"));
1133 else 1133 else
1134 setCaption( i18n("Error exporting to phone!")); 1134 setCaption( i18n("Error exporting to phone!"));
1135 delete cal; 1135 delete cal;
1136} 1136}
1137 1137
1138 1138
1139void MainWindow::setDefaultPreferences() 1139void MainWindow::setDefaultPreferences()
1140{ 1140{
1141 KOPrefs *p = KOPrefs::instance(); 1141 KOPrefs *p = KOPrefs::instance();
1142 1142
1143 p->mCompactDialogs = true; 1143 p->mCompactDialogs = true;
1144 p->mConfirm = true; 1144 p->mConfirm = true;
1145 // p->mEnableQuickTodo = false; 1145 // p->mEnableQuickTodo = false;
1146 1146
1147} 1147}
1148 1148
1149QString MainWindow::resourcePath() 1149QString MainWindow::resourcePath()
1150{ 1150{
1151 return KGlobal::iconLoader()->iconPath(); 1151 return KGlobal::iconLoader()->iconPath();
1152} 1152}
1153 1153
1154void MainWindow::displayText( QString text ,QString cap ) 1154void MainWindow::displayText( QString text ,QString cap )
1155{ 1155{
1156 QDialog dia( this, "name", true ); ; 1156 QDialog dia( this, "name", true ); ;
1157 dia.setCaption( cap ); 1157 dia.setCaption( cap );
1158 QVBoxLayout* lay = new QVBoxLayout( &dia ); 1158 QVBoxLayout* lay = new QVBoxLayout( &dia );
1159 lay->setSpacing( 3 ); 1159 lay->setSpacing( 3 );
1160 lay->setMargin( 3 ); 1160 lay->setMargin( 3 );
1161 QTextBrowser tb ( &dia ); 1161 QTextBrowser tb ( &dia );
1162 lay->addWidget( &tb ); 1162 lay->addWidget( &tb );
1163 tb.setText( text ); 1163 tb.setText( text );
1164#ifdef DESKTOP_VERSION 1164#ifdef DESKTOP_VERSION
1165 dia.resize( 640, 480); 1165 dia.resize( 640, 480);
1166#else 1166#else
1167 dia.showMaximized(); 1167 dia.showMaximized();
1168#endif 1168#endif
1169 dia.exec(); 1169 dia.exec();
1170} 1170}
1171 1171
1172void MainWindow::features() 1172void MainWindow::features()
1173{ 1173{
1174 1174
1175 KApplication::showFile( i18n("KO/Pi Features and hints"), "kdepim/korganizer/featuresKOPI.txt" ); 1175 KApplication::showFile( i18n("KO/Pi Features and hints"), "kdepim/korganizer/featuresKOPI.txt" );
1176} 1176}
1177 1177
1178void MainWindow::usertrans() 1178void MainWindow::usertrans()
1179{ 1179{
1180 1180
1181 KApplication::showFile( i18n("KO/Pi User translation HowTo"), "kdepim/korganizer/usertranslationHOWTO.txt" ); 1181 KApplication::showFile( i18n("KO/Pi User translation HowTo"), "kdepim/korganizer/usertranslationHOWTO.txt" );
1182} 1182}
1183 1183
1184void MainWindow::kdesynchowto() 1184void MainWindow::kdesynchowto()
1185{ 1185{
1186 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" ); 1186 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/Zaurus-KDE_syncHowTo.txt" );
1187} 1187}
1188void MainWindow::multisynchowto() 1188void MainWindow::multisynchowto()
1189{ 1189{
1190 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" ); 1190 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/MultiSyncHowTo.txt" );
1191} 1191}
1192void MainWindow::synchowto() 1192void MainWindow::synchowto()
1193{ 1193{
1194 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" ); 1194 KApplication::showFile( "KDE-Pim/Pi Synchronization HowTo", "kdepim/SyncHowto.txt" );
1195} 1195}
1196void MainWindow::faq() 1196void MainWindow::faq()
1197{ 1197{
1198 KApplication::showFile( i18n("KO/Pi FAQ"), "kdepim/korganizer/kopiFAQ.txt" ); 1198 KApplication::showFile( i18n("KO/Pi FAQ"), "kdepim/korganizer/kopiFAQ.txt" );
1199 1199
1200} 1200}
1201void MainWindow::whatsNew() 1201void MainWindow::whatsNew()
1202{ 1202{
1203 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" ); 1203 KApplication::showFile( "KDE-Pim/Pi Version Info", "kdepim/WhatsNew.txt" );
1204 1204
1205} 1205}
1206void MainWindow::licence() 1206void MainWindow::licence()
1207{ 1207{
1208 KApplication::showLicence(); 1208 KApplication::showLicence();
1209 1209
1210} 1210}
1211void MainWindow::about() 1211void MainWindow::about()
1212{ 1212{
1213 QString version; 1213 QString version;
1214#include <../version> 1214#include <../version>
1215 QMessageBox::about( this, i18n("About KOrganizer/Pi"), 1215 QMessageBox::about( this, i18n("About KOrganizer/Pi"),
1216 i18n("KOrganizer/Platform-independent\n") + 1216 i18n("KOrganizer/Platform-independent\n") +
1217 "(KO/Pi) " + version + " - " + 1217 "(KO/Pi) " + version + " - " +
1218 1218
1219#ifdef DESKTOP_VERSION 1219#ifdef DESKTOP_VERSION
1220 i18n("Desktop Edition\n") + 1220 i18n("Desktop Edition\n") +
1221#else 1221#else
1222 i18n("PDA-Edition\nfor: Zaurus 5x00 / 7x0 / 8x0\n") + 1222 i18n("PDA-Edition\nfor: Zaurus 5x00 / 7x0 / 8x0\n") +
1223#endif 1223#endif
1224 i18n("(c) 2004 Lutz Rogowski\nEmail:lutz@pi-sync.net\nKO/Pi is based on KOrganizer\n(c) 2002,2003 Cornelius Schumacher\nEmail: schumacher@kde.org\nKOrganizer/Pi is licensed\nunder the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.korganizer.org\nwww.pi-sync.net\n") ); 1224 i18n("(c) 2004 Lutz Rogowski\nEmail:lutz@pi-sync.net\nKO/Pi is based on KOrganizer\n(c) 2002,2003 Cornelius Schumacher\nEmail: schumacher@kde.org\nKOrganizer/Pi is licensed\nunder the GPL.\nKO/Pi can be compiled for\nLinux, Zaurus-PDA and Windows\nwww.korganizer.org\nwww.pi-sync.net\n") );
1225} 1225}
1226void MainWindow::keyBindings() 1226void MainWindow::keyBindings()
1227{ 1227{
1228 QString cap = i18n("KO/Pi Keys + Colors"); 1228 QString cap = i18n("KO/Pi Keys + Colors");
1229 QString text = i18n("<p><h2>KO/Pi key shortcuts:</h2></p>\n") + 1229 QString text = i18n("<p><h2>KO/Pi key shortcuts:</h2></p>\n") +
1230 i18n("<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n")+ 1230 i18n("<p><b>H</b>: This help dialog | <b>S</b>: Search dialog</p>\n")+
1231 i18n("<p><b>I</b>: Show info for selected event/todo</p>\n") + 1231 i18n("<p><b>I</b>: Show info for selected event/todo</p>\n") +
1232 i18n("<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n")+ 1232 i18n("<p><b>Space</b>: Toggle fullscreen | <b>P</b>: Date picker</p>\n")+
1233 i18n("<p><b>F</b>: Toggle filterview |<b>F+ctrl</b>: Edit filter </p>\n")+ 1233 i18n("<p><b>F</b>: Toggle filterview |<b>F+ctrl</b>: Edit filter </p>\n")+
1234 i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+ 1234 i18n("<p><b>O</b>: Filter On/Off | <b>J</b>: Journal view</p>\n")+
1235 i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+ 1235 i18n("<p><b>1-0</b> (+<b>ctrl</b>): Select filter 1-10 (11-20)</p>\n")+
1236 i18n("<p><b>N</b>: Next days view| <b>W</b>: What's next view\n ")+ 1236 i18n("<p><b>N</b>: Next days view| <b>W</b>: What's next view\n ")+
1237 i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+ 1237 i18n("<p><b>V</b>: Todo view | <b>L</b>: Event list view</p>\n")+
1238 i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+ 1238 i18n("<p><b>Z,Y</b>: Work week view | <b>U</b>: Week view</p>\n")+
1239 i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+ 1239 i18n("<p><b>D</b>: One day view | <b>M</b>: Month view</p>\n")+
1240 i18n("<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n")+ 1240 i18n("<p><b>E</b>: Edit selected item |<b> E+ctrl</b>: New Event</p>\n")+
1241 i18n("<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n")+ 1241 i18n("<p><b>T</b>: Goto today | <b>T+ctrl</b>: New Todo</p>\n")+
1242 i18n("<p><b>S+ctrl</b>: Add sub-todo | <b>X</b>: Toggle datenavigator</p>\n")+ 1242 i18n("<p><b>S+ctrl</b>: Add sub-todo | <b>X</b>: Toggle datenavigator</p>\n")+
1243 i18n("<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n")+ 1243 i18n("<p><b>+,-</b> : Zoom in/out agenda | <b>A</b>: Toggle allday agenda height</p>\n")+
1244 i18n("<p><b>C</b>: Show current time in agenda view</p>\n")+ 1244 i18n("<p><b>C</b>: Show current time in agenda view</p>\n")+
1245 i18n("<p><b>B</b>: Edit description (details) of selected item</p>\n")+ 1245 i18n("<p><b>B</b>: Edit description (details) of selected item</p>\n")+
1246 i18n("<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n")+ 1246 i18n("<p><b>right</b>: Next week | <b>right+ctrl</b>: Next month</p>\n")+
1247 i18n("<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n")+ 1247 i18n("<p><b>left</b>: Prev. week | <b>left+ctrl</b>: Prev. month</p>\n")+
1248 i18n("<p><b>del,backspace</b>: Delete selected item</p>\n")+ 1248 i18n("<p><b>del,backspace</b>: Delete selected item</p>\n")+
1249 i18n("<p><h3>In agenda view:</h3></p>\n") + 1249 i18n("<p><h3>In agenda view:</h3></p>\n") +
1250 i18n("<p><b>up/down</b>: Scroll agenda view</p>\n")+ 1250 i18n("<p><b>up/down</b>: Scroll agenda view</p>\n")+
1251 i18n("<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n")+ 1251 i18n("<p><b>ctrl+up/down</b>: Scroll small todo view</p>\n")+
1252 i18n("<p><h3>In todo view:</h3></p>\n") + 1252 i18n("<p><h3>In todo view:</h3></p>\n") +
1253 i18n("<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n")+ 1253 i18n("<p><b>shift+U</b>: <b>U</b>nparent todo (make root todo)</p>\n")+
1254 i18n("<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n")+ 1254 i18n("<p><b>shift+S</b>: Make <b>S</b>ubtodo (reparent todo)</p>\n")+
1255 i18n("<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n")+ 1255 i18n("<p><b>shift+P</b>: Make new <b>P</b>arent for todo selected with shift+S</p>\n")+
1256 i18n("<p><b>Q</b>: Toggle quick todo line edit.</p>\n")+ 1256 i18n("<p><b>Q</b>: Toggle quick todo line edit.</p>\n")+
1257 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ 1257 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+
1258 i18n("<p><b>return</b>: Mark item as completed+one step down.</p>\n")+ 1258 i18n("<p><b>return</b>: Mark item as completed+one step down.</p>\n")+
1259 i18n("<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n")+ 1259 i18n("<p><b>return+shift</b>: Mark item as not completed+one step down</p>\n")+
1260 i18n("<p><h3>In list view:</h3></p>\n") + 1260 i18n("<p><h3>In list view:</h3></p>\n") +
1261 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+ 1261 i18n("<p><b>I</b>: Show info of current item+one step down.</p>\n")+
1262 i18n("<p><b>return</b>: Select item+one step down</p>\n")+ 1262 i18n("<p><b>return</b>: Select item+one step down</p>\n")+
1263 i18n("<p><b>return+shift</b>: Deselect item+one step down</p>\n")+ 1263 i18n("<p><b>return+shift</b>: Deselect item+one step down</p>\n")+
1264 i18n("<p><b>up/down</b>: Next/prev item</p>\n")+ 1264 i18n("<p><b>up/down</b>: Next/prev item</p>\n")+
1265 i18n("<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n")+ 1265 i18n("<p><b>ctrl+up/down</b>: Goto up/down by 20% of items</p>\n")+
1266 i18n("<p><b>shift+up/down</b>: Goto first/last item</p>\n")+ 1266 i18n("<p><b>shift+up/down</b>: Goto first/last item</p>\n")+
1267 i18n("<p><h3>In event/todo viewer:</h3></p>\n") + 1267 i18n("<p><h3>In event/todo viewer:</h3></p>\n") +
1268 i18n("<p><b>I,C</b>: Close dialog.</p>\n")+ 1268 i18n("<p><b>I,C</b>: Close dialog.</p>\n")+
1269 i18n("<p><b>A</b>: Show agenda view.</p>\n")+ 1269 i18n("<p><b>A</b>: Show agenda view.</p>\n")+
1270 i18n("<p><b>E</b>: Edit item</p>\n") + 1270 i18n("<p><b>E</b>: Edit item</p>\n") +
1271 i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") + 1271 i18n("<p><h2>KO/Pi icon colors:</h2></p>\n") +
1272 i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") + 1272 i18n("<p><b>(for square icons in agenda and month view)</b></p>\n") +
1273 i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+ 1273 i18n("<p><b>Cross</b>: Item cancelled.([c] in Whats'Next view)</p>\n")+
1274 i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+ 1274 i18n("<p><b>Red</b>: Alarm set.([a] in Whats'Next view)</p>\n")+
1275 i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+ 1275 i18n("<p><b>Blue</b>: Recurrent event.([r] in Whats'Next view)</p>\n")+
1276 i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+ 1276 i18n("<p><b>Dark green</b>: Information(description) available.([i] in WN view)</p>\n")+
1277 i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+ 1277 i18n("<p><b>Black</b>: Event/todo with attendees. You are the organizer!</p>\n")+
1278 i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") + 1278 i18n("<p><b>Dark yellow</b>: Event/todo with attendees.</p>\n") +
1279 i18n("<p><b>White</b>: Item readonly</p>\n"); 1279 i18n("<p><b>White</b>: Item readonly</p>\n");
1280 displayText( text, cap); 1280 displayText( text, cap);
1281} 1281}
1282void MainWindow::aboutAutoSaving() 1282void MainWindow::aboutAutoSaving()
1283{ 1283{
1284 QString text = i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n"); 1284 QString text = i18n("After changing something, the data is\nautomatically saved to the file\n~/kdepim/apps/korganizer/mycalendar.ics\nafter (configurable) three minutes.\nFor safety reasons there is one autosaving\nafter 10 minutes (of idle time) again. The \ndata is saved automatically when closing KO/Pi\nYou can create a backup file \nwith: File - Save Calendar Backup\n");
1285 1285
1286 KApplication::showText( i18n("Auto Saving in KOrganizer/Pi"), text); 1286 KApplication::showText( i18n("Auto Saving in KOrganizer/Pi"), text);
1287 1287
1288} 1288}
1289void MainWindow::aboutKnownBugs() 1289void MainWindow::aboutKnownBugs()
1290{ 1290{
1291 QMessageBox* msg; 1291 QMessageBox* msg;
1292 msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"), 1292 msg = new QMessageBox( i18n("Known Problems in KOrganizer/Pi"),
1293 i18n("1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n")+ 1293 i18n("1) Importing *.vcs or *.ics files from\nother applications may not work properly,\nif there are events with properties\nKO/Pi does not support.\n")+
1294 i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+ 1294 i18n("2) Audio alarm daemon\nfor Zaurus is available!\nas an additional small application\n")+
1295 i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.net\n") + 1295 i18n("\nPlease report unexpected behaviour to\nlutz@pi-sync.net\n") +
1296 i18n("\nor report them in the bugtracker on\n") + 1296 i18n("\nor report them in the bugtracker on\n") +
1297 i18n("\nhttp://sourceforge.net/projects/kdepimpi\n"), 1297 i18n("\nhttp://sourceforge.net/projects/kdepimpi\n"),
1298 QMessageBox::NoIcon, 1298 QMessageBox::NoIcon,
1299 QMessageBox::Ok, 1299 QMessageBox::Ok,
1300 QMessageBox::NoButton, 1300 QMessageBox::NoButton,
1301 QMessageBox::NoButton); 1301 QMessageBox::NoButton);
1302 msg->exec(); 1302 msg->exec();
1303 delete msg; 1303 delete msg;
1304 1304
1305} 1305}
1306 1306
1307QString MainWindow::defaultFileName() 1307QString MainWindow::defaultFileName()
1308{ 1308{
1309 return locateLocal( "data", "korganizer/mycalendar.ics" ); 1309 return locateLocal( "data", "korganizer/mycalendar.ics" );
1310} 1310}
1311QString MainWindow::syncFileName() 1311QString MainWindow::syncFileName()
1312{ 1312{
1313#ifdef DESKTOP_VERSION 1313#ifdef DESKTOP_VERSION
1314 return locateLocal( "tmp", "synccalendar.ics" ); 1314 return locateLocal( "tmp", "synccalendar.ics" );
1315#else 1315#else
1316 return QString( "/tmp/synccalendar.ics" ); 1316 return QString( "/tmp/synccalendar.ics" );
1317#endif 1317#endif
1318} 1318}
1319 1319
1320void MainWindow::processIncidenceSelection( Incidence *incidence ) 1320void MainWindow::processIncidenceSelection( Incidence *incidence )
1321{ 1321{
1322 if ( !incidence ) { 1322 if ( !incidence ) {
1323 enableIncidenceActions( false ); 1323 enableIncidenceActions( false );
1324 1324
1325 mNewSubTodoAction->setEnabled( false ); 1325 mNewSubTodoAction->setEnabled( false );
1326 setCaptionToDates(); 1326 setCaptionToDates();
1327 return; 1327 return;
1328 1328
1329 } 1329 }
1330 1330
1331 //KGlobal::locale()->formatDateTime(nextA, true); 1331 //KGlobal::locale()->formatDateTime(nextA, true);
1332 QString startString = ""; 1332 QString startString = "";
1333 if ( incidence->type() != "Todo" ) { 1333 if ( incidence->type() != "Todo" ) {
1334 if ( incidence->dtStart().date() < incidence->dtEnd().date() ) { 1334 if ( incidence->dtStart().date() < incidence->dtEnd().date() ) {
1335 if ( incidence->doesFloat() ) { 1335 if ( incidence->doesFloat() ) {
1336 startString += ": "+incidence->dtStartDateStr( true ); 1336 startString += ": "+incidence->dtStartDateStr( true );
1337 startString += " --- "+((Event*)incidence)->dtEndDateStr( true ); 1337 startString += " --- "+((Event*)incidence)->dtEndDateStr( true );
1338 1338
1339 } else { 1339 } else {
1340 startString = ": "+incidence->dtStartStr(true); 1340 startString = ": "+incidence->dtStartStr(true);
1341 startString += " --- "+((Event*)incidence)->dtEndStr(true); 1341 startString += " --- "+((Event*)incidence)->dtEndStr(true);
1342 1342
1343 } 1343 }
1344 1344
1345 } else { 1345 } else {
1346 if ( incidence->dtStart().time() != incidence->dtEnd().time() ) 1346 if ( incidence->dtStart().time() != incidence->dtEnd().time() )
1347 startString = ": "+KGlobal::locale()->formatTime(incidence->dtStart().time())+ 1347 startString = ": "+KGlobal::locale()->formatTime(incidence->dtStart().time())+
1348 "-"+KGlobal::locale()->formatTime(incidence->dtEnd().time()); 1348 "-"+KGlobal::locale()->formatTime(incidence->dtEnd().time());
1349 startString +=" "+KGlobal::locale()->formatDate( incidence->dtStart().date(), true); 1349 if ( incidence->categories().contains( i18n("Birthday") ) || incidence->categories().contains( i18n("Anniversary") ) ) {
1350 bool ok;
1351 QDateTime noc = incidence->getNextOccurence( mView->startDate().addDays(-1), &ok );
1352 if ( ok ) {
1353 int years = noc.date().year() - incidence->dtStart().date().year();
1354 startString += i18n(" (%1 y.)"). arg( years );
1355 }
1356 }
1357 else
1358 startString +=" "+KGlobal::locale()->formatDate( incidence->dtStart().date(), true);
1350 } 1359 }
1351 1360
1352 } 1361 }
1353 else 1362 else
1354 startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +i18n("\% completed"); 1363 startString = i18n(": (Prio ") +QString::number( (( KCal::Todo*)incidence)->priority() ) +") "+QString::number( (( KCal::Todo*)incidence)->percentComplete() ) +i18n("\% completed");
1355 if ( !incidence->location().isEmpty() ) 1364 if ( !incidence->location().isEmpty() )
1356 startString += " (" +incidence->location()+")"; 1365 startString += " (" +incidence->location()+")";
1357 setCaption( incidence->summary()+startString); 1366 setCaption( incidence->summary()+startString);
1358 1367
1359 enableIncidenceActions( true ); 1368 enableIncidenceActions( true );
1360 1369
1361 if ( incidence->type() == "Event" ) { 1370 if ( incidence->type() == "Event" ) {
1362 mShowAction->setText( i18n("Show Event...") ); 1371 mShowAction->setText( i18n("Show Event...") );
1363 mEditAction->setText( i18n("Edit Event...") ); 1372 mEditAction->setText( i18n("Edit Event...") );
1364 mDeleteAction->setText( i18n("Delete Event...") ); 1373 mDeleteAction->setText( i18n("Delete Event...") );
1365 1374
1366 mNewSubTodoAction->setEnabled( false ); 1375 mNewSubTodoAction->setEnabled( false );
1367 } else if ( incidence->type() == "Todo" ) { 1376 } else if ( incidence->type() == "Todo" ) {
1368 mShowAction->setText( i18n("Show Todo...") ); 1377 mShowAction->setText( i18n("Show Todo...") );
1369 mEditAction->setText( i18n("Edit Todo...") ); 1378 mEditAction->setText( i18n("Edit Todo...") );
1370 mDeleteAction->setText( i18n("Delete Todo...") ); 1379 mDeleteAction->setText( i18n("Delete Todo...") );
1371 1380
1372 mNewSubTodoAction->setEnabled( true ); 1381 mNewSubTodoAction->setEnabled( true );
1373 } else { 1382 } else {
1374 mShowAction->setText( i18n("Show...") ); 1383 mShowAction->setText( i18n("Show...") );
1375 mShowAction->setText( i18n("Edit...") ); 1384 mShowAction->setText( i18n("Edit...") );
1376 mShowAction->setText( i18n("Delete...") ); 1385 mShowAction->setText( i18n("Delete...") );
1377 1386
1378 mNewSubTodoAction->setEnabled( false ); 1387 mNewSubTodoAction->setEnabled( false );
1379 } 1388 }
1380} 1389}
1381 1390
1382void MainWindow::enableIncidenceActions( bool enabled ) 1391void MainWindow::enableIncidenceActions( bool enabled )
1383{ 1392{
1384 mShowAction->setEnabled( enabled ); 1393 mShowAction->setEnabled( enabled );
1385 mEditAction->setEnabled( enabled ); 1394 mEditAction->setEnabled( enabled );
1386 mDeleteAction->setEnabled( enabled ); 1395 mDeleteAction->setEnabled( enabled );
1387 1396
1388 mCloneAction->setEnabled( enabled ); 1397 mCloneAction->setEnabled( enabled );
1389 mMoveAction->setEnabled( enabled ); 1398 mMoveAction->setEnabled( enabled );
1390 mBeamAction->setEnabled( enabled ); 1399 mBeamAction->setEnabled( enabled );
1391 mCancelAction->setEnabled( enabled ); 1400 mCancelAction->setEnabled( enabled );
1392} 1401}
1393 1402
1394void MainWindow::importOL() 1403void MainWindow::importOL()
1395{ 1404{
1396#ifdef _OL_IMPORT_ 1405#ifdef _OL_IMPORT_
1397 KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this ); 1406 KOImportOLdialog *id = new KOImportOLdialog("Import from OL - select folder!" , mView->calendar(),this );
1398 id->exec(); 1407 id->exec();
1399 delete id; 1408 delete id;
1400 mView->updateView(); 1409 mView->updateView();
1401#endif 1410#endif
1402} 1411}
1403void MainWindow::importBday() 1412void MainWindow::importBday()
1404{ 1413{
1405 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1414 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1406 i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"), 1415 i18n("When importing birthdays twice\nduplicated events will be ignored,\nif the event has not been\nchanged in KO/Pi!\n"),
1407 i18n("Import!"), i18n("Cancel"), 0, 1416 i18n("Import!"), i18n("Cancel"), 0,
1408 0, 1 ); 1417 0, 1 );
1409 if ( result == 0 ) { 1418 if ( result == 0 ) {
1410 mView->importBday(); 1419 mView->importBday();
1411 1420
1412 } 1421 }
1413 1422
1414 1423
1415} 1424}
1416void MainWindow::importQtopia() 1425void MainWindow::importQtopia()
1417{ 1426{
1418#ifndef DESKTOP_VERSION 1427#ifndef DESKTOP_VERSION
1419 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1428 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1420 i18n("When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing"), 1429 i18n("When importing a calendar twice\nduplicated events will be ignored!\nYou can create a backup file with\nFile - Save Calendar Backup\nto revert importing"),
1421 i18n("Import!"), i18n("Cancel"), 0, 1430 i18n("Import!"), i18n("Cancel"), 0,
1422 0, 1 ); 1431 0, 1 );
1423 if ( result == 0 ) { 1432 if ( result == 0 ) {
1424 QString datebook = Global::applicationFileName( "datebook", "datebook.xml"); 1433 QString datebook = Global::applicationFileName( "datebook", "datebook.xml");
1425 QString todolist = Global::applicationFileName( "todolist", "todolist.xml"); 1434 QString todolist = Global::applicationFileName( "todolist", "todolist.xml");
1426 QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml"; 1435 QString categories = QString( getenv( "HOME" ) ) + "/Settings/Categories.xml";
1427 mView->importQtopia( categories, datebook, todolist ); 1436 mView->importQtopia( categories, datebook, todolist );
1428 } 1437 }
1429#else 1438#else
1430 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"), 1439 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),
1431 i18n("Not supported \non desktop!\n"), 1440 i18n("Not supported \non desktop!\n"),
1432 i18n("Ok"), i18n("Cancel"), 0, 1441 i18n("Ok"), i18n("Cancel"), 0,
1433 0, 1 ); 1442 0, 1 );
1434 1443
1435#endif 1444#endif
1436} 1445}
1437 1446
1438void MainWindow::saveOnClose() 1447void MainWindow::saveOnClose()
1439{ 1448{
1440 KOPrefs *p = KOPrefs::instance(); 1449 KOPrefs *p = KOPrefs::instance();
1441 p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal ); 1450 p->mToolBarHor = ( iconToolBar->orientation () == Qt:: Horizontal );
1442 p->mToolBarUp = iconToolBar->x() > width()/2 || 1451 p->mToolBarUp = iconToolBar->x() > width()/2 ||
1443 iconToolBar->y() > height()/2; 1452 iconToolBar->y() > height()/2;
1444 mView->writeSettings(); 1453 mView->writeSettings();
1445 if ( mCalendarModifiedFlag || mView->checkFileChanged( defaultFileName())) 1454 if ( mCalendarModifiedFlag || mView->checkFileChanged( defaultFileName()))
1446 save(); 1455 save();
1447} 1456}
1448void MainWindow::slotModifiedChanged( bool changed ) 1457void MainWindow::slotModifiedChanged( bool changed )
1449{ 1458{
1450 if ( mBlockAtStartup ) 1459 if ( mBlockAtStartup )
1451 return; 1460 return;
1452 1461
1453 int msec; 1462 int msec;
1454 // we store the changes after 1 minute, 1463 // we store the changes after 1 minute,
1455 // and for safety reasons after 10 minutes again 1464 // and for safety reasons after 10 minutes again
1456 if ( !mSyncManager->blockSave() ) 1465 if ( !mSyncManager->blockSave() )
1457 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000; 1466 msec = (1000 * 60*KOPrefs::instance()->mAutoSaveInterval) +1000;
1458 else 1467 else
1459 msec = 1000 * 600; 1468 msec = 1000 * 600;
1460 mSaveTimer.start( msec, true ); // 1 minute 1469 mSaveTimer.start( msec, true ); // 1 minute
1461 qDebug("KO: Saving File in %d secs!", msec/1000); 1470 qDebug("KO: Saving File in %d secs!", msec/1000);
1462 mCalendarModifiedFlag = true; 1471 mCalendarModifiedFlag = true;
1463} 1472}
1464void MainWindow::saveStopTimer() 1473void MainWindow::saveStopTimer()
1465{ 1474{
1466 mSaveTimer.stop(); 1475 mSaveTimer.stop();
1467 if (mSaveTimer.isActive() ) 1476 if (mSaveTimer.isActive() )
1468 qDebug("ti active "); 1477 qDebug("ti active ");
1469 else 1478 else
1470 qDebug("KO: Save timer stopped"); 1479 qDebug("KO: Save timer stopped");
1471} 1480}
1472void MainWindow::save() 1481void MainWindow::save()
1473{ 1482{
1474 if ( !mCalendarModifiedFlag ) { 1483 if ( !mCalendarModifiedFlag ) {
1475 qDebug("KO: Calendar not modified. Nothing saved."); 1484 qDebug("KO: Calendar not modified. Nothing saved.");
1476 return; 1485 return;
1477 } 1486 }
1478 if ( mSyncManager->blockSave() ) 1487 if ( mSyncManager->blockSave() )
1479 return; 1488 return;
1480 mSyncManager->setBlockSave(true); 1489 mSyncManager->setBlockSave(true);
1481 if ( mView->checkFileVersion( defaultFileName()) ) { 1490 if ( mView->checkFileVersion( defaultFileName()) ) {
1482 QTime neededSaveTime = QDateTime::currentDateTime().time(); 1491 QTime neededSaveTime = QDateTime::currentDateTime().time();
1483 setCaption(i18n("KO/Pi:Saving Data to File ..." )); 1492 setCaption(i18n("KO/Pi:Saving Data to File ..." ));
1484 qDebug("KO: Start saving data to file!"); 1493 qDebug("KO: Start saving data to file!");
1485 mView->saveCalendar( defaultFileName() ); 1494 mView->saveCalendar( defaultFileName() );
1486 mCalendarModifiedFlag = false; 1495 mCalendarModifiedFlag = false;
1487 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() ); 1496 int msNeeded = neededSaveTime.msecsTo( QDateTime::currentDateTime().time() );
1488 qDebug("KO: Needed %d ms for saving.",msNeeded ); 1497 qDebug("KO: Needed %d ms for saving.",msNeeded );
1489 QString savemes; 1498 QString savemes;
1490 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 ); 1499 savemes.sprintf(i18n("KO/Pi:File Saved. Needed %d sec, %d ms"),(msNeeded/1000)%100,msNeeded%1000 );
1491 setCaption(savemes); 1500 setCaption(savemes);
1492 } else 1501 } else
1493 setCaption(i18n("Saving cancelled!")); 1502 setCaption(i18n("Saving cancelled!"));
1494 mSyncManager->setBlockSave( false ); 1503 mSyncManager->setBlockSave( false );
1495} 1504}
1496 1505
1497void MainWindow::keyReleaseEvent ( QKeyEvent * e) 1506void MainWindow::keyReleaseEvent ( QKeyEvent * e)
1498{ 1507{
1499 if ( !e->isAutoRepeat() ) { 1508 if ( !e->isAutoRepeat() ) {
1500 mFlagKeyPressed = false; 1509 mFlagKeyPressed = false;
1501 } 1510 }
1502} 1511}
1503void MainWindow::keyPressEvent ( QKeyEvent * e ) 1512void MainWindow::keyPressEvent ( QKeyEvent * e )
1504{ 1513{
1505 qApp->processEvents(); 1514 qApp->processEvents();
1506 if ( e->isAutoRepeat() && !mFlagKeyPressed ) { 1515 if ( e->isAutoRepeat() && !mFlagKeyPressed ) {
1507 e->ignore(); 1516 e->ignore();
1508 // qDebug(" ignore %d",e->isAutoRepeat() ); 1517 // qDebug(" ignore %d",e->isAutoRepeat() );
1509 return; 1518 return;
1510 } 1519 }
1511 if (! e->isAutoRepeat() ) 1520 if (! e->isAutoRepeat() )
1512 mFlagKeyPressed = true; 1521 mFlagKeyPressed = true;
1513 KOPrefs *p = KOPrefs::instance(); 1522 KOPrefs *p = KOPrefs::instance();
1514 bool showSelectedDates = false; 1523 bool showSelectedDates = false;
1515 int size; 1524 int size;
1516 int pro = 0; 1525 int pro = 0;
1517 //qDebug("MainWindow::keyPressEvent "); 1526 //qDebug("MainWindow::keyPressEvent ");
1518 switch ( e->key() ) { 1527 switch ( e->key() ) {
1519 case Qt::Key_Right: 1528 case Qt::Key_Right:
1520 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 1529 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
1521 mView->goNextMonth(); 1530 mView->goNextMonth();
1522 else 1531 else
1523 mView->goNext(); 1532 mView->goNext();
1524 showSelectedDates = true; 1533 showSelectedDates = true;
1525 break; 1534 break;
1526 case Qt::Key_Left: 1535 case Qt::Key_Left:
1527 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1536 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1528 mView->goPreviousMonth(); 1537 mView->goPreviousMonth();
1529 else 1538 else
1530 mView->goPrevious(); 1539 mView->goPrevious();
1531 showSelectedDates = true; 1540 showSelectedDates = true;
1532 break; 1541 break;
1533 case Qt::Key_Down: 1542 case Qt::Key_Down:
1534 mView->viewManager()->agendaView()->scrollOneHourDown(); 1543 mView->viewManager()->agendaView()->scrollOneHourDown();
1535 break; 1544 break;
1536 case Qt::Key_Up: 1545 case Qt::Key_Up:
1537 mView->viewManager()->agendaView()->scrollOneHourUp(); 1546 mView->viewManager()->agendaView()->scrollOneHourUp();
1538 break; 1547 break;
1539 case Qt::Key_I: 1548 case Qt::Key_I:
1540 mView->showIncidence(); 1549 mView->showIncidence();
1541 break; 1550 break;
1542 case Qt::Key_Delete: 1551 case Qt::Key_Delete:
1543 case Qt::Key_Backspace: 1552 case Qt::Key_Backspace:
1544 mView->deleteIncidence(); 1553 mView->deleteIncidence();
1545 break; 1554 break;
1546 case Qt::Key_D: 1555 case Qt::Key_D:
1547 mView->viewManager()->showDayView(); 1556 mView->viewManager()->showDayView();
1548 showSelectedDates = true; 1557 showSelectedDates = true;
1549 break; 1558 break;
1550 case Qt::Key_O: 1559 case Qt::Key_O:
1551 mView->toggleFilerEnabled( ); 1560 mView->toggleFilerEnabled( );
1552 break; 1561 break;
1553 case Qt::Key_0: 1562 case Qt::Key_0:
1554 case Qt::Key_1: 1563 case Qt::Key_1:
1555 case Qt::Key_2: 1564 case Qt::Key_2:
1556 case Qt::Key_3: 1565 case Qt::Key_3:
1557 case Qt::Key_4: 1566 case Qt::Key_4:
1558 case Qt::Key_5: 1567 case Qt::Key_5:
1559 case Qt::Key_6: 1568 case Qt::Key_6:
1560 case Qt::Key_7: 1569 case Qt::Key_7:
1561 case Qt::Key_8: 1570 case Qt::Key_8:
1562 case Qt::Key_9: 1571 case Qt::Key_9:
1563 pro = e->key()-48; 1572 pro = e->key()-48;
1564 if ( pro == 0 ) 1573 if ( pro == 0 )
1565 pro = 10; 1574 pro = 10;
1566 if ( e->state() == Qt::ControlButton) 1575 if ( e->state() == Qt::ControlButton)
1567 pro += 10; 1576 pro += 10;
1568 break; 1577 break;
1569 case Qt::Key_M: 1578 case Qt::Key_M:
1570 mView->viewManager()->showMonthView(); 1579 mView->viewManager()->showMonthView();
1571 showSelectedDates = true; 1580 showSelectedDates = true;
1572 break; 1581 break;
1573 case Qt::Key_Insert: 1582 case Qt::Key_Insert:
1574 mView->newEvent(); 1583 mView->newEvent();
1575 break; 1584 break;
1576 case Qt::Key_S : 1585 case Qt::Key_S :
1577 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton) 1586 if ( e->state() == Qt::ControlButton || e->state() == Qt::ShiftButton)
1578 mView->newSubTodo(); 1587 mView->newSubTodo();
1579 else 1588 else
1580 mView->dialogManager()->showSearchDialog(); 1589 mView->dialogManager()->showSearchDialog();
1581 break; 1590 break;
1582 case Qt::Key_Y : 1591 case Qt::Key_Y :
1583 case Qt::Key_Z : 1592 case Qt::Key_Z :
1584 mView->viewManager()->showWorkWeekView(); 1593 mView->viewManager()->showWorkWeekView();
1585 showSelectedDates = true; 1594 showSelectedDates = true;
1586 break; 1595 break;
1587 case Qt::Key_U : 1596 case Qt::Key_U :
1588 mView->viewManager()->showWeekView(); 1597 mView->viewManager()->showWeekView();
1589 showSelectedDates = true; 1598 showSelectedDates = true;
1590 break; 1599 break;
1591 case Qt::Key_H : 1600 case Qt::Key_H :
1592 keyBindings(); 1601 keyBindings();
1593 break; 1602 break;
1594 case Qt::Key_W: 1603 case Qt::Key_W:
1595 mView->viewManager()->showWhatsNextView(); 1604 mView->viewManager()->showWhatsNextView();
1596 break; 1605 break;
1597 case Qt::Key_L: 1606 case Qt::Key_L:
1598 mView->viewManager()->showListView(); 1607 mView->viewManager()->showListView();
1599 break; 1608 break;
1600 case Qt::Key_N: 1609 case Qt::Key_N:
1601 mView->viewManager()->showNextXView(); 1610 mView->viewManager()->showNextXView();
1602 showSelectedDates = true; 1611 showSelectedDates = true;
1603 break; 1612 break;
1604 case Qt::Key_V: 1613 case Qt::Key_V:
1605 mView->viewManager()->showTodoView(); 1614 mView->viewManager()->showTodoView();
1606 break; 1615 break;
1607 case Qt::Key_C: 1616 case Qt::Key_C:
1608 mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() ); 1617 mView->viewManager()->agendaView()->setStartHour( QTime::currentTime ().hour() );
1609 break; 1618 break;
1610 case Qt::Key_P: 1619 case Qt::Key_P:
1611 mView->showDatePicker( ); 1620 mView->showDatePicker( );
1612 break; 1621 break;
1613 case Qt::Key_F: 1622 case Qt::Key_F:
1614 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1623 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1615 mView->editFilters(); 1624 mView->editFilters();
1616 else 1625 else
1617 mView->toggleFilter(); 1626 mView->toggleFilter();
1618 break; 1627 break;
1619 case Qt::Key_X: 1628 case Qt::Key_X:
1620 mView->toggleDateNavigatorWidget(); 1629 mView->toggleDateNavigatorWidget();
1621 break; 1630 break;
1622 case Qt::Key_Space: 1631 case Qt::Key_Space:
1623 mView->toggleExpand(); 1632 mView->toggleExpand();
1624 break; 1633 break;
1625 case Qt::Key_A: 1634 case Qt::Key_A:
1626 mView->toggleAllDaySize(); 1635 mView->toggleAllDaySize();
1627 break; 1636 break;
1628 case Qt::Key_T: 1637 case Qt::Key_T:
1629 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1638 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1630 mView->newTodo(); 1639 mView->newTodo();
1631 else { 1640 else {
1632 mView->goToday(); 1641 mView->goToday();
1633 showSelectedDates = true; 1642 showSelectedDates = true;
1634 } 1643 }
1635 break; 1644 break;
1636 case Qt::Key_J: 1645 case Qt::Key_J:
1637 mView->viewManager()->showJournalView(); 1646 mView->viewManager()->showJournalView();
1638 break; 1647 break;
1639 case Qt::Key_B: 1648 case Qt::Key_B:
1640 mView->editIncidenceDescription();; 1649 mView->editIncidenceDescription();;
1641 break; 1650 break;
1642 // case Qt::Key_Return: 1651 // case Qt::Key_Return:
1643 case Qt::Key_E: 1652 case Qt::Key_E:
1644 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton ) 1653 if ( e->state() == Qt::ControlButton|| e->state() == Qt::ShiftButton )
1645 mView->newEvent(); 1654 mView->newEvent();
1646 else 1655 else
1647 mView->editIncidence(); 1656 mView->editIncidence();
1648 break; 1657 break;
1649 case Qt::Key_Plus: 1658 case Qt::Key_Plus:
1650 size = p->mHourSize +2; 1659 size = p->mHourSize +2;
1651 if ( size <= 18 ) 1660 if ( size <= 18 )
1652 configureAgenda( size ); 1661 configureAgenda( size );
1653 break; 1662 break;
1654 case Qt::Key_Minus: 1663 case Qt::Key_Minus:
1655 size = p->mHourSize - 2; 1664 size = p->mHourSize - 2;
1656 if ( size >= 4 ) 1665 if ( size >= 4 )
1657 configureAgenda( size ); 1666 configureAgenda( size );
1658 break; 1667 break;
1659 1668
1660 1669
1661 default: 1670 default:
1662 e->ignore(); 1671 e->ignore();
1663 } 1672 }
1664 if ( pro > 0 ) { 1673 if ( pro > 0 ) {
1665 mView->selectFilter( pro-1 ); 1674 mView->selectFilter( pro-1 );
1666 } 1675 }
1667 if ( showSelectedDates ) { 1676 if ( showSelectedDates ) {
1668 ;// setCaptionToDates(); 1677 ;// setCaptionToDates();
1669 } 1678 }
1670 1679
1671} 1680}
1672 1681
1673void MainWindow::fillFilterMenu() 1682void MainWindow::fillFilterMenu()
1674{ 1683{
1675 selectFilterMenu->clear(); 1684 selectFilterMenu->clear();
1676 bool disable = false; 1685 bool disable = false;
1677 selectFilterMenu->insertItem(i18n ( "Edit Filters" ), 0 ); 1686 selectFilterMenu->insertItem(i18n ( "Edit Filters" ), 0 );
1678 selectFilterMenu->insertSeparator(); 1687 selectFilterMenu->insertSeparator();
1679 if ( mView->filterView()->filtersEnabled() ) { 1688 if ( mView->filterView()->filtersEnabled() ) {
1680 selectFilterMenu->insertItem(i18n ( "Turn filter off" ), 1 ); 1689 selectFilterMenu->insertItem(i18n ( "Turn filter off" ), 1 );
1681 } 1690 }
1682 else { 1691 else {
1683 selectFilterMenu->insertItem(i18n ( "Turn filter on" ), 1 ); 1692 selectFilterMenu->insertItem(i18n ( "Turn filter on" ), 1 );
1684 disable = true; 1693 disable = true;
1685 } 1694 }
1686 selectFilterMenu->insertSeparator(); 1695 selectFilterMenu->insertSeparator();
1687 QPtrList<CalFilter> fili = mView->filters(); 1696 QPtrList<CalFilter> fili = mView->filters();
1688 CalFilter *curfilter = mView->filterView()->selectedFilter(); 1697 CalFilter *curfilter = mView->filterView()->selectedFilter();
1689 CalFilter *filter = fili.first(); 1698 CalFilter *filter = fili.first();
1690 int iii = 2; 1699 int iii = 2;
1691 while(filter) { 1700 while(filter) {
1692 selectFilterMenu->insertItem( filter->name(), iii ); 1701 selectFilterMenu->insertItem( filter->name(), iii );
1693 if ( filter == curfilter) 1702 if ( filter == curfilter)
1694 selectFilterMenu->setItemChecked( iii, true ); 1703 selectFilterMenu->setItemChecked( iii, true );
1695 if ( disable ) 1704 if ( disable )
1696 selectFilterMenu->setItemEnabled( iii, false ); 1705 selectFilterMenu->setItemEnabled( iii, false );
1697 filter = fili.next(); 1706 filter = fili.next();
1698 ++iii; 1707 ++iii;
1699 } 1708 }
1700} 1709}
1701void MainWindow::selectFilter( int fil ) 1710void MainWindow::selectFilter( int fil )
1702{ 1711{
1703 if ( fil == 0 ) { 1712 if ( fil == 0 ) {
1704 mView->editFilters( ); 1713 mView->editFilters( );
1705 } else if ( fil == 1 ){ 1714 } else if ( fil == 1 ){
1706 mView->toggleFilerEnabled( ); 1715 mView->toggleFilerEnabled( );
1707 } else { 1716 } else {
1708 mView->selectFilter( fil-2 ); 1717 mView->selectFilter( fil-2 );
1709 } 1718 }
1710} 1719}
1711void MainWindow::configureToolBar( int item ) 1720void MainWindow::configureToolBar( int item )
1712{ 1721{
1713 1722
1714 configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) ); 1723 configureToolBarMenu->setItemChecked( item, !configureToolBarMenu-> isItemChecked ( item ) );
1715 KOPrefs *p = KOPrefs::instance(); 1724 KOPrefs *p = KOPrefs::instance();
1716 p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 ); 1725 p-> mShowIconStretch= configureToolBarMenu->isItemChecked( 5 );
1717 p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 ); 1726 p-> mShowIconNewEvent= configureToolBarMenu->isItemChecked( 10 );
1718 p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 ); 1727 p->mShowIconNewTodo = configureToolBarMenu->isItemChecked( 20 );
1719 p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 ); 1728 p-> mShowIconSearch= configureToolBarMenu->isItemChecked( 120 );
1720 p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 ); 1729 p-> mShowIconList= configureToolBarMenu->isItemChecked( 30 );
1721 p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 ); 1730 p-> mShowIconDay1= configureToolBarMenu->isItemChecked( 40 );
1722 p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 ); 1731 p-> mShowIconDay5= configureToolBarMenu->isItemChecked( 50 );
1723 p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 ); 1732 p-> mShowIconDay7= configureToolBarMenu->isItemChecked( 60 );
1724 p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 ); 1733 p-> mShowIconMonth= configureToolBarMenu->isItemChecked( 70 );
1725 p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 ); 1734 p-> mShowIconTodoview= configureToolBarMenu->isItemChecked( 80 );
1726 p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 ); 1735 p-> mShowIconBackFast= configureToolBarMenu->isItemChecked( 200 );
1727 p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 ); 1736 p-> mShowIconBack = configureToolBarMenu->isItemChecked( 210 );
1728 p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 ); 1737 p-> mShowIconToday= configureToolBarMenu->isItemChecked( 130 );
1729 p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 ); 1738 p-> mShowIconForward= configureToolBarMenu->isItemChecked( 220 );
1730 p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 ); 1739 p-> mShowIconForwardFast= configureToolBarMenu->isItemChecked( 230 );
1731 p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 ); 1740 p-> mShowIconNextDays= configureToolBarMenu->isItemChecked( 100 );
1732 p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 ); 1741 p-> mShowIconNext= configureToolBarMenu->isItemChecked( 110 );
1733 p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 ); 1742 p-> mShowIconJournal= configureToolBarMenu->isItemChecked( 90 );