summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp29
-rw-r--r--korganizer/calendarview.h1
2 files changed, 19 insertions, 11 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index f727cd4..ff1db2c 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -664,618 +664,619 @@ void CalendarView::selectWeekNum ( int num )
664{ 664{
665 dateNavigator()->selectWeek( num ); 665 dateNavigator()->selectWeek( num );
666 mViewManager->showWeekView(); 666 mViewManager->showWeekView();
667} 667}
668KOViewManager *CalendarView::viewManager() 668KOViewManager *CalendarView::viewManager()
669{ 669{
670 return mViewManager; 670 return mViewManager;
671} 671}
672 672
673KODialogManager *CalendarView::dialogManager() 673KODialogManager *CalendarView::dialogManager()
674{ 674{
675 return mDialogManager; 675 return mDialogManager;
676} 676}
677 677
678QDate CalendarView::startDate() 678QDate CalendarView::startDate()
679{ 679{
680 DateList dates = mNavigator->selectedDates(); 680 DateList dates = mNavigator->selectedDates();
681 681
682 return dates.first(); 682 return dates.first();
683} 683}
684 684
685QDate CalendarView::endDate() 685QDate CalendarView::endDate()
686{ 686{
687 DateList dates = mNavigator->selectedDates(); 687 DateList dates = mNavigator->selectedDates();
688 688
689 return dates.last(); 689 return dates.last();
690} 690}
691 691
692 692
693void CalendarView::createPrinter() 693void CalendarView::createPrinter()
694{ 694{
695#ifndef KORG_NOPRINTER 695#ifndef KORG_NOPRINTER
696 if (!mCalPrinter) { 696 if (!mCalPrinter) {
697 mCalPrinter = new CalPrinter(this, mCalendar); 697 mCalPrinter = new CalPrinter(this, mCalendar);
698 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig())); 698 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig()));
699 } 699 }
700#endif 700#endif
701} 701}
702 702
703 703
704//KOPrefs::instance()->mWriteBackFile 704//KOPrefs::instance()->mWriteBackFile
705//KOPrefs::instance()->mWriteBackExistingOnly 705//KOPrefs::instance()->mWriteBackExistingOnly
706 706
707// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); 707// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
708// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); 708// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
709// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); 709// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
710// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); 710// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
711// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always")); 711// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
712// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); 712// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
713 713
714int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full ) 714int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full )
715{ 715{
716 716
717 //void setZaurusId(int id); 717 //void setZaurusId(int id);
718 // int zaurusId() const; 718 // int zaurusId() const;
719 // void setZaurusUid(int id); 719 // void setZaurusUid(int id);
720 // int zaurusUid() const; 720 // int zaurusUid() const;
721 // void setZaurusStat(int id); 721 // void setZaurusStat(int id);
722 // int zaurusStat() const; 722 // int zaurusStat() const;
723 // 0 equal 723 // 0 equal
724 // 1 take local 724 // 1 take local
725 // 2 take remote 725 // 2 take remote
726 // 3 cancel 726 // 3 cancel
727 QDateTime lastSync = mLastCalendarSync; 727 QDateTime lastSync = mLastCalendarSync;
728 QDateTime localMod = local->lastModified(); 728 QDateTime localMod = local->lastModified();
729 QDateTime remoteMod = remote->lastModified(); 729 QDateTime remoteMod = remote->lastModified();
730 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 730 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
731 bool remCh, locCh; 731 bool remCh, locCh;
732 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 732 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
733 //if ( remCh ) 733 //if ( remCh )
734 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 734 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
735 locCh = ( localMod > mLastCalendarSync ); 735 locCh = ( localMod > mLastCalendarSync );
736 if ( !remCh && ! locCh ) { 736 if ( !remCh && ! locCh ) {
737 //qDebug("both not changed "); 737 //qDebug("both not changed ");
738 lastSync = localMod.addDays(1); 738 lastSync = localMod.addDays(1);
739 if ( mode <= SYNC_PREF_ASK ) 739 if ( mode <= SYNC_PREF_ASK )
740 return 0; 740 return 0;
741 } else { 741 } else {
742 if ( locCh ) { 742 if ( locCh ) {
743 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1()); 743 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1());
744 lastSync = localMod.addDays( -1 ); 744 lastSync = localMod.addDays( -1 );
745 if ( !remCh ) 745 if ( !remCh )
746 remoteMod = ( lastSync.addDays( -1 ) ); 746 remoteMod = ( lastSync.addDays( -1 ) );
747 } else { 747 } else {
748 //qDebug(" not loc changed "); 748 //qDebug(" not loc changed ");
749 lastSync = localMod.addDays( 1 ); 749 lastSync = localMod.addDays( 1 );
750 if ( remCh ) 750 if ( remCh )
751 remoteMod =( lastSync.addDays( 1 ) ); 751 remoteMod =( lastSync.addDays( 1 ) );
752 752
753 } 753 }
754 } 754 }
755 full = true; 755 full = true;
756 if ( mode < SYNC_PREF_ASK ) 756 if ( mode < SYNC_PREF_ASK )
757 mode = SYNC_PREF_ASK; 757 mode = SYNC_PREF_ASK;
758 } else { 758 } else {
759 if ( localMod == remoteMod ) 759 if ( localMod == remoteMod )
760 if ( local->revision() == remote->revision() ) 760 // if ( local->revision() == remote->revision() )
761 return 0; 761 return 0;
762 762
763 } 763 }
764 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 764 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
765 765
766 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision()); 766 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision());
767 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() ); 767 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() );
768 //full = true; //debug only 768 //full = true; //debug only
769 if ( full ) { 769 if ( full ) {
770 bool equ = false; 770 bool equ = false;
771 if ( local->type() == "Event" ) { 771 if ( local->type() == "Event" ) {
772 equ = (*((Event*) local) == *((Event*) remote)); 772 equ = (*((Event*) local) == *((Event*) remote));
773 } 773 }
774 else if ( local->type() =="Todo" ) 774 else if ( local->type() =="Todo" )
775 equ = (*((Todo*) local) == (*(Todo*) remote)); 775 equ = (*((Todo*) local) == (*(Todo*) remote));
776 else if ( local->type() =="Journal" ) 776 else if ( local->type() =="Journal" )
777 equ = (*((Journal*) local) == *((Journal*) remote)); 777 equ = (*((Journal*) local) == *((Journal*) remote));
778 if ( equ ) { 778 if ( equ ) {
779 //qDebug("equal "); 779 //qDebug("equal ");
780 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 780 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
781 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 781 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
782 } 782 }
783 if ( mode < SYNC_PREF_FORCE_LOCAL ) 783 if ( mode < SYNC_PREF_FORCE_LOCAL )
784 return 0; 784 return 0;
785 785
786 }//else //debug only 786 }//else //debug only
787 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 787 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
788 } 788 }
789 int result; 789 int result;
790 bool localIsNew; 790 bool localIsNew;
791 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , localMod.toString().latin1() , remoteMod.toString().latin1() ); 791 //qDebug("%s -- %s mLastCalendarSync %s lastsync %s --- local %s remote %s ",local->summary().latin1(), remote->summary().latin1(),mLastCalendarSync.toString().latin1() ,lastSync.toString().latin1() , localMod.toString().latin1() , remoteMod.toString().latin1() );
792 792
793 if ( full && mode < SYNC_PREF_NEWEST ) 793 if ( full && mode < SYNC_PREF_NEWEST )
794 mode = SYNC_PREF_ASK; 794 mode = SYNC_PREF_ASK;
795 795
796 switch( mode ) { 796 switch( mode ) {
797 case SYNC_PREF_LOCAL: 797 case SYNC_PREF_LOCAL:
798 if ( lastSync > remoteMod ) 798 if ( lastSync > remoteMod )
799 return 1; 799 return 1;
800 if ( lastSync > localMod ) 800 if ( lastSync > localMod )
801 return 2; 801 return 2;
802 return 1; 802 return 1;
803 break; 803 break;
804 case SYNC_PREF_REMOTE: 804 case SYNC_PREF_REMOTE:
805 if ( lastSync > remoteMod ) 805 if ( lastSync > remoteMod )
806 return 1; 806 return 1;
807 if ( lastSync > localMod ) 807 if ( lastSync > localMod )
808 return 2; 808 return 2;
809 return 2; 809 return 2;
810 break; 810 break;
811 case SYNC_PREF_NEWEST: 811 case SYNC_PREF_NEWEST:
812 if ( localMod > remoteMod ) 812 if ( localMod > remoteMod )
813 return 1; 813 return 1;
814 else 814 else
815 return 2; 815 return 2;
816 break; 816 break;
817 case SYNC_PREF_ASK: 817 case SYNC_PREF_ASK:
818 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 818 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
819 if ( lastSync > remoteMod ) 819 if ( lastSync > remoteMod )
820 return 1; 820 return 1;
821 if ( lastSync > localMod ) 821 if ( lastSync > localMod )
822 return 2; 822 return 2;
823 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 823 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
824 localIsNew = localMod >= remoteMod; 824 localIsNew = localMod >= remoteMod;
825 if ( localIsNew ) 825 if ( localIsNew )
826 getEventViewerDialog()->setColorMode( 1 ); 826 getEventViewerDialog()->setColorMode( 1 );
827 else 827 else
828 getEventViewerDialog()->setColorMode( 2 ); 828 getEventViewerDialog()->setColorMode( 2 );
829 getEventViewerDialog()->setIncidence(local); 829 getEventViewerDialog()->setIncidence(local);
830 if ( localIsNew ) 830 if ( localIsNew )
831 getEventViewerDialog()->setColorMode( 2 ); 831 getEventViewerDialog()->setColorMode( 2 );
832 else 832 else
833 getEventViewerDialog()->setColorMode( 1 ); 833 getEventViewerDialog()->setColorMode( 1 );
834 getEventViewerDialog()->addIncidence(remote); 834 getEventViewerDialog()->addIncidence(remote);
835 getEventViewerDialog()->setColorMode( 0 ); 835 getEventViewerDialog()->setColorMode( 0 );
836 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() ); 836 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
837 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!")); 837 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
838 getEventViewerDialog()->showMe(); 838 getEventViewerDialog()->showMe();
839 result = getEventViewerDialog()->executeS( localIsNew ); 839 result = getEventViewerDialog()->executeS( localIsNew );
840 return result; 840 return result;
841 841
842 break; 842 break;
843 case SYNC_PREF_FORCE_LOCAL: 843 case SYNC_PREF_FORCE_LOCAL:
844 return 1; 844 return 1;
845 break; 845 break;
846 case SYNC_PREF_FORCE_REMOTE: 846 case SYNC_PREF_FORCE_REMOTE:
847 return 2; 847 return 2;
848 break; 848 break;
849 849
850 default: 850 default:
851 // SYNC_PREF_TAKE_BOTH not implemented 851 // SYNC_PREF_TAKE_BOTH not implemented
852 break; 852 break;
853 } 853 }
854 return 0; 854 return 0;
855} 855}
856Event* CalendarView::getLastSyncEvent() 856Event* CalendarView::getLastSyncEvent()
857{ 857{
858 Event* lse; 858 Event* lse;
859 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 859 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
860 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); 860 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice );
861 if (!lse) { 861 if (!lse) {
862 lse = new Event(); 862 lse = new Event();
863 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); 863 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice );
864 QString sum = ""; 864 QString sum = "";
865 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 865 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
866 sum = "E: "; 866 sum = "E: ";
867 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); 867 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event"));
868 lse->setDtStart( mLastCalendarSync ); 868 lse->setDtStart( mLastCalendarSync );
869 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 869 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
870 lse->setCategories( i18n("SyncEvent") ); 870 lse->setCategories( i18n("SyncEvent") );
871 lse->setReadOnly( true ); 871 lse->setReadOnly( true );
872 mCalendar->addEvent( lse ); 872 mCalendar->addEvent( lse );
873 } 873 }
874 874
875 return lse; 875 return lse;
876 876
877} 877}
878 878
879// we check, if the to delete event has a id for a profile 879// we check, if the to delete event has a id for a profile
880// if yes, we set this id in the profile to delete 880// if yes, we set this id in the profile to delete
881void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ) 881void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete )
882{ 882{
883 if ( lastSync.count() == 0 ) { 883 if ( lastSync.count() == 0 ) {
884 //qDebug(" lastSync.count() == 0"); 884 //qDebug(" lastSync.count() == 0");
885 return; 885 return;
886 } 886 }
887 if ( toDelete->type() == "Journal" ) 887 if ( toDelete->type() == "Journal" )
888 return; 888 return;
889 889
890 Event* eve = lastSync.first(); 890 Event* eve = lastSync.first();
891 891
892 while ( eve ) { 892 while ( eve ) {
893 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name 893 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name
894 if ( !id.isEmpty() ) { 894 if ( !id.isEmpty() ) {
895 QString des = eve->description(); 895 QString des = eve->description();
896 QString pref = "e"; 896 QString pref = "e";
897 if ( toDelete->type() == "Todo" ) 897 if ( toDelete->type() == "Todo" )
898 pref = "t"; 898 pref = "t";
899 des += pref+ id + ","; 899 des += pref+ id + ",";
900 eve->setReadOnly( false ); 900 eve->setReadOnly( false );
901 eve->setDescription( des ); 901 eve->setDescription( des );
902 //qDebug("setdes %s ", des.latin1()); 902 //qDebug("setdes %s ", des.latin1());
903 eve->setReadOnly( true ); 903 eve->setReadOnly( true );
904 } 904 }
905 eve = lastSync.next(); 905 eve = lastSync.next();
906 } 906 }
907 907
908} 908}
909void CalendarView::checkExternalId( Incidence * inc ) 909void CalendarView::checkExternalId( Incidence * inc )
910{ 910{
911 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ; 911 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ;
912 checkExternSyncEvent( lastSync, inc ); 912 checkExternSyncEvent( lastSync, inc );
913 913
914} 914}
915bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) 915bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode )
916{ 916{
917 bool syncOK = true; 917 bool syncOK = true;
918 int addedEvent = 0; 918 int addedEvent = 0;
919 int addedEventR = 0; 919 int addedEventR = 0;
920 int deletedEventR = 0; 920 int deletedEventR = 0;
921 int deletedEventL = 0; 921 int deletedEventL = 0;
922 int changedLocal = 0; 922 int changedLocal = 0;
923 int changedRemote = 0; 923 int changedRemote = 0;
924 //QPtrList<Event> el = local->rawEvents(); 924 //QPtrList<Event> el = local->rawEvents();
925 Event* eventR; 925 Event* eventR;
926 QString uid; 926 QString uid;
927 int take; 927 int take;
928 Event* eventL; 928 Event* eventL;
929 Event* eventRSync; 929 Event* eventRSync;
930 Event* eventLSync; 930 Event* eventLSync;
931 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents(); 931 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
932 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents(); 932 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
933 bool fullDateRange = false; 933 bool fullDateRange = false;
934 local->resetTempSyncStat(); 934 local->resetTempSyncStat();
935#ifdef DESKTOP_VERSION 935 if ( mSyncKDE )
936 //Needed for KDE - OL sync 936 remote->resetPilotStat(1);
937 local->resetPilotStat();
938 remote->resetPilotStat();
939#endif
940 mLastCalendarSync = QDateTime::currentDateTime(); 937 mLastCalendarSync = QDateTime::currentDateTime();
941 QDateTime modifiedCalendar = mLastCalendarSync;; 938 QDateTime modifiedCalendar = mLastCalendarSync;;
942 eventLSync = getLastSyncEvent(); 939 eventLSync = getLastSyncEvent();
943 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 940 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
944 if ( eventR ) { 941 if ( eventR ) {
945 eventRSync = (Event*) eventR->clone(); 942 eventRSync = (Event*) eventR->clone();
946 remote->deleteEvent(eventR ); 943 remote->deleteEvent(eventR );
947 944
948 } else { 945 } else {
949 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 946 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
950 eventRSync = (Event*)eventLSync->clone(); 947 eventRSync = (Event*)eventLSync->clone();
951 } else { 948 } else {
952 fullDateRange = true; 949 fullDateRange = true;
953 eventRSync = new Event(); 950 eventRSync = new Event();
954 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 951 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
955 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); 952 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
956 eventRSync->setDtStart( mLastCalendarSync ); 953 eventRSync->setDtStart( mLastCalendarSync );
957 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 954 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
958 eventRSync->setCategories( i18n("SyncEvent") ); 955 eventRSync->setCategories( i18n("SyncEvent") );
959 } 956 }
960 } 957 }
961 if ( eventLSync->dtStart() == mLastCalendarSync ) 958 if ( eventLSync->dtStart() == mLastCalendarSync )
962 fullDateRange = true; 959 fullDateRange = true;
963 960
964 if ( ! fullDateRange ) { 961 if ( ! fullDateRange ) {
965 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 962 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
966 963
967 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 964 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
968 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 965 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
969 fullDateRange = true; 966 fullDateRange = true;
970 } 967 }
971 } 968 }
972 if ( fullDateRange ) 969 if ( fullDateRange && !mSyncKDE )
973 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 970 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
974 else 971 else
975 mLastCalendarSync = eventLSync->dtStart(); 972 mLastCalendarSync = eventLSync->dtStart();
976 // for resyncing if own file has changed 973 // for resyncing if own file has changed
977 if ( mCurrentSyncDevice == "deleteaftersync" ) { 974 if ( mCurrentSyncDevice == "deleteaftersync" ) {
978 mLastCalendarSync = loadedFileVersion; 975 mLastCalendarSync = loadedFileVersion;
979 qDebug("setting mLastCalendarSync "); 976 qDebug("setting mLastCalendarSync ");
980 } 977 }
981 //qDebug("*************************** "); 978 //qDebug("*************************** ");
982 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() ); 979 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() );
983 QPtrList<Incidence> er = remote->rawIncidences(); 980 QPtrList<Incidence> er = remote->rawIncidences();
984 Incidence* inR = er.first(); 981 Incidence* inR = er.first();
985 Incidence* inL; 982 Incidence* inL;
986 QProgressBar bar( er.count(),0 ); 983 QProgressBar bar( er.count(),0 );
987 bar.setCaption (i18n("Syncing - close to abort!") ); 984 bar.setCaption (i18n("Syncing - close to abort!") );
988 985
989 int w = 300; 986 int w = 300;
990 if ( QApplication::desktop()->width() < 320 ) 987 if ( QApplication::desktop()->width() < 320 )
991 w = 220; 988 w = 220;
992 int h = bar.sizeHint().height() ; 989 int h = bar.sizeHint().height() ;
993 int dw = QApplication::desktop()->width(); 990 int dw = QApplication::desktop()->width();
994 int dh = QApplication::desktop()->height(); 991 int dh = QApplication::desktop()->height();
995 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 992 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
996 bar.show(); 993 bar.show();
997 int modulo = (er.count()/10)+1; 994 int modulo = (er.count()/10)+1;
998 int incCounter = 0; 995 int incCounter = 0;
999 while ( inR ) { 996 while ( inR ) {
1000 if ( ! bar.isVisible() ) 997 if ( ! bar.isVisible() )
1001 return false; 998 return false;
1002 if ( incCounter % modulo == 0 ) 999 if ( incCounter % modulo == 0 )
1003 bar.setProgress( incCounter ); 1000 bar.setProgress( incCounter );
1004 ++incCounter; 1001 ++incCounter;
1005 uid = inR->uid(); 1002 uid = inR->uid();
1006 bool skipIncidence = false; 1003 bool skipIncidence = false;
1007 if ( uid.left(15) == QString("last-syncEvent-") ) 1004 if ( uid.left(15) == QString("last-syncEvent-") )
1008 skipIncidence = true; 1005 skipIncidence = true;
1009 QString idS; 1006 QString idS;
1010 qApp->processEvents(); 1007 qApp->processEvents();
1011 if ( !skipIncidence ) { 1008 if ( !skipIncidence ) {
1012 inL = local->incidence( uid ); 1009 inL = local->incidence( uid );
1013 if ( inL ) { // maybe conflict - same uid in both calendars 1010 if ( inL ) { // maybe conflict - same uid in both calendars
1014 int maxrev = inL->revision(); 1011 int maxrev = inL->revision();
1015 if ( maxrev < inR->revision() ) 1012 if ( maxrev < inR->revision() )
1016 maxrev = inR->revision(); 1013 maxrev = inR->revision();
1017 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1014 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1018 //qDebug("take %d %s ", take, inL->summary().latin1()); 1015 //qDebug("take %d %s ", take, inL->summary().latin1());
1019 if ( take == 3 ) 1016 if ( take == 3 )
1020 return false; 1017 return false;
1021 if ( take == 1 ) {// take local 1018 if ( take == 1 ) {// take local
1022 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 1019 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
1023 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1020 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1024 else 1021 else
1025 idS = inR->IDStr(); 1022 idS = inR->IDStr();
1026 remote->deleteIncidence( inR ); 1023 remote->deleteIncidence( inR );
1027 if ( inL->revision() < maxrev ) 1024 if ( inL->revision() < maxrev )
1028 inL->setRevision( maxrev ); 1025 inL->setRevision( maxrev );
1029 inR = inL->clone(); 1026 inR = inL->clone();
1030 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1027 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1031 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 1028 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
1032 inR->setIDStr( idS ); 1029 inR->setIDStr( idS );
1033 remote->addIncidence( inR ); 1030 remote->addIncidence( inR );
1034#ifdef DESKTOP_VERSION 1031 if ( mSyncKDE )
1035 inR->setPilotId( 1 ); 1032 inR->setPilotId( 2 );
1036#endif
1037 ++changedRemote; 1033 ++changedRemote;
1038 } else { 1034 } else {
1039 if ( inR->revision() < maxrev ) 1035 if ( inR->revision() < maxrev )
1040 inR->setRevision( maxrev ); 1036 inR->setRevision( maxrev );
1041 idS = inL->IDStr(); 1037 idS = inL->IDStr();
1038 int pid = inL->pilotId();
1042 local->deleteIncidence( inL ); 1039 local->deleteIncidence( inL );
1043 inL = inR->clone(); 1040 inL = inR->clone();
1041 if ( mSyncKDE )
1042 inL->setPilotId( pid );
1044 inL->setIDStr( idS ); 1043 inL->setIDStr( idS );
1045 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1044 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1046 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1045 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1047 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1046 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1048 } 1047 }
1049 local->addIncidence( inL ); 1048 local->addIncidence( inL );
1050 ++changedLocal; 1049 ++changedLocal;
1051 } 1050 }
1052 } 1051 }
1053 } else { // no conflict 1052 } else { // no conflict
1054 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1053 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1055 QString des = eventLSync->description(); 1054 QString des = eventLSync->description();
1056 QString pref = "e"; 1055 QString pref = "e";
1057 if ( inR->type() == "Todo" ) 1056 if ( inR->type() == "Todo" )
1058 pref = "t"; 1057 pref = "t";
1059 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1058 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1060 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1059 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1061 //remote->deleteIncidence( inR ); 1060 //remote->deleteIncidence( inR );
1062 ++deletedEventR; 1061 ++deletedEventR;
1063 } else { 1062 } else {
1064 inR->setLastModified( modifiedCalendar ); 1063 inR->setLastModified( modifiedCalendar );
1065 inL = inR->clone(); 1064 inL = inR->clone();
1066 local->addIncidence( inL ); 1065 local->addIncidence( inL );
1067 ++addedEvent; 1066 ++addedEvent;
1068 } 1067 }
1069 } else { 1068 } else {
1070 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1069 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1071 inR->setLastModified( modifiedCalendar ); 1070 inR->setLastModified( modifiedCalendar );
1072 local->addIncidence( inR->clone() ); 1071 local->addIncidence( inR->clone() );
1073 ++addedEvent; 1072 ++addedEvent;
1074 } else { 1073 } else {
1075 checkExternSyncEvent(eventRSyncSharp, inR); 1074 checkExternSyncEvent(eventRSyncSharp, inR);
1076 remote->deleteIncidence( inR ); 1075 remote->deleteIncidence( inR );
1077 ++deletedEventR; 1076 ++deletedEventR;
1078 } 1077 }
1079 } 1078 }
1080 } 1079 }
1081 } 1080 }
1082 inR = er.next(); 1081 inR = er.next();
1083 } 1082 }
1084 QPtrList<Incidence> el = local->rawIncidences(); 1083 QPtrList<Incidence> el = local->rawIncidences();
1085 inL = el.first(); 1084 inL = el.first();
1086 modulo = (el.count()/10)+1; 1085 modulo = (el.count()/10)+1;
1087 bar.setCaption (i18n("Add / remove events") ); 1086 bar.setCaption (i18n("Add / remove events") );
1088 bar.setTotalSteps ( el.count() ) ; 1087 bar.setTotalSteps ( el.count() ) ;
1089 bar.show(); 1088 bar.show();
1090 incCounter = 0; 1089 incCounter = 0;
1091 1090
1092 while ( inL ) { 1091 while ( inL ) {
1093 1092
1094 qApp->processEvents(); 1093 qApp->processEvents();
1095 if ( ! bar.isVisible() ) 1094 if ( ! bar.isVisible() )
1096 return false; 1095 return false;
1097 if ( incCounter % modulo == 0 ) 1096 if ( incCounter % modulo == 0 )
1098 bar.setProgress( incCounter ); 1097 bar.setProgress( incCounter );
1099 ++incCounter; 1098 ++incCounter;
1100 uid = inL->uid(); 1099 uid = inL->uid();
1101 bool skipIncidence = false; 1100 bool skipIncidence = false;
1102 if ( uid.left(15) == QString("last-syncEvent-") ) 1101 if ( uid.left(15) == QString("last-syncEvent-") )
1103 skipIncidence = true; 1102 skipIncidence = true;
1104 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" ) 1103 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" )
1105 skipIncidence = true; 1104 skipIncidence = true;
1106 if ( !skipIncidence ) { 1105 if ( !skipIncidence ) {
1107 inR = remote->incidence( uid ); 1106 inR = remote->incidence( uid );
1108 if ( ! inR ) { 1107 if ( ! inR ) {
1109 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1108 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1110 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 1109 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1111 checkExternSyncEvent(eventLSyncSharp, inL); 1110 checkExternSyncEvent(eventLSyncSharp, inL);
1112 local->deleteIncidence( inL ); 1111 local->deleteIncidence( inL );
1113 ++deletedEventL; 1112 ++deletedEventL;
1114 } else { 1113 } else {
1115 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1114 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1116 inL->removeID(mCurrentSyncDevice ); 1115 inL->removeID(mCurrentSyncDevice );
1117 ++addedEventR; 1116 ++addedEventR;
1118 //qDebug("remote added Incidence %s ", inL->summary().latin1()); 1117 //qDebug("remote added Incidence %s ", inL->summary().latin1());
1119 inL->setLastModified( modifiedCalendar ); 1118 inL->setLastModified( modifiedCalendar );
1120 inR = inL->clone(); 1119 inR = inL->clone();
1121 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1120 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1122 remote->addIncidence( inR ); 1121 remote->addIncidence( inR );
1123 } 1122 }
1124 } 1123 }
1125 } else { 1124 } else {
1126 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1125 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1127 checkExternSyncEvent(eventLSyncSharp, inL); 1126 checkExternSyncEvent(eventLSyncSharp, inL);
1128 local->deleteIncidence( inL ); 1127 local->deleteIncidence( inL );
1129 ++deletedEventL; 1128 ++deletedEventL;
1130 } else { 1129 } else {
1131 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1130 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1132 ++addedEventR; 1131 ++addedEventR;
1133 inL->setLastModified( modifiedCalendar ); 1132 inL->setLastModified( modifiedCalendar );
1134 remote->addIncidence( inL->clone() ); 1133 remote->addIncidence( inL->clone() );
1135 } 1134 }
1136 } 1135 }
1137 } 1136 }
1138 } 1137 }
1139 } 1138 }
1140 inL = el.next(); 1139 inL = el.next();
1141 } 1140 }
1142 int delFut = 0; 1141 int delFut = 0;
1143 int remRem = 0; 1142 int remRem = 0;
1144 if ( mSyncManager->mWriteBackInFuture ) { 1143 if ( mSyncManager->mWriteBackInFuture ) {
1145 er = remote->rawIncidences(); 1144 er = remote->rawIncidences();
1146 remRem = er.count(); 1145 remRem = er.count();
1147 inR = er.first(); 1146 inR = er.first();
1148 QDateTime dt; 1147 QDateTime dt;
1149 QDateTime cur = QDateTime::currentDateTime().addDays( -7 ); 1148 QDateTime cur = QDateTime::currentDateTime().addDays( -7 );
1150 QDateTime end = cur.addDays( (mSyncManager->mWriteBackInFuture +1 ) *7 ); 1149 QDateTime end = cur.addDays( (mSyncManager->mWriteBackInFuture +1 ) *7 );
1151 while ( inR ) { 1150 while ( inR ) {
1152 if ( inR->type() == "Todo" ) { 1151 if ( inR->type() == "Todo" ) {
1153 Todo * t = (Todo*)inR; 1152 Todo * t = (Todo*)inR;
1154 if ( t->hasDueDate() ) 1153 if ( t->hasDueDate() )
1155 dt = t->dtDue(); 1154 dt = t->dtDue();
1156 else 1155 else
1157 dt = cur.addSecs( 62 ); 1156 dt = cur.addSecs( 62 );
1158 } 1157 }
1159 else if (inR->type() == "Event" ) { 1158 else if (inR->type() == "Event" ) {
1160 bool ok; 1159 bool ok;
1161 dt = inR->getNextOccurence( cur, &ok ); 1160 dt = inR->getNextOccurence( cur, &ok );
1162 if ( !ok ) 1161 if ( !ok )
1163 dt = cur.addSecs( -62 ); 1162 dt = cur.addSecs( -62 );
1164 } 1163 }
1165 else 1164 else
1166 dt = inR->dtStart(); 1165 dt = inR->dtStart();
1167 if ( dt < cur || dt > end ) { 1166 if ( dt < cur || dt > end ) {
1168 remote->deleteIncidence( inR ); 1167 remote->deleteIncidence( inR );
1169 ++delFut; 1168 ++delFut;
1170 } 1169 }
1171 inR = er.next(); 1170 inR = er.next();
1172 } 1171 }
1173 } 1172 }
1174 bar.hide(); 1173 bar.hide();
1175 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1174 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1176 eventLSync->setReadOnly( false ); 1175 eventLSync->setReadOnly( false );
1177 eventLSync->setDtStart( mLastCalendarSync ); 1176 eventLSync->setDtStart( mLastCalendarSync );
1178 eventRSync->setDtStart( mLastCalendarSync ); 1177 eventRSync->setDtStart( mLastCalendarSync );
1179 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1178 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1180 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1179 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1181 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 1180 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
1182 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 1181 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
1183 eventLSync->setReadOnly( true ); 1182 eventLSync->setReadOnly( true );
1184 if ( mGlobalSyncMode == SYNC_MODE_NORMAL) 1183 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncKDE) // kde is abnormal...
1185 remote->addEvent( eventRSync ); 1184 remote->addEvent( eventRSync );
1185 else
1186 delete eventRSync;
1186 QString mes; 1187 QString mes;
1187 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 ); 1188 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 );
1188 QString delmess; 1189 QString delmess;
1189 if ( delFut ) { 1190 if ( delFut ) {
1190 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are in the past or\nmore than %d weeks in the future.\nAfter skipping, remote has\n%d calendar/todo items."), delFut,mSyncManager->mWriteBackInFuture, remRem-delFut); 1191 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are in the past or\nmore than %d weeks in the future.\nAfter skipping, remote has\n%d calendar/todo items."), delFut,mSyncManager->mWriteBackInFuture, remRem-delFut);
1191 mes += delmess; 1192 mes += delmess;
1192 } 1193 }
1193 if ( mSyncManager->mShowSyncSummary ) { 1194 if ( mSyncManager->mShowSyncSummary ) {
1194 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") ); 1195 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") );
1195 } 1196 }
1196 qDebug( mes ); 1197 qDebug( mes );
1197 mCalendar->checkAlarmForIncidence( 0, true ); 1198 mCalendar->checkAlarmForIncidence( 0, true );
1198 return syncOK; 1199 return syncOK;
1199} 1200}
1200 1201
1201void CalendarView::setSyncDevice( QString s ) 1202void CalendarView::setSyncDevice( QString s )
1202{ 1203{
1203 mCurrentSyncDevice= s; 1204 mCurrentSyncDevice= s;
1204} 1205}
1205void CalendarView::setSyncName( QString s ) 1206void CalendarView::setSyncName( QString s )
1206{ 1207{
1207 mCurrentSyncName= s; 1208 mCurrentSyncName= s;
1208} 1209}
1209bool CalendarView::syncCalendar(QString filename, int mode) 1210bool CalendarView::syncCalendar(QString filename, int mode)
1210{ 1211{
1211 //qDebug("syncCalendar %s ", filename.latin1()); 1212 //qDebug("syncCalendar %s ", filename.latin1());
1212 mGlobalSyncMode = SYNC_MODE_NORMAL; 1213 mGlobalSyncMode = SYNC_MODE_NORMAL;
1213 CalendarLocal* calendar = new CalendarLocal(); 1214 CalendarLocal* calendar = new CalendarLocal();
1214 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1215 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1215 FileStorage* storage = new FileStorage( calendar ); 1216 FileStorage* storage = new FileStorage( calendar );
1216 bool syncOK = false; 1217 bool syncOK = false;
1217 storage->setFileName( filename ); 1218 storage->setFileName( filename );
1218 // qDebug("loading ... "); 1219 // qDebug("loading ... ");
1219 if ( storage->load() ) { 1220 if ( storage->load() ) {
1220 getEventViewerDialog()->setSyncMode( true ); 1221 getEventViewerDialog()->setSyncMode( true );
1221 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1222 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1222 getEventViewerDialog()->setSyncMode( false ); 1223 getEventViewerDialog()->setSyncMode( false );
1223 if ( syncOK ) { 1224 if ( syncOK ) {
1224 if ( mSyncManager->mWriteBackFile ) 1225 if ( mSyncManager->mWriteBackFile )
1225 { 1226 {
1226 storage->setSaveFormat( new ICalFormat() ); 1227 storage->setSaveFormat( new ICalFormat() );
1227 storage->save(); 1228 storage->save();
1228 } 1229 }
1229 } 1230 }
1230 setModified( true ); 1231 setModified( true );
1231 } 1232 }
1232 delete storage; 1233 delete storage;
1233 delete calendar; 1234 delete calendar;
1234 if ( syncOK ) 1235 if ( syncOK )
1235 updateView(); 1236 updateView();
1236 return syncOK; 1237 return syncOK;
1237} 1238}
1238 1239
1239void CalendarView::syncExternal( int mode ) 1240void CalendarView::syncExternal( int mode )
1240{ 1241{
1241 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1242 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1242 1243
1243 qApp->processEvents(); 1244 qApp->processEvents();
1244 CalendarLocal* calendar = new CalendarLocal(); 1245 CalendarLocal* calendar = new CalendarLocal();
1245 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1246 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1246 bool syncOK = false; 1247 bool syncOK = false;
1247 bool loadSuccess = false; 1248 bool loadSuccess = false;
1248 PhoneFormat* phoneFormat = 0; 1249 PhoneFormat* phoneFormat = 0;
1249#ifndef DESKTOP_VERSION 1250#ifndef DESKTOP_VERSION
1250 SharpFormat* sharpFormat = 0; 1251 SharpFormat* sharpFormat = 0;
1251 if ( mode == 0 ) { // sharp 1252 if ( mode == 0 ) { // sharp
1252 sharpFormat = new SharpFormat () ; 1253 sharpFormat = new SharpFormat () ;
1253 loadSuccess = sharpFormat->load( calendar, mCalendar ); 1254 loadSuccess = sharpFormat->load( calendar, mCalendar );
1254 1255
1255 } else 1256 } else
1256#endif 1257#endif
1257 if ( mode == 1 ) { // phone 1258 if ( mode == 1 ) { // phone
1258 phoneFormat = new PhoneFormat (mCurrentSyncDevice, 1259 phoneFormat = new PhoneFormat (mCurrentSyncDevice,
1259 mSyncManager->mPhoneDevice, 1260 mSyncManager->mPhoneDevice,
1260 mSyncManager->mPhoneConnection, 1261 mSyncManager->mPhoneConnection,
1261 mSyncManager->mPhoneModel); 1262 mSyncManager->mPhoneModel);
1262 loadSuccess = phoneFormat->load( calendar,mCalendar); 1263 loadSuccess = phoneFormat->load( calendar,mCalendar);
1263 1264
1264 } else 1265 } else
1265 return; 1266 return;
1266 if ( loadSuccess ) { 1267 if ( loadSuccess ) {
1267 getEventViewerDialog()->setSyncMode( true ); 1268 getEventViewerDialog()->setSyncMode( true );
1268 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 1269 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
1269 getEventViewerDialog()->setSyncMode( false ); 1270 getEventViewerDialog()->setSyncMode( false );
1270 qApp->processEvents(); 1271 qApp->processEvents();
1271 if ( syncOK ) { 1272 if ( syncOK ) {
1272 if ( mSyncManager->mWriteBackFile ) 1273 if ( mSyncManager->mWriteBackFile )
1273 { 1274 {
1274 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 1275 QPtrList<Incidence> iL = mCalendar->rawIncidences();
1275 Incidence* inc = iL.first(); 1276 Incidence* inc = iL.first();
1276 if ( phoneFormat ) { 1277 if ( phoneFormat ) {
1277 while ( inc ) { 1278 while ( inc ) {
1278 inc->removeID(mCurrentSyncDevice); 1279 inc->removeID(mCurrentSyncDevice);
1279 inc = iL.next(); 1280 inc = iL.next();
1280 } 1281 }
1281 } 1282 }
@@ -3641,116 +3642,122 @@ void CalendarView::editIncidence(Incidence *incidence)
3641 } 3642 }
3642} 3643}
3643 3644
3644void CalendarView::deleteIncidence(Incidence *incidence) 3645void CalendarView::deleteIncidence(Incidence *incidence)
3645{ 3646{
3646 //qDebug(" CalendarView::deleteIncidence "); 3647 //qDebug(" CalendarView::deleteIncidence ");
3647 if ( incidence ) { 3648 if ( incidence ) {
3648 DeleteIncidenceVisitor v; 3649 DeleteIncidenceVisitor v;
3649 v.act( incidence, this ); 3650 v.act( incidence, this );
3650 } 3651 }
3651} 3652}
3652 3653
3653 3654
3654void CalendarView::lookForOutgoingMessages() 3655void CalendarView::lookForOutgoingMessages()
3655{ 3656{
3656 OutgoingDialog *ogd = mDialogManager->outgoingDialog(); 3657 OutgoingDialog *ogd = mDialogManager->outgoingDialog();
3657 ogd->loadMessages(); 3658 ogd->loadMessages();
3658} 3659}
3659 3660
3660void CalendarView::lookForIncomingMessages() 3661void CalendarView::lookForIncomingMessages()
3661{ 3662{
3662 IncomingDialog *icd = mDialogManager->incomingDialog(); 3663 IncomingDialog *icd = mDialogManager->incomingDialog();
3663 icd->retrieve(); 3664 icd->retrieve();
3664} 3665}
3665 3666
3666bool CalendarView::removeCompletedSubTodos( Todo* t ) 3667bool CalendarView::removeCompletedSubTodos( Todo* t )
3667{ 3668{
3668 bool deleteTodo = true; 3669 bool deleteTodo = true;
3669 QPtrList<Incidence> subTodos; 3670 QPtrList<Incidence> subTodos;
3670 Incidence *aTodo; 3671 Incidence *aTodo;
3671 subTodos = t->relations(); 3672 subTodos = t->relations();
3672 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) { 3673 for (aTodo = subTodos.first(); aTodo; aTodo = subTodos.next()) {
3673 if (! removeCompletedSubTodos( (Todo*) aTodo )) 3674 if (! removeCompletedSubTodos( (Todo*) aTodo ))
3674 deleteTodo = false; 3675 deleteTodo = false;
3675 } 3676 }
3676 if ( deleteTodo ) { 3677 if ( deleteTodo ) {
3677 if ( t->isCompleted() ) { 3678 if ( t->isCompleted() ) {
3678 checkExternalId( t ); 3679 checkExternalId( t );
3679 mCalendar->deleteTodo( t ); 3680 mCalendar->deleteTodo( t );
3680 changeTodoDisplay( t,KOGlobals::EVENTDELETED ); 3681 changeTodoDisplay( t,KOGlobals::EVENTDELETED );
3681 } 3682 }
3682 else 3683 else
3683 deleteTodo = false; 3684 deleteTodo = false;
3684 } 3685 }
3685 return deleteTodo; 3686 return deleteTodo;
3686 3687
3687} 3688}
3688void CalendarView::purgeCompleted() 3689void CalendarView::purgeCompleted()
3689{ 3690{
3690 int result = KMessageBox::warningContinueCancel(this, 3691 int result = KMessageBox::warningContinueCancel(this,
3691 i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge")); 3692 i18n("Delete all\ncompleted To-Dos?"),i18n("Purge To-Dos"),i18n("Purge"));
3692 3693
3693 if (result == KMessageBox::Continue) { 3694 if (result == KMessageBox::Continue) {
3694 3695
3695 QPtrList<Todo> todoCal; 3696 QPtrList<Todo> todoCal;
3696 QPtrList<Todo> rootTodos; 3697 QPtrList<Todo> rootTodos;
3697 //QPtrList<Incidence> rel; 3698 //QPtrList<Incidence> rel;
3698 Todo *aTodo;//, *rTodo; 3699 Todo *aTodo;//, *rTodo;
3699 Incidence *rIncidence; 3700 Incidence *rIncidence;
3700 bool childDelete = false; 3701 bool childDelete = false;
3701 bool deletedOne = true; 3702 bool deletedOne = true;
3702 todoCal = calendar()->todos(); 3703 todoCal = calendar()->todos();
3703 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) { 3704 for (aTodo = todoCal.first(); aTodo; aTodo = todoCal.next()) {
3704 if ( !aTodo->relatedTo() ) 3705 if ( !aTodo->relatedTo() )
3705 rootTodos.append( aTodo ); 3706 rootTodos.append( aTodo );
3706 } 3707 }
3707 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) { 3708 for (aTodo = rootTodos.first(); aTodo; aTodo = rootTodos.next()) {
3708 removeCompletedSubTodos( aTodo ); 3709 removeCompletedSubTodos( aTodo );
3709 } 3710 }
3710 3711
3711 updateView(); 3712 updateView();
3712 } 3713 }
3713} 3714}
3714 3715
3715void CalendarView::slotCalendarChanged() 3716void CalendarView::slotCalendarChanged()
3716{ 3717{
3717 ; 3718 ;
3718} 3719}
3719 3720
3720NavigatorBar *CalendarView::navigatorBar() 3721NavigatorBar *CalendarView::navigatorBar()
3721{ 3722{
3722 return mNavigatorBar; 3723 return mNavigatorBar;
3723} 3724}
3724 3725
3725 3726
3726 3727
3727void CalendarView::keyPressEvent ( QKeyEvent *e) 3728void CalendarView::keyPressEvent ( QKeyEvent *e)
3728{ 3729{
3729 //qDebug(" alendarView::keyPressEvent "); 3730 //qDebug(" alendarView::keyPressEvent ");
3730 e->ignore(); 3731 e->ignore();
3731} 3732}
3732 3733
3733 3734
3734bool CalendarView::sync(KSyncManager* manager, QString filename, int mode) 3735bool CalendarView::sync(KSyncManager* manager, QString filename, int mode)
3735{ 3736{
3736 // mSyncManager = manager; 3737 // mSyncManager = manager;
3738 mSyncKDE = false;
3739 if ( filename == QDir::homeDirPath ()+"/.kdecalendardump.ics" ) {
3740 qDebug("SyncKDE request detected!");
3741 mSyncKDE = true;
3742 }
3737 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 3743 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
3738 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 3744 mCurrentSyncName = mSyncManager->getCurrentSyncName();
3739 return syncCalendar( filename, mode ); 3745 return syncCalendar( filename, mode );
3740} 3746}
3741bool CalendarView::syncExternal(KSyncManager* manager, QString resource) 3747bool CalendarView::syncExternal(KSyncManager* manager, QString resource)
3742{ 3748{
3749 mSyncKDE = false;
3743 //mSyncManager = manager; 3750 //mSyncManager = manager;
3744 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice(); 3751 mCurrentSyncDevice = mSyncManager->getCurrentSyncDevice();
3745 mCurrentSyncName = mSyncManager->getCurrentSyncName(); 3752 mCurrentSyncName = mSyncManager->getCurrentSyncName();
3746 if ( resource == "sharp" ) 3753 if ( resource == "sharp" )
3747 syncExternal( 0 ); 3754 syncExternal( 0 );
3748 if ( resource == "phone" ) 3755 if ( resource == "phone" )
3749 syncExternal( 1 ); 3756 syncExternal( 1 );
3750 // pending setmodified 3757 // pending setmodified
3751 return true; 3758 return true;
3752} 3759}
3753void CalendarView::setSyncManager(KSyncManager* manager) 3760void CalendarView::setSyncManager(KSyncManager* manager)
3754{ 3761{
3755 mSyncManager = manager; 3762 mSyncManager = manager;
3756} 3763}
diff --git a/korganizer/calendarview.h b/korganizer/calendarview.h
index 9f56cc8..1cd896d 100644
--- a/korganizer/calendarview.h
+++ b/korganizer/calendarview.h
@@ -394,192 +394,193 @@ class CalendarView : public KOrg::CalendarViewBase, public KCal::Calendar::Obser
394 void showFilter(bool visible); 394 void showFilter(bool visible);
395 void updateFilter(); 395 void updateFilter();
396 void filterEdited(); 396 void filterEdited();
397 void selectFilter( int ); 397 void selectFilter( int );
398 KOFilterView *filterView(); 398 KOFilterView *filterView();
399 399
400 void showIntro(); 400 void showIntro();
401 401
402 /** Move the curdatepient view date to today */ 402 /** Move the curdatepient view date to today */
403 void goToday(); 403 void goToday();
404 404
405 /** Move to the next date(s) in the current view */ 405 /** Move to the next date(s) in the current view */
406 void goNext(); 406 void goNext();
407 407
408 /** Move to the previous date(s) in the current view */ 408 /** Move to the previous date(s) in the current view */
409 void goPrevious(); 409 void goPrevious();
410 /** Move to the next date(s) in the current view */ 410 /** Move to the next date(s) in the current view */
411 void goNextMonth(); 411 void goNextMonth();
412 412
413 /** Move to the previous date(s) in the current view */ 413 /** Move to the previous date(s) in the current view */
414 void goPreviousMonth(); 414 void goPreviousMonth();
415 415
416 void toggleExpand(); 416 void toggleExpand();
417 void toggleDateNavigatorWidget(); 417 void toggleDateNavigatorWidget();
418 void toggleAllDaySize(); 418 void toggleAllDaySize();
419 void dialogClosing(Incidence *); 419 void dialogClosing(Incidence *);
420 420
421 /** Look for new messages in the inbox */ 421 /** Look for new messages in the inbox */
422 void lookForIncomingMessages(); 422 void lookForIncomingMessages();
423 /** Look for new messages in the outbox */ 423 /** Look for new messages in the outbox */
424 void lookForOutgoingMessages(); 424 void lookForOutgoingMessages();
425 425
426 void processMainViewSelection( Incidence * ); 426 void processMainViewSelection( Incidence * );
427 void processTodoListSelection( Incidence * ); 427 void processTodoListSelection( Incidence * );
428 428
429 void processIncidenceSelection( Incidence * ); 429 void processIncidenceSelection( Incidence * );
430 430
431 void purgeCompleted(); 431 void purgeCompleted();
432 bool removeCompletedSubTodos( Todo* ); 432 bool removeCompletedSubTodos( Todo* );
433 void slotCalendarChanged(); 433 void slotCalendarChanged();
434 bool importBday(); 434 bool importBday();
435 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday ); 435 bool addAnniversary( QDate data, QString name, KCal::Attendee* a , bool birthday );
436 bool importQtopia( const QString &categoriesFile, 436 bool importQtopia( const QString &categoriesFile,
437 const QString &datebookFile, 437 const QString &datebookFile,
438 const QString &tasklistFile ); 438 const QString &tasklistFile );
439 void syncExternal( int mode ); 439 void syncExternal( int mode );
440 void slotSelectPickerDate( QDate ) ; 440 void slotSelectPickerDate( QDate ) ;
441 void showDatePicker( ) ; 441 void showDatePicker( ) ;
442 void moveIncidence(Incidence *) ; 442 void moveIncidence(Incidence *) ;
443 void beamIncidence(Incidence *) ; 443 void beamIncidence(Incidence *) ;
444 void beamCalendar() ; 444 void beamCalendar() ;
445 void beamFilteredCalendar() ; 445 void beamFilteredCalendar() ;
446 void beamIncidenceList(QPtrList<Incidence>) ; 446 void beamIncidenceList(QPtrList<Incidence>) ;
447 void manageCategories(); 447 void manageCategories();
448 int addCategories(); 448 int addCategories();
449 void removeCategories(); 449 void removeCategories();
450 void setSyncDevice( QString ); 450 void setSyncDevice( QString );
451 void setSyncName( QString ); 451 void setSyncName( QString );
452 protected slots: 452 protected slots:
453 void timerAlarm(); 453 void timerAlarm();
454 void suspendAlarm(); 454 void suspendAlarm();
455 void beamDone( Ir *ir ); 455 void beamDone( Ir *ir );
456 /** Select a view or adapt the current view to display the specified dates. */ 456 /** Select a view or adapt the current view to display the specified dates. */
457 void showDates( const KCal::DateList & ); 457 void showDates( const KCal::DateList & );
458 void selectWeekNum ( int ); 458 void selectWeekNum ( int );
459 459
460 public: 460 public:
461 // show a standard warning 461 // show a standard warning
462 // returns KMsgBox::yesNoCancel() 462 // returns KMsgBox::yesNoCancel()
463 int msgCalModified(); 463 int msgCalModified();
464 virtual bool sync(KSyncManager* manager, QString filename, int mode); 464 virtual bool sync(KSyncManager* manager, QString filename, int mode);
465 465
466 virtual bool syncExternal(KSyncManager* manager, QString resource); 466 virtual bool syncExternal(KSyncManager* manager, QString resource);
467 void setSyncManager(KSyncManager* manager); 467 void setSyncManager(KSyncManager* manager);
468 void setLoadedFileVersion(QDateTime); 468 void setLoadedFileVersion(QDateTime);
469 bool checkFileVersion(QString fn); 469 bool checkFileVersion(QString fn);
470 bool checkFileChanged(QString fn); 470 bool checkFileChanged(QString fn);
471 Event* getLastSyncEvent(); 471 Event* getLastSyncEvent();
472 /** Adapt navigation units correpsonding to step size of navigation of the 472 /** Adapt navigation units correpsonding to step size of navigation of the
473 * current view. 473 * current view.
474 */ 474 */
475 void adaptNavigationUnits(); 475 void adaptNavigationUnits();
476 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode ); 476 bool synchronizeCalendar( Calendar* local, Calendar* remote, int mode );
477 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false ); 477 int takeEvent( Incidence* local, Incidence* remote, int mode, bool full = false );
478 //Attendee* getYourAttendee(Event *event); 478 //Attendee* getYourAttendee(Event *event);
479 protected: 479 protected:
480 void schedule(Scheduler::Method, Incidence *incidence = 0); 480 void schedule(Scheduler::Method, Incidence *incidence = 0);
481 481
482 // returns KMsgBox::OKCandel() 482 // returns KMsgBox::OKCandel()
483 int msgItemDelete(); 483 int msgItemDelete();
484 void showEventEditor(); 484 void showEventEditor();
485 void showTodoEditor(); 485 void showTodoEditor();
486 void writeLocale(); 486 void writeLocale();
487 Todo *selectedTodo(); 487 Todo *selectedTodo();
488 488
489 private: 489 private:
490 bool mSyncKDE;
490 KSyncManager* mSyncManager; 491 KSyncManager* mSyncManager;
491 AlarmDialog * mAlarmDialog; 492 AlarmDialog * mAlarmDialog;
492 QString mAlarmNotification; 493 QString mAlarmNotification;
493 QString mSuspendAlarmNotification; 494 QString mSuspendAlarmNotification;
494 QTimer* mSuspendTimer; 495 QTimer* mSuspendTimer;
495 QTimer* mAlarmTimer; 496 QTimer* mAlarmTimer;
496 QTimer* mRecheckAlarmTimer; 497 QTimer* mRecheckAlarmTimer;
497 void computeAlarm( QString ); 498 void computeAlarm( QString );
498 void startAlarm( QString, QString ); 499 void startAlarm( QString, QString );
499 void setSyncEventsReadOnly(); 500 void setSyncEventsReadOnly();
500 501
501 QDateTime loadedFileVersion; 502 QDateTime loadedFileVersion;
502 void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ); 503 void checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete );
503 void checkExternalId( Incidence * inc ); 504 void checkExternalId( Incidence * inc );
504 int mGlobalSyncMode; 505 int mGlobalSyncMode;
505 QString mCurrentSyncDevice; 506 QString mCurrentSyncDevice;
506 QString mCurrentSyncName; 507 QString mCurrentSyncName;
507 KOBeamPrefs* beamDialog; 508 KOBeamPrefs* beamDialog;
508 void init(); 509 void init();
509 int mDatePickerMode; 510 int mDatePickerMode;
510 bool mFlagEditDescription; 511 bool mFlagEditDescription;
511 QDateTime mLastCalendarSync; 512 QDateTime mLastCalendarSync;
512 void createPrinter(); 513 void createPrinter();
513 514
514 void calendarModified( bool, Calendar * ); 515 void calendarModified( bool, Calendar * );
515 516
516 CalPrinter *mCalPrinter; 517 CalPrinter *mCalPrinter;
517 518
518 QSplitter *mPanner; 519 QSplitter *mPanner;
519 QSplitter *mLeftSplitter; 520 QSplitter *mLeftSplitter;
520 QWidget *mLeftFrame; 521 QWidget *mLeftFrame;
521 QWidgetStack *mRightFrame; 522 QWidgetStack *mRightFrame;
522 523
523 KDatePicker* mDatePicker; 524 KDatePicker* mDatePicker;
524 QVBox* mDateFrame; 525 QVBox* mDateFrame;
525 NavigatorBar *mNavigatorBar; 526 NavigatorBar *mNavigatorBar;
526 527
527 KDateNavigator *mDateNavigator; // widget showing small month view. 528 KDateNavigator *mDateNavigator; // widget showing small month view.
528 529
529 KOFilterView *mFilterView; 530 KOFilterView *mFilterView;
530 531
531 ResourceView *mResourceView; 532 ResourceView *mResourceView;
532 533
533 // calendar object for this viewing instance 534 // calendar object for this viewing instance
534 Calendar *mCalendar; 535 Calendar *mCalendar;
535 536
536 CalendarResourceManager *mResourceManager; 537 CalendarResourceManager *mResourceManager;
537 538
538 FileStorage *mStorage; 539 FileStorage *mStorage;
539 540
540 DateNavigator *mNavigator; 541 DateNavigator *mNavigator;
541 542
542 KOViewManager *mViewManager; 543 KOViewManager *mViewManager;
543 KODialogManager *mDialogManager; 544 KODialogManager *mDialogManager;
544 545
545 // Calendar filters 546 // Calendar filters
546 QPtrList<CalFilter> mFilters; 547 QPtrList<CalFilter> mFilters;
547 548
548 // various housekeeping variables. 549 // various housekeeping variables.
549 bool mModified; // flag indicating if calendar is modified 550 bool mModified; // flag indicating if calendar is modified
550 bool mReadOnly; // flag indicating if calendar is read-only 551 bool mReadOnly; // flag indicating if calendar is read-only
551 QDate mSaveSingleDate; 552 QDate mSaveSingleDate;
552 553
553 Incidence *mSelectedIncidence; 554 Incidence *mSelectedIncidence;
554 Incidence *mMoveIncidence; 555 Incidence *mMoveIncidence;
555 KOTodoView *mTodoList; 556 KOTodoView *mTodoList;
556 KOEventEditor * mEventEditor; 557 KOEventEditor * mEventEditor;
557 KOTodoEditor * mTodoEditor; 558 KOTodoEditor * mTodoEditor;
558 KOEventViewerDialog * mEventViewerDialog; 559 KOEventViewerDialog * mEventViewerDialog;
559 void keyPressEvent ( QKeyEvent *e) ; 560 void keyPressEvent ( QKeyEvent *e) ;
560 //QMap<Incidence*,KOIncidenceEditor*> mDialogList; 561 //QMap<Incidence*,KOIncidenceEditor*> mDialogList;
561}; 562};
562 563
563 564
564class CalendarViewVisitor : public Incidence::Visitor 565class CalendarViewVisitor : public Incidence::Visitor
565{ 566{
566 public: 567 public:
567 CalendarViewVisitor() : mView( 0 ) {} 568 CalendarViewVisitor() : mView( 0 ) {}
568 569
569 bool act( Incidence *incidence, CalendarView *view ) 570 bool act( Incidence *incidence, CalendarView *view )
570 { 571 {
571 mView = view; 572 mView = view;
572 return incidence->accept( *this ); 573 return incidence->accept( *this );
573 } 574 }
574 575
575 protected: 576 protected:
576 CalendarView *mView; 577 CalendarView *mView;
577}; 578};
578 579
579class ShowIncidenceVisitor : public CalendarViewVisitor 580class ShowIncidenceVisitor : public CalendarViewVisitor
580{ 581{
581 protected: 582 protected:
582 bool visit( Event *event ) { mView->showEvent( event ); return true; } 583 bool visit( Event *event ) { mView->showEvent( event ); return true; }
583 bool visit( Todo *todo ) { mView->showTodo( todo ); return true; } 584 bool visit( Todo *todo ) { mView->showTodo( todo ); return true; }
584 bool visit( Journal * j ) { mView->showJournal( j );return true; } 585 bool visit( Journal * j ) { mView->showJournal( j );return true; }
585}; 586};