summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index fab4540..5150455 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -634,674 +634,674 @@ void CalendarView::recheckTimerAlarm()
634} 634}
635void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti ) 635void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti )
636{ 636{
637 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 637 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
638 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 638 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
639#ifndef DESKTOP_VERSION 639#ifndef DESKTOP_VERSION
640 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() ); 640 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() );
641#endif 641#endif
642 return; 642 return;
643 } 643 }
644 mAlarmTimer->stop(); 644 mAlarmTimer->stop();
645} 645}
646void CalendarView::selectWeekNum ( int num ) 646void CalendarView::selectWeekNum ( int num )
647{ 647{
648 dateNavigator()->selectWeek( num ); 648 dateNavigator()->selectWeek( num );
649 mViewManager->showWeekView(); 649 mViewManager->showWeekView();
650} 650}
651KOViewManager *CalendarView::viewManager() 651KOViewManager *CalendarView::viewManager()
652{ 652{
653 return mViewManager; 653 return mViewManager;
654} 654}
655 655
656KODialogManager *CalendarView::dialogManager() 656KODialogManager *CalendarView::dialogManager()
657{ 657{
658 return mDialogManager; 658 return mDialogManager;
659} 659}
660 660
661QDate CalendarView::startDate() 661QDate CalendarView::startDate()
662{ 662{
663 DateList dates = mNavigator->selectedDates(); 663 DateList dates = mNavigator->selectedDates();
664 664
665 return dates.first(); 665 return dates.first();
666} 666}
667 667
668QDate CalendarView::endDate() 668QDate CalendarView::endDate()
669{ 669{
670 DateList dates = mNavigator->selectedDates(); 670 DateList dates = mNavigator->selectedDates();
671 671
672 return dates.last(); 672 return dates.last();
673} 673}
674 674
675 675
676void CalendarView::createPrinter() 676void CalendarView::createPrinter()
677{ 677{
678#ifndef KORG_NOPRINTER 678#ifndef KORG_NOPRINTER
679 if (!mCalPrinter) { 679 if (!mCalPrinter) {
680 mCalPrinter = new CalPrinter(this, mCalendar); 680 mCalPrinter = new CalPrinter(this, mCalendar);
681 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig())); 681 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig()));
682 } 682 }
683#endif 683#endif
684} 684}
685 685
686void CalendarView::confSync() 686void CalendarView::confSync()
687{ 687{
688 static KSyncPrefsDialog* sp = 0; 688 static KSyncPrefsDialog* sp = 0;
689 if ( ! sp ) { 689 if ( ! sp ) {
690 sp = new KSyncPrefsDialog( this, "syncprefs", true ); 690 sp = new KSyncPrefsDialog( this, "syncprefs", true );
691 } 691 }
692 sp->usrReadConfig(); 692 sp->usrReadConfig();
693#ifndef DESKTOP_VERSION 693#ifndef DESKTOP_VERSION
694 sp->showMaximized(); 694 sp->showMaximized();
695#else 695#else
696 sp->show(); 696 sp->show();
697#endif 697#endif
698 sp->exec(); 698 sp->exec();
699 KOPrefs::instance()->mSyncProfileNames = sp->getSyncProfileNames(); 699 KOPrefs::instance()->mSyncProfileNames = sp->getSyncProfileNames();
700 KOPrefs::instance()->mLocalMachineName = sp->getLocalMachineName (); 700 KOPrefs::instance()->mLocalMachineName = sp->getLocalMachineName ();
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 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 728 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
729 bool remCh, locCh; 729 bool remCh, locCh;
730 remCh = ( remote->zaurusUid() != local->zaurusUid() ); 730 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
731 locCh = ( local->lastModified() > mLastCalendarSync ); 731 locCh = ( local->lastModified() > mLastCalendarSync );
732 //qDebug("locCh %d remCh %d locuid %d remuid %d", locCh, remCh,local->zaurusUid(), remote->zaurusUid() ); 732 //qDebug("locCh %d remCh %d locuid %d remuid %d", locCh, remCh,local->zaurusUid(), remote->zaurusUid() );
733 if ( !remCh && ! locCh ) { 733 if ( !remCh && ! locCh ) {
734 //qDebug("both not changed "); 734 //qDebug("both not changed ");
735 lastSync = local->lastModified().addDays(1); 735 lastSync = local->lastModified().addDays(1);
736 } else { 736 } else {
737 if ( locCh ) { 737 if ( locCh ) {
738 //qDebug("loc changed %d %d", local->zaurusStat(), local->revision() ); 738 //qDebug("loc changed %d %d", local->zaurusStat(), local->revision() );
739 lastSync = local->lastModified().addDays( -1 ); 739 lastSync = local->lastModified().addDays( -1 );
740 if ( !remCh ) 740 if ( !remCh )
741 remote->setLastModified( lastSync.addDays( -1 ) ); 741 remote->setLastModified( lastSync.addDays( -1 ) );
742 } else { 742 } else {
743 //qDebug(" not loc changed "); 743 //qDebug(" not loc changed ");
744 lastSync = local->lastModified().addDays( 1 ); 744 lastSync = local->lastModified().addDays( 1 );
745 if ( remCh ) 745 if ( remCh )
746 remote->setLastModified( lastSync.addDays( 1 ) ); 746 remote->setLastModified( lastSync.addDays( 1 ) );
747 747
748 } 748 }
749 } 749 }
750 full = true; 750 full = true;
751 if ( mode < SYNC_PREF_ASK ) 751 if ( mode < SYNC_PREF_ASK )
752 mode = SYNC_PREF_ASK; 752 mode = SYNC_PREF_ASK;
753 } else { 753 } else {
754 if ( local->lastModified() == remote->lastModified() ) 754 if ( local->lastModified() == remote->lastModified() )
755 if ( local->revision() == remote->revision() ) 755 if ( local->revision() == remote->revision() )
756 return 0; 756 return 0;
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->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
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-"+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-"+mCurrentSyncDevice ); 856 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice );
857 QString sum = ""; 857 QString sum = "";
858 if ( KOPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 858 if ( KOPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
859 sum = "E: "; 859 sum = "E: ";
860 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); 860 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event"));
861 lse->setDtStart( mLastCalendarSync ); 861 lse->setDtStart( mLastCalendarSync );
862 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 862 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
863 lse->setCategories( i18n("SyncEvent") ); 863 lse->setCategories( i18n("SyncEvent") );
864 lse->setReadOnly( true ); 864 lse->setReadOnly( true );
865 mCalendar->addEvent( lse ); 865 mCalendar->addEvent( lse );
866 } 866 }
867 867
868 return lse; 868 return lse;
869 869
870} 870}
871// probaly useless 871// probaly useless
872void CalendarView::setupExternSyncProfiles() 872void CalendarView::setupExternSyncProfiles()
873{ 873{
874 Event* lse; 874 Event* lse;
875 mExternLastSyncEvent.clear(); 875 mExternLastSyncEvent.clear();
876 int i; 876 int i;
877 for ( i = 0; i < KOPrefs::instance()->mExternSyncProfiles.count(); ++i ) { 877 for ( i = 0; i < KOPrefs::instance()->mExternSyncProfiles.count(); ++i ) {
878 lse = mCalendar->event( "last-syncEvent-"+ KOPrefs::instance()->mExternSyncProfiles[i] ); 878 lse = mCalendar->event( "last-syncEvent-"+ KOPrefs::instance()->mExternSyncProfiles[i] );
879 if ( lse ) 879 if ( lse )
880 mExternLastSyncEvent.append( lse ); 880 mExternLastSyncEvent.append( lse );
881 else 881 else
882 qDebug("Last Sync event not found for %s ", KOPrefs::instance()->mExternSyncProfiles[i].latin1()); 882 qDebug("Last Sync event not found for %s ", KOPrefs::instance()->mExternSyncProfiles[i].latin1());
883 } 883 }
884 884
885} 885}
886// we check, if the to delete event has a id for a profile 886// we check, if the to delete event has a id for a profile
887// if yes, we set this id in the profile to delete 887// if yes, we set this id in the profile to delete
888void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ) 888void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete )
889{ 889{
890 if ( ! lastSync.count() == 0 ) 890 if ( ! lastSync.count() == 0 )
891 return; 891 return;
892 if ( toDelete->type() == "Journal" ) 892 if ( toDelete->type() == "Journal" )
893 return; 893 return;
894 894
895 Event* eve = lastSync.first(); 895 Event* eve = lastSync.first();
896 896
897 while ( eve ) { 897 while ( eve ) {
898 int id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name 898 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name
899 if ( id >= 0 ) { 899 if ( !id.isEmpty() ) {
900 QString des = eve->description(); 900 QString des = eve->description();
901 QString pref = "e"; 901 QString pref = "e";
902 if ( toDelete->type() == "Todo" ) 902 if ( toDelete->type() == "Todo" )
903 pref = "t"; 903 pref = "t";
904 des += pref+ QString::number ( id ) + ","; 904 des += pref+ id + ",";
905 eve->setReadOnly( false ); 905 eve->setReadOnly( false );
906 eve->setDescription( des ); 906 eve->setDescription( des );
907 eve->setReadOnly( true ); 907 eve->setReadOnly( true );
908 } 908 }
909 eve = lastSync.next(); 909 eve = lastSync.next();
910 } 910 }
911 911
912} 912}
913void CalendarView::checkExternalId( Incidence * inc ) 913void CalendarView::checkExternalId( Incidence * inc )
914{ 914{
915 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ; 915 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ;
916 checkExternSyncEvent( lastSync, inc ); 916 checkExternSyncEvent( lastSync, inc );
917 917
918} 918}
919bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) 919bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode )
920{ 920{
921 bool syncOK = true; 921 bool syncOK = true;
922 int addedEvent = 0; 922 int addedEvent = 0;
923 int addedEventR = 0; 923 int addedEventR = 0;
924 int deletedEventR = 0; 924 int deletedEventR = 0;
925 int deletedEventL = 0; 925 int deletedEventL = 0;
926 int changedLocal = 0; 926 int changedLocal = 0;
927 int changedRemote = 0; 927 int changedRemote = 0;
928 //QPtrList<Event> el = local->rawEvents(); 928 //QPtrList<Event> el = local->rawEvents();
929 Event* eventR; 929 Event* eventR;
930 QString uid; 930 QString uid;
931 int take; 931 int take;
932 Event* eventL; 932 Event* eventL;
933 Event* eventRSync; 933 Event* eventRSync;
934 Event* eventLSync; 934 Event* eventLSync;
935 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents(); 935 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
936 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents(); 936 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
937 bool fullDateRange = false; 937 bool fullDateRange = false;
938 mLastCalendarSync = QDateTime::currentDateTime(); 938 mLastCalendarSync = QDateTime::currentDateTime();
939 QDateTime modifiedCalendar = mLastCalendarSync;; 939 QDateTime modifiedCalendar = mLastCalendarSync;;
940 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 940 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
941 if ( eventR ) { 941 if ( eventR ) {
942 eventRSync = (Event*) eventR->clone(); 942 eventRSync = (Event*) eventR->clone();
943 remote->deleteEvent(eventR ); 943 remote->deleteEvent(eventR );
944 944
945 } else { 945 } else {
946 fullDateRange = true; 946 fullDateRange = true;
947 eventRSync = new Event(); 947 eventRSync = new Event();
948 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 948 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
949 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); 949 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
950 eventRSync->setDtStart( mLastCalendarSync ); 950 eventRSync->setDtStart( mLastCalendarSync );
951 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 951 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
952 eventRSync->setCategories( i18n("SyncEvent") ); 952 eventRSync->setCategories( i18n("SyncEvent") );
953 } 953 }
954 eventLSync = getLastSyncEvent(); 954 eventLSync = getLastSyncEvent();
955 if ( eventLSync->dtStart() == mLastCalendarSync ) 955 if ( eventLSync->dtStart() == mLastCalendarSync )
956 fullDateRange = true; 956 fullDateRange = true;
957 957
958 if ( ! fullDateRange ) { 958 if ( ! fullDateRange ) {
959 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 959 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
960 960
961 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 961 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
962 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 962 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
963 fullDateRange = true; 963 fullDateRange = true;
964 } 964 }
965 } 965 }
966 if ( fullDateRange ) 966 if ( fullDateRange )
967 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 967 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
968 else 968 else
969 mLastCalendarSync = eventLSync->dtStart(); 969 mLastCalendarSync = eventLSync->dtStart();
970 // for resyncing if own file has changed 970 // for resyncing if own file has changed
971 if ( mCurrentSyncDevice == "deleteaftersync" ) { 971 if ( mCurrentSyncDevice == "deleteaftersync" ) {
972 mLastCalendarSync = loadedFileVersion; 972 mLastCalendarSync = loadedFileVersion;
973 qDebug("setting mLastCalendarSync "); 973 qDebug("setting mLastCalendarSync ");
974 } 974 }
975 //qDebug("*************************** "); 975 //qDebug("*************************** ");
976 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() ); 976 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() );
977 QPtrList<Incidence> er = remote->rawIncidences(); 977 QPtrList<Incidence> er = remote->rawIncidences();
978 Incidence* inR = er.first(); 978 Incidence* inR = er.first();
979 Incidence* inL; 979 Incidence* inL;
980 QProgressBar bar( er.count(),0 ); 980 QProgressBar bar( er.count(),0 );
981 bar.setCaption (i18n("Syncing - close to abort!") ); 981 bar.setCaption (i18n("Syncing - close to abort!") );
982 982
983 int w = 300; 983 int w = 300;
984 if ( QApplication::desktop()->width() < 320 ) 984 if ( QApplication::desktop()->width() < 320 )
985 w = 220; 985 w = 220;
986 int h = bar.sizeHint().height() ; 986 int h = bar.sizeHint().height() ;
987 int dw = QApplication::desktop()->width(); 987 int dw = QApplication::desktop()->width();
988 int dh = QApplication::desktop()->height(); 988 int dh = QApplication::desktop()->height();
989 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 989 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
990 bar.show(); 990 bar.show();
991 int modulo = (er.count()/10)+1; 991 int modulo = (er.count()/10)+1;
992 int incCounter = 0; 992 int incCounter = 0;
993 while ( inR ) { 993 while ( inR ) {
994 if ( ! bar.isVisible() ) 994 if ( ! bar.isVisible() )
995 return false; 995 return false;
996 if ( incCounter % modulo == 0 ) 996 if ( incCounter % modulo == 0 )
997 bar.setProgress( incCounter ); 997 bar.setProgress( incCounter );
998 ++incCounter; 998 ++incCounter;
999 uid = inR->uid(); 999 uid = inR->uid();
1000 bool skipIncidence = false; 1000 bool skipIncidence = false;
1001 if ( uid.left(15) == QString("last-syncEvent-") ) 1001 if ( uid.left(15) == QString("last-syncEvent-") )
1002 skipIncidence = true; 1002 skipIncidence = true;
1003 1003
1004 qApp->processEvents(); 1004 qApp->processEvents();
1005 if ( !skipIncidence ) { 1005 if ( !skipIncidence ) {
1006 inL = local->incidence( uid ); 1006 inL = local->incidence( uid );
1007 if ( inL ) { // maybe conflict - same uid in both calendars 1007 if ( inL ) { // maybe conflict - same uid in both calendars
1008 int maxrev = inL->revision(); 1008 int maxrev = inL->revision();
1009 if ( maxrev < inR->revision() ) 1009 if ( maxrev < inR->revision() )
1010 maxrev = inR->revision(); 1010 maxrev = inR->revision();
1011 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1011 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1012 //qDebug("take %d %s ", take, inL->summary().latin1()); 1012 //qDebug("take %d %s ", take, inL->summary().latin1());
1013 if ( take == 3 ) 1013 if ( take == 3 )
1014 return false; 1014 return false;
1015 if ( take == 1 ) {// take local 1015 if ( take == 1 ) {// take local
1016 inL->setZaurusUid( inR->zaurusUid() ); 1016 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1017 remote->deleteIncidence( inR ); 1017 remote->deleteIncidence( inR );
1018 if ( inL->revision() < maxrev ) 1018 if ( inL->revision() < maxrev )
1019 inL->setRevision( maxrev ); 1019 inL->setRevision( maxrev );
1020 remote->addIncidence( inL->clone() ); 1020 remote->addIncidence( inL->clone() );
1021 ++changedRemote; 1021 ++changedRemote;
1022 } else { 1022 } else {
1023 if ( inR->revision() < maxrev ) 1023 if ( inR->revision() < maxrev )
1024 inR->setRevision( maxrev ); 1024 inR->setRevision( maxrev );
1025 local->deleteIncidence( inL ); 1025 local->deleteIncidence( inL );
1026 local->addIncidence( inR->clone() ); 1026 local->addIncidence( inR->clone() );
1027 ++changedLocal; 1027 ++changedLocal;
1028 } 1028 }
1029 } 1029 }
1030 } else { // no conflict 1030 } else { // no conflict
1031 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1031 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1032 QString des = eventLSync->description(); 1032 QString des = eventLSync->description();
1033 QString pref = "e"; 1033 QString pref = "e";
1034 if ( inR->type() == "Todo" ) 1034 if ( inR->type() == "Todo" )
1035 pref = "t"; 1035 pref = "t";
1036 if ( des.find(pref+QString::number( inR->getID(mCurrentSyncDevice) ) +"," ) >= 0 && mode != 5) { // delete it 1036 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1037 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1037 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1038 //remote->deleteIncidence( inR ); 1038 //remote->deleteIncidence( inR );
1039 ++deletedEventR; 1039 ++deletedEventR;
1040 } else { 1040 } else {
1041 inR->setLastModified( modifiedCalendar ); 1041 inR->setLastModified( modifiedCalendar );
1042 local->addIncidence( inR->clone() ); 1042 local->addIncidence( inR->clone() );
1043 ++addedEvent; 1043 ++addedEvent;
1044 } 1044 }
1045 } else { 1045 } else {
1046 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1046 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1047 inR->setLastModified( modifiedCalendar ); 1047 inR->setLastModified( modifiedCalendar );
1048 local->addIncidence( inR->clone() ); 1048 local->addIncidence( inR->clone() );
1049 ++addedEvent; 1049 ++addedEvent;
1050 } else { 1050 } else {
1051 checkExternSyncEvent(eventRSyncSharp, inR); 1051 checkExternSyncEvent(eventRSyncSharp, inR);
1052 remote->deleteIncidence( inR ); 1052 remote->deleteIncidence( inR );
1053 ++deletedEventR; 1053 ++deletedEventR;
1054 } 1054 }
1055 } 1055 }
1056 } 1056 }
1057 } 1057 }
1058 inR = er.next(); 1058 inR = er.next();
1059 } 1059 }
1060 QPtrList<Incidence> el = local->rawIncidences(); 1060 QPtrList<Incidence> el = local->rawIncidences();
1061 inL = el.first(); 1061 inL = el.first();
1062 modulo = (el.count()/10)+1; 1062 modulo = (el.count()/10)+1;
1063 bar.setCaption (i18n("Add / remove events") ); 1063 bar.setCaption (i18n("Add / remove events") );
1064 bar.setTotalSteps ( el.count() ) ; 1064 bar.setTotalSteps ( el.count() ) ;
1065 bar.show(); 1065 bar.show();
1066 incCounter = 0; 1066 incCounter = 0;
1067 1067
1068 while ( inL ) { 1068 while ( inL ) {
1069 1069
1070 qApp->processEvents(); 1070 qApp->processEvents();
1071 if ( ! bar.isVisible() ) 1071 if ( ! bar.isVisible() )
1072 return false; 1072 return false;
1073 if ( incCounter % modulo == 0 ) 1073 if ( incCounter % modulo == 0 )
1074 bar.setProgress( incCounter ); 1074 bar.setProgress( incCounter );
1075 ++incCounter; 1075 ++incCounter;
1076 uid = inL->uid(); 1076 uid = inL->uid();
1077 bool skipIncidence = false; 1077 bool skipIncidence = false;
1078 if ( uid.left(15) == QString("last-syncEvent-") ) 1078 if ( uid.left(15) == QString("last-syncEvent-") )
1079 skipIncidence = true; 1079 skipIncidence = true;
1080 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" ) 1080 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" )
1081 skipIncidence = true; 1081 skipIncidence = true;
1082 if ( !skipIncidence ) { 1082 if ( !skipIncidence ) {
1083 inR = remote->incidence( uid ); 1083 inR = remote->incidence( uid );
1084 if ( ! inR ) { 1084 if ( ! inR ) {
1085 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1085 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1086 if ( inL->getID(mCurrentSyncDevice) >= 0 && mode != 4 ) { 1086 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1087 local->deleteIncidence( inL ); 1087 local->deleteIncidence( inL );
1088 ++deletedEventL; 1088 ++deletedEventL;
1089 } else { 1089 } else {
1090 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 1090 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
1091 inL->setID(mCurrentSyncDevice, -1 ); 1091 inL->removeID(mCurrentSyncDevice );
1092 ++addedEventR; 1092 ++addedEventR;
1093 inL->setLastModified( modifiedCalendar ); 1093 inL->setLastModified( modifiedCalendar );
1094 remote->addIncidence( inL->clone() ); 1094 remote->addIncidence( inL->clone() );
1095 } 1095 }
1096 } 1096 }
1097 } else { 1097 } else {
1098 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1098 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1099 checkExternSyncEvent(eventLSyncSharp, inL); 1099 checkExternSyncEvent(eventLSyncSharp, inL);
1100 local->deleteIncidence( inL ); 1100 local->deleteIncidence( inL );
1101 ++deletedEventL; 1101 ++deletedEventL;
1102 } else { 1102 } else {
1103 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 1103 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
1104 ++addedEventR; 1104 ++addedEventR;
1105 inL->setLastModified( modifiedCalendar ); 1105 inL->setLastModified( modifiedCalendar );
1106 remote->addIncidence( inL->clone() ); 1106 remote->addIncidence( inL->clone() );
1107 } 1107 }
1108 } 1108 }
1109 } 1109 }
1110 } 1110 }
1111 } 1111 }
1112 inL = el.next(); 1112 inL = el.next();
1113 } 1113 }
1114 1114
1115 bar.hide(); 1115 bar.hide();
1116 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1116 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1117 eventLSync->setReadOnly( false ); 1117 eventLSync->setReadOnly( false );
1118 eventLSync->setDtStart( mLastCalendarSync ); 1118 eventLSync->setDtStart( mLastCalendarSync );
1119 eventRSync->setDtStart( mLastCalendarSync ); 1119 eventRSync->setDtStart( mLastCalendarSync );
1120 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1120 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1121 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1121 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1122 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 1122 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
1123 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 1123 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
1124 eventLSync->setReadOnly( true ); 1124 eventLSync->setReadOnly( true );
1125 if ( mGlobalSyncMode == SYNC_MODE_NORMAL) 1125 if ( mGlobalSyncMode == SYNC_MODE_NORMAL)
1126 remote->addEvent( eventRSync ); 1126 remote->addEvent( eventRSync );
1127 QString mes; 1127 QString mes;
1128 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 ); 1128 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 );
1129 if ( KOPrefs::instance()->mShowSyncSummary ) { 1129 if ( KOPrefs::instance()->mShowSyncSummary ) {
1130 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") ); 1130 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") );
1131 } 1131 }
1132 qDebug( mes ); 1132 qDebug( mes );
1133 mCalendar->checkAlarmForIncidence( 0, true ); 1133 mCalendar->checkAlarmForIncidence( 0, true );
1134 return syncOK; 1134 return syncOK;
1135} 1135}
1136 1136
1137void CalendarView::setSyncDevice( QString s ) 1137void CalendarView::setSyncDevice( QString s )
1138{ 1138{
1139 mCurrentSyncDevice= s; 1139 mCurrentSyncDevice= s;
1140} 1140}
1141void CalendarView::setSyncName( QString s ) 1141void CalendarView::setSyncName( QString s )
1142{ 1142{
1143 mCurrentSyncName= s; 1143 mCurrentSyncName= s;
1144} 1144}
1145bool CalendarView::syncCalendar(QString filename, int mode) 1145bool CalendarView::syncCalendar(QString filename, int mode)
1146{ 1146{
1147 mGlobalSyncMode = SYNC_MODE_NORMAL; 1147 mGlobalSyncMode = SYNC_MODE_NORMAL;
1148 CalendarLocal* calendar = new CalendarLocal(); 1148 CalendarLocal* calendar = new CalendarLocal();
1149 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1149 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1150 FileStorage* storage = new FileStorage( calendar ); 1150 FileStorage* storage = new FileStorage( calendar );
1151 bool syncOK = false; 1151 bool syncOK = false;
1152 storage->setFileName( filename ); 1152 storage->setFileName( filename );
1153 // qDebug("loading ... "); 1153 // qDebug("loading ... ");
1154 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) { 1154 if ( storage->load(KOPrefs::instance()->mUseQuicksave) ) {
1155 getEventViewerDialog()->setSyncMode( true ); 1155 getEventViewerDialog()->setSyncMode( true );
1156 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1156 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1157 getEventViewerDialog()->setSyncMode( false ); 1157 getEventViewerDialog()->setSyncMode( false );
1158 if ( syncOK ) { 1158 if ( syncOK ) {
1159 if ( KOPrefs::instance()->mWriteBackFile ) 1159 if ( KOPrefs::instance()->mWriteBackFile )
1160 { 1160 {
1161 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) ); 1161 storage->setSaveFormat( new ICalFormat( KOPrefs::instance()->mUseQuicksave) );
1162 storage->save(); 1162 storage->save();
1163 } 1163 }
1164 } 1164 }
1165 setModified( true ); 1165 setModified( true );
1166 } 1166 }
1167 delete storage; 1167 delete storage;
1168 delete calendar; 1168 delete calendar;
1169 if ( syncOK ) 1169 if ( syncOK )
1170 updateView(); 1170 updateView();
1171 return syncOK; 1171 return syncOK;
1172} 1172}
1173void CalendarView::syncSharp() 1173void CalendarView::syncSharp()
1174{ 1174{
1175#ifndef DESKTOP_VERSION 1175#ifndef DESKTOP_VERSION
1176 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1176 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1177 //mCurrentSyncDevice = "sharp-DTM"; 1177 //mCurrentSyncDevice = "sharp-DTM";
1178 if ( KOPrefs::instance()->mAskForPreferences ) 1178 if ( KOPrefs::instance()->mAskForPreferences )
1179 edit_sync_options(); 1179 edit_sync_options();
1180 qApp->processEvents(); 1180 qApp->processEvents();
1181 CalendarLocal* calendar = new CalendarLocal(); 1181 CalendarLocal* calendar = new CalendarLocal();
1182 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1182 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1183 bool syncOK = false; 1183 bool syncOK = false;
1184 SharpFormat sharpFormat; 1184 SharpFormat sharpFormat;
1185 if ( sharpFormat.load( calendar, mCalendar ) ) { 1185 if ( sharpFormat.load( calendar, mCalendar ) ) {
1186 getEventViewerDialog()->setSyncMode( true ); 1186 getEventViewerDialog()->setSyncMode( true );
1187 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs ); 1187 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs );
1188 getEventViewerDialog()->setSyncMode( false ); 1188 getEventViewerDialog()->setSyncMode( false );
1189 qApp->processEvents(); 1189 qApp->processEvents();
1190 if ( syncOK ) { 1190 if ( syncOK ) {
1191 if ( KOPrefs::instance()->mWriteBackFile ) 1191 if ( KOPrefs::instance()->mWriteBackFile )
1192 { 1192 {
1193 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 1193 QPtrList<Incidence> iL = mCalendar->rawIncidences();
1194 Incidence* inc = iL.first(); 1194 Incidence* inc = iL.first();
1195 /* obsolete 1195 /* obsolete
1196 while ( inc ) { 1196 while ( inc ) {
1197 inc->setZaurusStat( inc->revision () ); 1197 inc->setZaurusStat( inc->revision () );
1198 inc = iL.next(); 1198 inc = iL.next();
1199 } 1199 }
1200 */ 1200 */
1201 // pending: clean last sync event description 1201 // pending: clean last sync event description
1202 sharpFormat.save(calendar); 1202 sharpFormat.save(calendar);
1203 iL = calendar->rawIncidences(); 1203 iL = calendar->rawIncidences();
1204 inc = iL.first(); 1204 inc = iL.first();
1205 Incidence* loc; 1205 Incidence* loc;
1206 while ( inc ) { 1206 while ( inc ) {
1207 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { 1207 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) {
1208 loc = mCalendar->incidence(inc->uid() ); 1208 loc = mCalendar->incidence(inc->uid() );
1209 if ( loc ) { 1209 if ( loc ) {
1210 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) ); 1210 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) );
1211 loc->setZaurusUid( inc->zaurusUid() ); 1211 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) );
1212 } 1212 }
1213 } 1213 }
1214 inc = iL.next(); 1214 inc = iL.next();
1215 } 1215 }
1216 Incidence* lse = getLastSyncEvent(); 1216 Incidence* lse = getLastSyncEvent();
1217 if ( lse ) { 1217 if ( lse ) {
1218 lse->setReadOnly( false ); 1218 lse->setReadOnly( false );
1219 lse->setDescription( "" ); 1219 lse->setDescription( "" );
1220 lse->setReadOnly( true ); 1220 lse->setReadOnly( true );
1221 } 1221 }
1222 } 1222 }
1223 } 1223 }
1224 setModified( true ); 1224 setModified( true );
1225 } else { 1225 } else {
1226 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; 1226 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ;
1227 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"), 1227 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"),
1228 question, i18n("Ok")) ; 1228 question, i18n("Ok")) ;
1229 1229
1230 } 1230 }
1231 delete calendar; 1231 delete calendar;
1232 updateView(); 1232 updateView();
1233 return ;//syncOK; 1233 return ;//syncOK;
1234#endif 1234#endif
1235} 1235}
1236 1236
1237 1237
1238#include <kabc/stdaddressbook.h> 1238#include <kabc/stdaddressbook.h>
1239bool CalendarView::importBday() 1239bool CalendarView::importBday()
1240{ 1240{
1241 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 1241 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
1242 KABC::AddressBook::Iterator it; 1242 KABC::AddressBook::Iterator it;
1243 int count = 0; 1243 int count = 0;
1244 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1244 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1245 ++count; 1245 ++count;
1246 } 1246 }
1247 QProgressBar bar(count,0 ); 1247 QProgressBar bar(count,0 );
1248 int w = 300; 1248 int w = 300;
1249 if ( QApplication::desktop()->width() < 320 ) 1249 if ( QApplication::desktop()->width() < 320 )
1250 w = 220; 1250 w = 220;
1251 int h = bar.sizeHint().height() ; 1251 int h = bar.sizeHint().height() ;
1252 int dw = QApplication::desktop()->width(); 1252 int dw = QApplication::desktop()->width();
1253 int dh = QApplication::desktop()->height(); 1253 int dh = QApplication::desktop()->height();
1254 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1254 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1255 bar.show(); 1255 bar.show();
1256 bar.setCaption (i18n("Reading addressbook - close to abort!") ); 1256 bar.setCaption (i18n("Reading addressbook - close to abort!") );
1257 qApp->processEvents(); 1257 qApp->processEvents();
1258 count = 0; 1258 count = 0;
1259 int addCount = 0; 1259 int addCount = 0;
1260 KCal::Attendee* a = 0; 1260 KCal::Attendee* a = 0;
1261 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1261 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1262 if ( ! bar.isVisible() ) 1262 if ( ! bar.isVisible() )
1263 return false; 1263 return false;
1264 bar.setProgress( count++ ); 1264 bar.setProgress( count++ );
1265 qApp->processEvents(); 1265 qApp->processEvents();
1266 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() ); 1266 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() );
1267 if ( (*it).birthday().date().isValid() ){ 1267 if ( (*it).birthday().date().isValid() ){
1268 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1268 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1269 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) ) 1269 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) )
1270 ++addCount; 1270 ++addCount;
1271 } 1271 }
1272 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); 1272 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d");
1273 if ( anni.isValid() ){ 1273 if ( anni.isValid() ){
1274 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1274 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1275 if ( addAnniversary( anni, (*it).assembledName(), a, false ) ) 1275 if ( addAnniversary( anni, (*it).assembledName(), a, false ) )
1276 ++addCount; 1276 ++addCount;
1277 } 1277 }
1278 } 1278 }
1279 updateView(); 1279 updateView();
1280 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 1280 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
1281 return true; 1281 return true;
1282} 1282}
1283 1283
1284bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday) 1284bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday)
1285{ 1285{
1286 //qDebug("addAnni "); 1286 //qDebug("addAnni ");
1287 Event * ev = new Event(); 1287 Event * ev = new Event();
1288 if ( a ) { 1288 if ( a ) {
1289 ev->addAttendee( a ); 1289 ev->addAttendee( a );
1290 } 1290 }
1291 QString kind; 1291 QString kind;
1292 if ( birthday ) 1292 if ( birthday )
1293 kind = i18n( "Birthday" ); 1293 kind = i18n( "Birthday" );
1294 else 1294 else
1295 kind = i18n( "Anniversary" ); 1295 kind = i18n( "Anniversary" );
1296 ev->setSummary( name + " - " + kind ); 1296 ev->setSummary( name + " - " + kind );
1297 ev->setOrganizer( "nobody@nowhere" ); 1297 ev->setOrganizer( "nobody@nowhere" );
1298 ev->setCategories( kind ); 1298 ev->setCategories( kind );
1299 ev->setDtStart( QDateTime(date) ); 1299 ev->setDtStart( QDateTime(date) );
1300 ev->setDtEnd( QDateTime(date) ); 1300 ev->setDtEnd( QDateTime(date) );
1301 ev->setFloats( true ); 1301 ev->setFloats( true );
1302 Recurrence * rec = ev->recurrence(); 1302 Recurrence * rec = ev->recurrence();
1303 rec->setYearly(Recurrence::rYearlyMonth,1,-1); 1303 rec->setYearly(Recurrence::rYearlyMonth,1,-1);
1304 rec->addYearlyNum( date.month() ); 1304 rec->addYearlyNum( date.month() );
1305 if ( !mCalendar->addAnniversaryNoDup( ev ) ) { 1305 if ( !mCalendar->addAnniversaryNoDup( ev ) ) {
1306 delete ev; 1306 delete ev;
1307 return false; 1307 return false;