summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-08-02 00:09:04 (UTC)
committer zautrix <zautrix>2004-08-02 00:09:04 (UTC)
commit3ebd85e83e6f9d4ac59ce1828548f7236e2b1af0 (patch) (unidiff)
treefdff56329649c084b6f5af8d8e96c0157686575e
parent3b4aa1cd78395c0f94b99decd901842944765746 (diff)
downloadkdepimpi-3ebd85e83e6f9d4ac59ce1828548f7236e2b1af0.zip
kdepimpi-3ebd85e83e6f9d4ac59ce1828548f7236e2b1af0.tar.gz
kdepimpi-3ebd85e83e6f9d4ac59ce1828548f7236e2b1af0.tar.bz2
More sync hacking
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp76
-rw-r--r--korganizer/calendarview.h5
-rw-r--r--korganizer/koprefs.cpp27
-rw-r--r--korganizer/koprefs.h1
-rw-r--r--korganizer/mainwindow.cpp3
-rw-r--r--libkcal/calendar.h2
-rw-r--r--libkcal/calendarlocal.cpp14
-rw-r--r--libkcal/calendarlocal.h2
8 files changed, 87 insertions, 43 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index cfc6b10..9160e1d 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -757,406 +757,432 @@ int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , b
757 757
758 } 758 }
759 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 759 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
760 760
761 //qDebug("%s %d %s %d", local->lastModified().toString().latin1() , local->revision(), remote->lastModified().toString().latin1(), remote->revision()); 761 //qDebug("%s %d %s %d", local->lastModified().toString().latin1() , local->revision(), remote->lastModified().toString().latin1(), remote->revision());
762 //qDebug("%d %d %d %d ", local->lastModified().time().second(), local->lastModified().time().msec(), remote->lastModified().time().second(), remote->lastModified().time().msec() ); 762 //qDebug("%d %d %d %d ", local->lastModified().time().second(), local->lastModified().time().msec(), remote->lastModified().time().second(), remote->lastModified().time().msec() );
763 //full = true; //debug only 763 //full = true; //debug only
764 if ( full ) { 764 if ( full ) {
765 bool equ = false; 765 bool equ = false;
766 if ( local->type() == "Event" ) { 766 if ( local->type() == "Event" ) {
767 equ = (*((Event*) local) == *((Event*) remote)); 767 equ = (*((Event*) local) == *((Event*) remote));
768 } 768 }
769 else if ( local->type() =="Todo" ) 769 else if ( local->type() =="Todo" )
770 equ = (*((Todo*) local) == (*(Todo*) remote)); 770 equ = (*((Todo*) local) == (*(Todo*) remote));
771 else if ( local->type() =="Journal" ) 771 else if ( local->type() =="Journal" )
772 equ = (*((Journal*) local) == *((Journal*) remote)); 772 equ = (*((Journal*) local) == *((Journal*) remote));
773 if ( equ ) { 773 if ( equ ) {
774 //qDebug("equal "); 774 //qDebug("equal ");
775 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 775 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
776 local->setZaurusUid( remote->zaurusUid() ); 776 local->setZaurusUid( remote->zaurusUid() );
777 } 777 }
778 if ( mode < SYNC_PREF_FORCE_LOCAL ) 778 if ( mode < SYNC_PREF_FORCE_LOCAL )
779 return 0; 779 return 0;
780 780
781 }//else //debug only 781 }//else //debug only
782 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 782 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
783 } 783 }
784 int result; 784 int result;
785 bool localIsNew; 785 bool localIsNew;
786 if ( full && mode < SYNC_PREF_NEWEST ) 786 if ( full && mode < SYNC_PREF_NEWEST )
787 mode = SYNC_PREF_ASK; 787 mode = SYNC_PREF_ASK;
788 788
789 switch( mode ) { 789 switch( mode ) {
790 case SYNC_PREF_LOCAL: 790 case SYNC_PREF_LOCAL:
791 if ( lastSync > remote->lastModified() ) 791 if ( lastSync > remote->lastModified() )
792 return 1; 792 return 1;
793 if ( lastSync > local->lastModified() ) 793 if ( lastSync > local->lastModified() )
794 return 2; 794 return 2;
795 return 1; 795 return 1;
796 break; 796 break;
797 case SYNC_PREF_REMOTE: 797 case SYNC_PREF_REMOTE:
798 if ( lastSync > remote->lastModified() ) 798 if ( lastSync > remote->lastModified() )
799 return 1; 799 return 1;
800 if ( lastSync > local->lastModified() ) 800 if ( lastSync > local->lastModified() )
801 return 2; 801 return 2;
802 return 2; 802 return 2;
803 break; 803 break;
804 case SYNC_PREF_NEWEST: 804 case SYNC_PREF_NEWEST:
805 if ( local->lastModified() > remote->lastModified() ) 805 if ( local->lastModified() > remote->lastModified() )
806 return 1; 806 return 1;
807 else 807 else
808 return 2; 808 return 2;
809 break; 809 break;
810 case SYNC_PREF_ASK: 810 case SYNC_PREF_ASK:
811 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->lastModified().toString().latin1(), remote->lastModified().toString().latin1() ); 811 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->lastModified().toString().latin1(), remote->lastModified().toString().latin1() );
812 if ( lastSync > remote->lastModified() ) 812 if ( lastSync > remote->lastModified() )
813 return 1; 813 return 1;
814 if ( lastSync > local->lastModified() ) 814 if ( lastSync > local->lastModified() )
815 return 2; 815 return 2;
816 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->lastModified().toString().latin1(), remote->lastModified().toString().latin1() ); 816 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), local->lastModified().toString().latin1(), remote->lastModified().toString().latin1() );
817 localIsNew = local->lastModified() > remote->lastModified(); 817 localIsNew = local->lastModified() > remote->lastModified();
818 if ( localIsNew ) 818 if ( localIsNew )
819 getEventViewerDialog()->setColorMode( 1 ); 819 getEventViewerDialog()->setColorMode( 1 );
820 else 820 else
821 getEventViewerDialog()->setColorMode( 2 ); 821 getEventViewerDialog()->setColorMode( 2 );
822 getEventViewerDialog()->setIncidence(local); 822 getEventViewerDialog()->setIncidence(local);
823 if ( localIsNew ) 823 if ( localIsNew )
824 getEventViewerDialog()->setColorMode( 2 ); 824 getEventViewerDialog()->setColorMode( 2 );
825 else 825 else
826 getEventViewerDialog()->setColorMode( 1 ); 826 getEventViewerDialog()->setColorMode( 1 );
827 getEventViewerDialog()->addIncidence(remote); 827 getEventViewerDialog()->addIncidence(remote);
828 getEventViewerDialog()->setColorMode( 0 ); 828 getEventViewerDialog()->setColorMode( 0 );
829 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() ); 829 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
830 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!")); 830 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
831 getEventViewerDialog()->showMe(); 831 getEventViewerDialog()->showMe();
832 result = getEventViewerDialog()->executeS( localIsNew ); 832 result = getEventViewerDialog()->executeS( localIsNew );
833 return result; 833 return result;
834 834
835 break; 835 break;
836 case SYNC_PREF_FORCE_LOCAL: 836 case SYNC_PREF_FORCE_LOCAL:
837 return 1; 837 return 1;
838 break; 838 break;
839 case SYNC_PREF_FORCE_REMOTE: 839 case SYNC_PREF_FORCE_REMOTE:
840 return 2; 840 return 2;
841 break; 841 break;
842 842
843 default: 843 default:
844 // SYNC_PREF_TAKE_BOTH not implemented 844 // SYNC_PREF_TAKE_BOTH not implemented
845 break; 845 break;
846 } 846 }
847 return 0; 847 return 0;
848} 848}
849Event* CalendarView::getLastSyncEvent() 849Event* CalendarView::getLastSyncEvent()
850{ 850{
851 Event* lse; 851 Event* lse;
852 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 852 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
853 lse = mCalendar->event( "last-syncEvent-device-"+mCurrentSyncDevice ); 853 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice );
854 if (!lse) { 854 if (!lse) {
855 lse = new Event(); 855 lse = new Event();
856 lse->setUid( "last-syncEvent-device-"+mCurrentSyncDevice ); 856 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice );
857 lse->setSummary(mCurrentSyncDevice + i18n(" - sync event")); 857 QString sum = "";
858 if ( KOPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
859 sum = "E: ";
860 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event"));
858 lse->setDtStart( mLastCalendarSync ); 861 lse->setDtStart( mLastCalendarSync );
859 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 862 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
860 lse->setCategories( i18n("SyncEvent") ); 863 lse->setCategories( i18n("SyncEvent") );
861 lse->setReadOnly( true ); 864 lse->setReadOnly( true );
862 mCalendar->addEvent( lse ); 865 mCalendar->addEvent( lse );
863 } 866 }
864 867
865 return lse; 868 return lse;
866 869
867} 870}
868void CalendarView::checkSharpEvent( Event* lastSync, Incidence* toDelete ) 871void CalendarView::setupExternSyncProfiles()
869{ 872{
870 if ( ! lastSync ) 873 Event* lse;
871 return; 874 mExternLastSyncEvent.clear();
872 if ( toDelete->zaurusId() < 0 ) 875 int i;
876 for ( i = 0; i < KOPrefs::instance()->mExternSyncProfiles.count(); ++i ) {
877 lse = mCalendar->event( "last-syncEvent-"+ KOPrefs::instance()->mExternSyncProfiles[i] );
878 if ( lse )
879 mExternLastSyncEvent.append( lse );
880 else
881 qDebug("Last Sync event not found for %s ", KOPrefs::instance()->mExternSyncProfiles[i].latin1());
882 }
883
884}
885// we check, if the to delete event has a id for a profile
886// if yes, we set this id in the profile to delete
887void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete )
888{
889 if ( ! lastSync.count() == 0 )
873 return; 890 return;
874 if ( toDelete->type() == "Journal" ) 891 if ( toDelete->type() == "Journal" )
875 return; 892 return;
876 QString des = lastSync->description(); 893
877 QString pref = "e"; 894 Event* eve = lastSync.first();
878 if ( toDelete->type() == "Todo" ) 895
879 pref = "t"; 896 while ( eve ) {
880 des += pref+ QString::number ( toDelete->zaurusId() ) + ","; 897 int id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name
881 lastSync->setReadOnly( false ); 898 if ( id >= 0 ) {
882 lastSync->setDescription( des ); 899 QString des = eve->description();
883 lastSync->setReadOnly( true ); 900 QString pref = "e";
901 if ( toDelete->type() == "Todo" )
902 pref = "t";
903 des += pref+ QString::number ( id ) + ",";
904 eve->setReadOnly( false );
905 eve->setDescription( des );
906 eve->setReadOnly( true );
907 }
908 eve = lastSync.next();
909 }
884 910
885} 911}
886bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) 912bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode )
887{ 913{
888 bool syncOK = true; 914 bool syncOK = true;
889 int addedEvent = 0; 915 int addedEvent = 0;
890 int addedEventR = 0; 916 int addedEventR = 0;
891 int deletedEventR = 0; 917 int deletedEventR = 0;
892 int deletedEventL = 0; 918 int deletedEventL = 0;
893 int changedLocal = 0; 919 int changedLocal = 0;
894 int changedRemote = 0; 920 int changedRemote = 0;
895 //QPtrList<Event> el = local->rawEvents(); 921 //QPtrList<Event> el = local->rawEvents();
896 Event* eventR; 922 Event* eventR;
897 QString uid; 923 QString uid;
898 int take; 924 int take;
899 Event* eventL; 925 Event* eventL;
900 Event* eventRSync; 926 Event* eventRSync;
901 Event* eventLSync; 927 Event* eventLSync;
902 Event* eventRSyncSharp = remote->event( "last-syncEvent-device-Sharp-DTM"); 928 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
903 Event* eventLSyncSharp = local->event( "last-syncEvent-device-Sharp-DTM"); 929 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
904 bool fullDateRange = false; 930 bool fullDateRange = false;
905 mLastCalendarSync = QDateTime::currentDateTime(); 931 mLastCalendarSync = QDateTime::currentDateTime();
906 QDateTime modifiedCalendar = mLastCalendarSync;; 932 QDateTime modifiedCalendar = mLastCalendarSync;;
907 eventR = remote->event("last-syncEvent-device-"+mCurrentSyncName ); 933 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
908 if ( eventR ) { 934 if ( eventR ) {
909 eventRSync = (Event*) eventR->clone(); 935 eventRSync = (Event*) eventR->clone();
910 remote->deleteEvent(eventR ); 936 remote->deleteEvent(eventR );
911 937
912 } else { 938 } else {
913 fullDateRange = true; 939 fullDateRange = true;
914 eventRSync = new Event(); 940 eventRSync = new Event();
915 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 941 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
916 eventRSync->setUid("last-syncEvent-device-"+mCurrentSyncName ); 942 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
917 eventRSync->setDtStart( mLastCalendarSync ); 943 eventRSync->setDtStart( mLastCalendarSync );
918 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 944 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
919 eventRSync->setCategories( i18n("SyncEvent") ); 945 eventRSync->setCategories( i18n("SyncEvent") );
920 } 946 }
921 eventLSync = getLastSyncEvent(); 947 eventLSync = getLastSyncEvent();
922 if ( eventLSync->dtStart() == mLastCalendarSync ) 948 if ( eventLSync->dtStart() == mLastCalendarSync )
923 fullDateRange = true; 949 fullDateRange = true;
924 950
925 if ( ! fullDateRange ) { 951 if ( ! fullDateRange ) {
926 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 952 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
927 953
928 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 954 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
929 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 955 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
930 fullDateRange = true; 956 fullDateRange = true;
931 } 957 }
932 } 958 }
933 if ( fullDateRange ) 959 if ( fullDateRange )
934 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 960 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
935 else 961 else
936 mLastCalendarSync = eventLSync->dtStart(); 962 mLastCalendarSync = eventLSync->dtStart();
937 // for resyncing if own file has changed 963 // for resyncing if own file has changed
938 if ( mCurrentSyncDevice == "deleteaftersync" ) { 964 if ( mCurrentSyncDevice == "deleteaftersync" ) {
939 mLastCalendarSync = loadedFileVersion; 965 mLastCalendarSync = loadedFileVersion;
940 qDebug("setting mLastCalendarSync "); 966 qDebug("setting mLastCalendarSync ");
941 } 967 }
942 //qDebug("*************************** "); 968 //qDebug("*************************** ");
943 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() ); 969 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() );
944 QPtrList<Incidence> er = remote->rawIncidences(); 970 QPtrList<Incidence> er = remote->rawIncidences();
945 Incidence* inR = er.first(); 971 Incidence* inR = er.first();
946 Incidence* inL; 972 Incidence* inL;
947 QProgressBar bar( er.count(),0 ); 973 QProgressBar bar( er.count(),0 );
948 bar.setCaption (i18n("Syncing - close to abort!") ); 974 bar.setCaption (i18n("Syncing - close to abort!") );
949 975
950 int w = 300; 976 int w = 300;
951 if ( QApplication::desktop()->width() < 320 ) 977 if ( QApplication::desktop()->width() < 320 )
952 w = 220; 978 w = 220;
953 int h = bar.sizeHint().height() ; 979 int h = bar.sizeHint().height() ;
954 int dw = QApplication::desktop()->width(); 980 int dw = QApplication::desktop()->width();
955 int dh = QApplication::desktop()->height(); 981 int dh = QApplication::desktop()->height();
956 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 982 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
957 bar.show(); 983 bar.show();
958 int modulo = (er.count()/10)+1; 984 int modulo = (er.count()/10)+1;
959 int incCounter = 0; 985 int incCounter = 0;
960 while ( inR ) { 986 while ( inR ) {
961 if ( ! bar.isVisible() ) 987 if ( ! bar.isVisible() )
962 return false; 988 return false;
963 if ( incCounter % modulo == 0 ) 989 if ( incCounter % modulo == 0 )
964 bar.setProgress( incCounter ); 990 bar.setProgress( incCounter );
965 ++incCounter; 991 ++incCounter;
966 uid = inR->uid(); 992 uid = inR->uid();
967 bool skipIncidence = false; 993 bool skipIncidence = false;
968 if ( uid.left(21) == QString("last-syncEvent-device") ) 994 if ( uid.left(15) == QString("last-syncEvent-") )
969 skipIncidence = true; 995 skipIncidence = true;
970 996
971 qApp->processEvents(); 997 qApp->processEvents();
972 if ( !skipIncidence ) { 998 if ( !skipIncidence ) {
973 inL = local->incidence( uid ); 999 inL = local->incidence( uid );
974 if ( inL ) { // maybe conflict - same uid in both calendars 1000 if ( inL ) { // maybe conflict - same uid in both calendars
975 int maxrev = inL->revision(); 1001 int maxrev = inL->revision();
976 if ( maxrev < inR->revision() ) 1002 if ( maxrev < inR->revision() )
977 maxrev = inR->revision(); 1003 maxrev = inR->revision();
978 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1004 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
979 //qDebug("take %d %s ", take, inL->summary().latin1()); 1005 //qDebug("take %d %s ", take, inL->summary().latin1());
980 if ( take == 3 ) 1006 if ( take == 3 )
981 return false; 1007 return false;
982 if ( take == 1 ) {// take local 1008 if ( take == 1 ) {// take local
983 inL->setZaurusUid( inR->zaurusUid() ); 1009 inL->setZaurusUid( inR->zaurusUid() );
984 remote->deleteIncidence( inR ); 1010 remote->deleteIncidence( inR );
985 if ( inL->revision() < maxrev ) 1011 if ( inL->revision() < maxrev )
986 inL->setRevision( maxrev ); 1012 inL->setRevision( maxrev );
987 remote->addIncidence( inL->clone() ); 1013 remote->addIncidence( inL->clone() );
988 ++changedRemote; 1014 ++changedRemote;
989 } else { 1015 } else {
990 if ( inR->revision() < maxrev ) 1016 if ( inR->revision() < maxrev )
991 inR->setRevision( maxrev ); 1017 inR->setRevision( maxrev );
992 local->deleteIncidence( inL ); 1018 local->deleteIncidence( inL );
993 local->addIncidence( inR->clone() ); 1019 local->addIncidence( inR->clone() );
994 ++changedLocal; 1020 ++changedLocal;
995 } 1021 }
996 } 1022 }
997 } else { // no conflict 1023 } else { // no conflict
998 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1024 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
999 QString des = eventLSync->description(); 1025 QString des = eventLSync->description();
1000 QString pref = "e"; 1026 QString pref = "e";
1001 if ( inR->type() == "Todo" ) 1027 if ( inR->type() == "Todo" )
1002 pref = "t"; 1028 pref = "t";
1003 if ( des.find(pref+QString::number( inR->zaurusId() ) +"," ) >= 0 && mode != 5) { // delete it 1029 if ( des.find(pref+QString::number( inR->zaurusId() ) +"," ) >= 0 && mode != 5) { // delete it
1004 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1030 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1005 //remote->deleteIncidence( inR ); 1031 //remote->deleteIncidence( inR );
1006 ++deletedEventR; 1032 ++deletedEventR;
1007 } else { 1033 } else {
1008 inR->setLastModified( modifiedCalendar ); 1034 inR->setLastModified( modifiedCalendar );
1009 local->addIncidence( inR->clone() ); 1035 local->addIncidence( inR->clone() );
1010 ++addedEvent; 1036 ++addedEvent;
1011 } 1037 }
1012 } else { 1038 } else {
1013 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1039 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1014 inR->setLastModified( modifiedCalendar ); 1040 inR->setLastModified( modifiedCalendar );
1015 local->addIncidence( inR->clone() ); 1041 local->addIncidence( inR->clone() );
1016 ++addedEvent; 1042 ++addedEvent;
1017 } else { 1043 } else {
1018 checkSharpEvent(eventRSyncSharp, inR); 1044 checkExternSyncEvent(eventRSyncSharp, inR);
1019 remote->deleteIncidence( inR ); 1045 remote->deleteIncidence( inR );
1020 ++deletedEventR; 1046 ++deletedEventR;
1021 } 1047 }
1022 } 1048 }
1023 } 1049 }
1024 } 1050 }
1025 inR = er.next(); 1051 inR = er.next();
1026 } 1052 }
1027 QPtrList<Incidence> el = local->rawIncidences(); 1053 QPtrList<Incidence> el = local->rawIncidences();
1028 inL = el.first(); 1054 inL = el.first();
1029 modulo = (el.count()/10)+1; 1055 modulo = (el.count()/10)+1;
1030 bar.setCaption (i18n("Add / remove events") ); 1056 bar.setCaption (i18n("Add / remove events") );
1031 bar.setTotalSteps ( el.count() ) ; 1057 bar.setTotalSteps ( el.count() ) ;
1032 bar.show(); 1058 bar.show();
1033 incCounter = 0; 1059 incCounter = 0;
1034 1060
1035 while ( inL ) { 1061 while ( inL ) {
1036 1062
1037 qApp->processEvents(); 1063 qApp->processEvents();
1038 if ( ! bar.isVisible() ) 1064 if ( ! bar.isVisible() )
1039 return false; 1065 return false;
1040 if ( incCounter % modulo == 0 ) 1066 if ( incCounter % modulo == 0 )
1041 bar.setProgress( incCounter ); 1067 bar.setProgress( incCounter );
1042 ++incCounter; 1068 ++incCounter;
1043 uid = inL->uid(); 1069 uid = inL->uid();
1044 bool skipIncidence = false; 1070 bool skipIncidence = false;
1045 if ( uid.left(21) == QString("last-syncEvent-device") ) 1071 if ( uid.left(15) == QString("last-syncEvent-") )
1046 skipIncidence = true; 1072 skipIncidence = true;
1047 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" ) 1073 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" )
1048 skipIncidence = true; 1074 skipIncidence = true;
1049 if ( !skipIncidence ) { 1075 if ( !skipIncidence ) {
1050 inR = remote->incidence( uid ); 1076 inR = remote->incidence( uid );
1051 if ( ! inR ) { 1077 if ( ! inR ) {
1052 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1078 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1053 if ( inL->zaurusId() >= 0 && mode != 4 ) { 1079 if ( inL->zaurusId() >= 0 && mode != 4 ) {
1054 local->deleteIncidence( inL ); 1080 local->deleteIncidence( inL );
1055 ++deletedEventL; 1081 ++deletedEventL;
1056 } else { 1082 } else {
1057 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 1083 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
1058 inL->setZaurusId( -1 ); 1084 inL->setZaurusId( -1 );
1059 ++addedEventR; 1085 ++addedEventR;
1060 inL->setLastModified( modifiedCalendar ); 1086 inL->setLastModified( modifiedCalendar );
1061 remote->addIncidence( inL->clone() ); 1087 remote->addIncidence( inL->clone() );
1062 } 1088 }
1063 } 1089 }
1064 } else { 1090 } else {
1065 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1091 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1066 checkSharpEvent(eventLSyncSharp, inL); 1092 checkExternSyncEvent(eventLSyncSharp, inL);
1067 local->deleteIncidence( inL ); 1093 local->deleteIncidence( inL );
1068 ++deletedEventL; 1094 ++deletedEventL;
1069 } else { 1095 } else {
1070 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 1096 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
1071 ++addedEventR; 1097 ++addedEventR;
1072 inL->setLastModified( modifiedCalendar ); 1098 inL->setLastModified( modifiedCalendar );
1073 remote->addIncidence( inL->clone() ); 1099 remote->addIncidence( inL->clone() );
1074 } 1100 }
1075 } 1101 }
1076 } 1102 }
1077 } 1103 }
1078 } 1104 }
1079 inL = el.next(); 1105 inL = el.next();
1080 } 1106 }
1081 1107
1082 bar.hide(); 1108 bar.hide();
1083 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1109 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1084 eventLSync->setReadOnly( false ); 1110 eventLSync->setReadOnly( false );
1085 eventLSync->setDtStart( mLastCalendarSync ); 1111 eventLSync->setDtStart( mLastCalendarSync );
1086 eventRSync->setDtStart( mLastCalendarSync ); 1112 eventRSync->setDtStart( mLastCalendarSync );
1087 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1113 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1088 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1114 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1089 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 1115 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
1090 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 1116 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
1091 eventLSync->setReadOnly( true ); 1117 eventLSync->setReadOnly( true );
1092 if ( mGlobalSyncMode == SYNC_MODE_NORMAL) 1118 if ( mGlobalSyncMode == SYNC_MODE_NORMAL)
1093 remote->addEvent( eventRSync ); 1119 remote->addEvent( eventRSync );
1094 QString mes; 1120 QString mes;
1095 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR ); 1121 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR );
1096 if ( KOPrefs::instance()->mShowSyncSummary ) { 1122 if ( KOPrefs::instance()->mShowSyncSummary ) {
1097 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") ); 1123 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") );
1098 } 1124 }
1099 qDebug( mes ); 1125 qDebug( mes );
1100 mCalendar->checkAlarmForIncidence( 0, true ); 1126 mCalendar->checkAlarmForIncidence( 0, true );
1101 return syncOK; 1127 return syncOK;
1102} 1128}
1103 1129
1104void CalendarView::setSyncDevice( QString s ) 1130void CalendarView::setSyncDevice( QString s )
1105{ 1131{
1106 mCurrentSyncDevice= s; 1132 mCurrentSyncDevice= s;
1107} 1133}
1108void CalendarView::setSyncName( QString s ) 1134void CalendarView::setSyncName( QString s )
1109{ 1135{
1110 mCurrentSyncName= s; 1136 mCurrentSyncName= s;
1111} 1137}
1112bool CalendarView::syncCalendar(QString filename, int mode) 1138bool CalendarView::syncCalendar(QString filename, int mode)
1113{ 1139{
1114 mGlobalSyncMode = SYNC_MODE_NORMAL; 1140 mGlobalSyncMode = SYNC_MODE_NORMAL;
1115 CalendarLocal* calendar = new CalendarLocal(); 1141 CalendarLocal* calendar = new CalendarLocal();
1116 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1142 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1117 FileStorage* storage = new FileStorage( calendar ); 1143 FileStorage* storage = new FileStorage( calendar );
1118 bool syncOK = false; 1144 bool syncOK = false;
1119 storage->setFileName( filename ); 1145 storage->setFileName( filename );
1120 // qDebug("loading ... "); 1146 // qDebug("loading ... ");
1121 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) { 1147 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) {
1122 getEventViewerDialog()->setSyncMode( true ); 1148 getEventViewerDialog()->setSyncMode( true );
1123 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1149 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1124 getEventViewerDialog()->setSyncMode( false ); 1150 getEventViewerDialog()->setSyncMode( false );
1125 if ( syncOK ) { 1151 if ( syncOK ) {
1126 if ( KOPrefs::instance()->mWriteBackFile ) 1152 if ( KOPrefs::instance()->mWriteBackFile )
1127 { 1153 {
1128 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 1154 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
1129 storage->save(); 1155 storage->save();
1130 } 1156 }
1131 } 1157 }
1132 setModified( true ); 1158 setModified( true );
1133 } 1159 }
1134 delete storage; 1160 delete storage;
1135 delete calendar; 1161 delete calendar;
1136 if ( syncOK ) 1162 if ( syncOK )
1137 updateView(); 1163 updateView();
1138 return syncOK; 1164 return syncOK;
1139} 1165}
1140void CalendarView::syncSharp() 1166void CalendarView::syncSharp()
1141{ 1167{
1142#ifndef DESKTOP_VERSION 1168#ifndef DESKTOP_VERSION
1143 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1169 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1144 //mCurrentSyncDevice = "sharp-DTM"; 1170 //mCurrentSyncDevice = "sharp-DTM";
1145 if ( KOPrefs::instance()->mAskForPreferences ) 1171 if ( KOPrefs::instance()->mAskForPreferences )
1146 edit_sync_options(); 1172 edit_sync_options();
1147 qApp->processEvents(); 1173 qApp->processEvents();
1148 CalendarLocal* calendar = new CalendarLocal(); 1174 CalendarLocal* calendar = new CalendarLocal();
1149 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1175 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1150 bool syncOK = false; 1176 bool syncOK = false;
1151 SharpFormat sharpFormat; 1177 SharpFormat sharpFormat;
1152 if ( sharpFormat.load( calendar, mCalendar ) ) { 1178 if ( sharpFormat.load( calendar, mCalendar ) ) {
1153 getEventViewerDialog()->setSyncMode( true ); 1179 getEventViewerDialog()->setSyncMode( true );
1154 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs ); 1180 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs );
1155 getEventViewerDialog()->setSyncMode( false ); 1181 getEventViewerDialog()->setSyncMode( false );
1156 qApp->processEvents(); 1182 qApp->processEvents();
1157 if ( syncOK ) { 1183 if ( syncOK ) {
1158 if ( KOPrefs::instance()->mWriteBackFile ) 1184 if ( KOPrefs::instance()->mWriteBackFile )
1159 { 1185 {
1160 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 1186 QPtrList<Incidence> iL = mCalendar->rawIncidences();
1161 Incidence* inc = iL.first(); 1187 Incidence* inc = iL.first();
1162 /* obsolete 1188 /* obsolete
@@ -1249,193 +1275,193 @@ bool CalendarView::importBday()
1249} 1275}
1250 1276
1251bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday) 1277bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday)
1252{ 1278{
1253 //qDebug("addAnni "); 1279 //qDebug("addAnni ");
1254 Event * ev = new Event(); 1280 Event * ev = new Event();
1255 if ( a ) { 1281 if ( a ) {
1256 ev->addAttendee( a ); 1282 ev->addAttendee( a );
1257 } 1283 }
1258 QString kind; 1284 QString kind;
1259 if ( birthday ) 1285 if ( birthday )
1260 kind = i18n( "Birthday" ); 1286 kind = i18n( "Birthday" );
1261 else 1287 else
1262 kind = i18n( "Anniversary" ); 1288 kind = i18n( "Anniversary" );
1263 ev->setSummary( name + " - " + kind ); 1289 ev->setSummary( name + " - " + kind );
1264 ev->setOrganizer( "nobody@nowhere" ); 1290 ev->setOrganizer( "nobody@nowhere" );
1265 ev->setCategories( kind ); 1291 ev->setCategories( kind );
1266 ev->setDtStart( QDateTime(date) ); 1292 ev->setDtStart( QDateTime(date) );
1267 ev->setDtEnd( QDateTime(date) ); 1293 ev->setDtEnd( QDateTime(date) );
1268 ev->setFloats( true ); 1294 ev->setFloats( true );
1269 Recurrence * rec = ev->recurrence(); 1295 Recurrence * rec = ev->recurrence();
1270 rec->setYearly(Recurrence::rYearlyMonth,1,-1); 1296 rec->setYearly(Recurrence::rYearlyMonth,1,-1);
1271 rec->addYearlyNum( date.month() ); 1297 rec->addYearlyNum( date.month() );
1272 if ( !mCalendar->addAnniversaryNoDup( ev ) ) { 1298 if ( !mCalendar->addAnniversaryNoDup( ev ) ) {
1273 delete ev; 1299 delete ev;
1274 return false; 1300 return false;
1275 } 1301 }
1276 return true; 1302 return true;
1277 1303
1278} 1304}
1279bool CalendarView::importQtopia( const QString &categories, 1305bool CalendarView::importQtopia( const QString &categories,
1280 const QString &datebook, 1306 const QString &datebook,
1281 const QString &todolist ) 1307 const QString &todolist )
1282{ 1308{
1283 1309
1284 QtopiaFormat qtopiaFormat; 1310 QtopiaFormat qtopiaFormat;
1285 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1311 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1286 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); 1312 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories );
1287 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); 1313 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook );
1288 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); 1314 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist );
1289 1315
1290 updateView(); 1316 updateView();
1291 return true; 1317 return true;
1292 1318
1293#if 0 1319#if 0
1294 mGlobalSyncMode = SYNC_MODE_QTOPIA; 1320 mGlobalSyncMode = SYNC_MODE_QTOPIA;
1295 mCurrentSyncDevice = "qtopia-XML"; 1321 mCurrentSyncDevice = "qtopia-XML";
1296 if ( KOPrefs::instance()->mAskForPreferences ) 1322 if ( KOPrefs::instance()->mAskForPreferences )
1297 edit_sync_options(); 1323 edit_sync_options();
1298 qApp->processEvents(); 1324 qApp->processEvents();
1299 CalendarLocal* calendar = new CalendarLocal(); 1325 CalendarLocal* calendar = new CalendarLocal();
1300 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1326 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1301 bool syncOK = false; 1327 bool syncOK = false;
1302 QtopiaFormat qtopiaFormat; 1328 QtopiaFormat qtopiaFormat;
1303 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1329 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1304 bool loadOk = true; 1330 bool loadOk = true;
1305 if ( !categories.isEmpty() ) 1331 if ( !categories.isEmpty() )
1306 loadOk = qtopiaFormat.load( calendar, categories ); 1332 loadOk = qtopiaFormat.load( calendar, categories );
1307 if ( loadOk && !datebook.isEmpty() ) 1333 if ( loadOk && !datebook.isEmpty() )
1308 loadOk = qtopiaFormat.load( calendar, datebook ); 1334 loadOk = qtopiaFormat.load( calendar, datebook );
1309 if ( loadOk && !todolist.isEmpty() ) 1335 if ( loadOk && !todolist.isEmpty() )
1310 loadOk = qtopiaFormat.load( calendar, todolist ); 1336 loadOk = qtopiaFormat.load( calendar, todolist );
1311 1337
1312 if ( loadOk ) { 1338 if ( loadOk ) {
1313 getEventViewerDialog()->setSyncMode( true ); 1339 getEventViewerDialog()->setSyncMode( true );
1314 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs ); 1340 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs );
1315 getEventViewerDialog()->setSyncMode( false ); 1341 getEventViewerDialog()->setSyncMode( false );
1316 qApp->processEvents(); 1342 qApp->processEvents();
1317 if ( syncOK ) { 1343 if ( syncOK ) {
1318 if ( KOPrefs::instance()->mWriteBackFile ) 1344 if ( KOPrefs::instance()->mWriteBackFile )
1319 { 1345 {
1320 // write back XML file 1346 // write back XML file
1321 1347
1322 } 1348 }
1323 setModified( true ); 1349 setModified( true );
1324 } 1350 }
1325 } else { 1351 } else {
1326 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 1352 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
1327 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 1353 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
1328 question, i18n("Ok")) ; 1354 question, i18n("Ok")) ;
1329 } 1355 }
1330 delete calendar; 1356 delete calendar;
1331 updateView(); 1357 updateView();
1332 return syncOK; 1358 return syncOK;
1333 1359
1334 1360
1335#endif 1361#endif
1336 1362
1337} 1363}
1338 1364
1339void CalendarView::setSyncEventsReadOnly() 1365void CalendarView::setSyncEventsReadOnly()
1340{ 1366{
1341 Event * ev; 1367 Event * ev;
1342 QPtrList<Event> eL = mCalendar->rawEvents(); 1368 QPtrList<Event> eL = mCalendar->rawEvents();
1343 ev = eL.first(); 1369 ev = eL.first();
1344 while ( ev ) { 1370 while ( ev ) {
1345 if ( ev->uid().left(21) == QString("last-syncEvent-device") ) 1371 if ( ev->uid().left(15) == QString("last-syncEvent-") )
1346 ev->setReadOnly( true ); 1372 ev->setReadOnly( true );
1347 ev = eL.next(); 1373 ev = eL.next();
1348 } 1374 }
1349} 1375}
1350bool CalendarView::openCalendar(QString filename, bool merge) 1376bool CalendarView::openCalendar(QString filename, bool merge)
1351{ 1377{
1352 1378
1353 if (filename.isEmpty()) { 1379 if (filename.isEmpty()) {
1354 return false; 1380 return false;
1355 } 1381 }
1356 1382
1357 if (!QFile::exists(filename)) { 1383 if (!QFile::exists(filename)) {
1358 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 1384 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
1359 return false; 1385 return false;
1360 } 1386 }
1361 1387
1362 globalFlagBlockAgenda = 1; 1388 globalFlagBlockAgenda = 1;
1363 if (!merge) mCalendar->close(); 1389 if (!merge) mCalendar->close();
1364 1390
1365 mStorage->setFileName( filename ); 1391 mStorage->setFileName( filename );
1366 1392
1367 if ( mStorage->load(KOPrefs::instance()->mUseQuicksave) ) { 1393 if ( mStorage->load(KOPrefs::instance()->mUseQuicksave) ) {
1368 if ( merge ) ;//setModified( true ); 1394 if ( merge ) ;//setModified( true );
1369 else { 1395 else {
1370 //setModified( true ); 1396 //setModified( true );
1371 mViewManager->setDocumentId( filename ); 1397 mViewManager->setDocumentId( filename );
1372 mDialogManager->setDocumentId( filename ); 1398 mDialogManager->setDocumentId( filename );
1373 mTodoList->setDocumentId( filename ); 1399 mTodoList->setDocumentId( filename );
1374 } 1400 }
1375 globalFlagBlockAgenda = 2; 1401 globalFlagBlockAgenda = 2;
1376 // if ( getLastSyncEvent() ) 1402 // if ( getLastSyncEvent() )
1377 // getLastSyncEvent()->setReadOnly( true ); 1403 // getLastSyncEvent()->setReadOnly( true );
1378 mCalendar->reInitAlarmSettings(); 1404 mCalendar->reInitAlarmSettings();
1379 setSyncEventsReadOnly(); 1405 setSyncEventsReadOnly();
1380 updateUnmanagedViews(); 1406 updateUnmanagedViews();
1381 updateView(); 1407 updateView();
1382 if ( filename != MainWindow::defaultFileName() ) 1408 if ( filename != MainWindow::defaultFileName() )
1383 saveCalendar( MainWindow::defaultFileName() ); 1409 saveCalendar( MainWindow::defaultFileName() );
1384 loadedFileVersion = QDateTime::currentDateTime(); 1410 loadedFileVersion = QDateTime::currentDateTime();
1385 return true; 1411 return true;
1386 } else { 1412 } else {
1387 // while failing to load, the calendar object could 1413 // while failing to load, the calendar object could
1388 // have become partially populated. Clear it out. 1414 // have become partially populated. Clear it out.
1389 if ( !merge ) mCalendar->close(); 1415 if ( !merge ) mCalendar->close();
1390 1416
1391 KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 1417 KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
1392 1418
1393 globalFlagBlockAgenda = 2; 1419 globalFlagBlockAgenda = 2;
1394 updateView(); 1420 updateView();
1395 } 1421 }
1396 return false; 1422 return false;
1397} 1423}
1398void CalendarView::setLoadedFileVersion(QDateTime dt) 1424void CalendarView::setLoadedFileVersion(QDateTime dt)
1399{ 1425{
1400 loadedFileVersion = dt; 1426 loadedFileVersion = dt;
1401} 1427}
1402bool CalendarView::checkFileChanged(QString fn) 1428bool CalendarView::checkFileChanged(QString fn)
1403{ 1429{
1404 QFileInfo finf ( fn ); 1430 QFileInfo finf ( fn );
1405 if ( !finf.exists() ) 1431 if ( !finf.exists() )
1406 return true; 1432 return true;
1407 QDateTime dt = finf.lastModified (); 1433 QDateTime dt = finf.lastModified ();
1408 if ( dt <= loadedFileVersion ) 1434 if ( dt <= loadedFileVersion )
1409 return false; 1435 return false;
1410 return true; 1436 return true;
1411 1437
1412} 1438}
1413bool CalendarView::checkFileVersion(QString fn) 1439bool CalendarView::checkFileVersion(QString fn)
1414{ 1440{
1415 QFileInfo finf ( fn ); 1441 QFileInfo finf ( fn );
1416 if ( !finf.exists() ) 1442 if ( !finf.exists() )
1417 return true; 1443 return true;
1418 QDateTime dt = finf.lastModified (); 1444 QDateTime dt = finf.lastModified ();
1419 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1()); 1445 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1());
1420 //qDebug("file on disk version %s",dt.toString().latin1()); 1446 //qDebug("file on disk version %s",dt.toString().latin1());
1421 if ( dt <= loadedFileVersion ) 1447 if ( dt <= loadedFileVersion )
1422 return true; 1448 return true;
1423 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, false)) , 1449 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, false)) ,
1424 i18n("KO/Pi Warning"),i18n("Overwrite"), 1450 i18n("KO/Pi Warning"),i18n("Overwrite"),
1425 i18n("Sync+save")); 1451 i18n("Sync+save"));
1426 1452
1427 if ( km == KMessageBox::Cancel ) 1453 if ( km == KMessageBox::Cancel )
1428 return false; 1454 return false;
1429 if ( km == KMessageBox::Yes ) 1455 if ( km == KMessageBox::Yes )
1430 return true; 1456 return true;
1431 1457
1432 setSyncDevice("deleteaftersync" ); 1458 setSyncDevice("deleteaftersync" );
1433 KOPrefs::instance()->mAskForPreferences = true; 1459 KOPrefs::instance()->mAskForPreferences = true;
1434 KOPrefs::instance()->mSyncAlgoPrefs = 3; 1460 KOPrefs::instance()->mSyncAlgoPrefs = 3;
1435 KOPrefs::instance()->mWriteBackFile = false; 1461 KOPrefs::instance()->mWriteBackFile = false;
1436 KOPrefs::instance()->mWriteBackExistingOnly = false; 1462 KOPrefs::instance()->mWriteBackExistingOnly = false;
1437 KOPrefs::instance()->mShowSyncSummary = false; 1463 KOPrefs::instance()->mShowSyncSummary = false;
1438 syncCalendar( fn, 3 ); 1464 syncCalendar( fn, 3 );
1439 Event * e = getLastSyncEvent(); 1465 Event * e = getLastSyncEvent();
1440 mCalendar->deleteEvent ( e ); 1466 mCalendar->deleteEvent ( e );
1441 updateView(); 1467 updateView();
@@ -1713,193 +1739,193 @@ void CalendarView::writeFilterSettings(KConfig *config)
1713 while(filter) { 1739 while(filter) {
1714 // kdDebug() << " fn: " << filter->name() << endl; 1740 // kdDebug() << " fn: " << filter->name() << endl;
1715 filterList << filter->name(); 1741 filterList << filter->name();
1716 config->setGroup("Filter_" + filter->name()); 1742 config->setGroup("Filter_" + filter->name());
1717 config->writeEntry("Criteria",filter->criteria()); 1743 config->writeEntry("Criteria",filter->criteria());
1718 config->writeEntry("CategoryList",filter->categoryList()); 1744 config->writeEntry("CategoryList",filter->categoryList());
1719 filter = mFilters.next(); 1745 filter = mFilters.next();
1720 } 1746 }
1721 config->setGroup("General"); 1747 config->setGroup("General");
1722 config->writeEntry("CalendarFilters",filterList); 1748 config->writeEntry("CalendarFilters",filterList);
1723 1749
1724 config->setGroup("FilterView"); 1750 config->setGroup("FilterView");
1725 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled()); 1751 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled());
1726 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name()); 1752 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name());
1727} 1753}
1728 1754
1729 1755
1730void CalendarView::goToday() 1756void CalendarView::goToday()
1731{ 1757{
1732 mNavigator->selectToday(); 1758 mNavigator->selectToday();
1733} 1759}
1734 1760
1735void CalendarView::goNext() 1761void CalendarView::goNext()
1736{ 1762{
1737 mNavigator->selectNext(); 1763 mNavigator->selectNext();
1738} 1764}
1739 1765
1740void CalendarView::goPrevious() 1766void CalendarView::goPrevious()
1741{ 1767{
1742 mNavigator->selectPrevious(); 1768 mNavigator->selectPrevious();
1743} 1769}
1744void CalendarView::goNextMonth() 1770void CalendarView::goNextMonth()
1745{ 1771{
1746 mNavigator->selectNextMonth(); 1772 mNavigator->selectNextMonth();
1747} 1773}
1748 1774
1749void CalendarView::goPreviousMonth() 1775void CalendarView::goPreviousMonth()
1750{ 1776{
1751 mNavigator->selectPreviousMonth(); 1777 mNavigator->selectPreviousMonth();
1752} 1778}
1753void CalendarView::writeLocale() 1779void CalendarView::writeLocale()
1754{ 1780{
1755 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime ); 1781 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime );
1756 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday ); 1782 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday );
1757 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate ); 1783 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate );
1758 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage ); 1784 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage );
1759 QString dummy = KOPrefs::instance()->mUserDateFormatLong; 1785 QString dummy = KOPrefs::instance()->mUserDateFormatLong;
1760 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") )); 1786 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") ));
1761 dummy = KOPrefs::instance()->mUserDateFormatShort; 1787 dummy = KOPrefs::instance()->mUserDateFormatShort;
1762 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") )); 1788 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") ));
1763 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving, 1789 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving,
1764 KOPrefs::instance()->mDaylightsavingStart, 1790 KOPrefs::instance()->mDaylightsavingStart,
1765 KOPrefs::instance()->mDaylightsavingEnd ); 1791 KOPrefs::instance()->mDaylightsavingEnd );
1766 KGlobal::locale()->setTimezone( KOPrefs::instance()->mTimeZoneId ); 1792 KGlobal::locale()->setTimezone( KOPrefs::instance()->mTimeZoneId );
1767} 1793}
1768void CalendarView::updateConfig() 1794void CalendarView::updateConfig()
1769{ 1795{
1770 writeLocale(); 1796 writeLocale();
1771 if ( KOPrefs::instance()->mUseAppColors ) 1797 if ( KOPrefs::instance()->mUseAppColors )
1772 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 1798 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
1773 emit configChanged(); 1799 emit configChanged();
1774 mTodoList->updateConfig(); 1800 mTodoList->updateConfig();
1775 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont); 1801 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont);
1776 mCalendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1802 mCalendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1777 // To make the "fill window" configurations work 1803 // To make the "fill window" configurations work
1778 //mViewManager->raiseCurrentView(); 1804 //mViewManager->raiseCurrentView();
1779} 1805}
1780 1806
1781 1807
1782void CalendarView::eventChanged(Event *event) 1808void CalendarView::eventChanged(Event *event)
1783{ 1809{
1784 changeEventDisplay(event,KOGlobals::EVENTEDITED); 1810 changeEventDisplay(event,KOGlobals::EVENTEDITED);
1785 //updateUnmanagedViews(); 1811 //updateUnmanagedViews();
1786} 1812}
1787 1813
1788void CalendarView::eventAdded(Event *event) 1814void CalendarView::eventAdded(Event *event)
1789{ 1815{
1790 changeEventDisplay(event,KOGlobals::EVENTADDED); 1816 changeEventDisplay(event,KOGlobals::EVENTADDED);
1791} 1817}
1792 1818
1793void CalendarView::eventToBeDeleted(Event *) 1819void CalendarView::eventToBeDeleted(Event *)
1794{ 1820{
1795 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl; 1821 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl;
1796} 1822}
1797 1823
1798void CalendarView::eventDeleted() 1824void CalendarView::eventDeleted()
1799{ 1825{
1800 changeEventDisplay(0,KOGlobals::EVENTDELETED); 1826 changeEventDisplay(0,KOGlobals::EVENTDELETED);
1801} 1827}
1802void CalendarView::changeTodoDisplay(Todo *which, int action) 1828void CalendarView::changeTodoDisplay(Todo *which, int action)
1803{ 1829{
1804 changeIncidenceDisplay((Incidence *)which, action); 1830 changeIncidenceDisplay((Incidence *)which, action);
1805} 1831}
1806void CalendarView::checkZaurusId( int id, bool todo ) 1832void CalendarView::checkZaurusId( int id, bool todo )
1807{ 1833{
1808 if ( id >= 0 ) { 1834 if ( id >= 0 ) {
1809 Incidence* lse = mCalendar->event( "last-syncEvent-device-Sharp-DTM"); 1835 Incidence* lse = mCalendar->event( "last-syncEvent-Sharp-DTM");
1810 if ( lse ) { 1836 if ( lse ) {
1811 QString des = lse->description(); 1837 QString des = lse->description();
1812 QString pref = "e"; 1838 QString pref = "e";
1813 if ( todo ) 1839 if ( todo )
1814 pref = "t"; 1840 pref = "t";
1815 des += pref+ QString::number ( id ) + ","; 1841 des += pref+ QString::number ( id ) + ",";
1816 lse->setReadOnly( false ); 1842 lse->setReadOnly( false );
1817 lse->setDescription( des ); 1843 lse->setDescription( des );
1818 lse->setReadOnly( true ); 1844 lse->setReadOnly( true );
1819 } 1845 }
1820 } 1846 }
1821} 1847}
1822void CalendarView::changeIncidenceDisplay(Incidence *which, int action) 1848void CalendarView::changeIncidenceDisplay(Incidence *which, int action)
1823{ 1849{
1824 updateUnmanagedViews(); 1850 updateUnmanagedViews();
1825 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action ); 1851 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action );
1826 if ( action == KOGlobals::EVENTDELETED ) { //delete 1852 if ( action == KOGlobals::EVENTDELETED ) { //delete
1827 mCalendar->checkAlarmForIncidence( 0, true ); 1853 mCalendar->checkAlarmForIncidence( 0, true );
1828 if ( mEventViewerDialog ) 1854 if ( mEventViewerDialog )
1829 mEventViewerDialog->hide(); 1855 mEventViewerDialog->hide();
1830 } 1856 }
1831 else 1857 else
1832 mCalendar->checkAlarmForIncidence( which , false ); 1858 mCalendar->checkAlarmForIncidence( which , false );
1833} 1859}
1834 1860
1835// most of the changeEventDisplays() right now just call the view's 1861// most of the changeEventDisplays() right now just call the view's
1836// total update mode, but they SHOULD be recoded to be more refresh-efficient. 1862// total update mode, but they SHOULD be recoded to be more refresh-efficient.
1837void CalendarView::changeEventDisplay(Event *which, int action) 1863void CalendarView::changeEventDisplay(Event *which, int action)
1838{ 1864{
1839 // kdDebug() << "CalendarView::changeEventDisplay" << endl; 1865 // kdDebug() << "CalendarView::changeEventDisplay" << endl;
1840 changeIncidenceDisplay((Incidence *)which, action); 1866 changeIncidenceDisplay((Incidence *)which, action);
1841 mDateNavigator->updateView(); 1867 mDateNavigator->updateView();
1842 //mDialogManager->updateSearchDialog(); 1868 //mDialogManager->updateSearchDialog();
1843 1869
1844 if (which) { 1870 if (which) {
1845 // If there is an event view visible update the display 1871 // If there is an event view visible update the display
1846 mViewManager->currentView()->changeEventDisplay(which,action); 1872 mViewManager->currentView()->changeEventDisplay(which,action);
1847 // TODO: check, if update needed 1873 // TODO: check, if update needed
1848 // if (which->getTodoStatus()) { 1874 // if (which->getTodoStatus()) {
1849 mTodoList->updateView(); 1875 mTodoList->updateView();
1850 // } 1876 // }
1851 } else { 1877 } else {
1852 mViewManager->currentView()->updateView(); 1878 mViewManager->currentView()->updateView();
1853 } 1879 }
1854} 1880}
1855 1881
1856 1882
1857void CalendarView::updateTodoViews() 1883void CalendarView::updateTodoViews()
1858{ 1884{
1859 1885
1860 mTodoList->updateView(); 1886 mTodoList->updateView();
1861 mViewManager->currentView()->updateView(); 1887 mViewManager->currentView()->updateView();
1862 1888
1863} 1889}
1864 1890
1865 1891
1866void CalendarView::updateView(const QDate &start, const QDate &end) 1892void CalendarView::updateView(const QDate &start, const QDate &end)
1867{ 1893{
1868 mTodoList->updateView(); 1894 mTodoList->updateView();
1869 mViewManager->updateView(start, end); 1895 mViewManager->updateView(start, end);
1870 //mDateNavigator->updateView(); 1896 //mDateNavigator->updateView();
1871} 1897}
1872 1898
1873void CalendarView::updateView() 1899void CalendarView::updateView()
1874{ 1900{
1875 DateList tmpList = mNavigator->selectedDates(); 1901 DateList tmpList = mNavigator->selectedDates();
1876 1902
1877 // We assume that the navigator only selects consecutive days. 1903 // We assume that the navigator only selects consecutive days.
1878 updateView( tmpList.first(), tmpList.last() ); 1904 updateView( tmpList.first(), tmpList.last() );
1879} 1905}
1880 1906
1881void CalendarView::updateUnmanagedViews() 1907void CalendarView::updateUnmanagedViews()
1882{ 1908{
1883 mDateNavigator->updateDayMatrix(); 1909 mDateNavigator->updateDayMatrix();
1884} 1910}
1885 1911
1886int CalendarView::msgItemDelete() 1912int CalendarView::msgItemDelete()
1887{ 1913{
1888 return KMessageBox::warningContinueCancel(this, 1914 return KMessageBox::warningContinueCancel(this,
1889 i18n("This item will be\npermanently deleted."), 1915 i18n("This item will be\npermanently deleted."),
1890 i18n("KO/Pi Confirmation"),i18n("Delete")); 1916 i18n("KO/Pi Confirmation"),i18n("Delete"));
1891} 1917}
1892 1918
1893 1919
1894void CalendarView::edit_cut() 1920void CalendarView::edit_cut()
1895{ 1921{
1896 Event *anEvent=0; 1922 Event *anEvent=0;
1897 1923
1898 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 1924 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
1899 1925
1900 if (mViewManager->currentView()->isEventView()) { 1926 if (mViewManager->currentView()->isEventView()) {
1901 if ( incidence && incidence->type() == "Event" ) { 1927 if ( incidence && incidence->type() == "Event" ) {
1902 anEvent = static_cast<Event *>(incidence); 1928 anEvent = static_cast<Event *>(incidence);
1903 } 1929 }
1904 } 1930 }
1905 1931
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index 8aa5e1c..557554f 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -20,192 +20,193 @@
20 As a special exception, permission is given to link this program 20 As a special exception, permission is given to link this program
21 with any edition of Qt, and distribute the resulting executable, 21 with any edition of Qt, and distribute the resulting executable,
22 without including the source code for Qt in the source distribution. 22 without including the source code for Qt in the source distribution.
23*/ 23*/
24#ifndef CALENDARVIEW_H 24#ifndef CALENDARVIEW_H
25#define CALENDARVIEW_H 25#define CALENDARVIEW_H
26 26
27#include <qframe.h> 27#include <qframe.h>
28#include <qlayout.h> 28#include <qlayout.h>
29#include <qwidget.h> 29#include <qwidget.h>
30#include <qptrlist.h> 30#include <qptrlist.h>
31#include <qvbox.h> 31#include <qvbox.h>
32#include <qmap.h> 32#include <qmap.h>
33#ifndef DESKTOP_VERSION 33#ifndef DESKTOP_VERSION
34#include <qtopia/ir.h> 34#include <qtopia/ir.h>
35#else 35#else
36#define Ir char 36#define Ir char
37#endif 37#endif
38#include <libkcal/calendar.h> 38#include <libkcal/calendar.h>
39#include <libkcal/scheduler.h> 39#include <libkcal/scheduler.h>
40#include <libkcal/calendarresources.h> 40#include <libkcal/calendarresources.h>
41#include <libkcal/resourcecalendar.h> 41#include <libkcal/resourcecalendar.h>
42 42
43#include <korganizer/calendarviewbase.h> 43#include <korganizer/calendarviewbase.h>
44 44
45class QWidgetStack; 45class QWidgetStack;
46class QSplitter; 46class QSplitter;
47 47
48class CalPrinter; 48class CalPrinter;
49class KOFilterView; 49class KOFilterView;
50class KOViewManager; 50class KOViewManager;
51class KODialogManager; 51class KODialogManager;
52class KOTodoView; 52class KOTodoView;
53class KDateNavigator; 53class KDateNavigator;
54class DateNavigator; 54class DateNavigator;
55class KOIncidenceEditor; 55class KOIncidenceEditor;
56class KDatePicker; 56class KDatePicker;
57class ResourceView; 57class ResourceView;
58class NavigatorBar; 58class NavigatorBar;
59class KOEventEditor; 59class KOEventEditor;
60class KOTodoEditor ; 60class KOTodoEditor ;
61class KOEventViewerDialog; 61class KOEventViewerDialog;
62class KOBeamPrefs; 62class KOBeamPrefs;
63class KSyncProfile; 63class KSyncProfile;
64class AlarmDialog; 64class AlarmDialog;
65class KCal::Attendee; 65class KCal::Attendee;
66 66
67namespace KCal { class FileStorage; } 67namespace KCal { class FileStorage; }
68 68
69using namespace KCal; 69using namespace KCal;
70 70
71/** 71/**
72 This is the main calendar widget. It provides the different vies on t he 72 This is the main calendar widget. It provides the different vies on t he
73 calendar data as well as the date navigator. It also handles synchronisation 73 calendar data as well as the date navigator. It also handles synchronisation
74 of the different views and controls the different dialogs like preferences, 74 of the different views and controls the different dialogs like preferences,
75 event editor, search dialog etc. 75 event editor, search dialog etc.
76 76
77 @short main calendar view widget 77 @short main calendar view widget
78 @author Cornelius Schumacher 78 @author Cornelius Schumacher
79*/ 79*/
80class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Observer 80class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Observer
81{ 81{
82 Q_OBJECT 82 Q_OBJECT
83 public: 83 public:
84 /** 84 /**
85 Constructs a new calendar view widget. 85 Constructs a new calendar view widget.
86 86
87 @param calendar calendar document 87 @param calendar calendar document
88 @param parent parent window 88 @param parent parent window
89 @param name Qt internal widget object name 89 @param name Qt internal widget object name
90 */ 90 */
91 CalendarView( CalendarResources *calendar, QWidget *parent = 0, 91 CalendarView( CalendarResources *calendar, QWidget *parent = 0,
92 const char *name = 0 ); 92 const char *name = 0 );
93 CalendarView( Calendar *calendar, QWidget *parent = 0, 93 CalendarView( Calendar *calendar, QWidget *parent = 0,
94 const char *name = 0 ); 94 const char *name = 0 );
95 virtual ~CalendarView(); 95 virtual ~CalendarView();
96 96
97 Calendar *calendar() { return mCalendar; } 97 Calendar *calendar() { return mCalendar; }
98 98
99 KOViewManager *viewManager(); 99 KOViewManager *viewManager();
100 KODialogManager *dialogManager(); 100 KODialogManager *dialogManager();
101 101
102 QDate startDate(); 102 QDate startDate();
103 QDate endDate(); 103 QDate endDate();
104 104
105 QWidgetStack *viewStack(); 105 QWidgetStack *viewStack();
106 QWidget *leftFrame(); 106 QWidget *leftFrame();
107 NavigatorBar *navigatorBar(); 107 NavigatorBar *navigatorBar();
108 108
109 DateNavigator *dateNavigator(); 109 DateNavigator *dateNavigator();
110 KDateNavigator *dateNavigatorWidget(); 110 KDateNavigator *dateNavigatorWidget();
111 111
112 void addView(KOrg::BaseView *); 112 void addView(KOrg::BaseView *);
113 void showView(KOrg::BaseView *); 113 void showView(KOrg::BaseView *);
114 KOEventViewerDialog* getEventViewerDialog(); 114 KOEventViewerDialog* getEventViewerDialog();
115 Incidence *currentSelection(); 115 Incidence *currentSelection();
116 void setupExternSyncProfiles();
116 117
117 signals: 118 signals:
118 /** This todo has been modified */ 119 /** This todo has been modified */
119 void todoModified(Todo *, int); 120 void todoModified(Todo *, int);
120 121
121 /** when change is made to options dialog, the topwidget will catch this 122 /** when change is made to options dialog, the topwidget will catch this
122 * and emit this signal which notifies all widgets which have registered 123 * and emit this signal which notifies all widgets which have registered
123 * for notification to update their settings. */ 124 * for notification to update their settings. */
124 void configChanged(); 125 void configChanged();
125 /** emitted when the topwidget is closing down, so that any attached 126 /** emitted when the topwidget is closing down, so that any attached
126 child windows can also close. */ 127 child windows can also close. */
127 void closingDown(); 128 void closingDown();
128 /** emitted right before we die */ 129 /** emitted right before we die */
129 void closed(QWidget *); 130 void closed(QWidget *);
130 131
131 /** Emitted when state of modified flag changes */ 132 /** Emitted when state of modified flag changes */
132 void modifiedChanged(bool); 133 void modifiedChanged(bool);
133 void signalmodified(); 134 void signalmodified();
134 135
135 /** Emitted when state of read-only flag changes */ 136 /** Emitted when state of read-only flag changes */
136 void readOnlyChanged(bool); 137 void readOnlyChanged(bool);
137 138
138 /** Emitted when the unit of navigation changes */ 139 /** Emitted when the unit of navigation changes */
139 void changeNavStringPrev(const QString &); 140 void changeNavStringPrev(const QString &);
140 void changeNavStringNext(const QString &); 141 void changeNavStringNext(const QString &);
141 142
142 /** Emitted when state of events selection has changed and user is organizer*/ 143 /** Emitted when state of events selection has changed and user is organizer*/
143 void organizerEventsSelected(bool); 144 void organizerEventsSelected(bool);
144 /** Emitted when state of events selection has changed and user is attendee*/ 145 /** Emitted when state of events selection has changed and user is attendee*/
145 void groupEventsSelected(bool); 146 void groupEventsSelected(bool);
146 /** 147 /**
147 Emitted when an incidence gets selected. If the selection is cleared the 148 Emitted when an incidence gets selected. If the selection is cleared the
148 signal is emitted with 0 as argument. 149 signal is emitted with 0 as argument.
149 */ 150 */
150 void incidenceSelected( Incidence * ); 151 void incidenceSelected( Incidence * );
151 /** Emitted, when a todoitem is selected or deselected. */ 152 /** Emitted, when a todoitem is selected or deselected. */
152 void todoSelected( bool ); 153 void todoSelected( bool );
153 154
154 /** 155 /**
155 Emitted, when clipboard content changes. Parameter indicates if paste 156 Emitted, when clipboard content changes. Parameter indicates if paste
156 is possible or not. 157 is possible or not.
157 */ 158 */
158 void pasteEnabled(bool); 159 void pasteEnabled(bool);
159 160
160 /** Emitted, when the number of incoming messages has changed. */ 161 /** Emitted, when the number of incoming messages has changed. */
161 void numIncomingChanged(int); 162 void numIncomingChanged(int);
162 163
163 /** Emitted, when the number of outgoing messages has changed. */ 164 /** Emitted, when the number of outgoing messages has changed. */
164 void numOutgoingChanged(int); 165 void numOutgoingChanged(int);
165 166
166 /** Send status message, which can e.g. be displayed in the status bar. */ 167 /** Send status message, which can e.g. be displayed in the status bar. */
167 void statusMessage(const QString &); 168 void statusMessage(const QString &);
168 169
169 void calendarViewExpanded( bool ); 170 void calendarViewExpanded( bool );
170 void updateSearchDialog(); 171 void updateSearchDialog();
171 172
172 173
173 public slots: 174 public slots:
174 void recheckTimerAlarm(); 175 void recheckTimerAlarm();
175 void checkNextTimerAlarm(); 176 void checkNextTimerAlarm();
176 void addAlarm(const QDateTime &qdt, const QString &noti ); 177 void addAlarm(const QDateTime &qdt, const QString &noti );
177 void addSuspendAlarm(const QDateTime &qdt, const QString &noti ); 178 void addSuspendAlarm(const QDateTime &qdt, const QString &noti );
178 void removeAlarm(const QDateTime &qdt, const QString &noti ); 179 void removeAlarm(const QDateTime &qdt, const QString &noti );
179 180
180 /** options dialog made a changed to the configuration. we catch this 181 /** options dialog made a changed to the configuration. we catch this
181 * and notify all widgets which need to update their configuration. */ 182 * and notify all widgets which need to update their configuration. */
182 void updateConfig(); 183 void updateConfig();
183 184
184 /** 185 /**
185 Load calendar from file \a filename. If \a merge is true, load 186 Load calendar from file \a filename. If \a merge is true, load
186 calendar into existing one, if it is false, clear calendar, before 187 calendar into existing one, if it is false, clear calendar, before
187 loading. Return true, if calendar could be successfully loaded. 188 loading. Return true, if calendar could be successfully loaded.
188 */ 189 */
189 bool openCalendar(QString filename, bool merge=false); 190 bool openCalendar(QString filename, bool merge=false);
190 bool syncCalendar(QString filename,int mode = 0 ); 191 bool syncCalendar(QString filename,int mode = 0 );
191 192
192 /** 193 /**
193 Save calendar data to file. Return true if calendar could be 194 Save calendar data to file. Return true if calendar could be
194 successfully saved. 195 successfully saved.
195 */ 196 */
196 bool saveCalendar(QString filename); 197 bool saveCalendar(QString filename);
197 198
198 /** 199 /**
199 Close calendar. Clear calendar data and reset views to display an empty 200 Close calendar. Clear calendar data and reset views to display an empty
200 calendar. 201 calendar.
201 */ 202 */
202 void closeCalendar(); 203 void closeCalendar();
203 204
204 /** Archive old events of calendar */ 205 /** Archive old events of calendar */
205 void archiveCalendar(); 206 void archiveCalendar();
206 207
207 void showIncidence(); 208 void showIncidence();
208 void editIncidence(); 209 void editIncidence();
209 void editIncidenceDescription(); 210 void editIncidenceDescription();
210 void deleteIncidence(); 211 void deleteIncidence();
211 212
@@ -388,199 +389,199 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser
388 /** Move the curdatepient view date to today */ 389 /** Move the curdatepient view date to today */
389 void goToday(); 390 void goToday();
390 391
391 /** Move to the next date(s) in the current view */ 392 /** Move to the next date(s) in the current view */
392 void goNext(); 393 void goNext();
393 394
394 /** Move to the previous date(s) in the current view */ 395 /** Move to the previous date(s) in the current view */
395 void goPrevious(); 396 void goPrevious();
396 /** Move to the next date(s) in the current view */ 397 /** Move to the next date(s) in the current view */
397 void goNextMonth(); 398 void goNextMonth();
398 399
399 /** Move to the previous date(s) in the current view */ 400 /** Move to the previous date(s) in the current view */
400 void goPreviousMonth(); 401 void goPreviousMonth();
401 402
402 void toggleExpand(); 403 void toggleExpand();
403 void toggleDateNavigatorWidget(); 404 void toggleDateNavigatorWidget();
404 void toggleAllDaySize(); 405 void toggleAllDaySize();
405 void dialogClosing(Incidence *); 406 void dialogClosing(Incidence *);
406 407
407 /** Look for new messages in the inbox */ 408 /** Look for new messages in the inbox */
408 void lookForIncomingMessages(); 409 void lookForIncomingMessages();
409 /** Look for new messages in the outbox */ 410 /** Look for new messages in the outbox */
410 void lookForOutgoingMessages(); 411 void lookForOutgoingMessages();
411 412
412 void processMainViewSelection( Incidence * ); 413 void processMainViewSelection( Incidence * );
413 void processTodoListSelection( Incidence * ); 414 void processTodoListSelection( Incidence * );
414 415
415 void processIncidenceSelection( Incidence * ); 416 void processIncidenceSelection( Incidence * );
416 417
417 void purgeCompleted(); 418 void purgeCompleted();
418 bool removeCompletedSubTodos( Todo* ); 419 bool removeCompletedSubTodos( Todo* );
419 void slotCalendarChanged(); 420 void slotCalendarChanged();
420 bool importBday(); 421 bool importBday();
421 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday ); 422 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday );
422 bool importQtopia( const QString &categoriesFile, 423 bool importQtopia( const QString &categoriesFile,
423 const QString &datebookFile, 424 const QString &datebookFile,
424 const QString &tasklistFile ); 425 const QString &tasklistFile );
425 void syncSharp( ); 426 void syncSharp( );
426 void slotSelectPickerDate( QDate ) ; 427 void slotSelectPickerDate( QDate ) ;
427 void showDatePicker( ) ; 428 void showDatePicker( ) ;
428 void moveIncidence(Incidence *) ; 429 void moveIncidence(Incidence *) ;
429 void beamIncidence(Incidence *) ; 430 void beamIncidence(Incidence *) ;
430 void beamCalendar() ; 431 void beamCalendar() ;
431 void beamFilteredCalendar() ; 432 void beamFilteredCalendar() ;
432 void beamIncidenceList(QPtrList<Incidence>) ; 433 void beamIncidenceList(QPtrList<Incidence>) ;
433 void manageCategories(); 434 void manageCategories();
434 int addCategories(); 435 int addCategories();
435 void removeCategories(); 436 void removeCategories();
436 void setSyncDevice( QString ); 437 void setSyncDevice( QString );
437 void setSyncName( QString ); 438 void setSyncName( QString );
438 protected slots: 439 protected slots:
439 void timerAlarm(); 440 void timerAlarm();
440 void suspendAlarm(); 441 void suspendAlarm();
441 void beamDone( Ir *ir ); 442 void beamDone( Ir *ir );
442 /** Select a view or adapt the current view to display the specified dates. */ 443 /** Select a view or adapt the current view to display the specified dates. */
443 void showDates( const KCal::DateList & ); 444 void showDates( const KCal::DateList & );
444 void selectWeekNum ( int ); 445 void selectWeekNum ( int );
445 446
446 public: 447 public:
447 // show a standard warning 448 // show a standard warning
448 // returns KMsgBox::yesNoCancel() 449 // returns KMsgBox::yesNoCancel()
449 int msgCalModified(); 450 int msgCalModified();
450 void confSync(); 451 void confSync();
451 void setLoadedFileVersion(QDateTime); 452 void setLoadedFileVersion(QDateTime);
452 bool checkFileVersion(QString fn); 453 bool checkFileVersion(QString fn);
453 bool checkFileChanged(QString fn); 454 bool checkFileChanged(QString fn);
454 Event* getLastSyncEvent(); 455 Event* getLastSyncEvent();
455 /** Adapt navigation units correpsonding to step size of navigation of the 456 /** Adapt navigation units correpsonding to step size of navigation of the
456 * current view. 457 * current view.
457 */ 458 */
458 void adaptNavigationUnits(); 459 void adaptNavigationUnits();
459 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode ); 460 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode );
460 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false ); 461 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false );
461 //Attendee* getYourAttendee(Event *event); 462 //Attendee* getYourAttendee(Event *event);
462 protected: 463 protected:
463 void schedule(Scheduler::Method, Incidence *incidence = 0); 464 void schedule(Scheduler::Method, Incidence *incidence = 0);
464 465
465 // returns KMsgBox::OKCandel() 466 // returns KMsgBox::OKCandel()
466 int msgItemDelete(); 467 int msgItemDelete();
467 void showEventEditor(); 468 void showEventEditor();
468 void showTodoEditor(); 469 void showTodoEditor();
469 void writeLocale(); 470 void writeLocale();
470 Todo *selectedTodo(); 471 Todo *selectedTodo();
471 472
472 private: 473 private:
473 AlarmDialog * mAlarmDialog; 474 AlarmDialog * mAlarmDialog;
474 QString mAlarmNotification; 475 QString mAlarmNotification;
475 QString mSuspendAlarmNotification; 476 QString mSuspendAlarmNotification;
476 QTimer* mSuspendTimer; 477 QTimer* mSuspendTimer;
477 QTimer* mAlarmTimer; 478 QTimer* mAlarmTimer;
478 QTimer* mRecheckAlarmTimer; 479 QTimer* mRecheckAlarmTimer;
479 void computeAlarm( QString ); 480 void computeAlarm( QString );
480 void startAlarm( QString, QString ); 481 void startAlarm( QString, QString );
481 void setSyncEventsReadOnly(); 482 void setSyncEventsReadOnly();
482 483
483 QDateTime loadedFileVersion; 484 QDateTime loadedFileVersion;
484 void checkSharpEvent( Event* lastSync, Incidence* toDelete ); 485 void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete );
485 void checkZaurusId( int id, bool todo = false ); 486 void checkZaurusId( int id, bool todo = false );
486 int mGlobalSyncMode; 487 int mGlobalSyncMode;
487 QString mCurrentSyncDevice; 488 QString mCurrentSyncDevice;
488 QString mCurrentSyncName; 489 QString mCurrentSyncName;
489 KOBeamPrefs* beamDialog; 490 KOBeamPrefs* beamDialog;
490 void init(); 491 void init();
491 int mDatePickerMode; 492 int mDatePickerMode;
492 bool mFlagEditDescription; 493 bool mFlagEditDescription;
493 QDateTime mLastCalendarSync; 494 QDateTime mLastCalendarSync;
494 void createPrinter(); 495 void createPrinter();
495 496
496 void calendarModified( bool, Calendar * ); 497 void calendarModified( bool, Calendar * );
497 498
498 CalPrinter *mCalPrinter; 499 CalPrinter *mCalPrinter;
499 500
500 QSplitter *mPanner; 501 QSplitter *mPanner;
501 QSplitter *mLeftSplitter; 502 QSplitter *mLeftSplitter;
502 QWidget *mLeftFrame; 503 QWidget *mLeftFrame;
503 QWidgetStack *mRightFrame; 504 QWidgetStack *mRightFrame;
504 505
505 KDatePicker* mDatePicker; 506 KDatePicker* mDatePicker;
506 QVBox* mDateFrame; 507 QVBox* mDateFrame;
507 NavigatorBar *mNavigatorBar; 508 NavigatorBar *mNavigatorBar;
508 509
509 KDateNavigator *mDateNavigator; // widget showing small month view. 510 KDateNavigator *mDateNavigator; // widget showing small month view.
510 511
511 KOFilterView *mFilterView; 512 KOFilterView *mFilterView;
512 513
513 ResourceView *mResourceView; 514 ResourceView *mResourceView;
514 515
515 // calendar object for this viewing instance 516 // calendar object for this viewing instance
516 Calendar *mCalendar; 517 Calendar *mCalendar;
517 518
518 CalendarResourceManager *mResourceManager; 519 CalendarResourceManager *mResourceManager;
519 520
520 FileStorage *mStorage; 521 FileStorage *mStorage;
521 522
522 DateNavigator *mNavigator; 523 DateNavigator *mNavigator;
523 524
524 KOViewManager *mViewManager; 525 KOViewManager *mViewManager;
525 KODialogManager *mDialogManager; 526 KODialogManager *mDialogManager;
526 527
527 // Calendar filters 528 // Calendar filters
528 QPtrList<CalFilter> mFilters; 529 QPtrList<CalFilter> mFilters;
529 530
530 // various housekeeping variables. 531 // various housekeeping variables.
531 bool mModified; // flag indicating if calendar is modified 532 bool mModified; // flag indicating if calendar is modified
532 bool mReadOnly; // flag indicating if calendar is read-only 533 bool mReadOnly; // flag indicating if calendar is read-only
533 QDate mSaveSingleDate; 534 QDate mSaveSingleDate;
534 535
535 Incidence *mSelectedIncidence; 536 Incidence *mSelectedIncidence;
536 Incidence *mMoveIncidence; 537 Incidence *mMoveIncidence;
537 538 QPtrList<Event> mExternLastSyncEvent;
538 KOTodoView *mTodoList; 539 KOTodoView *mTodoList;
539 KOEventEditor * mEventEditor; 540 KOEventEditor * mEventEditor;
540 KOTodoEditor * mTodoEditor; 541 KOTodoEditor * mTodoEditor;
541 KOEventViewerDialog * mEventViewerDialog; 542 KOEventViewerDialog * mEventViewerDialog;
542 void keyPressEvent ( QKeyEvent *e) ; 543 void keyPressEvent ( QKeyEvent *e) ;
543 //QMap<Incidence*,KOIncidenceEditor*> mDialogList; 544 //QMap<Incidence*,KOIncidenceEditor*> mDialogList;
544}; 545};
545 546
546 547
547class CalendarViewVisitor : public Incidence::Visitor 548class CalendarViewVisitor : public Incidence::Visitor
548{ 549{
549 public: 550 public:
550 CalendarViewVisitor() : mView( 0 ) {} 551 CalendarViewVisitor() : mView( 0 ) {}
551 552
552 bool act( Incidence *incidence, CalendarView *view ) 553 bool act( Incidence *incidence, CalendarView *view )
553 { 554 {
554 mView = view; 555 mView = view;
555 return incidence->accept( *this ); 556 return incidence->accept( *this );
556 } 557 }
557 558
558 protected: 559 protected:
559 CalendarView *mView; 560 CalendarView *mView;
560}; 561};
561 562
562class ShowIncidenceVisitor : public CalendarViewVisitor 563class ShowIncidenceVisitor : public CalendarViewVisitor
563{ 564{
564 protected: 565 protected:
565 bool visit( Event *event ) { mView->showEvent( event ); return true; } 566 bool visit( Event *event ) { mView->showEvent( event ); return true; }
566 bool visit( Todo *todo ) { mView->showTodo( todo ); return true; } 567 bool visit( Todo *todo ) { mView->showTodo( todo ); return true; }
567 bool visit( Journal * j ) { mView->showJournal( j );return true; } 568 bool visit( Journal * j ) { mView->showJournal( j );return true; }
568}; 569};
569 570
570class EditIncidenceVisitor : public CalendarViewVisitor 571class EditIncidenceVisitor : public CalendarViewVisitor
571{ 572{
572 protected: 573 protected:
573 bool visit( Event *event ) { mView->editEvent( event ); return true; } 574 bool visit( Event *event ) { mView->editEvent( event ); return true; }
574 bool visit( Todo *todo ) { mView->editTodo( todo ); return true; } 575 bool visit( Todo *todo ) { mView->editTodo( todo ); return true; }
575 bool visit( Journal *j ) { mView->editJournal( j); return true; } 576 bool visit( Journal *j ) { mView->editJournal( j); return true; }
576}; 577};
577 578
578class DeleteIncidenceVisitor : public CalendarViewVisitor 579class DeleteIncidenceVisitor : public CalendarViewVisitor
579{ 580{
580 protected: 581 protected:
581 bool visit( Event *event ) { mView->deleteEvent( event ); return true; } 582 bool visit( Event *event ) { mView->deleteEvent( event ); return true; }
582 bool visit( Todo *todo ) { mView->deleteTodo( todo ); return true; } 583 bool visit( Todo *todo ) { mView->deleteTodo( todo ); return true; }
583 bool visit( Journal * j) {mView->deleteJournal( j ); return true; } 584 bool visit( Journal * j) {mView->deleteJournal( j ); return true; }
584}; 585};
585 586
586#endif 587#endif
diff --git a/korganizer/koprefs.cpp b/korganizer/koprefs.cpp
index 3ba5ab2..f3231ff 100644
--- a/korganizer/koprefs.cpp
+++ b/korganizer/koprefs.cpp
@@ -84,217 +84,218 @@ KOPrefs::KOPrefs() :
84 addItemBool("ShowIconDay1",&mShowIconDay1,true); 84 addItemBool("ShowIconDay1",&mShowIconDay1,true);
85 addItemBool("ShowIconDay5",&mShowIconDay5,true); 85 addItemBool("ShowIconDay5",&mShowIconDay5,true);
86 addItemBool("ShowIconDay7",&mShowIconDay7,true); 86 addItemBool("ShowIconDay7",&mShowIconDay7,true);
87 addItemBool("ShowIconMonth",&mShowIconMonth,true); 87 addItemBool("ShowIconMonth",&mShowIconMonth,true);
88 addItemBool("ShowIconTodoview",&mShowIconTodoview,true); 88 addItemBool("ShowIconTodoview",&mShowIconTodoview,true);
89 addItemBool("ShowIconBackFast",&mShowIconBackFast,true); 89 addItemBool("ShowIconBackFast",&mShowIconBackFast,true);
90 addItemBool("ShowIconBack",&mShowIconBack,true); 90 addItemBool("ShowIconBack",&mShowIconBack,true);
91 addItemBool("ShowIconToday",&mShowIconToday,true); 91 addItemBool("ShowIconToday",&mShowIconToday,true);
92 addItemBool("ShowIconForward",&mShowIconForward,true); 92 addItemBool("ShowIconForward",&mShowIconForward,true);
93 addItemBool("ShowIconForwardFast",&mShowIconForwardFast,true); 93 addItemBool("ShowIconForwardFast",&mShowIconForwardFast,true);
94 addItemBool("ShowIconWhatsThis",&mShowIconWhatsThis,false); 94 addItemBool("ShowIconWhatsThis",&mShowIconWhatsThis,false);
95 addItemBool("ShowIconNextDays",&mShowIconNextDays,true); 95 addItemBool("ShowIconNextDays",&mShowIconNextDays,true);
96 addItemBool("ShowIconNext",&mShowIconNext,true); 96 addItemBool("ShowIconNext",&mShowIconNext,true);
97 addItemBool("ShowIconJournal",&mShowIconJournal,true); 97 addItemBool("ShowIconJournal",&mShowIconJournal,true);
98 addItemBool("ShowIconStretch",&mShowIconStretch,true); 98 addItemBool("ShowIconStretch",&mShowIconStretch,true);
99 addItemBool("LanguageChanged",&mLanguageChanged,false); 99 addItemBool("LanguageChanged",&mLanguageChanged,false);
100 100
101 addItemBool("AskForQuit",&mAskForQuit,false); 101 addItemBool("AskForQuit",&mAskForQuit,false);
102 102
103#ifndef DESKTOP_VERSION 103#ifndef DESKTOP_VERSION
104 addItemBool("ShowFullMenu",&mShowFullMenu,false); 104 addItemBool("ShowFullMenu",&mShowFullMenu,false);
105#else 105#else
106 addItemBool("ShowFullMenu",&mShowFullMenu,true); 106 addItemBool("ShowFullMenu",&mShowFullMenu,true);
107#endif 107#endif
108 addItemBool("ToolBarHor",&mToolBarHor, true ); 108 addItemBool("ToolBarHor",&mToolBarHor, true );
109 addItemBool("ToolBarUp",&mToolBarUp, false ); 109 addItemBool("ToolBarUp",&mToolBarUp, false );
110 addItemBool("ToolBarMiniIcons",&mToolBarMiniIcons, false ); 110 addItemBool("ToolBarMiniIcons",&mToolBarMiniIcons, false );
111 addItemInt("Whats Next Days",&mWhatsNextDays,3); 111 addItemInt("Whats Next Days",&mWhatsNextDays,3);
112 addItemInt("Whats Next Prios",&mWhatsNextPrios,1); 112 addItemInt("Whats Next Prios",&mWhatsNextPrios,1);
113 113
114 addItemBool("ShowTodoInAgenda",&mShowTodoInAgenda,true); 114 addItemBool("ShowTodoInAgenda",&mShowTodoInAgenda,true);
115 addItemBool("ShowCompletedTodo",&mShowCompletedTodo,true); 115 addItemBool("ShowCompletedTodo",&mShowCompletedTodo,true);
116 addItemInt("AllDay Size",&mAllDaySize,28); 116 addItemInt("AllDay Size",&mAllDaySize,28);
117 QString defAlarm = KGlobal::iconLoader()->iconPath()+"koalarm.wav"; 117 QString defAlarm = KGlobal::iconLoader()->iconPath()+"koalarm.wav";
118 addItemString("DefaultAlarmFile",&mDefaultAlarmFile,defAlarm ); 118 addItemString("DefaultAlarmFile",&mDefaultAlarmFile,defAlarm );
119 119
120 addItemStringList("LocationDefaults",&mLocationDefaults ); 120 addItemStringList("LocationDefaults",&mLocationDefaults );
121 addItemStringList("EventSummary User",&mEventSummaryUser); 121 addItemStringList("EventSummary User",&mEventSummaryUser);
122 addItemStringList("TodoSummary User",&mTodoSummaryUser); 122 addItemStringList("TodoSummary User",&mTodoSummaryUser);
123 123
124 addItemBool("Enable Group Scheduling",&mEnableGroupScheduling,false); 124 addItemBool("Enable Group Scheduling",&mEnableGroupScheduling,false);
125 addItemBool("Enable Project View",&mEnableProjectView,false); 125 addItemBool("Enable Project View",&mEnableProjectView,false);
126 addItemBool("Auto Save",&mAutoSave,false); 126 addItemBool("Auto Save",&mAutoSave,false);
127 addItemInt("Auto Save Interval",&mAutoSaveInterval,3); 127 addItemInt("Auto Save Interval",&mAutoSaveInterval,3);
128 addItemBool("Confirm Deletes",&mConfirm,true); 128 addItemBool("Confirm Deletes",&mConfirm,true);
129 addItemString("Archive File",&mArchiveFile); 129 addItemString("Archive File",&mArchiveFile);
130 addItemString("Html Export File",&mHtmlExportFile, 130 addItemString("Html Export File",&mHtmlExportFile,
131 QDir::homeDirPath() + "/" + i18n("Default export file", "calendar.html")); 131 QDir::homeDirPath() + "/" + i18n("Default export file", "calendar.html"));
132 addItemBool("Html With Save",&mHtmlWithSave,false); 132 addItemBool("Html With Save",&mHtmlWithSave,false);
133 133
134 KPrefs::setCurrentGroup("Personal Settings"); 134 KPrefs::setCurrentGroup("Personal Settings");
135 135
136 addItemInt("Mail Client",&mMailClient,MailClientKMail); 136 addItemInt("Mail Client",&mMailClient,MailClientKMail);
137 addItemBool("Use Control Center Email",&mEmailControlCenter,false); 137 addItemBool("Use Control Center Email",&mEmailControlCenter,false);
138 addItemBool("Bcc",&mBcc,false); 138 addItemBool("Bcc",&mBcc,false);
139 139
140 KPrefs::setCurrentGroup("Time & Date"); 140 KPrefs::setCurrentGroup("Time & Date");
141 141
142 // addItemString("Time Zone",&mTimeZone,"+0100"); 142 // addItemString("Time Zone",&mTimeZone,"+0100");
143 addItemString("TimeZoneName",&mTimeZoneId,i18n ("+01:00 Europe/Oslo(CET)") ); 143 addItemString("TimeZoneName",&mTimeZoneId,i18n ("+01:00 Europe/Oslo(CET)") );
144 // addItemInt("TimeZoneOffset",&mTimeZoneOffset,60); 144 // addItemInt("TimeZoneOffset",&mTimeZoneOffset,60);
145 addItemBool("UseDaylightsaving",&mUseDaylightsaving,true); 145 addItemBool("UseDaylightsaving",&mUseDaylightsaving,true);
146 addItemInt("DaylightsavingStart",&mDaylightsavingStart,90); 146 addItemInt("DaylightsavingStart",&mDaylightsavingStart,90);
147 addItemInt("DaylightsavingEnd",&mDaylightsavingEnd,304); 147 addItemInt("DaylightsavingEnd",&mDaylightsavingEnd,304);
148 148
149 149
150 addItemInt("Default Start Time",&mStartTime,10); 150 addItemInt("Default Start Time",&mStartTime,10);
151 addItemInt("Default Duration",&mDefaultDuration,2); 151 addItemInt("Default Duration",&mDefaultDuration,2);
152 addItemInt("Default Alarm Time",&mAlarmTime,3); 152 addItemInt("Default Alarm Time",&mAlarmTime,3);
153 addItemInt("Daylight Savings",&mDaylightSavings,0); 153 addItemInt("Daylight Savings",&mDaylightSavings,0);
154 KPrefs::setCurrentGroup("AlarmSettings"); 154 KPrefs::setCurrentGroup("AlarmSettings");
155 addItemInt("AlarmPlayBeeps",&mAlarmPlayBeeps,20); 155 addItemInt("AlarmPlayBeeps",&mAlarmPlayBeeps,20);
156 addItemInt("AlarmSuspendTime",&mAlarmSuspendTime,7); 156 addItemInt("AlarmSuspendTime",&mAlarmSuspendTime,7);
157 addItemInt("AlarmSuspendCount",&mAlarmSuspendCount,5); 157 addItemInt("AlarmSuspendCount",&mAlarmSuspendCount,5);
158 addItemInt("AlarmBeepInterval",&mAlarmBeepInterval,3); 158 addItemInt("AlarmBeepInterval",&mAlarmBeepInterval,3);
159 159
160 160
161 KPrefs::setCurrentGroup("Calendar"); 161 KPrefs::setCurrentGroup("Calendar");
162 162
163 addItemInt("Default Calendar Format",&mDefaultFormat,FormatICalendar); 163 addItemInt("Default Calendar Format",&mDefaultFormat,FormatICalendar);
164 164
165 KPrefs::setCurrentGroup("Fonts"); 165 KPrefs::setCurrentGroup("Fonts");
166 // qDebug(" KPrefs::setCurrentGroup(Fonts); "); 166 // qDebug(" KPrefs::setCurrentGroup(Fonts); ");
167 addItemFont("TimeBar Font",&mTimeBarFont); 167 addItemFont("TimeBar Font",&mTimeBarFont);
168 addItemFont("MonthView Font",&mMonthViewFont); 168 addItemFont("MonthView Font",&mMonthViewFont);
169 addItemFont("AgendaView Font",&mAgendaViewFont); 169 addItemFont("AgendaView Font",&mAgendaViewFont);
170 addItemFont("MarcusBains Font",&mMarcusBainsFont); 170 addItemFont("MarcusBains Font",&mMarcusBainsFont);
171 addItemFont("TimeLabels Font",&mTimeLabelsFont); 171 addItemFont("TimeLabels Font",&mTimeLabelsFont);
172 addItemFont("TodoView Font",&mTodoViewFont); 172 addItemFont("TodoView Font",&mTodoViewFont);
173 addItemFont("ListView Font",&mListViewFont); 173 addItemFont("ListView Font",&mListViewFont);
174 addItemFont("DateNavigator Font",&mDateNavigatorFont); 174 addItemFont("DateNavigator Font",&mDateNavigatorFont);
175 addItemFont("EditBox Font",&mEditBoxFont); 175 addItemFont("EditBox Font",&mEditBoxFont);
176 addItemFont("JournalView Font",&mJornalViewFont); 176 addItemFont("JournalView Font",&mJornalViewFont);
177 addItemFont("WhatsNextView Font",&mWhatsNextFont); 177 addItemFont("WhatsNextView Font",&mWhatsNextFont);
178 addItemFont("EventView Font",&mEventViewFont); 178 addItemFont("EventView Font",&mEventViewFont);
179 179
180 KPrefs::setCurrentGroup("SyncProfiles"); 180// KPrefs::setCurrentGroup("SyncProfiles");
181 addItemString("LocalMachineName",&mLocalMachineName, "undefined"); 181// addItemString("LocalMachineName",&mLocalMachineName, "undefined");
182 addItemStringList("SyncProfileNames",&mSyncProfileNames); 182// addItemStringList("SyncProfileNames",&mSyncProfileNames);
183// addItemStringList("ExternSyncProfiles",&mExternSyncProfileNames);
183 184
184 KPrefs::setCurrentGroup("RemoteSyncing"); 185 KPrefs::setCurrentGroup("RemoteSyncing");
185 addItemBool("UsePasswd",&mUsePassWd,false); 186// addItemBool("UsePasswd",&mUsePassWd,false);
186 addItemBool("WriteBackFile",&mWriteBackFile,true); 187// addItemBool("WriteBackFile",&mWriteBackFile,true);
187 addItemBool("WriteBackExistingOnly",&mWriteBackExistingOnly,false); 188// addItemBool("WriteBackExistingOnly",&mWriteBackExistingOnly,false);
188 addItemBool("AskForPreferences",&mAskForPreferences,true); 189// addItemBool("AskForPreferences",&mAskForPreferences,true);
189 addItemBool("ShowSyncSummary",&mShowSyncSummary,true); 190// addItemBool("ShowSyncSummary",&mShowSyncSummary,true);
190 addItemBool("ShowSyncEvents",&mShowSyncEvents,false); 191 addItemBool("ShowSyncEvents",&mShowSyncEvents,false);
191 addItemInt("LastSyncTime",&mLastSyncTime,0); 192 addItemInt("LastSyncTime",&mLastSyncTime,0);
192 addItemInt("SyncAlgoPrefs",&mSyncAlgoPrefs,3); 193 addItemInt("SyncAlgoPrefs",&mSyncAlgoPrefs,3);
193 addItemInt("RingSyncAlgoPrefs",&mRingSyncAlgoPrefs,3); 194 addItemInt("RingSyncAlgoPrefs",&mRingSyncAlgoPrefs,3);
194 195
195#ifdef _WIN32_ 196#ifdef _WIN32_
196 QString hdp= locateLocal("data","korganizer")+"\\\\"; 197 QString hdp= locateLocal("data","korganizer")+"\\\\";
197#else 198#else
198 QString hdp= locateLocal("data","korganizer")+"/"; 199 QString hdp= locateLocal("data","korganizer")+"/";
199#endif 200#endif
200 addItemString("RemoteIP",&mRemoteIP, "192.168.0.65"); 201// addItemString("RemoteIP",&mRemoteIP, "192.168.0.65");
201 addItemString("RemoteUser",&mRemoteUser, "zaurus"); 202// addItemString("RemoteUser",&mRemoteUser, "zaurus");
202 addItemString("RemotePassWd",&mRemotePassWd, ""); 203// addItemString("RemotePassWd",&mRemotePassWd, "");
203 addItemString("RemoteFile", &mRemoteFile, hdp+"mycalendar.ics"); 204// addItemString("RemoteFile", &mRemoteFile, hdp+"mycalendar.ics");
204 addItemString("LocalTempFile",&mLocalTempFile, "/tmp/tempsyncfile.ics" ); 205// addItemString("LocalTempFile",&mLocalTempFile, "/tmp/tempsyncfile.ics" );
205 206
206 207
207 KPrefs::setCurrentGroup("LoadSaveFileNames"); 208 KPrefs::setCurrentGroup("LoadSaveFileNames");
208 209
209 addItemString("LastImportFile", &mLastImportFile ,hdp +"import.ics" ); 210 addItemString("LastImportFile", &mLastImportFile ,hdp +"import.ics" );
210 addItemString("LastVcalFile", &mLastVcalFile ,hdp +"export.vcs" ); 211 addItemString("LastVcalFile", &mLastVcalFile ,hdp +"export.vcs" );
211 addItemString("LastSaveFile", &mLastSaveFile ,hdp +"mybackup.ics" ); 212 addItemString("LastSaveFile", &mLastSaveFile ,hdp +"mybackup.ics" );
212 addItemString("LastLoadFile", &mLastLoadFile ,hdp +"mybackup.ics" ); 213 addItemString("LastLoadFile", &mLastLoadFile ,hdp +"mybackup.ics" );
213 addItemString("LastSyncedLocalFile", &mLastSyncedLocalFile ,hdp +"lastsync.ics" ); 214 addItemString("LastSyncedLocalFile", &mLastSyncedLocalFile ,hdp +"lastsync.ics" );
214 215
215 216
216 KPrefs::setCurrentGroup("Locale"); 217 KPrefs::setCurrentGroup("Locale");
217 addItemInt("PreferredLanguage",&mPreferredLanguage,0); 218 addItemInt("PreferredLanguage",&mPreferredLanguage,0);
218 addItemInt("PreferredTime",&mPreferredTime,0); 219 addItemInt("PreferredTime",&mPreferredTime,0);
219 addItemInt("PreferredDate",&mPreferredDate,0); 220 addItemInt("PreferredDate",&mPreferredDate,0);
220 addItemBool("WeekStartsOnSunday",&mWeekStartsOnSunday,false); 221 addItemBool("WeekStartsOnSunday",&mWeekStartsOnSunday,false);
221 addItemBool("QuickSavingWOUnicode",&mUseQuicksave,false); 222 addItemBool("QuickSavingWOUnicode",&mUseQuicksave,false);
222 addItemBool("ShortDateInViewer",&mShortDateInViewer,false); 223 addItemBool("ShortDateInViewer",&mShortDateInViewer,false);
223 addItemString("UserDateFormatLong", &mUserDateFormatLong, "%A %d %b %y"); 224 addItemString("UserDateFormatLong", &mUserDateFormatLong, "%A %d %b %y");
224 addItemString("UserDateFormatShort", &mUserDateFormatShort, "%aK %d.%m.%y"); 225 addItemString("UserDateFormatShort", &mUserDateFormatShort, "%aK %d.%m.%y");
225 226
226 227
227 KPrefs::setCurrentGroup("Colors"); 228 KPrefs::setCurrentGroup("Colors");
228 addItemColor("Holiday Color",&mHolidayColor,defaultHolidayColor); 229 addItemColor("Holiday Color",&mHolidayColor,defaultHolidayColor);
229 addItemColor("Highlight Color",&mHighlightColor,defaultHighlightColor); 230 addItemColor("Highlight Color",&mHighlightColor,defaultHighlightColor);
230 addItemColor("Event Color",&mEventColor,mDefaultCategoryColor); 231 addItemColor("Event Color",&mEventColor,mDefaultCategoryColor);
231 addItemColor("Agenda Background Color",&mAgendaBgColor,defaultAgendaBgColor); 232 addItemColor("Agenda Background Color",&mAgendaBgColor,defaultAgendaBgColor);
232 addItemColor("WorkingHours Color",&mWorkingHoursColor,defaultWorkingHoursColor); 233 addItemColor("WorkingHours Color",&mWorkingHoursColor,defaultWorkingHoursColor);
233 addItemColor("Todo due today Color",&mTodoDueTodayColor,defaultTodoDueTodayColor); 234 addItemColor("Todo due today Color",&mTodoDueTodayColor,defaultTodoDueTodayColor);
234 addItemColor("Todo overdue Color",&mTodoOverdueColor,defaultTodoOverdueColor); 235 addItemColor("Todo overdue Color",&mTodoOverdueColor,defaultTodoOverdueColor);
235 addItemColor("MonthViewEvenColor",&mMonthViewEvenColor,QColor( 160,160,255 )); 236 addItemColor("MonthViewEvenColor",&mMonthViewEvenColor,QColor( 160,160,255 ));
236 addItemColor("MonthViewOddColor",&mMonthViewOddColor,QColor( 160,255,160 )); 237 addItemColor("MonthViewOddColor",&mMonthViewOddColor,QColor( 160,255,160 ));
237 addItemColor("MonthViewHolidayColor",&mMonthViewHolidayColor,QColor( 255,160,160 )); 238 addItemColor("MonthViewHolidayColor",&mMonthViewHolidayColor,QColor( 255,160,160 ));
238 addItemBool("MonthViewUsesDayColors",&mMonthViewUsesDayColors,true); 239 addItemBool("MonthViewUsesDayColors",&mMonthViewUsesDayColors,true);
239 addItemBool("MonthViewSatSunTog",&mMonthViewSatSunTog,true); 240 addItemBool("MonthViewSatSunTog",&mMonthViewSatSunTog,true);
240 addItemBool("HightlightDateTimeEdit",&mHightlightDateTimeEdit,false); 241 addItemBool("HightlightDateTimeEdit",&mHightlightDateTimeEdit,false);
241 addItemColor("AppColor1",&mAppColor1,QColor( 130,170,255 )); 242 addItemColor("AppColor1",&mAppColor1,QColor( 130,170,255 ));
242 addItemColor("AppColor2",&mAppColor2,QColor( 174,216,255 )); 243 addItemColor("AppColor2",&mAppColor2,QColor( 174,216,255 ));
243 addItemBool("UseAppColors",&mUseAppColors,false); 244 addItemBool("UseAppColors",&mUseAppColors,false);
244 245
245 246
246 247
247 KPrefs::setCurrentGroup("Views"); 248 KPrefs::setCurrentGroup("Views");
248 addItemInt("Hour Size",&mHourSize,8); 249 addItemInt("Hour Size",&mHourSize,8);
249 addItemBool("Show Daily Recurrences",&mDailyRecur,true); 250 addItemBool("Show Daily Recurrences",&mDailyRecur,true);
250 addItemBool("Show Weekly Recurrences",&mWeeklyRecur,true); 251 addItemBool("Show Weekly Recurrences",&mWeeklyRecur,true);
251 addItemBool("Show Month Daily Recurrences",&mMonthDailyRecur,true); 252 addItemBool("Show Month Daily Recurrences",&mMonthDailyRecur,true);
252 addItemBool("Show Month Weekly Recurrences",&mMonthWeeklyRecur,true); 253 addItemBool("Show Month Weekly Recurrences",&mMonthWeeklyRecur,true);
253 addItemBool("ShowShortMonthName",&mMonthShowShort,false); 254 addItemBool("ShowShortMonthName",&mMonthShowShort,false);
254 addItemBool("ShowIconsInMonthCell",&mMonthShowIcons,true); 255 addItemBool("ShowIconsInMonthCell",&mMonthShowIcons,true);
255 addItemBool("Enable ToolTips",&mEnableToolTips,false); 256 addItemBool("Enable ToolTips",&mEnableToolTips,false);
256 addItemBool("Enable MonthView ScrollBars",&mEnableMonthScroll,false); 257 addItemBool("Enable MonthView ScrollBars",&mEnableMonthScroll,false);
257 addItemBool("Marcus Bains shows seconds",&mMarcusBainsShowSeconds,false); 258 addItemBool("Marcus Bains shows seconds",&mMarcusBainsShowSeconds,false);
258 addItemBool("Show Marcus Bains",&mMarcusBainsEnabled,true); 259 addItemBool("Show Marcus Bains",&mMarcusBainsEnabled,true);
259 addItemBool("EditOnDoubleClick",&mEditOnDoubleClick,true); 260 addItemBool("EditOnDoubleClick",&mEditOnDoubleClick,true);
260 addItemBool("ViewChangeHoldFullscreen",&mViewChangeHoldFullscreen,false); 261 addItemBool("ViewChangeHoldFullscreen",&mViewChangeHoldFullscreen,false);
261 addItemBool("ViewChangeHoldNonFullscreen",&mViewChangeHoldNonFullscreen,false); 262 addItemBool("ViewChangeHoldNonFullscreen",&mViewChangeHoldNonFullscreen,false);
262 addItemBool("CenterOnCurrentTime",&mCenterOnCurrentTime,false); 263 addItemBool("CenterOnCurrentTime",&mCenterOnCurrentTime,false);
263 addItemBool("SetTimeToDayStartAt",&mSetTimeToDayStartAt,true); 264 addItemBool("SetTimeToDayStartAt",&mSetTimeToDayStartAt,true);
264 addItemBool("HighlightCurrentDay",&mHighlightCurrentDay,true); 265 addItemBool("HighlightCurrentDay",&mHighlightCurrentDay,true);
265 addItemBool("WNViewShowsParents",&mWNViewShowsParents,true); 266 addItemBool("WNViewShowsParents",&mWNViewShowsParents,true);
266 addItemBool("WNViewShowLocation",&mWNViewShowLocation,false); 267 addItemBool("WNViewShowLocation",&mWNViewShowLocation,false);
267 addItemBool("UseHighlightLightColor",&mUseHighlightLightColor,false); 268 addItemBool("UseHighlightLightColor",&mUseHighlightLightColor,false);
268 addItemBool("ListViewMonthTimespan",&mListViewMonthTimespan,true); 269 addItemBool("ListViewMonthTimespan",&mListViewMonthTimespan,true);
269 addItemBool("TodoViewUsesCatColors",&mTodoViewUsesCatColors,false); 270 addItemBool("TodoViewUsesCatColors",&mTodoViewUsesCatColors,false);
270 addItemBool("TodoViewShowsPercentage",&mTodoViewShowsPercentage,false); 271 addItemBool("TodoViewShowsPercentage",&mTodoViewShowsPercentage,false);
271 addItemBool("TodoViewUsesSmallFont",&mTodoViewUsesSmallFont,false); 272 addItemBool("TodoViewUsesSmallFont",&mTodoViewUsesSmallFont,false);
272 addItemBool("TodoViewUsesForegroundColor",&mTodoViewUsesForegroundColor,false); 273 addItemBool("TodoViewUsesForegroundColor",&mTodoViewUsesForegroundColor,false);
273 addItemBool("MonthViewUsesForegroundColor",&mMonthViewUsesForegroundColor,false); 274 addItemBool("MonthViewUsesForegroundColor",&mMonthViewUsesForegroundColor,false);
274#ifdef DESKTOP_VERSION 275#ifdef DESKTOP_VERSION
275 addItemBool("UseInternalAlarmNotification",&mUseInternalAlarmNotification,true); 276 addItemBool("UseInternalAlarmNotification",&mUseInternalAlarmNotification,true);
276#else 277#else
277 addItemBool("UseInternalAlarmNotification",&mUseInternalAlarmNotification,false); 278 addItemBool("UseInternalAlarmNotification",&mUseInternalAlarmNotification,false);
278#endif 279#endif
279 addItemInt("Day Begins",&mDayBegins,7); 280 addItemInt("Day Begins",&mDayBegins,7);
280 addItemInt("Working Hours Start",&mWorkingHoursStart,8); 281 addItemInt("Working Hours Start",&mWorkingHoursStart,8);
281 addItemInt("Working Hours End",&mWorkingHoursEnd,17); 282 addItemInt("Working Hours End",&mWorkingHoursEnd,17);
282 addItemBool("Exclude Holidays",&mExcludeHolidays,true); 283 addItemBool("Exclude Holidays",&mExcludeHolidays,true);
283 addItemBool("Exclude Saturdays",&mExcludeSaturdays,true); 284 addItemBool("Exclude Saturdays",&mExcludeSaturdays,true);
284 285
285 addItemBool("Month View Uses Category Color",&mMonthViewUsesCategoryColor,false); 286 addItemBool("Month View Uses Category Color",&mMonthViewUsesCategoryColor,false);
286 addItemBool("Full View Month",&mFullViewMonth,true); 287 addItemBool("Full View Month",&mFullViewMonth,true);
287 addItemBool("Full View Todo",&mFullViewTodo,true); 288 addItemBool("Full View Todo",&mFullViewTodo,true);
288 addItemBool("Quick Todo",&mEnableQuickTodo,false); 289 addItemBool("Quick Todo",&mEnableQuickTodo,false);
289 290
290 addItemInt("Next X Days",&mNextXDays,3); 291 addItemInt("Next X Days",&mNextXDays,3);
291 292
292 KPrefs::setCurrentGroup("Printer"); 293 KPrefs::setCurrentGroup("Printer");
293 294
294 KPrefs::setCurrentGroup("Layout"); 295 KPrefs::setCurrentGroup("Layout");
295 296
296 addItemBool("CompactDialogs",&mCompactDialogs,false); 297 addItemBool("CompactDialogs",&mCompactDialogs,false);
297 addItemBool("VerticalScreen",&mVerticalScreen,true); 298 addItemBool("VerticalScreen",&mVerticalScreen,true);
298 299
299 KPrefs::setCurrentGroup("KOrganizer Plugins"); 300 KPrefs::setCurrentGroup("KOrganizer Plugins");
300 301
diff --git a/korganizer/koprefs.h b/korganizer/koprefs.h
index fe044e6..424fa98 100644
--- a/korganizer/koprefs.h
+++ b/korganizer/koprefs.h
@@ -122,178 +122,179 @@ class KOPrefs : public KPimPrefs
122 QFont mListViewFont; 122 QFont mListViewFont;
123 QFont mDateNavigatorFont; 123 QFont mDateNavigatorFont;
124 QFont mEditBoxFont; 124 QFont mEditBoxFont;
125 QFont mJornalViewFont; 125 QFont mJornalViewFont;
126 QFont mWhatsNextFont; 126 QFont mWhatsNextFont;
127 QFont mEventViewFont; 127 QFont mEventViewFont;
128 128
129 129
130 130
131 131
132 QColor mHolidayColor; 132 QColor mHolidayColor;
133 QColor mHighlightColor; 133 QColor mHighlightColor;
134 QColor mEventColor; 134 QColor mEventColor;
135 QColor mAgendaBgColor; 135 QColor mAgendaBgColor;
136 QColor mWorkingHoursColor; 136 QColor mWorkingHoursColor;
137 QColor mTodoDueTodayColor; 137 QColor mTodoDueTodayColor;
138 QColor mTodoOverdueColor; 138 QColor mTodoOverdueColor;
139 QColor mMonthViewEvenColor; 139 QColor mMonthViewEvenColor;
140 QColor mMonthViewOddColor; 140 QColor mMonthViewOddColor;
141 QColor mMonthViewHolidayColor; 141 QColor mMonthViewHolidayColor;
142 bool mMonthViewUsesDayColors; 142 bool mMonthViewUsesDayColors;
143 bool mMonthViewSatSunTog; 143 bool mMonthViewSatSunTog;
144 QColor mAppColor1; 144 QColor mAppColor1;
145 QColor mAppColor2; 145 QColor mAppColor2;
146 bool mUseAppColors; 146 bool mUseAppColors;
147 147
148 int mDayBegins; 148 int mDayBegins;
149 int mHourSize; 149 int mHourSize;
150 int mAllDaySize; 150 int mAllDaySize;
151 bool mShowFullMenu; 151 bool mShowFullMenu;
152 bool mDailyRecur; 152 bool mDailyRecur;
153 bool mWeeklyRecur; 153 bool mWeeklyRecur;
154 bool mMonthDailyRecur; 154 bool mMonthDailyRecur;
155 bool mMonthWeeklyRecur; 155 bool mMonthWeeklyRecur;
156 bool mMonthShowIcons; 156 bool mMonthShowIcons;
157 bool mMonthShowShort; 157 bool mMonthShowShort;
158 bool mEnableToolTips; 158 bool mEnableToolTips;
159 bool mEnableMonthScroll; 159 bool mEnableMonthScroll;
160 bool mFullViewMonth; 160 bool mFullViewMonth;
161 bool mMonthViewUsesCategoryColor; 161 bool mMonthViewUsesCategoryColor;
162 bool mFullViewTodo; 162 bool mFullViewTodo;
163 bool mShowCompletedTodo; 163 bool mShowCompletedTodo;
164 bool mMarcusBainsEnabled; 164 bool mMarcusBainsEnabled;
165 int mNextXDays; 165 int mNextXDays;
166 int mWhatsNextDays; 166 int mWhatsNextDays;
167 int mWhatsNextPrios; 167 int mWhatsNextPrios;
168 bool mEnableQuickTodo; 168 bool mEnableQuickTodo;
169 bool mLanguageChanged; 169 bool mLanguageChanged;
170 170
171 bool mCompactDialogs; 171 bool mCompactDialogs;
172 bool mVerticalScreen; 172 bool mVerticalScreen;
173 173
174 bool mShowIconNewTodo; 174 bool mShowIconNewTodo;
175 bool mShowIconNewEvent; 175 bool mShowIconNewEvent;
176 bool mShowIconSearch; 176 bool mShowIconSearch;
177 bool mShowIconList; 177 bool mShowIconList;
178 bool mShowIconDay1; 178 bool mShowIconDay1;
179 bool mShowIconDay5; 179 bool mShowIconDay5;
180 bool mShowIconDay7; 180 bool mShowIconDay7;
181 bool mShowIconMonth; 181 bool mShowIconMonth;
182 bool mShowIconTodoview; 182 bool mShowIconTodoview;
183 bool mShowIconBackFast; 183 bool mShowIconBackFast;
184 bool mShowIconBack; 184 bool mShowIconBack;
185 bool mShowIconToday; 185 bool mShowIconToday;
186 bool mShowIconForward; 186 bool mShowIconForward;
187 bool mShowIconForwardFast; 187 bool mShowIconForwardFast;
188 bool mShowIconWhatsThis; 188 bool mShowIconWhatsThis;
189 bool mShowIconNextDays; 189 bool mShowIconNextDays;
190 bool mShowIconNext; 190 bool mShowIconNext;
191 bool mShowIconJournal; 191 bool mShowIconJournal;
192 192
193 bool mShowIconStretch; 193 bool mShowIconStretch;
194 194
195 bool mToolBarHor; 195 bool mToolBarHor;
196 bool mToolBarUp; 196 bool mToolBarUp;
197 bool mToolBarMiniIcons; 197 bool mToolBarMiniIcons;
198 198
199 bool mAskForQuit; 199 bool mAskForQuit;
200 bool mUsePassWd; 200 bool mUsePassWd;
201 bool mWriteBackFile; 201 bool mWriteBackFile;
202 bool mAskForPreferences; 202 bool mAskForPreferences;
203 bool mShowSyncSummary; 203 bool mShowSyncSummary;
204 bool mShowSyncEvents; 204 bool mShowSyncEvents;
205 bool mShowTodoInAgenda; 205 bool mShowTodoInAgenda;
206 bool mWriteBackExistingOnly; 206 bool mWriteBackExistingOnly;
207 207
208 QString mRemoteIP; 208 QString mRemoteIP;
209 QString mRemoteUser; 209 QString mRemoteUser;
210 QString mRemotePassWd; 210 QString mRemotePassWd;
211 QString mRemoteFile; 211 QString mRemoteFile;
212 QString mLocalTempFile; 212 QString mLocalTempFile;
213 213
214 int mLastSyncTime; 214 int mLastSyncTime;
215 int mSyncAlgoPrefs; 215 int mSyncAlgoPrefs;
216 int mRingSyncAlgoPrefs; 216 int mRingSyncAlgoPrefs;
217 QStringList mSyncProfileNames; 217 QStringList mSyncProfileNames;
218 QStringList mExternSyncProfiles;
218 QString mLocalMachineName; 219 QString mLocalMachineName;
219 void setCategoryColor(QString cat,const QColor & color); 220 void setCategoryColor(QString cat,const QColor & color);
220 QColor *categoryColor(QString cat); 221 QColor *categoryColor(QString cat);
221 222
222 QString mArchiveFile; 223 QString mArchiveFile;
223 QString mHtmlExportFile; 224 QString mHtmlExportFile;
224 bool mHtmlWithSave; 225 bool mHtmlWithSave;
225 226
226 QStringList mSelectedPlugins; 227 QStringList mSelectedPlugins;
227 228
228 QString mLastImportFile; 229 QString mLastImportFile;
229 QString mLastVcalFile; 230 QString mLastVcalFile;
230 QString mLastSaveFile; 231 QString mLastSaveFile;
231 QString mLastLoadFile; 232 QString mLastLoadFile;
232 QString mLastSyncedLocalFile; 233 QString mLastSyncedLocalFile;
233 234
234 235
235 QString mDefaultAlarmFile; 236 QString mDefaultAlarmFile;
236 int mIMIPScheduler; 237 int mIMIPScheduler;
237 int mIMIPSend; 238 int mIMIPSend;
238 QStringList mAdditionalMails; 239 QStringList mAdditionalMails;
239 int mIMIPAutoRefresh; 240 int mIMIPAutoRefresh;
240 int mIMIPAutoInsertReply; 241 int mIMIPAutoInsertReply;
241 int mIMIPAutoInsertRequest; 242 int mIMIPAutoInsertRequest;
242 int mIMIPAutoFreeBusy; 243 int mIMIPAutoFreeBusy;
243 int mIMIPAutoFreeBusyReply; 244 int mIMIPAutoFreeBusyReply;
244 245
245 QStringList mTodoTemplates; 246 QStringList mTodoTemplates;
246 QStringList mEventTemplates; 247 QStringList mEventTemplates;
247 248
248 int mDestination; 249 int mDestination;
249 250
250 251
251 bool mEditOnDoubleClick; 252 bool mEditOnDoubleClick;
252 bool mViewChangeHoldFullscreen; 253 bool mViewChangeHoldFullscreen;
253 bool mViewChangeHoldNonFullscreen; 254 bool mViewChangeHoldNonFullscreen;
254 bool mCenterOnCurrentTime; 255 bool mCenterOnCurrentTime;
255 bool mSetTimeToDayStartAt; 256 bool mSetTimeToDayStartAt;
256 bool mHighlightCurrentDay; 257 bool mHighlightCurrentDay;
257 bool mUseHighlightLightColor; 258 bool mUseHighlightLightColor;
258 bool mListViewMonthTimespan; 259 bool mListViewMonthTimespan;
259 bool mWNViewShowsParents; 260 bool mWNViewShowsParents;
260 bool mWNViewShowLocation; 261 bool mWNViewShowLocation;
261 bool mTodoViewShowsPercentage; 262 bool mTodoViewShowsPercentage;
262 bool mTodoViewUsesCatColors; 263 bool mTodoViewUsesCatColors;
263 bool mTodoViewUsesSmallFont; 264 bool mTodoViewUsesSmallFont;
264 bool mTodoViewUsesForegroundColor; 265 bool mTodoViewUsesForegroundColor;
265 bool mMonthViewUsesForegroundColor; 266 bool mMonthViewUsesForegroundColor;
266 267
267 bool mHightlightDateTimeEdit; 268 bool mHightlightDateTimeEdit;
268 int mPreferredLanguage; 269 int mPreferredLanguage;
269 bool mUseQuicksave; 270 bool mUseQuicksave;
270 int mPreferredTime; 271 int mPreferredTime;
271 int mPreferredDate; 272 int mPreferredDate;
272 bool mWeekStartsOnSunday; 273 bool mWeekStartsOnSunday;
273 bool mShortDateInViewer; 274 bool mShortDateInViewer;
274 QString mUserDateFormatLong; 275 QString mUserDateFormatLong;
275 QString mUserDateFormatShort; 276 QString mUserDateFormatShort;
276 277
277 QStringList mLocationDefaults; 278 QStringList mLocationDefaults;
278 QStringList mEventSummaryUser; 279 QStringList mEventSummaryUser;
279 QStringList mTodoSummaryUser; 280 QStringList mTodoSummaryUser;
280 281
281 bool mUseInternalAlarmNotification; 282 bool mUseInternalAlarmNotification;
282 int mAlarmPlayBeeps; 283 int mAlarmPlayBeeps;
283 int mAlarmSuspendTime; 284 int mAlarmSuspendTime;
284 int mAlarmSuspendCount; 285 int mAlarmSuspendCount;
285 int mAlarmBeepInterval; 286 int mAlarmBeepInterval;
286 287
287 private: 288 private:
288 QDict<QColor> mCategoryColors; 289 QDict<QColor> mCategoryColors;
289 QColor mDefaultCategoryColor; 290 QColor mDefaultCategoryColor;
290 291
291 QFont mDefaultTimeBarFont; 292 QFont mDefaultTimeBarFont;
292 QFont mDefaultViewFont; 293 QFont mDefaultViewFont;
293 QFont mDefaultMonthViewFont; 294 QFont mDefaultMonthViewFont;
294 295
295 QString mName; 296 QString mName;
296 QString mEmail; 297 QString mEmail;
297}; 298};
298 299
299#endif 300#endif
diff --git a/korganizer/mainwindow.cpp b/korganizer/mainwindow.cpp
index 44b1264..6020a46 100644
--- a/korganizer/mainwindow.cpp
+++ b/korganizer/mainwindow.cpp
@@ -743,207 +743,210 @@ void MainWindow::initActions()
743 if (p-> mShowIconToday) 743 if (p-> mShowIconToday)
744 today_action->addTo( iconToolBar ); 744 today_action->addTo( iconToolBar );
745 icon = loadPixmap( pathString + "1rightarrowB" ); 745 icon = loadPixmap( pathString + "1rightarrowB" );
746 configureToolBarMenu->insertItem(icon, i18n("Go forward"), 220); 746 configureToolBarMenu->insertItem(icon, i18n("Go forward"), 220);
747 if (p-> mShowIconForward) { 747 if (p-> mShowIconForward) {
748 action = new QAction( i18n("Go forward"), icon, i18n("Go forward"),0 , this ); 748 action = new QAction( i18n("Go forward"), icon, i18n("Go forward"),0 , this );
749 connect( action, SIGNAL( activated() ), 749 connect( action, SIGNAL( activated() ),
750 mView, SLOT( goNext() ) ); 750 mView, SLOT( goNext() ) );
751 action->addTo( iconToolBar ); 751 action->addTo( iconToolBar );
752 } 752 }
753 icon = loadPixmap( pathString + "2rightarrowB" ); 753 icon = loadPixmap( pathString + "2rightarrowB" );
754 configureToolBarMenu->insertItem(icon, i18n("Next month"), 230); 754 configureToolBarMenu->insertItem(icon, i18n("Next month"), 230);
755 if (p-> mShowIconForwardFast) { 755 if (p-> mShowIconForwardFast) {
756 action = new QAction( i18n("Next month"), icon, i18n("Next month"),0 , this ); 756 action = new QAction( i18n("Next month"), icon, i18n("Next month"),0 , this );
757 connect( action, SIGNAL( activated() ), 757 connect( action, SIGNAL( activated() ),
758 mView, SLOT( goNextMonth() ) ); 758 mView, SLOT( goNextMonth() ) );
759 action->addTo( iconToolBar ); 759 action->addTo( iconToolBar );
760 } 760 }
761 761
762 762
763 configureToolBarMenu->insertItem(i18n("What's This?"), 300); 763 configureToolBarMenu->insertItem(i18n("What's This?"), 300);
764 764
765 if (p-> mShowIconNewEvent) 765 if (p-> mShowIconNewEvent)
766 configureToolBarMenu->setItemChecked( 10, true ); 766 configureToolBarMenu->setItemChecked( 10, true );
767 if (p->mShowIconNewTodo ) 767 if (p->mShowIconNewTodo )
768 configureToolBarMenu->setItemChecked( 20, true ); 768 configureToolBarMenu->setItemChecked( 20, true );
769 if (p-> mShowIconSearch) 769 if (p-> mShowIconSearch)
770 configureToolBarMenu->setItemChecked( 120, true ); 770 configureToolBarMenu->setItemChecked( 120, true );
771 if (p-> mShowIconList) 771 if (p-> mShowIconList)
772 configureToolBarMenu->setItemChecked( 30, true ); 772 configureToolBarMenu->setItemChecked( 30, true );
773 if (p-> mShowIconDay1) 773 if (p-> mShowIconDay1)
774 configureToolBarMenu->setItemChecked( 40, true ); 774 configureToolBarMenu->setItemChecked( 40, true );
775 if (p-> mShowIconDay5) 775 if (p-> mShowIconDay5)
776 configureToolBarMenu->setItemChecked( 50, true ); 776 configureToolBarMenu->setItemChecked( 50, true );
777 if (p-> mShowIconDay7) 777 if (p-> mShowIconDay7)
778 configureToolBarMenu->setItemChecked( 60, true ); 778 configureToolBarMenu->setItemChecked( 60, true );
779 if (p-> mShowIconMonth) 779 if (p-> mShowIconMonth)
780 configureToolBarMenu->setItemChecked( 70, true ); 780 configureToolBarMenu->setItemChecked( 70, true );
781 if (p-> mShowIconTodoview) 781 if (p-> mShowIconTodoview)
782 configureToolBarMenu->setItemChecked( 80, true ); 782 configureToolBarMenu->setItemChecked( 80, true );
783 if (p-> mShowIconBackFast) 783 if (p-> mShowIconBackFast)
784 configureToolBarMenu->setItemChecked( 200, true ); 784 configureToolBarMenu->setItemChecked( 200, true );
785 if (p-> mShowIconBack) 785 if (p-> mShowIconBack)
786 configureToolBarMenu->setItemChecked( 210, true ); 786 configureToolBarMenu->setItemChecked( 210, true );
787 if (p-> mShowIconToday) 787 if (p-> mShowIconToday)
788 configureToolBarMenu->setItemChecked( 130, true ); 788 configureToolBarMenu->setItemChecked( 130, true );
789 if (p-> mShowIconForward) 789 if (p-> mShowIconForward)
790 configureToolBarMenu->setItemChecked( 220, true ); 790 configureToolBarMenu->setItemChecked( 220, true );
791 if (p-> mShowIconForwardFast) 791 if (p-> mShowIconForwardFast)
792 configureToolBarMenu->setItemChecked( 230, true ); 792 configureToolBarMenu->setItemChecked( 230, true );
793 if (p-> mShowIconNextDays) 793 if (p-> mShowIconNextDays)
794 configureToolBarMenu->setItemChecked( 100, true ); 794 configureToolBarMenu->setItemChecked( 100, true );
795 if (p-> mShowIconNext) 795 if (p-> mShowIconNext)
796 configureToolBarMenu->setItemChecked( 110, true ); 796 configureToolBarMenu->setItemChecked( 110, true );
797 if (p-> mShowIconJournal) 797 if (p-> mShowIconJournal)
798 configureToolBarMenu->setItemChecked( 90, true ); 798 configureToolBarMenu->setItemChecked( 90, true );
799 if (p-> mShowIconWhatsThis) 799 if (p-> mShowIconWhatsThis)
800 configureToolBarMenu->setItemChecked( 300, true ); 800 configureToolBarMenu->setItemChecked( 300, true );
801 801
802 QLabel* dummy = new QLabel( iconToolBar ); 802 QLabel* dummy = new QLabel( iconToolBar );
803 dummy->setBackgroundColor( iconToolBar->backgroundColor() ); 803 dummy->setBackgroundColor( iconToolBar->backgroundColor() );
804 if (!p-> mShowIconStretch) 804 if (!p-> mShowIconStretch)
805 iconToolBar->setStretchableWidget ( dummy ) ; 805 iconToolBar->setStretchableWidget ( dummy ) ;
806 else 806 else
807 configureToolBarMenu->setItemChecked( 5, true ); 807 configureToolBarMenu->setItemChecked( 5, true );
808 if (p-> mShowIconWhatsThis) 808 if (p-> mShowIconWhatsThis)
809 QWhatsThis::whatsThisButton ( iconToolBar ); 809 QWhatsThis::whatsThisButton ( iconToolBar );
810 connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) ); 810 connect( configureToolBarMenu, SIGNAL( activated( int ) ),this, SLOT(configureToolBar( int ) ) );
811 configureAgenda( p->mHourSize ); 811 configureAgenda( p->mHourSize );
812 connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) ); 812 connect( configureAgendaMenu, SIGNAL( activated( int ) ),this, SLOT(configureAgenda( int ) ) );
813} 813}
814void MainWindow::fillSyncMenu() 814void MainWindow::fillSyncMenu()
815{ 815{
816 syncMenu->clear(); 816 syncMenu->clear();
817 syncMenu->insertItem( i18n("Configure..."), 0 ); 817 syncMenu->insertItem( i18n("Configure..."), 0 );
818 syncMenu->insertSeparator(); 818 syncMenu->insertSeparator();
819 syncMenu->insertItem( i18n("Multiple sync"), 1 ); 819 syncMenu->insertItem( i18n("Multiple sync"), 1 );
820 syncMenu->insertSeparator(); 820 syncMenu->insertSeparator();
821 KConfig config ( locateLocal( "config","syncprofilesrc" ) ); 821 KConfig config ( locateLocal( "config","syncprofilesrc" ) );
822 config.setGroup("General"); 822 config.setGroup("General");
823 QStringList prof = config.readListEntry("SyncProfileNames"); 823 QStringList prof = config.readListEntry("SyncProfileNames");
824 KOPrefs::instance()->mLocalMachineName = config.readEntry("LocalMachineName","undefined"); 824 KOPrefs::instance()->mLocalMachineName = config.readEntry("LocalMachineName","undefined");
825 if ( prof.count() < 3 ) { 825 if ( prof.count() < 3 ) {
826 prof.clear(); 826 prof.clear();
827 prof << i18n("Sharp_DTM"); 827 prof << i18n("Sharp_DTM");
828 prof << i18n("Local_file"); 828 prof << i18n("Local_file");
829 prof << i18n("Last_file"); 829 prof << i18n("Last_file");
830 KSyncProfile* temp = new KSyncProfile (); 830 KSyncProfile* temp = new KSyncProfile ();
831 temp->setName( prof[0] ); 831 temp->setName( prof[0] );
832 temp->writeConfig(&config); 832 temp->writeConfig(&config);
833 temp->setName( prof[1] ); 833 temp->setName( prof[1] );
834 temp->writeConfig(&config); 834 temp->writeConfig(&config);
835 temp->setName( prof[2] ); 835 temp->setName( prof[2] );
836 temp->writeConfig(&config); 836 temp->writeConfig(&config);
837 config.setGroup("General"); 837 config.setGroup("General");
838 config.writeEntry("SyncProfileNames",prof); 838 config.writeEntry("SyncProfileNames",prof);
839 config.writeEntry("ExternSyncProfiles","Sharp_DTM");
839 config.sync(); 840 config.sync();
840 delete temp; 841 delete temp;
841 } 842 }
843 KOPrefs::instance()->mExternSyncProfiles = config.readListEntry("ExternSyncProfiles");
842 KOPrefs::instance()->mSyncProfileNames = prof; 844 KOPrefs::instance()->mSyncProfileNames = prof;
843 int i; 845 int i;
844 for ( i = 0; i < prof.count(); ++i ) { 846 for ( i = 0; i < prof.count(); ++i ) {
845 847
846 syncMenu->insertItem( prof[i], 1000+i ); 848 syncMenu->insertItem( prof[i], 1000+i );
847 if ( i == 2 ) 849 if ( i == 2 )
848 syncMenu->insertSeparator(); 850 syncMenu->insertSeparator();
849 } 851 }
850 QDir app_dir; 852 QDir app_dir;
851 if ( !app_dir.exists(QDir::homeDirPath()+"/Applications/dtm" ) ) { 853 if ( !app_dir.exists(QDir::homeDirPath()+"/Applications/dtm" ) ) {
852 syncMenu->setItemEnabled( false , 1000 ); 854 syncMenu->setItemEnabled( false , 1000 );
853 } 855 }
856 mView->setupExternSyncProfiles();
854} 857}
855 858
856int MainWindow::ringSync() 859int MainWindow::ringSync()
857{ 860{
858 int syncedProfiles = 0; 861 int syncedProfiles = 0;
859 int i; 862 int i;
860 QTime timer; 863 QTime timer;
861 KConfig config ( locateLocal( "config","syncprofilesrc" ) ); 864 KConfig config ( locateLocal( "config","syncprofilesrc" ) );
862 QStringList syncProfileNames = KOPrefs::instance()->mSyncProfileNames; 865 QStringList syncProfileNames = KOPrefs::instance()->mSyncProfileNames;
863 KSyncProfile* temp = new KSyncProfile (); 866 KSyncProfile* temp = new KSyncProfile ();
864 KOPrefs::instance()->mAskForPreferences = false; 867 KOPrefs::instance()->mAskForPreferences = false;
865 for ( i = 0; i < syncProfileNames.count(); ++i ) { 868 for ( i = 0; i < syncProfileNames.count(); ++i ) {
866 mCurrentSyncProfile = i; 869 mCurrentSyncProfile = i;
867 temp->setName(syncProfileNames[mCurrentSyncProfile]); 870 temp->setName(syncProfileNames[mCurrentSyncProfile]);
868 temp->readConfig(&config); 871 temp->readConfig(&config);
869 if ( temp->getIncludeInRingSync() && ( i < 1 || i > 2 )) { 872 if ( temp->getIncludeInRingSync() && ( i < 1 || i > 2 )) {
870 setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... ")); 873 setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... "));
871 ++syncedProfiles; 874 ++syncedProfiles;
872 // KOPrefs::instance()->mAskForPreferences = temp->getAskForPreferences(); 875 // KOPrefs::instance()->mAskForPreferences = temp->getAskForPreferences();
873 KOPrefs::instance()->mWriteBackFile = temp->getWriteBackFile(); 876 KOPrefs::instance()->mWriteBackFile = temp->getWriteBackFile();
874 KOPrefs::instance()->mWriteBackExistingOnly = temp->getWriteBackExisting(); 877 KOPrefs::instance()->mWriteBackExistingOnly = temp->getWriteBackExisting();
875 KOPrefs::instance()->mShowSyncSummary = false; 878 KOPrefs::instance()->mShowSyncSummary = false;
876 mView->setSyncDevice(syncProfileNames[i] ); 879 mView->setSyncDevice(syncProfileNames[i] );
877 mView->setSyncName( KOPrefs::instance()->mLocalMachineName ); 880 mView->setSyncName( KOPrefs::instance()->mLocalMachineName );
878 if ( i == 0 ) { 881 if ( i == 0 ) {
879 syncSharp(); 882 syncSharp();
880 } else { 883 } else {
881 if ( temp->getIsLocalFileSync() ) { 884 if ( temp->getIsLocalFileSync() ) {
882 if ( syncWithFile( temp->getRemoteFileName( ), true ) ) 885 if ( syncWithFile( temp->getRemoteFileName( ), true ) )
883 KOPrefs::instance()->mLastSyncedLocalFile = temp->getRemoteFileName(); 886 KOPrefs::instance()->mLastSyncedLocalFile = temp->getRemoteFileName();
884 } else { 887 } else {
885 syncRemote( temp, false ); 888 syncRemote( temp, false );
886 889
887 } 890 }
888 } 891 }
889 timer.start(); 892 timer.start();
890 setCaption(i18n("Multiple sync in progress ... please wait!") ); 893 setCaption(i18n("Multiple sync in progress ... please wait!") );
891 while ( timer.elapsed () < 2000 ) { 894 while ( timer.elapsed () < 2000 ) {
892 qApp->processEvents(); 895 qApp->processEvents();
893#ifndef _WIN32_ 896#ifndef _WIN32_
894 sleep (1); 897 sleep (1);
895#endif 898#endif
896 } 899 }
897 900
898 } 901 }
899 902
900 } 903 }
901 delete temp; 904 delete temp;
902 return syncedProfiles; 905 return syncedProfiles;
903} 906}
904 907
905void MainWindow::multiSync( bool askforPrefs ) 908void MainWindow::multiSync( bool askforPrefs )
906{ 909{
907 if (mBlockSaveFlag) 910 if (mBlockSaveFlag)
908 return; 911 return;
909 mBlockSaveFlag = true; 912 mBlockSaveFlag = true;
910 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!"); 913 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!");
911 if ( QMessageBox::information( this, i18n("KO/Pi Sync"), 914 if ( QMessageBox::information( this, i18n("KO/Pi Sync"),
912 question, 915 question,
913 i18n("Yes"), i18n("No"), 916 i18n("Yes"), i18n("No"),
914 0, 0 ) != 0 ) { 917 0, 0 ) != 0 ) {
915 mBlockSaveFlag = false; 918 mBlockSaveFlag = false;
916 setCaption(i18n("Aborted! Nothing synced!")); 919 setCaption(i18n("Aborted! Nothing synced!"));
917 return; 920 return;
918 } 921 }
919 mView->setSyncDevice(i18n("Multiple profiles") ); 922 mView->setSyncDevice(i18n("Multiple profiles") );
920 KOPrefs::instance()->mSyncAlgoPrefs = KOPrefs::instance()->mRingSyncAlgoPrefs; 923 KOPrefs::instance()->mSyncAlgoPrefs = KOPrefs::instance()->mRingSyncAlgoPrefs;
921 if ( askforPrefs ) { 924 if ( askforPrefs ) {
922 mView->edit_sync_options(); 925 mView->edit_sync_options();
923 KOPrefs::instance()->mRingSyncAlgoPrefs = KOPrefs::instance()->mSyncAlgoPrefs; 926 KOPrefs::instance()->mRingSyncAlgoPrefs = KOPrefs::instance()->mSyncAlgoPrefs;
924 } 927 }
925 setCaption(i18n("Multiple sync started.") ); 928 setCaption(i18n("Multiple sync started.") );
926 qApp->processEvents(); 929 qApp->processEvents();
927 int num = ringSync() ; 930 int num = ringSync() ;
928 if ( num > 1 ) 931 if ( num > 1 )
929 ringSync(); 932 ringSync();
930 mBlockSaveFlag = false; 933 mBlockSaveFlag = false;
931 if ( num ) 934 if ( num )
932 save(); 935 save();
933 if ( num ) 936 if ( num )
934 setCaption(i18n("%1 profiles synced. Multiple sync completed!").arg(num) ); 937 setCaption(i18n("%1 profiles synced. Multiple sync completed!").arg(num) );
935 else 938 else
936 setCaption(i18n("Nothing synced! No profiles defined for multisync!")); 939 setCaption(i18n("Nothing synced! No profiles defined for multisync!"));
937 return; 940 return;
938} 941}
939void MainWindow::slotSyncMenu( int action ) 942void MainWindow::slotSyncMenu( int action )
940{ 943{
941 //qDebug("syncaction %d ", action); 944 //qDebug("syncaction %d ", action);
942 if ( action == 0 ) { 945 if ( action == 0 ) {
943 946
944 confSync(); 947 confSync();
945 948
946 return; 949 return;
947 } 950 }
948 if ( action == 1 ) { 951 if ( action == 1 ) {
949 multiSync( true ); 952 multiSync( true );
diff --git a/libkcal/calendar.h b/libkcal/calendar.h
index 7d23619..df5bbcf 100644
--- a/libkcal/calendar.h
+++ b/libkcal/calendar.h
@@ -1,174 +1,174 @@
1/* 1/*
2 This file is part of libkcal. 2 This file is part of libkcal.
3 Copyright (c) 1998 Preston Brown 3 Copyright (c) 1998 Preston Brown
4 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 4 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
5 5
6 This library is free software; you can redistribute it and/or 6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Library General Public 7 modify it under the terms of the GNU Library General Public
8 License as published by the Free Software Foundation; either 8 License as published by the Free Software Foundation; either
9 version 2 of the License, or (at your option) any later version. 9 version 2 of the License, or (at your option) any later version.
10 10
11 This library is distributed in the hope that it will be useful, 11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Library General Public License for more details. 14 Library General Public License for more details.
15 15
16 You should have received a copy of the GNU Library General Public License 16 You should have received a copy of the GNU Library General Public License
17 along with this library; see the file COPYING.LIB. If not, write to 17 along with this library; see the file COPYING.LIB. If not, write to
18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 18 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19 Boston, MA 02111-1307, USA. 19 Boston, MA 02111-1307, USA.
20*/ 20*/
21 21
22#ifndef CALENDAR_H 22#ifndef CALENDAR_H
23#define CALENDAR_H 23#define CALENDAR_H
24 24
25#include <qobject.h> 25#include <qobject.h>
26#include <qstring.h> 26#include <qstring.h>
27#include <qdatetime.h> 27#include <qdatetime.h>
28#include <qptrlist.h> 28#include <qptrlist.h>
29#include <qdict.h> 29#include <qdict.h>
30 30
31#include "customproperties.h" 31#include "customproperties.h"
32#include "event.h" 32#include "event.h"
33#include "todo.h" 33#include "todo.h"
34#include "journal.h" 34#include "journal.h"
35 35
36#define _TIME_ZONE "-0500" /* hardcoded, overridden in config file. */ 36#define _TIME_ZONE "-0500" /* hardcoded, overridden in config file. */
37 37
38class KConfig; 38class KConfig;
39 39
40namespace KCal { 40namespace KCal {
41 41
42class CalFilter; 42class CalFilter;
43 43
44/** 44/**
45 This is the main "calendar" object class for KOrganizer. It holds 45 This is the main "calendar" object class for KOrganizer. It holds
46 information like all appointments/events, user information, etc. etc. 46 information like all appointments/events, user information, etc. etc.
47 one calendar is associated with each CalendarView (@see calendarview.h). 47 one calendar is associated with each CalendarView (@see calendarview.h).
48 This is an abstract base class defining the interface to a calendar. It is 48 This is an abstract base class defining the interface to a calendar. It is
49 implemented by subclasses like @see CalendarLocal, which use different 49 implemented by subclasses like @see CalendarLocal, which use different
50 methods to store and access the data. 50 methods to store and access the data.
51 51
52 Ownership of events etc. is handled by the following policy: As soon as an 52 Ownership of events etc. is handled by the following policy: As soon as an
53 event (or any other subclass of IncidenceBase) object is added to the 53 event (or any other subclass of IncidenceBase) object is added to the
54 Calendar by addEvent() it is owned by the Calendar object. The Calendar takes 54 Calendar by addEvent() it is owned by the Calendar object. The Calendar takes
55 care of deleting it. All Events returned by the query functions are returned 55 care of deleting it. All Events returned by the query functions are returned
56 as pointers, that means all changes to the returned events are immediately 56 as pointers, that means all changes to the returned events are immediately
57 visible in the Calendar. You shouldn't delete any Event object you get from 57 visible in the Calendar. You shouldn't delete any Event object you get from
58 Calendar. 58 Calendar.
59*/ 59*/
60class Calendar : public QObject, public CustomProperties, 60class Calendar : public QObject, public CustomProperties,
61 public IncidenceBase::Observer 61 public IncidenceBase::Observer
62{ 62{
63 Q_OBJECT 63 Q_OBJECT
64public: 64public:
65 Calendar(); 65 Calendar();
66 Calendar(const QString &timeZoneId); 66 Calendar(const QString &timeZoneId);
67 virtual ~Calendar(); 67 virtual ~Calendar();
68 void deleteIncidence(Incidence *in); 68 void deleteIncidence(Incidence *in);
69 /** 69 /**
70 Clears out the current calendar, freeing all used memory etc. 70 Clears out the current calendar, freeing all used memory etc.
71 */ 71 */
72 virtual void close() = 0; 72 virtual void close() = 0;
73 73
74 /** 74 /**
75 Sync changes in memory to persistant storage. 75 Sync changes in memory to persistant storage.
76 */ 76 */
77 virtual void save() = 0; 77 virtual void save() = 0;
78 78 virtual QPtrList<Event> getExternLastSyncEvents() = 0;
79 virtual bool isSaving() { return false; } 79 virtual bool isSaving() { return false; }
80 80
81 /** 81 /**
82 Return the owner of the calendar's full name. 82 Return the owner of the calendar's full name.
83 */ 83 */
84 const QString &getOwner() const; 84 const QString &getOwner() const;
85 /** 85 /**
86 Set the owner of the calendar. Should be owner's full name. 86 Set the owner of the calendar. Should be owner's full name.
87 */ 87 */
88 void setOwner( const QString &os ); 88 void setOwner( const QString &os );
89 /** 89 /**
90 Return the email address of the calendar owner. 90 Return the email address of the calendar owner.
91 */ 91 */
92 const QString &getEmail(); 92 const QString &getEmail();
93 /** 93 /**
94 Set the email address of the calendar owner. 94 Set the email address of the calendar owner.
95 */ 95 */
96 void setEmail( const QString & ); 96 void setEmail( const QString & );
97 97
98 /** 98 /**
99 Set time zone from a timezone string (e.g. -2:00) 99 Set time zone from a timezone string (e.g. -2:00)
100 */ 100 */
101 void setTimeZone( const QString &tz ); 101 void setTimeZone( const QString &tz );
102 /** 102 /**
103 Set time zone from a minutes value (e.g. -60) 103 Set time zone from a minutes value (e.g. -60)
104 */ 104 */
105 void setTimeZone( int tz ); 105 void setTimeZone( int tz );
106 /** 106 /**
107 Return time zone as offest in minutes. 107 Return time zone as offest in minutes.
108 */ 108 */
109 int getTimeZone() const; 109 int getTimeZone() const;
110 /** 110 /**
111 Compute an ISO 8601 format string from the time zone. 111 Compute an ISO 8601 format string from the time zone.
112 */ 112 */
113 QString getTimeZoneStr() const; 113 QString getTimeZoneStr() const;
114 /** 114 /**
115 Set time zone id (see /usr/share/zoneinfo/zone.tab for list of legal 115 Set time zone id (see /usr/share/zoneinfo/zone.tab for list of legal
116 values). 116 values).
117 */ 117 */
118 void setTimeZoneId( const QString & ); 118 void setTimeZoneId( const QString & );
119 /** 119 /**
120 Return time zone id. 120 Return time zone id.
121 */ 121 */
122 QString timeZoneId() const; 122 QString timeZoneId() const;
123 /** 123 /**
124 Use local time, not UTC or a time zone. 124 Use local time, not UTC or a time zone.
125 */ 125 */
126 void setLocalTime(); 126 void setLocalTime();
127 /** 127 /**
128 Return whether local time is being used. 128 Return whether local time is being used.
129 */ 129 */
130 bool isLocalTime() const; 130 bool isLocalTime() const;
131 131
132 /** 132 /**
133 Add an incidence to calendar. 133 Add an incidence to calendar.
134 134
135 @return true on success, false on error. 135 @return true on success, false on error.
136 */ 136 */
137 virtual bool addIncidence( Incidence * ); 137 virtual bool addIncidence( Incidence * );
138 /** 138 /**
139 Return filtered list of all incidences of this calendar. 139 Return filtered list of all incidences of this calendar.
140 */ 140 */
141 virtual QPtrList<Incidence> incidences(); 141 virtual QPtrList<Incidence> incidences();
142 142
143 /** 143 /**
144 Return unfiltered list of all incidences of this calendar. 144 Return unfiltered list of all incidences of this calendar.
145 */ 145 */
146 virtual QPtrList<Incidence> rawIncidences(); 146 virtual QPtrList<Incidence> rawIncidences();
147 147
148 /** 148 /**
149 Adds a Event to this calendar object. 149 Adds a Event to this calendar object.
150 @param anEvent a pointer to the event to add 150 @param anEvent a pointer to the event to add
151 151
152 @return true on success, false on error. 152 @return true on success, false on error.
153 */ 153 */
154 virtual bool addEventNoDup( Event *event ) = 0; 154 virtual bool addEventNoDup( Event *event ) = 0;
155 virtual bool addAnniversaryNoDup( Event *event ) = 0; 155 virtual bool addAnniversaryNoDup( Event *event ) = 0;
156 virtual bool addEvent( Event *anEvent ) = 0; 156 virtual bool addEvent( Event *anEvent ) = 0;
157 /** 157 /**
158 Delete event from calendar. 158 Delete event from calendar.
159 */ 159 */
160 virtual void deleteEvent( Event * ) = 0; 160 virtual void deleteEvent( Event * ) = 0;
161 /** 161 /**
162 Retrieves an event on the basis of the unique string ID. 162 Retrieves an event on the basis of the unique string ID.
163 */ 163 */
164 virtual Event *event( const QString &UniqueStr ) = 0; 164 virtual Event *event( const QString &UniqueStr ) = 0;
165 virtual Event *event( int ) = 0; 165 virtual Event *event( int ) = 0;
166 /** 166 /**
167 Builds and then returns a list of all events that match for the 167 Builds and then returns a list of all events that match for the
168 date specified. useful for dayView, etc. etc. 168 date specified. useful for dayView, etc. etc.
169 The calendar filter is applied. 169 The calendar filter is applied.
170 */ 170 */
171 QPtrList<Event> events( const QDate &date, bool sorted = false); 171 QPtrList<Event> events( const QDate &date, bool sorted = false);
172 /** 172 /**
173 Get events, which occur on the given date. 173 Get events, which occur on the given date.
174 The calendar filter is applied. 174 The calendar filter is applied.
diff --git a/libkcal/calendarlocal.cpp b/libkcal/calendarlocal.cpp
index 3c572f0..09ce9f0 100644
--- a/libkcal/calendarlocal.cpp
+++ b/libkcal/calendarlocal.cpp
@@ -129,291 +129,303 @@ bool CalendarLocal::addAnniversaryNoDup( Event *event )
129} 129}
130bool CalendarLocal::addEventNoDup( Event *event ) 130bool CalendarLocal::addEventNoDup( Event *event )
131{ 131{
132 Event * eve; 132 Event * eve;
133 for ( eve = mEventList.first(); eve ; eve = mEventList.next() ) { 133 for ( eve = mEventList.first(); eve ; eve = mEventList.next() ) {
134 if ( *eve == *event ) { 134 if ( *eve == *event ) {
135 //qDebug("CalendarLocal::Duplicate event found! Not inserted! "); 135 //qDebug("CalendarLocal::Duplicate event found! Not inserted! ");
136 return false; 136 return false;
137 } 137 }
138 } 138 }
139 return addEvent( event ); 139 return addEvent( event );
140} 140}
141 141
142bool CalendarLocal::addEvent( Event *event ) 142bool CalendarLocal::addEvent( Event *event )
143{ 143{
144 insertEvent( event ); 144 insertEvent( event );
145 145
146 event->registerObserver( this ); 146 event->registerObserver( this );
147 147
148 setModified( true ); 148 setModified( true );
149 149
150 return true; 150 return true;
151} 151}
152 152
153void CalendarLocal::deleteEvent( Event *event ) 153void CalendarLocal::deleteEvent( Event *event )
154{ 154{
155 155
156 156
157 if ( mEventList.removeRef( event ) ) { 157 if ( mEventList.removeRef( event ) ) {
158 setModified( true ); 158 setModified( true );
159 } 159 }
160} 160}
161 161
162 162
163Event *CalendarLocal::event( const QString &uid ) 163Event *CalendarLocal::event( const QString &uid )
164{ 164{
165 165
166 Event *event; 166 Event *event;
167 167
168 for ( event = mEventList.first(); event; event = mEventList.next() ) { 168 for ( event = mEventList.first(); event; event = mEventList.next() ) {
169 if ( event->uid() == uid ) { 169 if ( event->uid() == uid ) {
170 return event; 170 return event;
171 } 171 }
172 } 172 }
173 173
174 return 0; 174 return 0;
175} 175}
176bool CalendarLocal::addTodoNoDup( Todo *todo ) 176bool CalendarLocal::addTodoNoDup( Todo *todo )
177{ 177{
178 Todo * eve; 178 Todo * eve;
179 for ( eve = mTodoList.first(); eve ; eve = mTodoList.next() ) { 179 for ( eve = mTodoList.first(); eve ; eve = mTodoList.next() ) {
180 if ( *eve == *todo ) { 180 if ( *eve == *todo ) {
181 //qDebug("duplicate todo found! not inserted! "); 181 //qDebug("duplicate todo found! not inserted! ");
182 return false; 182 return false;
183 } 183 }
184 } 184 }
185 return addTodo( todo ); 185 return addTodo( todo );
186} 186}
187bool CalendarLocal::addTodo( Todo *todo ) 187bool CalendarLocal::addTodo( Todo *todo )
188{ 188{
189 mTodoList.append( todo ); 189 mTodoList.append( todo );
190 190
191 todo->registerObserver( this ); 191 todo->registerObserver( this );
192 192
193 // Set up subtask relations 193 // Set up subtask relations
194 setupRelations( todo ); 194 setupRelations( todo );
195 195
196 setModified( true ); 196 setModified( true );
197 197
198 return true; 198 return true;
199} 199}
200 200
201void CalendarLocal::deleteTodo( Todo *todo ) 201void CalendarLocal::deleteTodo( Todo *todo )
202{ 202{
203 // Handle orphaned children 203 // Handle orphaned children
204 removeRelations( todo ); 204 removeRelations( todo );
205 205
206 if ( mTodoList.removeRef( todo ) ) { 206 if ( mTodoList.removeRef( todo ) ) {
207 setModified( true ); 207 setModified( true );
208 } 208 }
209} 209}
210 210
211QPtrList<Todo> CalendarLocal::rawTodos() 211QPtrList<Todo> CalendarLocal::rawTodos()
212{ 212{
213 return mTodoList; 213 return mTodoList;
214} 214}
215Todo *CalendarLocal::todo( int id ) 215Todo *CalendarLocal::todo( int id )
216{ 216{
217 Todo *todo; 217 Todo *todo;
218 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) { 218 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) {
219 if ( todo->zaurusId() == id ) return todo; 219 if ( todo->zaurusId() == id ) return todo;
220 } 220 }
221 221
222 return 0; 222 return 0;
223} 223}
224 224
225QPtrList<Event> CalendarLocal::getExternLastSyncEvents()
226{
227 QPtrList<Event> el;
228 Event *todo;
229 for ( todo = mEventList.first(); todo; todo = mEventList.next() ) {
230 if ( todo->uid().left( 15 ) == QString("last-syncEvent-") )
231 if ( todo->summary().left(3) == "E: " )
232 el.append( todo );
233 }
234
235 return el;
236
237}
225Event *CalendarLocal::event( int id ) 238Event *CalendarLocal::event( int id )
226{ 239{
227 Event *todo; 240 Event *todo;
228 for ( todo = mEventList.first(); todo; todo = mEventList.next() ) { 241 for ( todo = mEventList.first(); todo; todo = mEventList.next() ) {
229 if ( todo->zaurusId() == id ) return todo; 242 if ( todo->zaurusId() == id ) return todo;
230 } 243 }
231 244
232 return 0; 245 return 0;
233} 246}
234Todo *CalendarLocal::todo( const QString &uid ) 247Todo *CalendarLocal::todo( const QString &uid )
235{ 248{
236 Todo *todo; 249 Todo *todo;
237 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) { 250 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) {
238 if ( todo->uid() == uid ) return todo; 251 if ( todo->uid() == uid ) return todo;
239 } 252 }
240 253
241 return 0; 254 return 0;
242} 255}
243QString CalendarLocal::nextSummary() const 256QString CalendarLocal::nextSummary() const
244{ 257{
245 return mNextSummary; 258 return mNextSummary;
246} 259}
247QDateTime CalendarLocal::nextAlarmEventDateTime() const 260QDateTime CalendarLocal::nextAlarmEventDateTime() const
248{ 261{
249 return mNextAlarmEventDateTime; 262 return mNextAlarmEventDateTime;
250} 263}
251void CalendarLocal::checkAlarmForIncidence( Incidence * incidence, bool deleted) 264void CalendarLocal::checkAlarmForIncidence( Incidence * incidence, bool deleted)
252{ 265{
253 //mNextAlarmIncidence 266 //mNextAlarmIncidence
254 //mNextAlarmDateTime 267 //mNextAlarmDateTime
255 //return mNextSummary; 268 //return mNextSummary;
256 //return mNextAlarmEventDateTime; 269 //return mNextAlarmEventDateTime;
257 bool newNextAlarm = false; 270 bool newNextAlarm = false;
258 bool computeNextAlarm = false; 271 bool computeNextAlarm = false;
259 bool ok; 272 bool ok;
260 int offset; 273 int offset;
261 QDateTime nextA; 274 QDateTime nextA;
262 // QString nextSum; 275 // QString nextSum;
263 //QDateTime nextEvent; 276 //QDateTime nextEvent;
264 if ( mNextAlarmIncidence == 0 || incidence == 0 ) { 277 if ( mNextAlarmIncidence == 0 || incidence == 0 ) {
265 computeNextAlarm = true; 278 computeNextAlarm = true;
266 } else { 279 } else {
267 if ( ! deleted ) { 280 if ( ! deleted ) {
268 nextA = incidence->getNextAlarmDateTime(& ok, &offset ) ; 281 nextA = incidence->getNextAlarmDateTime(& ok, &offset ) ;
269 if ( ok ) { 282 if ( ok ) {
270 if ( nextA < mNextAlarmDateTime ) { 283 if ( nextA < mNextAlarmDateTime ) {
271 deRegisterAlarm(); 284 deRegisterAlarm();
272 mNextAlarmDateTime = nextA; 285 mNextAlarmDateTime = nextA;
273 mNextSummary = incidence->summary(); 286 mNextSummary = incidence->summary();
274 mNextAlarmEventDateTime = nextA.addSecs(offset ) ; 287 mNextAlarmEventDateTime = nextA.addSecs(offset ) ;
275 mNextAlarmEventDateTimeString = KGlobal::locale()->formatDateTime(mNextAlarmEventDateTime); 288 mNextAlarmEventDateTimeString = KGlobal::locale()->formatDateTime(mNextAlarmEventDateTime);
276 newNextAlarm = true; 289 newNextAlarm = true;
277 mNextAlarmIncidence = incidence; 290 mNextAlarmIncidence = incidence;
278 } else { 291 } else {
279 if ( incidence == mNextAlarmIncidence ) { 292 if ( incidence == mNextAlarmIncidence ) {
280 computeNextAlarm = true; 293 computeNextAlarm = true;
281 } 294 }
282 } 295 }
283 } else { 296 } else {
284 if ( mNextAlarmIncidence == incidence ) { 297 if ( mNextAlarmIncidence == incidence ) {
285 computeNextAlarm = true; 298 computeNextAlarm = true;
286 } 299 }
287 } 300 }
288 } else { // deleted 301 } else { // deleted
289 if ( incidence == mNextAlarmIncidence ) { 302 if ( incidence == mNextAlarmIncidence ) {
290 computeNextAlarm = true; 303 computeNextAlarm = true;
291 } 304 }
292 } 305 }
293 } 306 }
294 if ( computeNextAlarm ) { 307 if ( computeNextAlarm ) {
295 deRegisterAlarm(); 308 deRegisterAlarm();
296 nextA = nextAlarm( 1000 ); 309 nextA = nextAlarm( 1000 );
297 if (! mNextAlarmIncidence ) { 310 if (! mNextAlarmIncidence ) {
298 return; 311 return;
299 } 312 }
300 newNextAlarm = true; 313 newNextAlarm = true;
301 } 314 }
302 if ( newNextAlarm ) 315 if ( newNextAlarm )
303 registerAlarm(); 316 registerAlarm();
304} 317}
305QString CalendarLocal:: getAlarmNotification() 318QString CalendarLocal:: getAlarmNotification()
306{ 319{
307 QString ret; 320 QString ret;
308 // this should not happen 321 // this should not happen
309 if (! mNextAlarmIncidence ) 322 if (! mNextAlarmIncidence )
310 return "cal_alarm"+ mNextSummary.left( 25 )+"\n"+mNextAlarmEventDateTimeString; 323 return "cal_alarm"+ mNextSummary.left( 25 )+"\n"+mNextAlarmEventDateTimeString;
311 Alarm* alarm = mNextAlarmIncidence->alarms().first(); 324 Alarm* alarm = mNextAlarmIncidence->alarms().first();
312 if ( alarm->type() == Alarm::Procedure ) { 325 if ( alarm->type() == Alarm::Procedure ) {
313 ret = "proc_alarm" + alarm->programFile()+"+++"; 326 ret = "proc_alarm" + alarm->programFile()+"+++";
314 } else { 327 } else {
315 ret = "audio_alarm" +alarm->audioFile() +"+++"; 328 ret = "audio_alarm" +alarm->audioFile() +"+++";
316 } 329 }
317 ret += "cal_alarm"+ mNextSummary.left( 25 ); 330 ret += "cal_alarm"+ mNextSummary.left( 25 );
318 if ( mNextSummary.length() > 25 ) 331 if ( mNextSummary.length() > 25 )
319 ret += "\n" + mNextSummary.mid(25, 25 ); 332 ret += "\n" + mNextSummary.mid(25, 25 );
320 ret+= "\n"+mNextAlarmEventDateTimeString; 333 ret+= "\n"+mNextAlarmEventDateTimeString;
321 return ret; 334 return ret;
322} 335}
323
324void CalendarLocal::registerAlarm() 336void CalendarLocal::registerAlarm()
325{ 337{
326 mLastAlarmNotificationString = getAlarmNotification(); 338 mLastAlarmNotificationString = getAlarmNotification();
327 // qDebug("++ register Alarm %s %s",mNextAlarmDateTime.toString().latin1(), mLastAlarmNotificationString.latin1() ); 339 // qDebug("++ register Alarm %s %s",mNextAlarmDateTime.toString().latin1(), mLastAlarmNotificationString.latin1() );
328 emit addAlarm ( mNextAlarmDateTime, mLastAlarmNotificationString ); 340 emit addAlarm ( mNextAlarmDateTime, mLastAlarmNotificationString );
329// #ifndef DESKTOP_VERSION 341// #ifndef DESKTOP_VERSION
330// AlarmServer::addAlarm ( mNextAlarmDateTime,"koalarm", mLastAlarmNotificationString.latin1() ); 342// AlarmServer::addAlarm ( mNextAlarmDateTime,"koalarm", mLastAlarmNotificationString.latin1() );
331// #endif 343// #endif
332} 344}
333void CalendarLocal::deRegisterAlarm() 345void CalendarLocal::deRegisterAlarm()
334{ 346{
335 if ( mLastAlarmNotificationString.isNull() ) 347 if ( mLastAlarmNotificationString.isNull() )
336 return; 348 return;
337 //qDebug("-- deregister Alarm %s ", mLastAlarmNotificationString.latin1() ); 349 //qDebug("-- deregister Alarm %s ", mLastAlarmNotificationString.latin1() );
338 350
339 emit removeAlarm ( mNextAlarmDateTime, mLastAlarmNotificationString ); 351 emit removeAlarm ( mNextAlarmDateTime, mLastAlarmNotificationString );
340// #ifndef DESKTOP_VERSION 352// #ifndef DESKTOP_VERSION
341// AlarmServer::deleteAlarm (mNextAlarmDateTime ,"koalarm" ,mLastAlarmNotificationString.latin1() ); 353// AlarmServer::deleteAlarm (mNextAlarmDateTime ,"koalarm" ,mLastAlarmNotificationString.latin1() );
342// #endif 354// #endif
343} 355}
344 356
345QPtrList<Todo> CalendarLocal::todos( const QDate &date ) 357QPtrList<Todo> CalendarLocal::todos( const QDate &date )
346{ 358{
347 QPtrList<Todo> todos; 359 QPtrList<Todo> todos;
348 360
349 Todo *todo; 361 Todo *todo;
350 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) { 362 for ( todo = mTodoList.first(); todo; todo = mTodoList.next() ) {
351 if ( todo->hasDueDate() && todo->dtDue().date() == date ) { 363 if ( todo->hasDueDate() && todo->dtDue().date() == date ) {
352 todos.append( todo ); 364 todos.append( todo );
353 } 365 }
354 } 366 }
355 367
356 filter()->apply( &todos ); 368 filter()->apply( &todos );
357 return todos; 369 return todos;
358} 370}
359void CalendarLocal::reInitAlarmSettings() 371void CalendarLocal::reInitAlarmSettings()
360{ 372{
361 if ( !mNextAlarmIncidence ) { 373 if ( !mNextAlarmIncidence ) {
362 nextAlarm( 1000 ); 374 nextAlarm( 1000 );
363 } 375 }
364 deRegisterAlarm(); 376 deRegisterAlarm();
365 mNextAlarmIncidence = 0; 377 mNextAlarmIncidence = 0;
366 checkAlarmForIncidence( 0, false ); 378 checkAlarmForIncidence( 0, false );
367 379
368} 380}
369 381
370 382
371 383
372QDateTime CalendarLocal::nextAlarm( int daysTo ) 384QDateTime CalendarLocal::nextAlarm( int daysTo )
373{ 385{
374 QDateTime nextA = QDateTime::currentDateTime().addDays( daysTo ); 386 QDateTime nextA = QDateTime::currentDateTime().addDays( daysTo );
375 QDateTime start = QDateTime::currentDateTime().addSecs( 30 ); 387 QDateTime start = QDateTime::currentDateTime().addSecs( 30 );
376 QDateTime next; 388 QDateTime next;
377 Event *e; 389 Event *e;
378 bool ok; 390 bool ok;
379 bool found = false; 391 bool found = false;
380 int offset; 392 int offset;
381 mNextAlarmIncidence = 0; 393 mNextAlarmIncidence = 0;
382 for( e = mEventList.first(); e; e = mEventList.next() ) { 394 for( e = mEventList.first(); e; e = mEventList.next() ) {
383 next = e->getNextAlarmDateTime(& ok, &offset ) ; 395 next = e->getNextAlarmDateTime(& ok, &offset ) ;
384 if ( ok ) { 396 if ( ok ) {
385 if ( next < nextA ) { 397 if ( next < nextA ) {
386 nextA = next; 398 nextA = next;
387 found = true; 399 found = true;
388 mNextSummary = e->summary(); 400 mNextSummary = e->summary();
389 mNextAlarmEventDateTime = next.addSecs(offset ) ; 401 mNextAlarmEventDateTime = next.addSecs(offset ) ;
390 mNextAlarmIncidence = (Incidence *) e; 402 mNextAlarmIncidence = (Incidence *) e;
391 } 403 }
392 } 404 }
393 } 405 }
394 Todo *t; 406 Todo *t;
395 for( t = mTodoList.first(); t; t = mTodoList.next() ) { 407 for( t = mTodoList.first(); t; t = mTodoList.next() ) {
396 next = t->getNextAlarmDateTime(& ok, &offset ) ; 408 next = t->getNextAlarmDateTime(& ok, &offset ) ;
397 if ( ok ) { 409 if ( ok ) {
398 if ( next < nextA ) { 410 if ( next < nextA ) {
399 nextA = next; 411 nextA = next;
400 found = true; 412 found = true;
401 mNextSummary = t->summary(); 413 mNextSummary = t->summary();
402 mNextAlarmEventDateTime = next.addSecs(offset ); 414 mNextAlarmEventDateTime = next.addSecs(offset );
403 mNextAlarmIncidence = (Incidence *) t; 415 mNextAlarmIncidence = (Incidence *) t;
404 } 416 }
405 } 417 }
406 } 418 }
407 if ( mNextAlarmIncidence ) { 419 if ( mNextAlarmIncidence ) {
408 mNextAlarmEventDateTimeString = KGlobal::locale()->formatDateTime(mNextAlarmEventDateTime); 420 mNextAlarmEventDateTimeString = KGlobal::locale()->formatDateTime(mNextAlarmEventDateTime);
409 mNextAlarmDateTime = nextA; 421 mNextAlarmDateTime = nextA;
410 } 422 }
411 return nextA; 423 return nextA;
412} 424}
413Alarm::List CalendarLocal::alarmsTo( const QDateTime &to ) 425Alarm::List CalendarLocal::alarmsTo( const QDateTime &to )
414{ 426{
415 return alarms( QDateTime( QDate( 1900, 1, 1 ) ), to ); 427 return alarms( QDateTime( QDate( 1900, 1, 1 ) ), to );
416} 428}
417 429
418Alarm::List CalendarLocal::alarms( const QDateTime &from, const QDateTime &to ) 430Alarm::List CalendarLocal::alarms( const QDateTime &from, const QDateTime &to )
419{ 431{
diff --git a/libkcal/calendarlocal.h b/libkcal/calendarlocal.h
index a2e50e3..3257198 100644
--- a/libkcal/calendarlocal.h
+++ b/libkcal/calendarlocal.h
@@ -1,184 +1,184 @@
1/* 1/*
2 This file is part of libkcal. 2 This file is part of libkcal.
3 3
4 Copyright (c) 1998 Preston Brown 4 Copyright (c) 1998 Preston Brown
5 Copyright (c) 2001,2003 Cornelius Schumacher <schumacher@kde.org> 5 Copyright (c) 2001,2003 Cornelius Schumacher <schumacher@kde.org>
6 6
7 This library is free software; you can redistribute it and/or 7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Library General Public 8 modify it under the terms of the GNU Library General Public
9 License as published by the Free Software Foundation; either 9 License as published by the Free Software Foundation; either
10 version 2 of the License, or (at your option) any later version. 10 version 2 of the License, or (at your option) any later version.
11 11
12 This library is distributed in the hope that it will be useful, 12 This library is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Library General Public License for more details. 15 Library General Public License for more details.
16 16
17 You should have received a copy of the GNU Library General Public License 17 You should have received a copy of the GNU Library General Public License
18 along with this library; see the file COPYING.LIB. If not, write to 18 along with this library; see the file COPYING.LIB. If not, write to
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, USA. 20 Boston, MA 02111-1307, USA.
21*/ 21*/
22#ifndef KCAL_CALENDARLOCAL_H 22#ifndef KCAL_CALENDARLOCAL_H
23#define KCAL_CALENDARLOCAL_H 23#define KCAL_CALENDARLOCAL_H
24 24
25#include "calendar.h" 25#include "calendar.h"
26 26
27namespace KCal { 27namespace KCal {
28 28
29class CalFormat; 29class CalFormat;
30 30
31/** 31/**
32 This class provides a calendar stored as a local file. 32 This class provides a calendar stored as a local file.
33*/ 33*/
34class CalendarLocal : public Calendar 34class CalendarLocal : public Calendar
35{ 35{
36 public: 36 public:
37 /** 37 /**
38 Constructs a new calendar, with variables initialized to sane values. 38 Constructs a new calendar, with variables initialized to sane values.
39 */ 39 */
40 CalendarLocal(); 40 CalendarLocal();
41 /** 41 /**
42 Constructs a new calendar, with variables initialized to sane values. 42 Constructs a new calendar, with variables initialized to sane values.
43 */ 43 */
44 CalendarLocal( const QString &timeZoneId ); 44 CalendarLocal( const QString &timeZoneId );
45 ~CalendarLocal(); 45 ~CalendarLocal();
46 46
47 /** 47 /**
48 Loads a calendar on disk in vCalendar or iCalendar format into the current 48 Loads a calendar on disk in vCalendar or iCalendar format into the current
49 calendar. Any information already present is lost. 49 calendar. Any information already present is lost.
50 @return true, if successfull, false on error. 50 @return true, if successfull, false on error.
51 @param fileName the name of the calendar on disk. 51 @param fileName the name of the calendar on disk.
52 */ 52 */
53 bool load( const QString &fileName ); 53 bool load( const QString &fileName );
54 /** 54 /**
55 Writes out the calendar to disk in the specified \a format. 55 Writes out the calendar to disk in the specified \a format.
56 CalendarLocal takes ownership of the CalFormat object. 56 CalendarLocal takes ownership of the CalFormat object.
57 @return true, if successfull, false on error. 57 @return true, if successfull, false on error.
58 @param fileName the name of the file 58 @param fileName the name of the file
59 */ 59 */
60 bool save( const QString &fileName, CalFormat *format = 0 ); 60 bool save( const QString &fileName, CalFormat *format = 0 );
61 61
62 /** 62 /**
63 Clears out the current calendar, freeing all used memory etc. etc. 63 Clears out the current calendar, freeing all used memory etc. etc.
64 */ 64 */
65 void close(); 65 void close();
66 66
67 void save() {} 67 void save() {}
68 68
69 /** 69 /**
70 Add Event to calendar. 70 Add Event to calendar.
71 */ 71 */
72 bool addAnniversaryNoDup( Event *event ); 72 bool addAnniversaryNoDup( Event *event );
73 bool addEventNoDup( Event *event ); 73 bool addEventNoDup( Event *event );
74 bool addEvent( Event *event ); 74 bool addEvent( Event *event );
75 /** 75 /**
76 Deletes an event from this calendar. 76 Deletes an event from this calendar.
77 */ 77 */
78 void deleteEvent( Event *event ); 78 void deleteEvent( Event *event );
79 79
80 /** 80 /**
81 Retrieves an event on the basis of the unique string ID. 81 Retrieves an event on the basis of the unique string ID.
82 */ 82 */
83 Event *event( const QString &uid ); 83 Event *event( const QString &uid );
84 /** 84 /**
85 Return unfiltered list of all events in calendar. 85 Return unfiltered list of all events in calendar.
86 */ 86 */
87 QPtrList<Event> rawEvents(); 87 QPtrList<Event> rawEvents();
88 88 QPtrList<Event> getExternLastSyncEvents();
89 /** 89 /**
90 Add a todo to the todolist. 90 Add a todo to the todolist.
91 */ 91 */
92 bool addTodo( Todo *todo ); 92 bool addTodo( Todo *todo );
93 bool addTodoNoDup( Todo *todo ); 93 bool addTodoNoDup( Todo *todo );
94 /** 94 /**
95 Remove a todo from the todolist. 95 Remove a todo from the todolist.
96 */ 96 */
97 void deleteTodo( Todo * ); 97 void deleteTodo( Todo * );
98 /** 98 /**
99 Searches todolist for an event with this unique string identifier, 99 Searches todolist for an event with this unique string identifier,
100 returns a pointer or null. 100 returns a pointer or null.
101 */ 101 */
102 Todo *todo( const QString &uid ); 102 Todo *todo( const QString &uid );
103 /** 103 /**
104 Return list of all todos. 104 Return list of all todos.
105 */ 105 */
106 QPtrList<Todo> rawTodos(); 106 QPtrList<Todo> rawTodos();
107 /** 107 /**
108 Returns list of todos due on the specified date. 108 Returns list of todos due on the specified date.
109 */ 109 */
110 QPtrList<Todo> todos( const QDate &date ); 110 QPtrList<Todo> todos( const QDate &date );
111 /** 111 /**
112 Return list of all todos. 112 Return list of all todos.
113 113
114 Workaround because compiler does not recognize function of base class. 114 Workaround because compiler does not recognize function of base class.
115 */ 115 */
116 QPtrList<Todo> todos() { return Calendar::todos(); } 116 QPtrList<Todo> todos() { return Calendar::todos(); }
117 117
118 /** 118 /**
119 Add a Journal entry to calendar. 119 Add a Journal entry to calendar.
120 */ 120 */
121 bool addJournal( Journal * ); 121 bool addJournal( Journal * );
122 /** 122 /**
123 Remove a Journal from the calendar. 123 Remove a Journal from the calendar.
124 */ 124 */
125 void deleteJournal( Journal * ); 125 void deleteJournal( Journal * );
126 /** 126 /**
127 Return Journal for given date. 127 Return Journal for given date.
128 */ 128 */
129 Journal *journal( const QDate & ); 129 Journal *journal( const QDate & );
130 /** 130 /**
131 Return Journal with given UID. 131 Return Journal with given UID.
132 */ 132 */
133 Journal *journal( const QString &uid ); 133 Journal *journal( const QString &uid );
134 /** 134 /**
135 Return list of all Journals stored in calendar. 135 Return list of all Journals stored in calendar.
136 */ 136 */
137 QPtrList<Journal> journals(); 137 QPtrList<Journal> journals();
138 138
139 /** 139 /**
140 Return all alarms, which ocur in the given time interval. 140 Return all alarms, which ocur in the given time interval.
141 */ 141 */
142 Alarm::List alarms( const QDateTime &from, const QDateTime &to ); 142 Alarm::List alarms( const QDateTime &from, const QDateTime &to );
143 143
144 /** 144 /**
145 Return all alarms, which ocur before given date. 145 Return all alarms, which ocur before given date.
146 */ 146 */
147 Alarm::List alarmsTo( const QDateTime &to ); 147 Alarm::List alarmsTo( const QDateTime &to );
148 148
149 QDateTime nextAlarm( int daysTo ) ; 149 QDateTime nextAlarm( int daysTo ) ;
150 QDateTime nextAlarmEventDateTime() const; 150 QDateTime nextAlarmEventDateTime() const;
151 void checkAlarmForIncidence( Incidence *, bool deleted ) ; 151 void checkAlarmForIncidence( Incidence *, bool deleted ) ;
152 void registerAlarm(); 152 void registerAlarm();
153 void deRegisterAlarm(); 153 void deRegisterAlarm();
154 QString getAlarmNotification(); 154 QString getAlarmNotification();
155 QString nextSummary() const ; 155 QString nextSummary() const ;
156 /** 156 /**
157 This method should be called whenever a Event is modified directly 157 This method should be called whenever a Event is modified directly
158 via it's pointer. It makes sure that the calendar is internally 158 via it's pointer. It makes sure that the calendar is internally
159 consistent. 159 consistent.
160 */ 160 */
161 void update( IncidenceBase *incidence ); 161 void update( IncidenceBase *incidence );
162 162
163 /** 163 /**
164 Builds and then returns a list of all events that match for the 164 Builds and then returns a list of all events that match for the
165 date specified. useful for dayView, etc. etc. 165 date specified. useful for dayView, etc. etc.
166 */ 166 */
167 QPtrList<Event> rawEventsForDate( const QDate &date, bool sorted = false ); 167 QPtrList<Event> rawEventsForDate( const QDate &date, bool sorted = false );
168 /** 168 /**
169 Get unfiltered events for date \a qdt. 169 Get unfiltered events for date \a qdt.
170 */ 170 */
171 QPtrList<Event> rawEventsForDate( const QDateTime &qdt ); 171 QPtrList<Event> rawEventsForDate( const QDateTime &qdt );
172 /** 172 /**
173 Get unfiltered events in a range of dates. If inclusive is set to true, 173 Get unfiltered events in a range of dates. If inclusive is set to true,
174 only events are returned, which are completely included in the range. 174 only events are returned, which are completely included in the range.
175 */ 175 */
176 QPtrList<Event> rawEvents( const QDate &start, const QDate &end, 176 QPtrList<Event> rawEvents( const QDate &start, const QDate &end,
177 bool inclusive = false ); 177 bool inclusive = false );
178 Todo *CalendarLocal::todo( int uid ); 178 Todo *CalendarLocal::todo( int uid );
179 Event *CalendarLocal::event( int uid ); 179 Event *CalendarLocal::event( int uid );
180 180
181 181
182 182
183 protected: 183 protected:
184 184