summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-11-25 22:16:50 (UTC)
committer zautrix <zautrix>2005-11-25 22:16:50 (UTC)
commitb71ee5442df23bb9900d3db6e6244773ee34ef13 (patch) (unidiff)
tree221ac1af78b4fcbf741a48687f28570216f89049
parent81d012860ea3d5d17d0e9cf16ec992baa83efbbf (diff)
downloadkdepimpi-b71ee5442df23bb9900d3db6e6244773ee34ef13.zip
kdepimpi-b71ee5442df23bb9900d3db6e6244773ee34ef13.tar.gz
kdepimpi-b71ee5442df23bb9900d3db6e6244773ee34ef13.tar.bz2
sync
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp11
-rw-r--r--libkdepim/ksyncmanager.cpp48
-rw-r--r--libkdepim/ksyncmanager.h2
3 files changed, 50 insertions, 11 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index e45240a..6128137 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -476,2185 +476,2188 @@ void CalendarView::init()
476 connect( mCalEditView, SIGNAL( calendarEnabled (int,bool) ),mCalendar, SLOT( setCalendarEnabled(int,bool)) ); 476 connect( mCalEditView, SIGNAL( calendarEnabled (int,bool) ),mCalendar, SLOT( setCalendarEnabled(int,bool)) );
477 connect( mCalEditView, SIGNAL( alarmEnabled(int,bool) ),mCalendar, SLOT( setAlarmEnabled(int,bool)) ); 477 connect( mCalEditView, SIGNAL( alarmEnabled(int,bool) ),mCalendar, SLOT( setAlarmEnabled(int,bool)) );
478 connect( mCalEditView, SIGNAL( calendarReadonly(int,bool) ),this, SLOT( setCalReadOnly(int,bool)) ); 478 connect( mCalEditView, SIGNAL( calendarReadonly(int,bool) ),this, SLOT( setCalReadOnly(int,bool)) );
479 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mCalendar, SLOT( setDefaultCalendar(int)) ); 479 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mCalendar, SLOT( setDefaultCalendar(int)) );
480 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mViewManager, SLOT( setDefaultCalendar(int)) ); 480 connect( mCalEditView, SIGNAL( setCalendarDefault(int) ),mViewManager, SLOT( setDefaultCalendar(int)) );
481 connect( mCalEditView, SIGNAL( removeCalendar(int) ),mCalendar, SLOT( setCalendarRemove(int)) ); 481 connect( mCalEditView, SIGNAL( removeCalendar(int) ),mCalendar, SLOT( setCalendarRemove(int)) );
482 connect( mCalEditView, SIGNAL( calendarAdded(int) ),this, SLOT( addCalendarId(int)) ); 482 connect( mCalEditView, SIGNAL( calendarAdded(int) ),this, SLOT( addCalendarId(int)) );
483 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateView()) ); 483 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateView()) );
484 connect( mCalEditView, SIGNAL( checkCalendar() ),this, SLOT( checkFiles() )); 484 connect( mCalEditView, SIGNAL( checkCalendar() ),this, SLOT( checkFiles() ));
485 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateUnmanagedViews()) ); 485 connect( mCalEditView, SIGNAL( needsUpdate() ),this, SLOT( updateUnmanagedViews()) );
486 connect( mCalEditView, SIGNAL( requestCalendarInfo( int ) ),this, SLOT( displayCalendarInfo( int ) ) ); 486 connect( mCalEditView, SIGNAL( requestCalendarInfo( int ) ),this, SLOT( displayCalendarInfo( int ) ) );
487 487
488 488
489 mTodoList->setNavigator( mNavigator ); 489 mTodoList->setNavigator( mNavigator );
490#if 0 490#if 0
491 if ( QApplication::desktop()->width() < 480 ) { 491 if ( QApplication::desktop()->width() < 480 ) {
492 leftFrameLayout->addWidget(mFilterView); 492 leftFrameLayout->addWidget(mFilterView);
493 leftFrameLayout->addWidget(mTodoList, 2 ); 493 leftFrameLayout->addWidget(mTodoList, 2 );
494 494
495 } else { 495 } else {
496 leftFrameLayout->addWidget(mTodoList,2 ); 496 leftFrameLayout->addWidget(mTodoList,2 );
497 leftFrameLayout->addWidget(mFilterView ); 497 leftFrameLayout->addWidget(mFilterView );
498 } 498 }
499#endif 499#endif
500 mFilterView->hide(); 500 mFilterView->hide();
501 mCalEditView->hide(); 501 mCalEditView->hide();
502 QWidget *rightBox = new QWidget( mMainFrame ); 502 QWidget *rightBox = new QWidget( mMainFrame );
503 //mainBoxLayout->addWidget ( rightBox, 10 ); 503 //mainBoxLayout->addWidget ( rightBox, 10 );
504 QBoxLayout *rightLayout = new QVBoxLayout( rightBox ); 504 QBoxLayout *rightLayout = new QVBoxLayout( rightBox );
505 mRightFrame = new QWidgetStack( rightBox ); 505 mRightFrame = new QWidgetStack( rightBox );
506 rightLayout->addWidget( mRightFrame, 10 ); 506 rightLayout->addWidget( mRightFrame, 10 );
507 507
508 //mLeftFrame = (QWidget *)leftFrame; 508 //mLeftFrame = (QWidget *)leftFrame;
509 if ( KOPrefs::instance()->mVerticalScreen ) { 509 if ( KOPrefs::instance()->mVerticalScreen ) {
510 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() ); 510 //mDateNavigator->setFixedHeight( mDateNavigator->sizeHint().height() );
511 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() ); 511 //mDateNavigator->setMinimumWidth( mDateNavigator->sizeHint().width() );
512 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() ); 512 //mTodoList->setFixedHeight( mDateNavigator->sizeHint().height() );
513 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() ); 513 //leftFrame->setFixedHeight( mDateNavigator->sizeHint().height() );
514 } else { 514 } else {
515 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() ); 515 //mDateNavigator->setFixedWidth( mDateNavigator->sizeHint().width() );
516 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() ); 516 //mTodoList->setFixedWidth( mDateNavigator->sizeHint().width() );
517 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() ); 517 //leftFrame->setFixedWidth( mDateNavigator->sizeHint().width() );
518 } 518 }
519 if ( !KOPrefs::instance()->mShowDateNavigator) 519 if ( !KOPrefs::instance()->mShowDateNavigator)
520 mDateNavigator->hide(); 520 mDateNavigator->hide();
521 //qDebug("Calendarview Size %d %d ", width(), height()); 521 //qDebug("Calendarview Size %d %d ", width(), height());
522#endif 522#endif
523 523
524 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 524 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
525 SLOT( showDates( const KCal::DateList & ) ) ); 525 SLOT( showDates( const KCal::DateList & ) ) );
526 526
527 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 527 connect( mNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
528 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 528 mDateNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
529 529
530 530
531 531
532 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ), 532 connect( mDateNavigator, SIGNAL( showMonth( const QDate & ) ),
533 mViewManager, SLOT( showMonth( const QDate & ) ) ); 533 mViewManager, SLOT( showMonth( const QDate & ) ) );
534 534
535 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ), 535 connect( mDateNavigator, SIGNAL( weekClicked( const QDate & ) ),
536 mNavigator, SLOT( selectWeek( const QDate & ) ) ); 536 mNavigator, SLOT( selectWeek( const QDate & ) ) );
537 537
538 connect( mDateNavigator, SIGNAL( goPrevYear() ), 538 connect( mDateNavigator, SIGNAL( goPrevYear() ),
539 mNavigator, SLOT( selectPreviousYear() ) ); 539 mNavigator, SLOT( selectPreviousYear() ) );
540 connect( mDateNavigator, SIGNAL( goNextYear() ), 540 connect( mDateNavigator, SIGNAL( goNextYear() ),
541 mNavigator, SLOT( selectNextYear() ) ); 541 mNavigator, SLOT( selectNextYear() ) );
542 connect( mDateNavigator, SIGNAL( goPrevMonth() ), 542 connect( mDateNavigator, SIGNAL( goPrevMonth() ),
543 mNavigator, SLOT( selectPreviousMonth() ) ); 543 mNavigator, SLOT( selectPreviousMonth() ) );
544 connect( mDateNavigator, SIGNAL( goNextMonth() ), 544 connect( mDateNavigator, SIGNAL( goNextMonth() ),
545 mNavigator, SLOT( selectNextMonth() ) ); 545 mNavigator, SLOT( selectNextMonth() ) );
546 546
547 connect( mDateNavigator, SIGNAL( goPrevious() ), 547 connect( mDateNavigator, SIGNAL( goPrevious() ),
548 mNavigator, SLOT( selectPrevious() ) ); 548 mNavigator, SLOT( selectPrevious() ) );
549 connect( mDateNavigator, SIGNAL( goNext() ), 549 connect( mDateNavigator, SIGNAL( goNext() ),
550 mNavigator, SLOT( selectNext() ) ); 550 mNavigator, SLOT( selectNext() ) );
551 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ), 551 connect( mDateNavigator, SIGNAL( monthSelected ( int ) ),
552 mNavigator, SLOT( slotMonthSelect( int ) ) ); 552 mNavigator, SLOT( slotMonthSelect( int ) ) );
553 553
554 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ), 554 connect( mDateNavigator, SIGNAL( datesSelected( const KCal::DateList & ) ),
555 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) ); 555 mNavigator, SLOT( selectDates( const KCal::DateList & ) ) );
556#if 0 556#if 0
557 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ), 557 connect( mDateNavigator, SIGNAL( incidenceDropped( Incidence * ) ),
558 SLOT( incidenceAdded( Incidence *) ) ); 558 SLOT( incidenceAdded( Incidence *) ) );
559#endif 559#endif
560 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView())); 560 // connect(mDateNavigator,SIGNAL(dayPassed(QDate)),SLOT(updateView()));
561 561
562 connect( this, SIGNAL( configChanged() ), 562 connect( this, SIGNAL( configChanged() ),
563 mDateNavigator, SLOT( updateConfig() ) ); 563 mDateNavigator, SLOT( updateConfig() ) );
564 564
565 connect( mTodoList, SIGNAL( newTodoSignal() ), 565 connect( mTodoList, SIGNAL( newTodoSignal() ),
566 SLOT( newTodo() ) ); 566 SLOT( newTodo() ) );
567 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ), 567 connect( mTodoList, SIGNAL( newSubTodoSignal( Todo *) ),
568 SLOT( newSubTodo( Todo * ) ) ); 568 SLOT( newSubTodo( Todo * ) ) );
569 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ), 569 connect( mTodoList, SIGNAL( editTodoSignal( Todo * ) ),
570 SLOT( editTodo( Todo * ) ) ); 570 SLOT( editTodo( Todo * ) ) );
571 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ), 571 connect( mTodoList, SIGNAL( showTodoSignal( Todo * ) ),
572 SLOT( showTodo( Todo *) ) ); 572 SLOT( showTodo( Todo *) ) );
573 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ), 573 connect( mTodoList, SIGNAL( deleteTodoSignal( Todo *) ),
574 SLOT( deleteTodo( Todo *) ) ); 574 SLOT( deleteTodo( Todo *) ) );
575 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) ); 575 connect( this, SIGNAL( configChanged()), mTodoList, SLOT( updateConfig() ) );
576 connect( mTodoList, SIGNAL( purgeCompletedSignal() ), 576 connect( mTodoList, SIGNAL( purgeCompletedSignal() ),
577 SLOT( purgeCompleted() ) ); 577 SLOT( purgeCompleted() ) );
578 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ), 578 connect( mTodoList, SIGNAL( todoModifiedSignal( Todo *, int ) ),
579 SIGNAL( todoModified( Todo *, int ) ) ); 579 SIGNAL( todoModified( Todo *, int ) ) );
580 580
581 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ), 581 connect( mTodoList, SIGNAL( cloneTodoSignal( Incidence * ) ),
582 this, SLOT ( cloneIncidence( Incidence * ) ) ); 582 this, SLOT ( cloneIncidence( Incidence * ) ) );
583 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ), 583 connect( mTodoList, SIGNAL( cancelTodoSignal( Incidence * ) ),
584 this, SLOT (cancelIncidence( Incidence * ) ) ); 584 this, SLOT (cancelIncidence( Incidence * ) ) );
585 585
586 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ), 586 connect( mTodoList, SIGNAL( moveTodoSignal( Incidence * ) ),
587 this, SLOT ( moveIncidence( Incidence * ) ) ); 587 this, SLOT ( moveIncidence( Incidence * ) ) );
588 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ), 588 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ),
589 this, SLOT ( beamIncidence( Incidence * ) ) ); 589 this, SLOT ( beamIncidence( Incidence * ) ) );
590 590
591 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ), 591 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ),
592 this, SLOT ( todo_unsub( Todo * ) ) ); 592 this, SLOT ( todo_unsub( Todo * ) ) );
593 593
594 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ), 594 connect( mTodoList, SIGNAL( reparentTodoSignal( Todo *,Todo * ) ),
595 this, SLOT ( todo_resub( Todo *,Todo * ) ) ); 595 this, SLOT ( todo_resub( Todo *,Todo * ) ) );
596 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList, 596 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList,
597 SLOT( updateTodo( Todo *, int ) ) ); 597 SLOT( updateTodo( Todo *, int ) ) );
598 connect( this, SIGNAL( todoModified( Todo *, int )), this, 598 connect( this, SIGNAL( todoModified( Todo *, int )), this,
599 SLOT( changeTodoDisplay( Todo *, int ) ) ); 599 SLOT( changeTodoDisplay( Todo *, int ) ) );
600 600
601 601
602 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) ); 602 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) );
603 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) ); 603 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) );
604 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) ); 604 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) );
605 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) ); 605 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) );
606 606
607 607
608 608
609 609
610 610
611 connect(QApplication::clipboard(),SIGNAL(dataChanged()), 611 connect(QApplication::clipboard(),SIGNAL(dataChanged()),
612 SLOT(checkClipboard())); 612 SLOT(checkClipboard()));
613 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ), 613 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ),
614 SLOT( processTodoListSelection( Incidence * ) ) ); 614 SLOT( processTodoListSelection( Incidence * ) ) );
615 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool))); 615 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool)));
616 616
617 // kdDebug() << "CalendarView::CalendarView() done" << endl; 617 // kdDebug() << "CalendarView::CalendarView() done" << endl;
618 618
619 mDateFrame = new QVBox(0,0,WType_Popup); 619 mDateFrame = new QVBox(0,0,WType_Popup);
620 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised); 620 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised);
621 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised ); 621 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised );
622 mDateFrame->setLineWidth(3); 622 mDateFrame->setLineWidth(3);
623 mDateFrame->hide(); 623 mDateFrame->hide();
624 mDateFrame->setCaption( i18n( "Pick a date to display")); 624 mDateFrame->setCaption( i18n( "Pick a date to display"));
625 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() ); 625 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() );
626 626
627 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate))); 627 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate)));
628 628
629 mEventEditor = mDialogManager->getEventEditor(); 629 mEventEditor = mDialogManager->getEventEditor();
630 mTodoEditor = mDialogManager->getTodoEditor(); 630 mTodoEditor = mDialogManager->getTodoEditor();
631 631
632 mFlagEditDescription = false; 632 mFlagEditDescription = false;
633 633
634 mSuspendTimer = new QTimer( this ); 634 mSuspendTimer = new QTimer( this );
635 mAlarmTimer = new QTimer( this ); 635 mAlarmTimer = new QTimer( this );
636 mRecheckAlarmTimer = new QTimer( this ); 636 mRecheckAlarmTimer = new QTimer( this );
637 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) ); 637 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) );
638 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) ); 638 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) );
639 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) ); 639 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) );
640 mAlarmDialog = new AlarmDialog( this ); 640 mAlarmDialog = new AlarmDialog( this );
641 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) ); 641 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) );
642 mAlarmDialog->setServerNotification( false ); 642 mAlarmDialog->setServerNotification( false );
643 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime ); 643 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime );
644 644
645 645
646#ifndef DESKTOP_VERSION 646#ifndef DESKTOP_VERSION
647//US listen for arriving address resultsets 647//US listen for arriving address resultsets
648 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)), 648 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)),
649 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&))); 649 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)));
650#endif 650#endif
651 mDateNavigator->setCalendar( mCalendar ); 651 mDateNavigator->setCalendar( mCalendar );
652} 652}
653 653
654 654
655CalendarView::~CalendarView() 655CalendarView::~CalendarView()
656{ 656{
657 // kdDebug() << "~CalendarView()" << endl; 657 // kdDebug() << "~CalendarView()" << endl;
658 //qDebug("CalendarView::~CalendarView() "); 658 //qDebug("CalendarView::~CalendarView() ");
659 delete mDialogManager; 659 delete mDialogManager;
660 delete mViewManager; 660 delete mViewManager;
661 delete mStorage; 661 delete mStorage;
662 delete mDateFrame ; 662 delete mDateFrame ;
663 delete mEventViewerDialog; 663 delete mEventViewerDialog;
664 //kdDebug() << "~CalendarView() done" << endl; 664 //kdDebug() << "~CalendarView() done" << endl;
665} 665}
666 666
667 667
668void CalendarView::nextConflict( bool all, bool allday ) 668void CalendarView::nextConflict( bool all, bool allday )
669{ 669{
670 if ( flag_blockConflict ) return; 670 if ( flag_blockConflict ) return;
671 flag_blockConflict = true; 671 flag_blockConflict = true;
672 QPtrList<Event> testlist = mCalendar->events(); 672 QPtrList<Event> testlist = mCalendar->events();
673 Event * test = testlist.first(); 673 Event * test = testlist.first();
674 while ( test ) { 674 while ( test ) {
675 test->setTagged( false ); 675 test->setTagged( false );
676 test = testlist.next(); 676 test = testlist.next();
677 } 677 }
678 QTime st ( 0,0,0); 678 QTime st ( 0,0,0);
679 if ( mViewManager->currentView() == mViewManager->agendaView() ) 679 if ( mViewManager->currentView() == mViewManager->agendaView() )
680 st = mViewManager->agendaView()->agenda()->getEndTime(); 680 st = mViewManager->agendaView()->agenda()->getEndTime();
681 //qDebug("time %s ", st.toString().latin1()); 681 //qDebug("time %s ", st.toString().latin1());
682 QDateTime startDT = QDateTime (mNavigator->selectedDates().first(),st); 682 QDateTime startDT = QDateTime (mNavigator->selectedDates().first(),st);
683 QDateTime conflict; 683 QDateTime conflict;
684 QDateTime retVal; 684 QDateTime retVal;
685 bool found = false; 685 bool found = false;
686 Event * cE = 0; 686 Event * cE = 0;
687 Event * cE2 = 0; 687 Event * cE2 = 0;
688 QPtrList<Event> testlist2 = testlist; 688 QPtrList<Event> testlist2 = testlist;
689 test = testlist.first(); 689 test = testlist.first();
690 bool skip = false; 690 bool skip = false;
691 topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") ); 691 topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") );
692 //QTime tm; 692 //QTime tm;
693 //tm.start(); 693 //tm.start();
694 while ( test ) { 694 while ( test ) {
695 qApp->processEvents(); 695 qApp->processEvents();
696 skip = false; 696 skip = false;
697 if ( !all ) skip = ( allday != test->doesFloat() ); 697 if ( !all ) skip = ( allday != test->doesFloat() );
698 if ( !skip ) { 698 if ( !skip ) {
699 if ( found ) 699 if ( found )
700 skip = !test->matchTime( &startDT, &conflict ); 700 skip = !test->matchTime( &startDT, &conflict );
701 else 701 else
702 skip = !test->matchTime( &startDT, 0 ); 702 skip = !test->matchTime( &startDT, 0 );
703 } 703 }
704 if ( !skip ) { 704 if ( !skip ) {
705 Event * test2 = testlist2.first(); 705 Event * test2 = testlist2.first();
706 while ( test2 ) { 706 while ( test2 ) {
707 skip = test2->isTagged(); 707 skip = test2->isTagged();
708 if ( !skip && !all ) skip = ( allday != test2->doesFloat() ); 708 if ( !skip && !all ) skip = ( allday != test2->doesFloat() );
709 if ( !skip ) { 709 if ( !skip ) {
710 if ( found ) 710 if ( found )
711 skip = !test2->matchTime( &startDT, &conflict ); 711 skip = !test2->matchTime( &startDT, &conflict );
712 else 712 else
713 skip = !test2->matchTime( &startDT, 0 ); 713 skip = !test2->matchTime( &startDT, 0 );
714 } 714 }
715 if ( !skip ) { 715 if ( !skip ) {
716 if ( test->isOverlapping ( test2, &retVal, &startDT ) ) { 716 if ( test->isOverlapping ( test2, &retVal, &startDT ) ) {
717 //qDebug("overlap "); 717 //qDebug("overlap ");
718 if ( ! found ) { 718 if ( ! found ) {
719 if ( retVal >= startDT ) { 719 if ( retVal >= startDT ) {
720 conflict = retVal; 720 conflict = retVal;
721 cE = test; 721 cE = test;
722 cE2 = test2; 722 cE2 = test2;
723 found = true; 723 found = true;
724 } 724 }
725 } else { 725 } else {
726 if ( retVal >= startDT && retVal < conflict ) { 726 if ( retVal >= startDT && retVal < conflict ) {
727 conflict = retVal; 727 conflict = retVal;
728 cE = test; 728 cE = test;
729 cE2 = test2; 729 cE2 = test2;
730 } 730 }
731 } 731 }
732 } 732 }
733 } 733 }
734 test2 = testlist2.next(); 734 test2 = testlist2.next();
735 } 735 }
736 } 736 }
737 test->setTagged( true ); 737 test->setTagged( true );
738 test = testlist.next(); 738 test = testlist.next();
739 } 739 }
740 //qDebug("Search time : %d", tm.elapsed()); 740 //qDebug("Search time : %d", tm.elapsed());
741 if ( found ) { 741 if ( found ) {
742 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 ) 742 if ( mViewManager->currentView() != mViewManager->agendaView() || mNavigator->selectedDates().count() > 1 )
743 mViewManager->showDayView(); 743 mViewManager->showDayView();
744 mNavigator->slotDaySelect( conflict.date() ); 744 mNavigator->slotDaySelect( conflict.date() );
745 int hour = conflict.time().hour(); 745 int hour = conflict.time().hour();
746 mViewManager->agendaView()->setStartHour( hour ); 746 mViewManager->agendaView()->setStartHour( hour );
747 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( cE->summary().left( 20 ) ).arg( cE2->summary().left( 20 ) ) ); 747 topLevelWidget()->setCaption( i18n("Conflict %1 <-> %2"). arg( cE->summary().left( 20 ) ).arg( cE2->summary().left( 20 ) ) );
748 flag_blockConflict = false; 748 flag_blockConflict = false;
749 return; 749 return;
750 } 750 }
751 751
752 topLevelWidget()->setCaption( i18n("No conflict found") ); 752 topLevelWidget()->setCaption( i18n("No conflict found") );
753 //qDebug("No conflict found "); 753 //qDebug("No conflict found ");
754 flag_blockConflict = false; 754 flag_blockConflict = false;
755 return; 755 return;
756} 756}
757 757
758void CalendarView::conflictAll() 758void CalendarView::conflictAll()
759{ 759{
760 nextConflict ( true, true ); 760 nextConflict ( true, true );
761} 761}
762void CalendarView::conflictAllday() 762void CalendarView::conflictAllday()
763{ 763{
764 nextConflict ( false, true ); 764 nextConflict ( false, true );
765} 765}
766void CalendarView::conflictNotAll() 766void CalendarView::conflictNotAll()
767{ 767{
768 nextConflict ( false, false ); 768 nextConflict ( false, false );
769} 769}
770 770
771void CalendarView::setCalReadOnly( int id, bool readO ) 771void CalendarView::setCalReadOnly( int id, bool readO )
772{ 772{
773 if ( readO ) { 773 if ( readO ) {
774 emit save(); 774 emit save();
775 } 775 }
776 mCalendar->setReadOnly( id, readO ); 776 mCalendar->setReadOnly( id, readO );
777} 777}
778void CalendarView::setScrollBarStep(int val ) 778void CalendarView::setScrollBarStep(int val )
779{ 779{
780#ifdef DESKTOP_VERSION 780#ifdef DESKTOP_VERSION
781 mDateScrollBar->setLineStep ( val ); 781 mDateScrollBar->setLineStep ( val );
782#endif 782#endif
783} 783}
784void CalendarView::scrollBarValue(int val ) 784void CalendarView::scrollBarValue(int val )
785{ 785{
786#ifdef DESKTOP_VERSION 786#ifdef DESKTOP_VERSION
787 if ( QApplication::desktop()->width() < 800 ) return; 787 if ( QApplication::desktop()->width() < 800 ) return;
788 if ( flag_blockScrollBar ) return; 788 if ( flag_blockScrollBar ) return;
789 flag_blockScrollBar = true; 789 flag_blockScrollBar = true;
790 int count = mNavigator->selectedDates().count(); 790 int count = mNavigator->selectedDates().count();
791 int day = mNavigator->selectedDates().first().dayOfYear(); 791 int day = mNavigator->selectedDates().first().dayOfYear();
792 int stepdays = val; 792 int stepdays = val;
793 if ( mDateScrollBar->lineStep () <= count ) { 793 if ( mDateScrollBar->lineStep () <= count ) {
794 //val = val/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep(); 794 //val = val/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep();
795 //qDebug("VAL %d ",val ); 795 //qDebug("VAL %d ",val );
796 stepdays = (val-day)/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep(); 796 stepdays = (val-day)/mDateScrollBar->lineStep ()*mDateScrollBar->lineStep();
797 stepdays = day+stepdays; 797 stepdays = day+stepdays;
798 if ( stepdays < 0 ) stepdays = 0; 798 if ( stepdays < 0 ) stepdays = 0;
799 } 799 }
800 if ( stepdays == day ) { 800 if ( stepdays == day ) {
801 flag_blockScrollBar = false; 801 flag_blockScrollBar = false;
802 return; 802 return;
803 } 803 }
804 int year = mNavigator->selectedDates().first().year(); 804 int year = mNavigator->selectedDates().first().year();
805 QDate d ( year,1,1 ); 805 QDate d ( year,1,1 );
806 mNavigator->selectDates( d.addDays( stepdays-1) , count ); 806 mNavigator->selectDates( d.addDays( stepdays-1) , count );
807 flag_blockScrollBar = false; 807 flag_blockScrollBar = false;
808#endif 808#endif
809 809
810} 810}
811void CalendarView::updateView(const QDate &start, const QDate &end) 811void CalendarView::updateView(const QDate &start, const QDate &end)
812{ 812{
813#ifdef DESKTOP_VERSION 813#ifdef DESKTOP_VERSION
814 if ( ! mDateScrollBar->draggingSlider () ) { 814 if ( ! mDateScrollBar->draggingSlider () ) {
815 int dof = start.dayOfYear(); 815 int dof = start.dayOfYear();
816 //qDebug("dof %d day %d val %d ", dof, start.dayOfYear(),mDateScrollBar->value() ); 816 //qDebug("dof %d day %d val %d ", dof, start.dayOfYear(),mDateScrollBar->value() );
817 if ( dof != mDateScrollBar->value() ) { 817 if ( dof != mDateScrollBar->value() ) {
818 mDateScrollBar->blockSignals( true ); 818 mDateScrollBar->blockSignals( true );
819 mDateScrollBar->setValue( start.dayOfYear()); 819 mDateScrollBar->setValue( start.dayOfYear());
820 mDateScrollBar->blockSignals( false ); 820 mDateScrollBar->blockSignals( false );
821 } 821 }
822 } 822 }
823#endif 823#endif
824 mTodoList->updateView(); 824 mTodoList->updateView();
825 mViewManager->updateView(start, end); 825 mViewManager->updateView(start, end);
826 //mDateNavigator->updateView(); 826 //mDateNavigator->updateView();
827} 827}
828 828
829 829
830 830
831void CalendarView::checkFiles() 831void CalendarView::checkFiles()
832{ 832{
833 QString message; 833 QString message;
834 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 834 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
835 KopiCalendarFile * cal = calendars.first(); 835 KopiCalendarFile * cal = calendars.first();
836 while ( cal ) { 836 while ( cal ) {
837 if ( cal->mErrorOnLoad ) { 837 if ( cal->mErrorOnLoad ) {
838 message += cal->mName +"\n"+KGlobal::formatMessage ( "(" +i18n( "Filepath: ")+ cal->mFileName+")" ,0 )+"\n"; 838 message += cal->mName +"\n"+KGlobal::formatMessage ( "(" +i18n( "Filepath: ")+ cal->mFileName+")" ,0 )+"\n";
839 } 839 }
840 cal = calendars.next(); 840 cal = calendars.next();
841 } 841 }
842 if ( !message.isEmpty() ) { 842 if ( !message.isEmpty() ) {
843 message = KGlobal::formatMessage( i18n("Calendar(s) not loaded:"),0 )+"\n" + message +KGlobal::formatMessage(i18n("You can try to reload the calendar in the Resource View!"),0); 843 message = KGlobal::formatMessage( i18n("Calendar(s) not loaded:"),0 )+"\n" + message +KGlobal::formatMessage(i18n("You can try to reload the calendar in the Resource View!"),0);
844 KMessageBox::error(this,message, i18n("Loading of calendar(s) failed")); 844 KMessageBox::error(this,message, i18n("Loading of calendar(s) failed"));
845 } 845 }
846 if ( flag_checkFileFirsttime ) { 846 if ( flag_checkFileFirsttime ) {
847 flag_checkFileFirsttime = false; 847 flag_checkFileFirsttime = false;
848 QTimer::singleShot( 2000, this, SLOT ( checkAlarms() )); 848 QTimer::singleShot( 2000, this, SLOT ( checkAlarms() ));
849 } 849 }
850} 850}
851void CalendarView::checkAlarms() 851void CalendarView::checkAlarms()
852{ 852{
853 KConfig *config = KOGlobals::config(); 853 KConfig *config = KOGlobals::config();
854 config->setGroup( "AppRun" ); 854 config->setGroup( "AppRun" );
855 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) ); 855 QDateTime dt ( QDate (2005,1,1), QTime( 0,0,0 ) );
856 int daysto = dt.daysTo( QDate::currentDate() ); 856 int daysto = dt.daysTo( QDate::currentDate() );
857 int days = config->readNumEntry( "LatestProgramStopDays" , daysto); 857 int days = config->readNumEntry( "LatestProgramStopDays" , daysto);
858 dt = dt.addDays( days ); 858 dt = dt.addDays( days );
859 int secto = dt.secsTo( QDateTime::currentDateTime() ); 859 int secto = dt.secsTo( QDateTime::currentDateTime() );
860 int secs = config->readNumEntry( "LatestProgramStopSecs" , secto) - 30; 860 int secs = config->readNumEntry( "LatestProgramStopSecs" , secto) - 30;
861 //qDebug("KO: Reading program stop %d ", secs); 861 //qDebug("KO: Reading program stop %d ", secs);
862 //secs -= ( 3600 * 24*3 ); // debug only 862 //secs -= ( 3600 * 24*3 ); // debug only
863 QDateTime latest = dt.addSecs ( secs ); 863 QDateTime latest = dt.addSecs ( secs );
864 qDebug("KO: Last termination on %s ", latest.toString().latin1()); 864 qDebug("KO: Last termination on %s ", latest.toString().latin1());
865 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() ); 865 //qDebug("KO: Current Time %s ",QDateTime::currentDateTime().toString().latin1() );
866 QPtrList<Incidence> el = mCalendar->rawIncidences(); 866 QPtrList<Incidence> el = mCalendar->rawIncidences();
867 QPtrList<Incidence> al; 867 QPtrList<Incidence> al;
868 Incidence* inL = el.first(); 868 Incidence* inL = el.first();
869 QDateTime cur = QDateTime::currentDateTime().addSecs(-59); 869 QDateTime cur = QDateTime::currentDateTime().addSecs(-59);
870 qDebug("KO: Checking alarm until %s ", cur.toString().latin1()); 870 qDebug("KO: Checking alarm until %s ", cur.toString().latin1());
871 while ( inL ) { 871 while ( inL ) {
872 bool ok = false; 872 bool ok = false;
873 int offset = 0; 873 int offset = 0;
874 QDateTime next = inL->getNextAlarmDateTime(& ok, &offset, latest ) ; 874 QDateTime next = inL->getNextAlarmDateTime(& ok, &offset, latest ) ;
875 if ( ok ) { 875 if ( ok ) {
876 //qDebug("OK %s",next.toString().latin1()); 876 //qDebug("OK %s",next.toString().latin1());
877 if ( next < cur ) { 877 if ( next < cur ) {
878 al.append( inL ); 878 al.append( inL );
879 //qDebug("found missed alarm: %s ", inL->summary().latin1() ); 879 //qDebug("found missed alarm: %s ", inL->summary().latin1() );
880 } 880 }
881 } 881 }
882 inL = el.next(); 882 inL = el.next();
883 } 883 }
884 if ( al.count() ) { 884 if ( al.count() ) {
885 QDialog* dia = new QDialog( this, "huhu", false, WDestructiveClose | WStyle_StaysOnTop ); 885 QDialog* dia = new QDialog( this, "huhu", false, WDestructiveClose | WStyle_StaysOnTop );
886 dia->setCaption( i18n("KO/Pi: Missing alarms!") ); 886 dia->setCaption( i18n("KO/Pi: Missing alarms!") );
887 QVBoxLayout* lay = new QVBoxLayout( dia ); 887 QVBoxLayout* lay = new QVBoxLayout( dia );
888 lay->setSpacing( 0 ); 888 lay->setSpacing( 0 );
889 lay->setMargin( 0 ); 889 lay->setMargin( 0 );
890 MissedAlarmTextBrowser* matb = new MissedAlarmTextBrowser ( dia, al, latest ); 890 MissedAlarmTextBrowser* matb = new MissedAlarmTextBrowser ( dia, al, latest );
891 connect( matb, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) )); 891 connect( matb, SIGNAL( showIncidence( QString ) ),SLOT( showIncidence( QString ) ));
892 lay->addWidget( matb ); 892 lay->addWidget( matb );
893 if ( QApplication::desktop()->width() == 480 || QApplication::desktop()->width() == 640 ) { 893 if ( QApplication::desktop()->width() == 480 || QApplication::desktop()->width() == 640 ) {
894 int wid = 210; 894 int wid = 210;
895 int x = QApplication::desktop()->width() - wid - 7; 895 int x = QApplication::desktop()->width() - wid - 7;
896 int y = QApplication::desktop()->height() - wid - 70; 896 int y = QApplication::desktop()->height() - wid - 70;
897 dia->setGeometry ( x,y,wid,wid); 897 dia->setGeometry ( x,y,wid,wid);
898 } else { 898 } else {
899 int si = 220; 899 int si = 220;
900 if ( QApplication::desktop()->width() > 470 ) 900 if ( QApplication::desktop()->width() > 470 )
901 si = 400; 901 si = 400;
902 dia->resize(si,si/2); 902 dia->resize(si,si/2);
903 } 903 }
904 dia->setBackgroundColor( QColor( 255, 255, 255 ) ); 904 dia->setBackgroundColor( QColor( 255, 255, 255 ) );
905 dia->show(); 905 dia->show();
906 906
907 } 907 }
908#if 0 908#if 0
909 // for creating timetracker test data 909 // for creating timetracker test data
910 qDebug("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCc "); 910 qDebug("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCc ");
911 Todo * nt; 911 Todo * nt;
912 mCalendar->close(); 912 mCalendar->close();
913 { 913 {
914 Todo * root1 = new Todo; 914 Todo * root1 = new Todo;
915 mCalendar->addTodo( root1 ); 915 mCalendar->addTodo( root1 );
916 root1->setSummary( "Project1"); 916 root1->setSummary( "Project1");
917 root1->setPriority( 1 ); 917 root1->setPriority( 1 );
918 root1->setCategories( QString( "Cat_Pro1") ); 918 root1->setCategories( QString( "Cat_Pro1") );
919 root1->setDescription( "This is a test description of a root Project" ); 919 root1->setDescription( "This is a test description of a root Project" );
920 root1->setPercentComplete( 20 ); 920 root1->setPercentComplete( 20 );
921 updateView(); 921 updateView();
922 QDateTime start = QDateTime ( QDate( 2004,11,1), QTime ( 7,30,0) ); 922 QDateTime start = QDateTime ( QDate( 2004,11,1), QTime ( 7,30,0) );
923 QDateTime end = QDateTime ( QDate( 2005,8,5), QTime ( 0,0,0) ); 923 QDateTime end = QDateTime ( QDate( 2005,8,5), QTime ( 0,0,0) );
924 924
925 nt = new Todo; 925 nt = new Todo;
926 mCalendar->addTodo( nt ); 926 mCalendar->addTodo( nt );
927 nt->setSummary( "Planning Project1"); 927 nt->setSummary( "Planning Project1");
928 nt->setPriority( 1 ); 928 nt->setPriority( 1 );
929 nt->setDescription( "This is a test description of Planning Project1" ); 929 nt->setDescription( "This is a test description of Planning Project1" );
930 nt->setPercentComplete( 20 ); 930 nt->setPercentComplete( 20 );
931 nt->setCategories( QString( "Cat_Pro1,Cat_Plan_Pro1") ); 931 nt->setCategories( QString( "Cat_Pro1,Cat_Plan_Pro1") );
932 932
933 933
934 Todo * sub1 = nt; 934 Todo * sub1 = nt;
935 sub1->setRelatedTo( root1 ); 935 sub1->setRelatedTo( root1 );
936 936
937 nt = new Todo; 937 nt = new Todo;
938 mCalendar->addTodo( nt ); 938 mCalendar->addTodo( nt );
939 nt->setSummary( "Planning Project1: Lutz"); 939 nt->setSummary( "Planning Project1: Lutz");
940 nt->setPriority( 1 ); 940 nt->setPriority( 1 );
941 nt->setDescription( "This todo counts the actual work of a person on a project" ); 941 nt->setDescription( "This todo counts the actual work of a person on a project" );
942 nt->setPercentComplete( 20 ); 942 nt->setPercentComplete( 20 );
943 nt->setCategories( QString( "Cat_Pro1,Cat_Plan_Pro1,Cat_Work_Lutz") ); 943 nt->setCategories( QString( "Cat_Pro1,Cat_Plan_Pro1,Cat_Work_Lutz") );
944 Todo * workLutz11 = nt; 944 Todo * workLutz11 = nt;
945 workLutz11->setRelatedTo( sub1 ); 945 workLutz11->setRelatedTo( sub1 );
946 946
947 nt = new Todo; 947 nt = new Todo;
948 mCalendar->addTodo( nt ); 948 mCalendar->addTodo( nt );
949 nt->setSummary( "Planning Project1: Norbert"); 949 nt->setSummary( "Planning Project1: Norbert");
950 nt->setPriority( 1 ); 950 nt->setPriority( 1 );
951 nt->setDescription( "This todo counts the actual work of a person on a project" ); 951 nt->setDescription( "This todo counts the actual work of a person on a project" );
952 nt->setPercentComplete( 20 ); 952 nt->setPercentComplete( 20 );
953 nt->setCategories( QString( "Cat_Pro1,Cat_Plan_Pro1,Cat_Work_Norbert") ); 953 nt->setCategories( QString( "Cat_Pro1,Cat_Plan_Pro1,Cat_Work_Norbert") );
954 Todo * workNorbert11 = nt; 954 Todo * workNorbert11 = nt;
955 workNorbert11->setRelatedTo( sub1 ); 955 workNorbert11->setRelatedTo( sub1 );
956 956
957 nt = new Todo; 957 nt = new Todo;
958 mCalendar->addTodo( nt ); 958 mCalendar->addTodo( nt );
959 nt->setSummary( "Work on 1"); 959 nt->setSummary( "Work on 1");
960 nt->setPriority( 1 ); 960 nt->setPriority( 1 );
961 nt->setDescription( "This is a test description of Work Project_1" ); 961 nt->setDescription( "This is a test description of Work Project_1" );
962 nt->setCategories( QString( "Cat_Pro1,Cat_Work_Pro1") ); 962 nt->setCategories( QString( "Cat_Pro1,Cat_Work_Pro1") );
963 nt->setPercentComplete( 20 ); 963 nt->setPercentComplete( 20 );
964 964
965 Todo * sub2 = nt; 965 Todo * sub2 = nt;
966 sub2->setRelatedTo( root1 ); 966 sub2->setRelatedTo( root1 );
967 967
968 968
969 nt = new Todo; 969 nt = new Todo;
970 mCalendar->addTodo( nt ); 970 mCalendar->addTodo( nt );
971 nt->setSummary( "Work on 1: Lutz"); 971 nt->setSummary( "Work on 1: Lutz");
972 nt->setPriority( 1 ); 972 nt->setPriority( 1 );
973 nt->setDescription( "This todo counts the actual work of a person on a project" ); 973 nt->setDescription( "This todo counts the actual work of a person on a project" );
974 nt->setCategories( QString( "Cat_Pro1,Cat_Work_Pro1,Cat_Work_Lutz") ); 974 nt->setCategories( QString( "Cat_Pro1,Cat_Work_Pro1,Cat_Work_Lutz") );
975 nt->setPercentComplete( 20 ); 975 nt->setPercentComplete( 20 );
976 Todo * workLutz12 = nt; 976 Todo * workLutz12 = nt;
977 workLutz12->setRelatedTo( sub2 ); 977 workLutz12->setRelatedTo( sub2 );
978 978
979 nt = new Todo; 979 nt = new Todo;
980 mCalendar->addTodo( nt ); 980 mCalendar->addTodo( nt );
981 nt->setSummary( "Work on 1: Norbert"); 981 nt->setSummary( "Work on 1: Norbert");
982 nt->setPriority( 1 ); 982 nt->setPriority( 1 );
983 nt->setDescription( "This todo counts the actual work of a person on a project" ); 983 nt->setDescription( "This todo counts the actual work of a person on a project" );
984 nt->setCategories( QString( "Cat_Pro1,Cat_Work_Pro1,Cat_Work_Norbert") ); 984 nt->setCategories( QString( "Cat_Pro1,Cat_Work_Pro1,Cat_Work_Norbert") );
985 nt->setPercentComplete( 20 ); 985 nt->setPercentComplete( 20 );
986 Todo * workNorbert12 = nt; 986 Todo * workNorbert12 = nt;
987 workNorbert12->setRelatedTo( sub2 ); 987 workNorbert12->setRelatedTo( sub2 );
988 988
989 int secLenRunning = 7200; 989 int secLenRunning = 7200;
990 int secLenPausing = 3600 * 3; 990 int secLenPausing = 3600 * 3;
991 int dayInterval = 1; 991 int dayInterval = 1;
992 //createRunningDate4Todo( root1, start, end, secLenRunning, secLenPausing, dayInterval ); 992 //createRunningDate4Todo( root1, start, end, secLenRunning, secLenPausing, dayInterval );
993 createRunningDate4Todo( root1, start, end, secLenRunning*24, secLenPausing, 14 ); 993 createRunningDate4Todo( root1, start, end, secLenRunning*24, secLenPausing, 14 );
994 createRunningDate4Todo( sub1, start.addSecs( secLenRunning ), start.addDays( 10 ), secLenRunning*4, secLenPausing, 1); 994 createRunningDate4Todo( sub1, start.addSecs( secLenRunning ), start.addDays( 10 ), secLenRunning*4, secLenPausing, 1);
995 createRunningDate4Todo( sub2, start.addDays( 8 ), end, secLenRunning*4, secLenPausing, 3); 995 createRunningDate4Todo( sub2, start.addDays( 8 ), end, secLenRunning*4, secLenPausing, 3);
996 createRunningDate4Todo( workLutz11, start, start.addDays( 8 ), secLenRunning, secLenPausing, 0); 996 createRunningDate4Todo( workLutz11, start, start.addDays( 8 ), secLenRunning, secLenPausing, 0);
997 createRunningDate4Todo( workNorbert11, start, start.addDays( 8 ), secLenRunning*2, secLenPausing, 1); 997 createRunningDate4Todo( workNorbert11, start, start.addDays( 8 ), secLenRunning*2, secLenPausing, 1);
998 createRunningDate4Todo( workLutz12, start.addDays( 8 ),end, secLenRunning*5, secLenPausing, 3); 998 createRunningDate4Todo( workLutz12, start.addDays( 8 ),end, secLenRunning*5, secLenPausing, 3);
999 createRunningDate4Todo( workNorbert12, start.addDays( 8 ), end, secLenRunning, secLenPausing*3, 0); 999 createRunningDate4Todo( workNorbert12, start.addDays( 8 ), end, secLenRunning, secLenPausing*3, 0);
1000 1000
1001 } 1001 }
1002 1002
1003 { 1003 {
1004 Todo * root1 = new Todo; 1004 Todo * root1 = new Todo;
1005 mCalendar->addTodo( root1 ); 1005 mCalendar->addTodo( root1 );
1006 root1->setSummary( "Project2"); 1006 root1->setSummary( "Project2");
1007 root1->setPriority( 1 ); 1007 root1->setPriority( 1 );
1008 root1->setDescription( "This is a test description of a root Project 2" ); 1008 root1->setDescription( "This is a test description of a root Project 2" );
1009 root1->setPercentComplete( 20 ); 1009 root1->setPercentComplete( 20 );
1010 root1->setCategories( QString( "Cat_Pro2") ); 1010 root1->setCategories( QString( "Cat_Pro2") );
1011 updateView(); 1011 updateView();
1012 QDateTime start = QDateTime ( QDate( 2004,11,1), QTime ( 7,30,0) ); 1012 QDateTime start = QDateTime ( QDate( 2004,11,1), QTime ( 7,30,0) );
1013 QDateTime end = QDateTime ( QDate( 2005,8,5), QTime ( 0,0,0) ); 1013 QDateTime end = QDateTime ( QDate( 2005,8,5), QTime ( 0,0,0) );
1014 int secLenRunning = 7200; 1014 int secLenRunning = 7200;
1015 int secLenPausing = 3600 * 3; 1015 int secLenPausing = 3600 * 3;
1016 int dayInterval = 1; 1016 int dayInterval = 1;
1017 1017
1018 nt = new Todo; 1018 nt = new Todo;
1019 mCalendar->addTodo( nt ); 1019 mCalendar->addTodo( nt );
1020 nt->setSummary( "Planning Project2"); 1020 nt->setSummary( "Planning Project2");
1021 nt->setPriority( 1 ); 1021 nt->setPriority( 1 );
1022 nt->setDescription( "This is a test description of Planning_Project_2" ); 1022 nt->setDescription( "This is a test description of Planning_Project_2" );
1023 nt->setCategories( QString( "Cat_Pro2,Cat_Plan_Pro2") ); 1023 nt->setCategories( QString( "Cat_Pro2,Cat_Plan_Pro2") );
1024 nt->setPercentComplete( 20 ); 1024 nt->setPercentComplete( 20 );
1025 1025
1026 1026
1027 Todo * sub1 = nt; 1027 Todo * sub1 = nt;
1028 sub1->setRelatedTo( root1 ); 1028 sub1->setRelatedTo( root1 );
1029 1029
1030 nt = new Todo; 1030 nt = new Todo;
1031 mCalendar->addTodo( nt ); 1031 mCalendar->addTodo( nt );
1032 nt->setSummary( "Planning Project2: Lutz"); 1032 nt->setSummary( "Planning Project2: Lutz");
1033 nt->setPriority( 1 ); 1033 nt->setPriority( 1 );
1034 nt->setDescription( "This todo counts the actual work of a person on a project" ); 1034 nt->setDescription( "This todo counts the actual work of a person on a project" );
1035 nt->setCategories( QString( "Cat_Pro2,Cat_Plan_Pro2,Cat_Work_Lutz") ); 1035 nt->setCategories( QString( "Cat_Pro2,Cat_Plan_Pro2,Cat_Work_Lutz") );
1036 nt->setPercentComplete( 20 ); 1036 nt->setPercentComplete( 20 );
1037 Todo * workLutz11 = nt; 1037 Todo * workLutz11 = nt;
1038 workLutz11->setRelatedTo( sub1 ); 1038 workLutz11->setRelatedTo( sub1 );
1039 1039
1040 nt = new Todo; 1040 nt = new Todo;
1041 mCalendar->addTodo( nt ); 1041 mCalendar->addTodo( nt );
1042 nt->setSummary( "Planning Project2: Norbert"); 1042 nt->setSummary( "Planning Project2: Norbert");
1043 nt->setPriority( 1 ); 1043 nt->setPriority( 1 );
1044 nt->setDescription( "This todo counts the actual work of a person on a project" ); 1044 nt->setDescription( "This todo counts the actual work of a person on a project" );
1045 nt->setCategories( QString( "Cat_Pro2,Cat_Plan_Pro2,Cat_Work_Norbert") ); 1045 nt->setCategories( QString( "Cat_Pro2,Cat_Plan_Pro2,Cat_Work_Norbert") );
1046 nt->setPercentComplete( 20 ); 1046 nt->setPercentComplete( 20 );
1047 Todo * workNorbert11 = nt; 1047 Todo * workNorbert11 = nt;
1048 workNorbert11->setRelatedTo( sub1 ); 1048 workNorbert11->setRelatedTo( sub1 );
1049 1049
1050 nt = new Todo; 1050 nt = new Todo;
1051 mCalendar->addTodo( nt ); 1051 mCalendar->addTodo( nt );
1052 nt->setSummary( "Work on 2"); 1052 nt->setSummary( "Work on 2");
1053 nt->setPriority( 1 ); 1053 nt->setPriority( 1 );
1054 nt->setDescription( "This is a test description of Work Project_2" ); 1054 nt->setDescription( "This is a test description of Work Project_2" );
1055 nt->setCategories( QString( "Cat_Pro2,Cat_Work_Pro2") ); 1055 nt->setCategories( QString( "Cat_Pro2,Cat_Work_Pro2") );
1056 nt->setPercentComplete( 20 ); 1056 nt->setPercentComplete( 20 );
1057 1057
1058 Todo * sub2 = nt; 1058 Todo * sub2 = nt;
1059 sub2->setRelatedTo( root1 ); 1059 sub2->setRelatedTo( root1 );
1060 1060
1061 1061
1062 nt = new Todo; 1062 nt = new Todo;
1063 mCalendar->addTodo( nt ); 1063 mCalendar->addTodo( nt );
1064 nt->setSummary( "Work on 2: Lutz"); 1064 nt->setSummary( "Work on 2: Lutz");
1065 nt->setPriority( 1 ); 1065 nt->setPriority( 1 );
1066 nt->setDescription( "This todo counts the actual work of a person on a project" ); 1066 nt->setDescription( "This todo counts the actual work of a person on a project" );
1067 nt->setCategories( QString( "Cat_Pro2,Cat_Work_Pro2,Cat_Work_Lutz") ); 1067 nt->setCategories( QString( "Cat_Pro2,Cat_Work_Pro2,Cat_Work_Lutz") );
1068 nt->setPercentComplete( 20 ); 1068 nt->setPercentComplete( 20 );
1069 Todo * workLutz12 = nt; 1069 Todo * workLutz12 = nt;
1070 workLutz12->setRelatedTo( sub2 ); 1070 workLutz12->setRelatedTo( sub2 );
1071 1071
1072 nt = new Todo; 1072 nt = new Todo;
1073 mCalendar->addTodo( nt ); 1073 mCalendar->addTodo( nt );
1074 nt->setSummary( "Work on 2: Norbert"); 1074 nt->setSummary( "Work on 2: Norbert");
1075 nt->setPriority( 1 ); 1075 nt->setPriority( 1 );
1076 nt->setDescription( "This todo counts the actual work of a person on a project" ); 1076 nt->setDescription( "This todo counts the actual work of a person on a project" );
1077 nt->setCategories( QString( "Cat_Pro2,Cat_Work_Pro2,Cat_Work_Norbert") ); 1077 nt->setCategories( QString( "Cat_Pro2,Cat_Work_Pro2,Cat_Work_Norbert") );
1078 nt->setPercentComplete( 20 ); 1078 nt->setPercentComplete( 20 );
1079 Todo * workNorbert12 = nt; 1079 Todo * workNorbert12 = nt;
1080 workNorbert12->setRelatedTo( sub2 ); 1080 workNorbert12->setRelatedTo( sub2 );
1081 createRunningDate4Todo( root1, start, end, secLenRunning, secLenPausing, 10 ); 1081 createRunningDate4Todo( root1, start, end, secLenRunning, secLenPausing, 10 );
1082 createRunningDate4Todo( sub1, start.addSecs( secLenRunning*3 ), start.addDays( 20 ), secLenRunning*2, secLenPausing, 2); 1082 createRunningDate4Todo( sub1, start.addSecs( secLenRunning*3 ), start.addDays( 20 ), secLenRunning*2, secLenPausing, 2);
1083 createRunningDate4Todo( sub2, start.addDays( 8 ), end, secLenRunning*3, secLenPausing, 7); 1083 createRunningDate4Todo( sub2, start.addDays( 8 ), end, secLenRunning*3, secLenPausing, 7);
1084 createRunningDate4Todo( workLutz11, start, start.addDays( 18 ), secLenRunning/2, secLenPausing*5, 0); 1084 createRunningDate4Todo( workLutz11, start, start.addDays( 18 ), secLenRunning/2, secLenPausing*5, 0);
1085 createRunningDate4Todo( workNorbert11, start.addDays( 8 ), start.addDays( 18 ), secLenRunning*5, secLenPausing*5, 1); 1085 createRunningDate4Todo( workNorbert11, start.addDays( 8 ), start.addDays( 18 ), secLenRunning*5, secLenPausing*5, 1);
1086 createRunningDate4Todo( workLutz12, start.addDays( 8 ),end, secLenRunning, secLenPausing*8, 0); 1086 createRunningDate4Todo( workLutz12, start.addDays( 8 ),end, secLenRunning, secLenPausing*8, 0);
1087 createRunningDate4Todo( workNorbert12, start.addDays( 28 ), end, secLenRunning/8, secLenPausing*6, 0); 1087 createRunningDate4Todo( workNorbert12, start.addDays( 28 ), end, secLenRunning/8, secLenPausing*6, 0);
1088 } 1088 }
1089 updateView(); 1089 updateView();
1090#endif 1090#endif
1091 1091
1092} 1092}
1093void CalendarView::createRunningDate4Todo( Todo * runT, QDateTime start , QDateTime end, int secLenRunning, int secLenPausing,int dayInterval ) 1093void CalendarView::createRunningDate4Todo( Todo * runT, QDateTime start , QDateTime end, int secLenRunning, int secLenPausing,int dayInterval )
1094{ 1094{
1095 static int ccc = 0; 1095 static int ccc = 0;
1096 ++ccc; 1096 ++ccc;
1097 QDateTime t_start = start; 1097 QDateTime t_start = start;
1098 runT->setPriority( 5 ); 1098 runT->setPriority( 5 );
1099 runT->setPercentComplete( 0 ); 1099 runT->setPercentComplete( 0 );
1100 int count = 0; 1100 int count = 0;
1101 int prio = 5; 1101 int prio = 5;
1102 int complete = 0; 1102 int complete = 0;
1103 while ( t_start < end ) { 1103 while ( t_start < end ) {
1104 ++count; 1104 ++count;
1105 if ( count > ccc ) { 1105 if ( count > ccc ) {
1106 count = 0; 1106 count = 0;
1107 --prio; 1107 --prio;
1108 if ( prio == 0 ) prio = 5; 1108 if ( prio == 0 ) prio = 5;
1109 complete += 20; 1109 complete += 20;
1110 if ( complete > 100 ) complete = 0; 1110 if ( complete > 100 ) complete = 0;
1111 runT->setPriority( prio ); 1111 runT->setPriority( prio );
1112 runT->setPercentComplete( complete ); 1112 runT->setPercentComplete( complete );
1113 } 1113 }
1114 runT->setRunning( true ); 1114 runT->setRunning( true );
1115 runT->saveRunningInfo( "Additional tt comment: running on "+ t_start.toString(), t_start, t_start.addSecs( secLenRunning ) ); 1115 runT->saveRunningInfo( "Additional tt comment: running on "+ t_start.toString(), t_start, t_start.addSecs( secLenRunning ) );
1116 if ( dayInterval ) 1116 if ( dayInterval )
1117 t_start = t_start.addDays( dayInterval ); 1117 t_start = t_start.addDays( dayInterval );
1118 else { 1118 else {
1119 t_start = t_start.addSecs( secLenRunning + secLenPausing ); 1119 t_start = t_start.addSecs( secLenRunning + secLenPausing );
1120 } 1120 }
1121 } 1121 }
1122} 1122}
1123 1123
1124void CalendarView::showDay( QDate d ) 1124void CalendarView::showDay( QDate d )
1125{ 1125{
1126 dateNavigator()->blockSignals( true ); 1126 dateNavigator()->blockSignals( true );
1127 dateNavigator()->selectDate( d ); 1127 dateNavigator()->selectDate( d );
1128 dateNavigator()->blockSignals( false ); 1128 dateNavigator()->blockSignals( false );
1129 mViewManager->showDayView(); 1129 mViewManager->showDayView();
1130 //dateNavigator()->selectDate( d ); 1130 //dateNavigator()->selectDate( d );
1131} 1131}
1132void CalendarView::timerAlarm() 1132void CalendarView::timerAlarm()
1133{ 1133{
1134 //qDebug("CalendarView::timerAlarm() "); 1134 //qDebug("CalendarView::timerAlarm() ");
1135 computeAlarm(mAlarmNotification ); 1135 computeAlarm(mAlarmNotification );
1136} 1136}
1137 1137
1138void CalendarView::suspendAlarm() 1138void CalendarView::suspendAlarm()
1139{ 1139{
1140 //qDebug(" CalendarView::suspendAlarm() "); 1140 //qDebug(" CalendarView::suspendAlarm() ");
1141 computeAlarm(mSuspendAlarmNotification ); 1141 computeAlarm(mSuspendAlarmNotification );
1142 1142
1143} 1143}
1144 1144
1145void CalendarView::startAlarm( QString mess , QString filename) 1145void CalendarView::startAlarm( QString mess , QString filename)
1146{ 1146{
1147 1147
1148 topLevelWidget()->showNormal(); 1148 topLevelWidget()->showNormal();
1149 topLevelWidget()->setActiveWindow(); 1149 topLevelWidget()->setActiveWindow();
1150 topLevelWidget()->raise(); 1150 topLevelWidget()->raise();
1151 1151
1152 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount ); 1152 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount );
1153 QTimer::singleShot( 2000, this, SLOT( checkNextTimerAlarm() ) ); 1153 QTimer::singleShot( 2000, this, SLOT( checkNextTimerAlarm() ) );
1154 1154
1155} 1155}
1156 1156
1157void CalendarView::checkNextTimerAlarm() 1157void CalendarView::checkNextTimerAlarm()
1158{ 1158{
1159 mCalendar->checkAlarmForIncidence( 0, true ); 1159 mCalendar->checkAlarmForIncidence( 0, true );
1160} 1160}
1161 1161
1162void CalendarView::computeAlarm( QString msg ) 1162void CalendarView::computeAlarm( QString msg )
1163{ 1163{
1164 1164
1165 QString mess = msg; 1165 QString mess = msg;
1166 QString mAlarmMessage = mess.mid( 9 ); 1166 QString mAlarmMessage = mess.mid( 9 );
1167 QString filename = MainWindow::resourcePath(); 1167 QString filename = MainWindow::resourcePath();
1168 filename += "koalarm.wav"; 1168 filename += "koalarm.wav";
1169 QString tempfilename; 1169 QString tempfilename;
1170 if ( mess.left( 13 ) == "suspend_alarm") { 1170 if ( mess.left( 13 ) == "suspend_alarm") {
1171 bool error = false; 1171 bool error = false;
1172 int len = mess.mid( 13 ).find("+++"); 1172 int len = mess.mid( 13 ).find("+++");
1173 if ( len < 2 ) 1173 if ( len < 2 )
1174 error = true; 1174 error = true;
1175 else { 1175 else {
1176 tempfilename = mess.mid( 13, len ); 1176 tempfilename = mess.mid( 13, len );
1177 if ( !QFile::exists( tempfilename ) ) 1177 if ( !QFile::exists( tempfilename ) )
1178 error = true; 1178 error = true;
1179 } 1179 }
1180 if ( ! error ) { 1180 if ( ! error ) {
1181 filename = tempfilename; 1181 filename = tempfilename;
1182 } 1182 }
1183 mAlarmMessage = mess.mid( 13+len+3 ); 1183 mAlarmMessage = mess.mid( 13+len+3 );
1184 //qDebug("suspend file %s ",tempfilename.latin1() ); 1184 //qDebug("suspend file %s ",tempfilename.latin1() );
1185 startAlarm( mAlarmMessage, filename); 1185 startAlarm( mAlarmMessage, filename);
1186 return; 1186 return;
1187 } 1187 }
1188 if ( mess.left( 11 ) == "timer_alarm") { 1188 if ( mess.left( 11 ) == "timer_alarm") {
1189 //mTimerTime = 0; 1189 //mTimerTime = 0;
1190 startAlarm( mess.mid( 11 ), filename ); 1190 startAlarm( mess.mid( 11 ), filename );
1191 return; 1191 return;
1192 } 1192 }
1193 if ( mess.left( 10 ) == "proc_alarm") { 1193 if ( mess.left( 10 ) == "proc_alarm") {
1194 bool error = false; 1194 bool error = false;
1195 int len = mess.mid( 10 ).find("+++"); 1195 int len = mess.mid( 10 ).find("+++");
1196 if ( len < 2 ) 1196 if ( len < 2 )
1197 error = true; 1197 error = true;
1198 else { 1198 else {
1199 tempfilename = mess.mid( 10, len ); 1199 tempfilename = mess.mid( 10, len );
1200 if ( !QFile::exists( tempfilename ) ) 1200 if ( !QFile::exists( tempfilename ) )
1201 error = true; 1201 error = true;
1202 } 1202 }
1203 if ( error ) { 1203 if ( error ) {
1204 mAlarmMessage = "Procedure Alarm\nError - File not found\n"; 1204 mAlarmMessage = "Procedure Alarm\nError - File not found\n";
1205 mAlarmMessage += mess.mid( 10+len+3+9 ); 1205 mAlarmMessage += mess.mid( 10+len+3+9 );
1206 } else { 1206 } else {
1207 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent"); 1207 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent");
1208 //qDebug("-----system command %s ",tempfilename.latin1() ); 1208 //qDebug("-----system command %s ",tempfilename.latin1() );
1209#ifndef _WIN32_ 1209#ifndef _WIN32_
1210 if ( vfork () == 0 ) { 1210 if ( vfork () == 0 ) {
1211 execl ( tempfilename.latin1(), 0 ); 1211 execl ( tempfilename.latin1(), 0 );
1212 return; 1212 return;
1213 } 1213 }
1214#else 1214#else
1215 QProcess* p = new QProcess(); 1215 QProcess* p = new QProcess();
1216 p->addArgument( tempfilename.latin1() ); 1216 p->addArgument( tempfilename.latin1() );
1217 p->start(); 1217 p->start();
1218 return; 1218 return;
1219#endif 1219#endif
1220 1220
1221 return; 1221 return;
1222 } 1222 }
1223 1223
1224 //qDebug("+++++++system command %s ",tempfilename.latin1() ); 1224 //qDebug("+++++++system command %s ",tempfilename.latin1() );
1225 } 1225 }
1226 if ( mess.left( 11 ) == "audio_alarm") { 1226 if ( mess.left( 11 ) == "audio_alarm") {
1227 bool error = false; 1227 bool error = false;
1228 int len = mess.mid( 11 ).find("+++"); 1228 int len = mess.mid( 11 ).find("+++");
1229 if ( len < 2 ) 1229 if ( len < 2 )
1230 error = true; 1230 error = true;
1231 else { 1231 else {
1232 tempfilename = mess.mid( 11, len ); 1232 tempfilename = mess.mid( 11, len );
1233 if ( !QFile::exists( tempfilename ) ) 1233 if ( !QFile::exists( tempfilename ) )
1234 error = true; 1234 error = true;
1235 } 1235 }
1236 if ( ! error ) { 1236 if ( ! error ) {
1237 filename = tempfilename; 1237 filename = tempfilename;
1238 } 1238 }
1239 mAlarmMessage = mess.mid( 11+len+3+9 ); 1239 mAlarmMessage = mess.mid( 11+len+3+9 );
1240 //qDebug("audio file command %s ",tempfilename.latin1() ); 1240 //qDebug("audio file command %s ",tempfilename.latin1() );
1241 } 1241 }
1242 if ( mess.left( 9 ) == "cal_alarm") { 1242 if ( mess.left( 9 ) == "cal_alarm") {
1243 mAlarmMessage = mess.mid( 9 ) ; 1243 mAlarmMessage = mess.mid( 9 ) ;
1244 } 1244 }
1245 1245
1246 startAlarm( mAlarmMessage, filename ); 1246 startAlarm( mAlarmMessage, filename );
1247 1247
1248 1248
1249} 1249}
1250 1250
1251void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti ) 1251void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti )
1252{ 1252{
1253 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 1253 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
1254 1254
1255 mSuspendAlarmNotification = noti; 1255 mSuspendAlarmNotification = noti;
1256 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000; 1256 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000;
1257 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000); 1257 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000);
1258 mSuspendTimer->start( ms , true ); 1258 mSuspendTimer->start( ms , true );
1259#ifdef DESKTOP_VERSION 1259#ifdef DESKTOP_VERSION
1260 if ( QApplication::desktop()->width() < 1024 ) { 1260 if ( QApplication::desktop()->width() < 1024 ) {
1261 QString mess = qdt.toString( "yyyy-MM-dd hh:mm:ss" ) + "\n" + noti; 1261 QString mess = qdt.toString( "yyyy-MM-dd hh:mm:ss" ) + "\n" + noti;
1262 //qDebug("nextsuspendalarm = \n%s ",mess.latin1() ); 1262 //qDebug("nextsuspendalarm = \n%s ",mess.latin1() );
1263 QString fn = QDir::homeDirPath() + "/.kopi_suspend_alarm"; 1263 QString fn = QDir::homeDirPath() + "/.kopi_suspend_alarm";
1264 QFile file( fn ); 1264 QFile file( fn );
1265 if (!file.open( IO_WriteOnly ) ) { 1265 if (!file.open( IO_WriteOnly ) ) {
1266 qDebug("KO: Error writing next suspend alarm file %s\nContent: \n%s ", fn.latin1(), mess.latin1()); 1266 qDebug("KO: Error writing next suspend alarm file %s\nContent: \n%s ", fn.latin1(), mess.latin1());
1267 } else { 1267 } else {
1268 QTextStream ts( &file ); 1268 QTextStream ts( &file );
1269 ts << mess; 1269 ts << mess;
1270 file.close(); 1270 file.close();
1271 } 1271 }
1272 } 1272 }
1273#endif 1273#endif
1274 1274
1275} 1275}
1276 1276
1277void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti ) 1277void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti )
1278{ 1278{
1279 mNextAlarmDateTime = qdt; 1279 mNextAlarmDateTime = qdt;
1280 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 1280 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
1281 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 1281 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
1282#ifndef DESKTOP_VERSION 1282#ifndef DESKTOP_VERSION
1283 AlarmServer::addAlarm ( qdt,"koalarm", noti.utf8() ); 1283 AlarmServer::addAlarm ( qdt,"koalarm", noti.utf8() );
1284#endif 1284#endif
1285 return; 1285 return;
1286 } 1286 }
1287#ifdef DESKTOP_VERSION 1287#ifdef DESKTOP_VERSION
1288 if ( QApplication::desktop()->width() < 1024 ) { 1288 if ( QApplication::desktop()->width() < 1024 ) {
1289 QString mess = qdt.toString( "yyyy-MM-dd hh:mm:ss" ) + "\n" + noti; 1289 QString mess = qdt.toString( "yyyy-MM-dd hh:mm:ss" ) + "\n" + noti;
1290 //qDebug("nextalarm = \n%s ",mess.latin1() ); 1290 //qDebug("nextalarm = \n%s ",mess.latin1() );
1291 QString fn = QDir::homeDirPath() + "/.kopi_next_alarm"; 1291 QString fn = QDir::homeDirPath() + "/.kopi_next_alarm";
1292 QFile file( fn ); 1292 QFile file( fn );
1293 if (!file.open( IO_WriteOnly ) ) { 1293 if (!file.open( IO_WriteOnly ) ) {
1294 qDebug("KO: Error writing next alarm file %s\nContent: \n%s ", fn.latin1(), mess.latin1()); 1294 qDebug("KO: Error writing next alarm file %s\nContent: \n%s ", fn.latin1(), mess.latin1());
1295 } else { 1295 } else {
1296 QTextStream ts( &file ); 1296 QTextStream ts( &file );
1297 ts << mess; 1297 ts << mess;
1298 file.close(); 1298 file.close();
1299 } 1299 }
1300 } 1300 }
1301#endif 1301#endif
1302 int maxSec; 1302 int maxSec;
1303 //maxSec = 5; //testing only 1303 //maxSec = 5; //testing only
1304 maxSec = 86400+3600; // one day+1hour 1304 maxSec = 86400+3600; // one day+1hour
1305 mAlarmNotification = noti; 1305 mAlarmNotification = noti;
1306 int sec = QDateTime::currentDateTime().secsTo( qdt ); 1306 int sec = QDateTime::currentDateTime().secsTo( qdt );
1307 if ( sec > maxSec ) { 1307 if ( sec > maxSec ) {
1308 mRecheckAlarmTimer->start( maxSec * 1000 ); 1308 mRecheckAlarmTimer->start( maxSec * 1000 );
1309 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec ); 1309 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec );
1310 return; 1310 return;
1311 } else { 1311 } else {
1312 mRecheckAlarmTimer->stop(); 1312 mRecheckAlarmTimer->stop();
1313 } 1313 }
1314 //qDebug("Alarm timer started with secs: %d ", sec); 1314 //qDebug("Alarm timer started with secs: %d ", sec);
1315 mAlarmTimer->start( sec * 1000 , true ); 1315 mAlarmTimer->start( sec * 1000 , true );
1316 1316
1317} 1317}
1318// called by mRecheckAlarmTimer to get next alarm 1318// called by mRecheckAlarmTimer to get next alarm
1319// we need this, because a QTimer has only a max range of 25 days 1319// we need this, because a QTimer has only a max range of 25 days
1320void CalendarView::recheckTimerAlarm() 1320void CalendarView::recheckTimerAlarm()
1321{ 1321{
1322 mAlarmTimer->stop(); 1322 mAlarmTimer->stop();
1323 mRecheckAlarmTimer->stop(); 1323 mRecheckAlarmTimer->stop();
1324 mCalendar->checkAlarmForIncidence( 0, true ); 1324 mCalendar->checkAlarmForIncidence( 0, true );
1325} 1325}
1326#ifndef DESKTOP_VERSION 1326#ifndef DESKTOP_VERSION
1327void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti ) 1327void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti )
1328#else 1328#else
1329void CalendarView::removeAlarm(const QDateTime &, const QString & ) 1329void CalendarView::removeAlarm(const QDateTime &, const QString & )
1330#endif 1330#endif
1331{ 1331{
1332 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 1332 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
1333 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 1333 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
1334#ifndef DESKTOP_VERSION 1334#ifndef DESKTOP_VERSION
1335 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.utf8() ); 1335 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.utf8() );
1336#endif 1336#endif
1337 return; 1337 return;
1338 } 1338 }
1339 mAlarmTimer->stop(); 1339 mAlarmTimer->stop();
1340} 1340}
1341void CalendarView::selectWeekNum ( int num ) 1341void CalendarView::selectWeekNum ( int num )
1342{ 1342{
1343 dateNavigator()->blockSignals( true ); 1343 dateNavigator()->blockSignals( true );
1344 dateNavigator()->selectWeek( num ); 1344 dateNavigator()->selectWeek( num );
1345 dateNavigator()->blockSignals( false ); 1345 dateNavigator()->blockSignals( false );
1346 mViewManager->showWeekView(); 1346 mViewManager->showWeekView();
1347} 1347}
1348KOViewManager *CalendarView::viewManager() 1348KOViewManager *CalendarView::viewManager()
1349{ 1349{
1350 return mViewManager; 1350 return mViewManager;
1351} 1351}
1352 1352
1353KODialogManager *CalendarView::dialogManager() 1353KODialogManager *CalendarView::dialogManager()
1354{ 1354{
1355 return mDialogManager; 1355 return mDialogManager;
1356} 1356}
1357 1357
1358QDate CalendarView::startDate() 1358QDate CalendarView::startDate()
1359{ 1359{
1360 DateList dates = mNavigator->selectedDates(); 1360 DateList dates = mNavigator->selectedDates();
1361 1361
1362 return dates.first(); 1362 return dates.first();
1363} 1363}
1364 1364
1365QDate CalendarView::endDate() 1365QDate CalendarView::endDate()
1366{ 1366{
1367 DateList dates = mNavigator->selectedDates(); 1367 DateList dates = mNavigator->selectedDates();
1368 1368
1369 return dates.last(); 1369 return dates.last();
1370} 1370}
1371 1371
1372 1372
1373void CalendarView::createPrinter() 1373void CalendarView::createPrinter()
1374{ 1374{
1375#ifndef KORG_NOPRINTER 1375#ifndef KORG_NOPRINTER
1376 if (!mCalPrinter) { 1376 if (!mCalPrinter) {
1377 mCalPrinter = new CalPrinter(this, mCalendar); 1377 mCalPrinter = new CalPrinter(this, mCalendar);
1378 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig())); 1378 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig()));
1379 } 1379 }
1380#endif 1380#endif
1381} 1381}
1382 1382
1383 1383
1384//KOPrefs::instance()->mWriteBackFile 1384//KOPrefs::instance()->mWriteBackFile
1385//KOPrefs::instance()->mWriteBackExistingOnly 1385//KOPrefs::instance()->mWriteBackExistingOnly
1386 1386
1387// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); 1387// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
1388// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); 1388// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
1389// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); 1389// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
1390// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); 1390// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
1391// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always")); 1391// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
1392// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); 1392// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
1393 1393
1394int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full ) 1394int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full )
1395{ 1395{
1396 1396
1397 // 0 equal 1397 // 0 equal
1398 // 1 take local 1398 // 1 take local
1399 // 2 take remote 1399 // 2 take remote
1400 // 3 cancel 1400 // 3 cancel
1401 QDateTime lastSync = mLastCalendarSync; 1401 QDateTime lastSync = mLastCalendarSync;
1402 QDateTime localMod = local->lastModified(); 1402 QDateTime localMod = local->lastModified();
1403 QDateTime remoteMod = remote->lastModified(); 1403 QDateTime remoteMod = remote->lastModified();
1404 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1404 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1405 bool remCh, locCh; 1405 bool remCh, locCh;
1406 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 1406 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
1407 //if ( remCh ) 1407 //if ( remCh )
1408 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 1408 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
1409 locCh = ( localMod > mLastCalendarSync ); 1409 locCh = ( localMod > mLastCalendarSync );
1410 if ( !remCh && ! locCh ) { 1410 if ( !remCh && ! locCh ) {
1411 //qDebug("both not changed "); 1411 //qDebug("both not changed ");
1412 lastSync = localMod.addDays(1); 1412 lastSync = localMod.addDays(1);
1413 if ( mode <= SYNC_PREF_ASK ) 1413 if ( mode <= SYNC_PREF_ASK )
1414 return 0; 1414 return 0;
1415 } else { 1415 } else {
1416 if ( locCh ) { 1416 if ( locCh ) {
1417 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1()); 1417 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1());
1418 lastSync = localMod.addDays( -1 ); 1418 lastSync = localMod.addDays( -1 );
1419 if ( !remCh ) 1419 if ( !remCh )
1420 remoteMod = ( lastSync.addDays( -1 ) ); 1420 remoteMod = ( lastSync.addDays( -1 ) );
1421 } else { 1421 } else {
1422 //qDebug(" not loc changed "); 1422 //qDebug(" not loc changed ");
1423 lastSync = localMod.addDays( 1 ); 1423 lastSync = localMod.addDays( 1 );
1424 if ( remCh ) 1424 if ( remCh )
1425 remoteMod =( lastSync.addDays( 1 ) ); 1425 remoteMod =( lastSync.addDays( 1 ) );
1426 1426
1427 } 1427 }
1428 } 1428 }
1429 full = true; 1429 full = true;
1430 if ( mode < SYNC_PREF_ASK ) 1430 if ( mode < SYNC_PREF_ASK )
1431 mode = SYNC_PREF_ASK; 1431 mode = SYNC_PREF_ASK;
1432 } else { 1432 } else {
1433 if ( localMod == remoteMod ) 1433 if ( localMod == remoteMod )
1434 // if ( local->revision() == remote->revision() ) 1434 // if ( local->revision() == remote->revision() )
1435 return 0; 1435 return 0;
1436 1436
1437 } 1437 }
1438 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 1438 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
1439 1439
1440 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision()); 1440 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision());
1441 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() ); 1441 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() );
1442 //full = true; //debug only 1442 //full = true; //debug only
1443 if ( full ) { 1443 if ( full ) {
1444 bool equ = false; 1444 bool equ = false;
1445 if ( local->typeID() == eventID ) { 1445 if ( local->typeID() == eventID ) {
1446 equ = (*((Event*) local) == *((Event*) remote)); 1446 equ = (*((Event*) local) == *((Event*) remote));
1447 } 1447 }
1448 else if ( local->typeID() == todoID ) 1448 else if ( local->typeID() == todoID )
1449 equ = (*((Todo*) local) == (*(Todo*) remote)); 1449 equ = (*((Todo*) local) == (*(Todo*) remote));
1450 else if ( local->typeID() == journalID ) 1450 else if ( local->typeID() == journalID )
1451 equ = (*((Journal*) local) == *((Journal*) remote)); 1451 equ = (*((Journal*) local) == *((Journal*) remote));
1452 if ( equ ) { 1452 if ( equ ) {
1453 //qDebug("equal "); 1453 //qDebug("equal ");
1454 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1454 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1455 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 1455 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
1456 } 1456 }
1457 if ( mode < SYNC_PREF_FORCE_LOCAL ) 1457 if ( mode < SYNC_PREF_FORCE_LOCAL )
1458 return 0; 1458 return 0;
1459 1459
1460 }//else //debug only 1460 }//else //debug only
1461 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 1461 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
1462 } 1462 }
1463 int result; 1463 int result;
1464 bool localIsNew; 1464 bool localIsNew;
1465 //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() ); 1465 //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() );
1466 1466
1467 1467
1468 // ************************************************ 1468 // ************************************************
1469 // ************************************************ 1469 // ************************************************
1470 // ************************************************ 1470 // ************************************************
1471 // We may have that lastSync > remoteMod AND lastSync > localMod 1471 // We may have that lastSync > remoteMod AND lastSync > localMod
1472 // BUT remoteMod != localMod 1472 // BUT remoteMod != localMod
1473 1473
1474 1474
1475 if ( full && mode < SYNC_PREF_NEWEST ) 1475 if ( full && mode < SYNC_PREF_NEWEST )
1476 mode = SYNC_PREF_ASK; 1476 mode = SYNC_PREF_ASK;
1477 1477
1478 switch( mode ) { 1478 switch( mode ) {
1479 case SYNC_PREF_LOCAL: 1479 case SYNC_PREF_LOCAL:
1480 if ( lastSync > remoteMod ) 1480 if ( lastSync > remoteMod )
1481 return 1; 1481 return 1;
1482 if ( lastSync > localMod ) 1482 if ( lastSync > localMod )
1483 return 2; 1483 return 2;
1484 return 1; 1484 return 1;
1485 break; 1485 break;
1486 case SYNC_PREF_REMOTE: 1486 case SYNC_PREF_REMOTE:
1487 if ( lastSync > localMod ) 1487 if ( lastSync > localMod )
1488 return 2; 1488 return 2;
1489 if ( lastSync > remoteMod ) 1489 if ( lastSync > remoteMod )
1490 return 1; 1490 return 1;
1491 return 2; 1491 return 2;
1492 break; 1492 break;
1493 case SYNC_PREF_NEWEST: 1493 case SYNC_PREF_NEWEST:
1494 if ( localMod >= remoteMod ) 1494 if ( localMod >= remoteMod )
1495 return 1; 1495 return 1;
1496 else 1496 else
1497 return 2; 1497 return 2;
1498 break; 1498 break;
1499 case SYNC_PREF_ASK: 1499 case SYNC_PREF_ASK:
1500 qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 1500 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
1501 if ( lastSync > remoteMod && lastSync > localMod) 1501 if ( lastSync > remoteMod && lastSync > localMod)
1502 return 0; 1502 return 0;
1503 if ( lastSync > remoteMod ) 1503 if ( lastSync > remoteMod )
1504 return 1; 1504 return 1;
1505 if ( lastSync > localMod ) 1505 if ( lastSync > localMod )
1506 return 2; 1506 return 2;
1507 qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 1507 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
1508 localIsNew = localMod >= remoteMod; 1508 localIsNew = localMod >= remoteMod;
1509 if ( localIsNew ) 1509 if ( localIsNew )
1510 getEventViewerDialog()->setColorMode( 1 ); 1510 getEventViewerDialog()->setColorMode( 1 );
1511 else 1511 else
1512 getEventViewerDialog()->setColorMode( 2 ); 1512 getEventViewerDialog()->setColorMode( 2 );
1513 getEventViewerDialog()->setIncidence(local); 1513 getEventViewerDialog()->setIncidence(local);
1514 if ( localIsNew ) 1514 if ( localIsNew )
1515 getEventViewerDialog()->setColorMode( 2 ); 1515 getEventViewerDialog()->setColorMode( 2 );
1516 else 1516 else
1517 getEventViewerDialog()->setColorMode( 1 ); 1517 getEventViewerDialog()->setColorMode( 1 );
1518 getEventViewerDialog()->addIncidence(remote); 1518 getEventViewerDialog()->addIncidence(remote);
1519 getEventViewerDialog()->setColorMode( 0 ); 1519 getEventViewerDialog()->setColorMode( 0 );
1520 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() ); 1520 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
1521 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!")); 1521 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
1522 getEventViewerDialog()->showMe(); 1522 getEventViewerDialog()->showMe();
1523 result = getEventViewerDialog()->executeS( localIsNew ); 1523 result = getEventViewerDialog()->executeS( localIsNew );
1524 return result; 1524 return result;
1525 1525
1526 break; 1526 break;
1527 case SYNC_PREF_FORCE_LOCAL: 1527 case SYNC_PREF_FORCE_LOCAL:
1528 return 1; 1528 return 1;
1529 break; 1529 break;
1530 case SYNC_PREF_FORCE_REMOTE: 1530 case SYNC_PREF_FORCE_REMOTE:
1531 return 2; 1531 return 2;
1532 break; 1532 break;
1533 1533
1534 default: 1534 default:
1535 // SYNC_PREF_TAKE_BOTH not implemented 1535 // SYNC_PREF_TAKE_BOTH not implemented
1536 break; 1536 break;
1537 } 1537 }
1538 return 0; 1538 return 0;
1539} 1539}
1540Event* CalendarView::getLastSyncEvent() 1540Event* CalendarView::getLastSyncEvent()
1541{ 1541{
1542 Event* lse; 1542 Event* lse;
1543 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 1543 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
1544 mCalendar->setSyncEventsEnabled();
1544 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); 1545 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice );
1545 if (!lse) { 1546 if (!lse) {
1547 qDebug("KO: New last Syncevent created for local: %s",mCurrentSyncDevice.latin1() );
1546 lse = new Event(); 1548 lse = new Event();
1547 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); 1549 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice );
1548 QString sum = ""; 1550 QString sum = "";
1549 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 1551 if ( mSyncManager->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
1550 sum = "E: "; 1552 sum = "E: ";
1551 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); 1553 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event"));
1552 lse->setDtStart( mLastCalendarSync ); 1554 lse->setDtStart( mLastCalendarSync );
1553 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 1555 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
1554 lse->setCategories( i18n("SyncEvent") ); 1556 lse->setCategories( i18n("SyncEvent") );
1555 lse->setReadOnly( true ); 1557 lse->setReadOnly( true );
1556 lse->setCalID( 1 ); 1558 lse->setCalID( 1 );
1557 mCalendar->addEvent( lse ); 1559 mCalendar->addEvent( lse );
1558 } 1560 } else
1561 qDebug("KO: Last Syncevent on local found");
1559 1562
1560 return lse; 1563 return lse;
1561 1564
1562} 1565}
1563 1566
1564// we check, if the to delete event has a id for a profile 1567// we check, if the to delete event has a id for a profile
1565// if yes, we set this id in the profile to delete 1568// if yes, we set this id in the profile to delete
1566void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ) 1569void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete )
1567{ 1570{
1568 if ( lastSync.count() == 0 ) { 1571 if ( lastSync.count() == 0 ) {
1569 //qDebug(" lastSync.count() == 0"); 1572 //qDebug(" lastSync.count() == 0");
1570 return; 1573 return;
1571 } 1574 }
1572 if ( toDelete->typeID() == journalID ) 1575 if ( toDelete->typeID() == journalID )
1573 return; 1576 return;
1574 1577
1575 Event* eve = lastSync.first(); 1578 Event* eve = lastSync.first();
1576 1579
1577 while ( eve ) { 1580 while ( eve ) {
1578 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name 1581 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name
1579 if ( !id.isEmpty() ) { 1582 if ( !id.isEmpty() ) {
1580 QString des = eve->description(); 1583 QString des = eve->description();
1581 QString pref = "e"; 1584 QString pref = "e";
1582 if ( toDelete->typeID() == todoID ) 1585 if ( toDelete->typeID() == todoID )
1583 pref = "t"; 1586 pref = "t";
1584 des += pref+ id + ","; 1587 des += pref+ id + ",";
1585 eve->setReadOnly( false ); 1588 eve->setReadOnly( false );
1586 eve->setDescription( des ); 1589 eve->setDescription( des );
1587 //qDebug("setdes %s ", des.latin1()); 1590 //qDebug("setdes %s ", des.latin1());
1588 eve->setReadOnly( true ); 1591 eve->setReadOnly( true );
1589 } 1592 }
1590 eve = lastSync.next(); 1593 eve = lastSync.next();
1591 } 1594 }
1592 1595
1593} 1596}
1594void CalendarView::checkExternalId( Incidence * inc ) 1597void CalendarView::checkExternalId( Incidence * inc )
1595{ 1598{
1596 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ; 1599 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ;
1597 checkExternSyncEvent( lastSync, inc ); 1600 checkExternSyncEvent( lastSync, inc );
1598 1601
1599} 1602}
1600bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) 1603bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode )
1601{ 1604{
1602 bool syncOK = true; 1605 bool syncOK = true;
1603 int addedEvent = 0; 1606 int addedEvent = 0;
1604 int addedEventR = 0; 1607 int addedEventR = 0;
1605 int deletedEventR = 0; 1608 int deletedEventR = 0;
1606 int deletedEventL = 0; 1609 int deletedEventL = 0;
1607 int changedLocal = 0; 1610 int changedLocal = 0;
1608 int changedRemote = 0; 1611 int changedRemote = 0;
1609 int filteredIN = 0; 1612 int filteredIN = 0;
1610 int filteredOUT = 0; 1613 int filteredOUT = 0;
1611 //QPtrList<Event> el = local->rawEvents(); 1614 //QPtrList<Event> el = local->rawEvents();
1612 Event* eventR; 1615 Event* eventR;
1613 QString uid; 1616 QString uid;
1614 int take; 1617 int take;
1615 Event* eventRSync; 1618 Event* eventRSync;
1616 Event* eventLSync; 1619 Event* eventLSync;
1617 clearAllViews(); 1620 clearAllViews();
1618 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents(); 1621 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
1619 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents(); 1622 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
1620 bool fullDateRange = false; 1623 bool fullDateRange = false;
1621 local->resetTempSyncStat(); 1624 local->resetTempSyncStat();
1622 mLastCalendarSync = QDateTime::currentDateTime(); 1625 mLastCalendarSync = QDateTime::currentDateTime();
1623 if ( mSyncManager->syncWithDesktop() ) { 1626 if ( mSyncManager->syncWithDesktop() ) {
1624 remote->resetPilotStat(1); 1627 remote->resetPilotStat(1);
1625 if ( KSyncManager::mRequestedSyncEvent.isValid() ) { 1628 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
1626 mLastCalendarSync = KSyncManager::mRequestedSyncEvent; 1629 mLastCalendarSync = KSyncManager::mRequestedSyncEvent;
1627 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() ); 1630 qDebug("KO: using extern time for calendar sync: %s ", mLastCalendarSync.toString().latin1() );
1628 } else { 1631 } else {
1629 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime "); 1632 qDebug("KSyncManager::mRequestedSyncEvent has invalid datatime ");
1630 } 1633 }
1631 } 1634 }
1632 QDateTime modifiedCalendar = mLastCalendarSync; 1635 QDateTime modifiedCalendar = mLastCalendarSync;
1633 eventLSync = getLastSyncEvent(); 1636 eventLSync = getLastSyncEvent();
1634 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 1637 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
1635 if ( eventR ) { 1638 if ( eventR ) {
1636 qDebug("last-syncEvent on remote found "); 1639 qDebug("KO: Last-syncEvent on remote found ");
1637 eventRSync = (Event*) eventR->clone(); 1640 eventRSync = (Event*) eventR->clone();
1638 remote->deleteEvent(eventR ); 1641 remote->deleteEvent(eventR );
1639 1642
1640 } else { 1643 } else {
1641 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) { 1644 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL || mSyncManager->syncWithDesktop()) {
1642 eventRSync = (Event*)eventLSync->clone(); 1645 eventRSync = (Event*)eventLSync->clone();
1643 } else { 1646 } else {
1644 fullDateRange = true; 1647 fullDateRange = true;
1645 eventRSync = new Event(); 1648 eventRSync = new Event();
1646 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 1649 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
1647 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); 1650 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
1648 eventRSync->setDtStart( mLastCalendarSync ); 1651 eventRSync->setDtStart( mLastCalendarSync );
1649 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 1652 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
1650 eventRSync->setCategories( i18n("SyncEvent") ); 1653 eventRSync->setCategories( i18n("SyncEvent") );
1651 } 1654 }
1652 } 1655 }
1653 if ( eventLSync->dtStart() == mLastCalendarSync ) 1656 if ( eventLSync->dtStart() == mLastCalendarSync )
1654 fullDateRange = true; 1657 fullDateRange = true;
1655 1658
1656 if ( ! fullDateRange ) { 1659 if ( ! fullDateRange ) {
1657 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 1660 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
1658 1661
1659 qDebug("KO: Sync: Set fulldate to true! Local: %s --- Remote: %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 1662 qDebug("KO: Sync: Set fulldate to true! Local: %s --- Remote: %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
1660 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 1663 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
1661 fullDateRange = true; 1664 fullDateRange = true;
1662 } 1665 }
1663 } 1666 }
1664 if ( mSyncManager->syncWithDesktop() ) { 1667 if ( mSyncManager->syncWithDesktop() ) {
1665 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync ); 1668 fullDateRange = ( eventLSync->dtStart() <= mLastCalendarSync && eventLSync->dtStart().addSecs(1) >= mLastCalendarSync );
1666 } 1669 }
1667 if ( fullDateRange ) 1670 if ( fullDateRange )
1668 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 1671 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
1669 else 1672 else
1670 mLastCalendarSync = eventLSync->dtStart(); 1673 mLastCalendarSync = eventLSync->dtStart();
1671 // for resyncing if own file has changed 1674 // for resyncing if own file has changed
1672 if ( mCurrentSyncDevice == "deleteaftersync" ) { 1675 if ( mCurrentSyncDevice == "deleteaftersync" ) {
1673 mLastCalendarSync = loadedFileVersion; 1676 mLastCalendarSync = loadedFileVersion;
1674 //qDebug("setting mLastCalendarSync "); 1677 //qDebug("setting mLastCalendarSync ");
1675 } 1678 }
1676 //qDebug("*************************** "); 1679 //qDebug("*************************** ");
1677 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange); 1680 qDebug("KO: mLastCalendarSync %s .Full: %d",mLastCalendarSync.toString().latin1(), fullDateRange);
1678 QPtrList<Incidence> er = remote->rawIncidences(); 1681 QPtrList<Incidence> er = remote->rawIncidences();
1679 Incidence* inR = er.first(); 1682 Incidence* inR = er.first();
1680 Incidence* inL; 1683 Incidence* inL;
1681 QProgressBar bar( er.count(),0 ); 1684 QProgressBar bar( er.count(),0 );
1682 bar.setCaption (i18n("Syncing - close to abort!") ); 1685 bar.setCaption (i18n("Syncing - close to abort!") );
1683 1686
1684 // ************** setting up filter ************* 1687 // ************** setting up filter *************
1685 CalFilter *filterIN = 0; 1688 CalFilter *filterIN = 0;
1686 CalFilter *filterOUT = 0; 1689 CalFilter *filterOUT = 0;
1687 CalFilter *filter = mFilters.first(); 1690 CalFilter *filter = mFilters.first();
1688 while(filter) { 1691 while(filter) {
1689 if ( filter->name() == mSyncManager->mFilterInCal ) 1692 if ( filter->name() == mSyncManager->mFilterInCal )
1690 filterIN = filter; 1693 filterIN = filter;
1691 if ( filter->name() == mSyncManager->mFilterOutCal ) 1694 if ( filter->name() == mSyncManager->mFilterOutCal )
1692 filterOUT = filter; 1695 filterOUT = filter;
1693 filter = mFilters.next(); 1696 filter = mFilters.next();
1694 } 1697 }
1695 int w = 300; 1698 int w = 300;
1696 if ( QApplication::desktop()->width() < 320 ) 1699 if ( QApplication::desktop()->width() < 320 )
1697 w = 220; 1700 w = 220;
1698 int h = bar.sizeHint().height() ; 1701 int h = bar.sizeHint().height() ;
1699 int dw = QApplication::desktop()->width(); 1702 int dw = QApplication::desktop()->width();
1700 int dh = QApplication::desktop()->height(); 1703 int dh = QApplication::desktop()->height();
1701 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1704 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1702 bar.show(); 1705 bar.show();
1703 int modulo = (er.count()/10)+1; 1706 int modulo = (er.count()/10)+1;
1704 int incCounter = 0; 1707 int incCounter = 0;
1705 while ( inR ) { 1708 while ( inR ) {
1706 if ( ! bar.isVisible() ) 1709 if ( ! bar.isVisible() )
1707 return false; 1710 return false;
1708 if ( incCounter % modulo == 0 ) 1711 if ( incCounter % modulo == 0 )
1709 bar.setProgress( incCounter ); 1712 bar.setProgress( incCounter );
1710 ++incCounter; 1713 ++incCounter;
1711 uid = inR->uid(); 1714 uid = inR->uid();
1712 bool skipIncidence = false; 1715 bool skipIncidence = false;
1713 if ( uid.left(15) == QString("last-syncEvent-") ) 1716 if ( uid.left(15) == QString("last-syncEvent-") )
1714 skipIncidence = true; 1717 skipIncidence = true;
1715 QString idS; 1718 QString idS;
1716 qApp->processEvents(); 1719 qApp->processEvents();
1717 if ( !skipIncidence ) { 1720 if ( !skipIncidence ) {
1718 inL = local->incidenceForUid( uid , false ); 1721 inL = local->incidenceForUid( uid , false );
1719 if ( inL ) { // maybe conflict - same uid in both calendars 1722 if ( inL ) { // maybe conflict - same uid in both calendars
1720 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1723 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1721 //qDebug("take %d %s ", take, inL->summary().latin1()); 1724 //qDebug("take %d %s ", take, inL->summary().latin1());
1722 if ( take == 3 ) 1725 if ( take == 3 )
1723 return false; 1726 return false;
1724 if ( take == 1 ) {// take local ********************** 1727 if ( take == 1 ) {// take local **********************
1725 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 1728 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
1726 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1729 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1727 else 1730 else
1728 idS = inR->IDStr(); 1731 idS = inR->IDStr();
1729 int calID = inR->calID(); 1732 int calID = inR->calID();
1730 remote->deleteIncidence( inR ); 1733 remote->deleteIncidence( inR );
1731 inR = inL->clone(); 1734 inR = inL->clone();
1732 inR->setCalID( calID ); 1735 inR->setCalID( calID );
1733 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1736 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1734 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 1737 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
1735 inR->setIDStr( idS ); 1738 inR->setIDStr( idS );
1736 remote->addIncidence( inR ); 1739 remote->addIncidence( inR );
1737 if ( mSyncManager->syncWithDesktop() ) 1740 if ( mSyncManager->syncWithDesktop() )
1738 inR->setPilotId( 2 ); 1741 inR->setPilotId( 2 );
1739 ++changedRemote; 1742 ++changedRemote;
1740 } else {// take remote ********************** 1743 } else {// take remote **********************
1741 if ( !inL->isReadOnly() ) { 1744 if ( !inL->isReadOnly() ) {
1742 idS = inL->IDStr(); 1745 idS = inL->IDStr();
1743 int pid = inL->pilotId(); 1746 int pid = inL->pilotId();
1744 int calID = inL->calID(); 1747 int calID = inL->calID();
1745 local->deleteIncidence( inL ); 1748 local->deleteIncidence( inL );
1746 inL = inR->clone(); 1749 inL = inR->clone();
1747 inL->setCalID( calID ); 1750 inL->setCalID( calID );
1748 if ( mSyncManager->syncWithDesktop() ) 1751 if ( mSyncManager->syncWithDesktop() )
1749 inL->setPilotId( pid ); 1752 inL->setPilotId( pid );
1750 inL->setIDStr( idS ); 1753 inL->setIDStr( idS );
1751 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1754 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1752 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1755 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1753 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1756 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1754 } 1757 }
1755 local->addIncidence( inL ); 1758 local->addIncidence( inL );
1756 ++changedLocal; 1759 ++changedLocal;
1757 } 1760 }
1758 } 1761 }
1759 } 1762 }
1760 } else { // no conflict ********** add or delete remote 1763 } else { // no conflict ********** add or delete remote
1761 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){ 1764 if ( !filterIN || filterIN->filterCalendarItem( inR ) ){
1762 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1765 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1763 QString des = eventLSync->description(); 1766 QString des = eventLSync->description();
1764 QString pref = "e"; 1767 QString pref = "e";
1765 if ( inR->typeID() == todoID ) 1768 if ( inR->typeID() == todoID )
1766 pref = "t"; 1769 pref = "t";
1767 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1770 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1768 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1771 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1769 //remote->deleteIncidence( inR ); 1772 //remote->deleteIncidence( inR );
1770 ++deletedEventR; 1773 ++deletedEventR;
1771 } else { 1774 } else {
1772 inR->setLastModified( modifiedCalendar ); 1775 inR->setLastModified( modifiedCalendar );
1773 inL = inR->clone(); 1776 inL = inR->clone();
1774 inL->setIDStr( ":" ); 1777 inL->setIDStr( ":" );
1775 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1778 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1776 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1779 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1777 1780
1778 inL->setCalID( 0 );// add to default cal 1781 inL->setCalID( 0 );// add to default cal
1779 local->addIncidence( inL ); 1782 local->addIncidence( inL );
1780 ++addedEvent; 1783 ++addedEvent;
1781 1784
1782 } 1785 }
1783 } else { 1786 } else {
1784 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1787 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1785 inR->setLastModified( modifiedCalendar ); 1788 inR->setLastModified( modifiedCalendar );
1786 inL = inR->clone(); 1789 inL = inR->clone();
1787 inL->setIDStr( ":" ); 1790 inL->setIDStr( ":" );
1788 inL->setCalID( 0 );// add to default cal 1791 inL->setCalID( 0 );// add to default cal
1789 local->addIncidence( inL ); 1792 local->addIncidence( inL );
1790 ++addedEvent; 1793 ++addedEvent;
1791 1794
1792 } else { 1795 } else {
1793 checkExternSyncEvent(eventRSyncSharp, inR); 1796 checkExternSyncEvent(eventRSyncSharp, inR);
1794 remote->deleteIncidence( inR ); 1797 remote->deleteIncidence( inR );
1795 ++deletedEventR; 1798 ++deletedEventR;
1796 } 1799 }
1797 } 1800 }
1798 } else { 1801 } else {
1799 ++filteredIN; 1802 ++filteredIN;
1800 } 1803 }
1801 } 1804 }
1802 } 1805 }
1803 inR = er.next(); 1806 inR = er.next();
1804 } 1807 }
1805 QPtrList<Incidence> el = local->rawIncidences(); 1808 QPtrList<Incidence> el = local->rawIncidences();
1806 inL = el.first(); 1809 inL = el.first();
1807 modulo = (el.count()/10)+1; 1810 modulo = (el.count()/10)+1;
1808 bar.setCaption (i18n("Add / remove events") ); 1811 bar.setCaption (i18n("Add / remove events") );
1809 bar.setTotalSteps ( el.count() ) ; 1812 bar.setTotalSteps ( el.count() ) ;
1810 bar.show(); 1813 bar.show();
1811 incCounter = 0; 1814 incCounter = 0;
1812 1815
1813 while ( inL ) { 1816 while ( inL ) {
1814 1817
1815 qApp->processEvents(); 1818 qApp->processEvents();
1816 if ( ! bar.isVisible() ) 1819 if ( ! bar.isVisible() )
1817 return false; 1820 return false;
1818 if ( incCounter % modulo == 0 ) 1821 if ( incCounter % modulo == 0 )
1819 bar.setProgress( incCounter ); 1822 bar.setProgress( incCounter );
1820 ++incCounter; 1823 ++incCounter;
1821 uid = inL->uid(); 1824 uid = inL->uid();
1822 bool skipIncidence = false; 1825 bool skipIncidence = false;
1823 if ( uid.left(15) == QString("last-syncEvent-") ) 1826 if ( uid.left(15) == QString("last-syncEvent-") )
1824 skipIncidence = true; 1827 skipIncidence = true;
1825 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID ) 1828 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->typeID() == journalID )
1826 skipIncidence = true; 1829 skipIncidence = true;
1827 if ( !skipIncidence ) { 1830 if ( !skipIncidence ) {
1828 inR = remote->incidenceForUid( uid , true ); 1831 inR = remote->incidenceForUid( uid , true );
1829 if ( ! inR ) { 1832 if ( ! inR ) {
1830 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){ 1833 if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){
1831 // no conflict ********** add or delete local 1834 // no conflict ********** add or delete local
1832 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1835 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1833 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 1836 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1834 checkExternSyncEvent(eventLSyncSharp, inL); 1837 checkExternSyncEvent(eventLSyncSharp, inL);
1835 local->deleteIncidence( inL ); 1838 local->deleteIncidence( inL );
1836 ++deletedEventL; 1839 ++deletedEventL;
1837 } else { 1840 } else {
1838 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1841 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1839 inL->removeID(mCurrentSyncDevice ); 1842 inL->removeID(mCurrentSyncDevice );
1840 ++addedEventR; 1843 ++addedEventR;
1841 //qDebug("remote added Incidence %s ", inL->summary().latin1()); 1844 //qDebug("remote added Incidence %s ", inL->summary().latin1());
1842 inL->setLastModified( modifiedCalendar ); 1845 inL->setLastModified( modifiedCalendar );
1843 inR = inL->clone(); 1846 inR = inL->clone();
1844 inR->setIDStr( ":" ); 1847 inR->setIDStr( ":" );
1845 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1848 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1846 inR->setCalID( 0 );// add to default cal 1849 inR->setCalID( 0 );// add to default cal
1847 remote->addIncidence( inR ); 1850 remote->addIncidence( inR );
1848 } 1851 }
1849 } 1852 }
1850 } else { 1853 } else {
1851 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1854 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1852 checkExternSyncEvent(eventLSyncSharp, inL); 1855 checkExternSyncEvent(eventLSyncSharp, inL);
1853 local->deleteIncidence( inL ); 1856 local->deleteIncidence( inL );
1854 ++deletedEventL; 1857 ++deletedEventL;
1855 } else { 1858 } else {
1856 if ( ! mSyncManager->mWriteBackExistingOnly ) { 1859 if ( ! mSyncManager->mWriteBackExistingOnly ) {
1857 ++addedEventR; 1860 ++addedEventR;
1858 inL->setLastModified( modifiedCalendar ); 1861 inL->setLastModified( modifiedCalendar );
1859 inR = inL->clone(); 1862 inR = inL->clone();
1860 inR->setIDStr( ":" ); 1863 inR->setIDStr( ":" );
1861 inR->setCalID( 0 );// add to default cal 1864 inR->setCalID( 0 );// add to default cal
1862 remote->addIncidence( inR ); 1865 remote->addIncidence( inR );
1863 } 1866 }
1864 } 1867 }
1865 } 1868 }
1866 } else { 1869 } else {
1867 ++filteredOUT; 1870 ++filteredOUT;
1868 } 1871 }
1869 } 1872 }
1870 } 1873 }
1871 inL = el.next(); 1874 inL = el.next();
1872 } 1875 }
1873 int delFut = 0; 1876 int delFut = 0;
1874 int remRem = 0; 1877 int remRem = 0;
1875 if ( mSyncManager->mWriteBackInFuture ) { 1878 if ( mSyncManager->mWriteBackInFuture ) {
1876 er = remote->rawIncidences(); 1879 er = remote->rawIncidences();
1877 remRem = er.count(); 1880 remRem = er.count();
1878 inR = er.first(); 1881 inR = er.first();
1879 QDateTime dt; 1882 QDateTime dt;
1880 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) ); 1883 QDateTime cur = QDateTime::currentDateTime().addDays( -(mSyncManager->mWriteBackInPast * 7) );
1881 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 ); 1884 QDateTime end = QDateTime::currentDateTime().addDays( (mSyncManager->mWriteBackInFuture ) *7 );
1882 while ( inR ) { 1885 while ( inR ) {
1883 if ( inR->typeID() == todoID ) { 1886 if ( inR->typeID() == todoID ) {
1884 Todo * t = (Todo*)inR; 1887 Todo * t = (Todo*)inR;
1885 if ( t->hasDueDate() ) 1888 if ( t->hasDueDate() )
1886 dt = t->dtDue(); 1889 dt = t->dtDue();
1887 else 1890 else
1888 dt = cur.addSecs( 62 ); 1891 dt = cur.addSecs( 62 );
1889 } 1892 }
1890 else if (inR->typeID() == eventID ) { 1893 else if (inR->typeID() == eventID ) {
1891 bool ok; 1894 bool ok;
1892 dt = inR->getNextOccurence( cur, &ok ); 1895 dt = inR->getNextOccurence( cur, &ok );
1893 if ( !ok ) 1896 if ( !ok )
1894 dt = cur.addSecs( -62 ); 1897 dt = cur.addSecs( -62 );
1895 } 1898 }
1896 else 1899 else
1897 dt = inR->dtStart(); 1900 dt = inR->dtStart();
1898 if ( dt < cur || dt > end ) { 1901 if ( dt < cur || dt > end ) {
1899 remote->deleteIncidence( inR ); 1902 remote->deleteIncidence( inR );
1900 ++delFut; 1903 ++delFut;
1901 } 1904 }
1902 inR = er.next(); 1905 inR = er.next();
1903 } 1906 }
1904 } 1907 }
1905 bar.hide(); 1908 bar.hide();
1906 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1909 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1907 if ( mMultiResourceSync ) { 1910 if ( mMultiResourceSync ) {
1908 remote->removeSyncInfo( "" ); //all 1911 remote->removeSyncInfo( "" ); //all
1909 1912
1910 } else { 1913 } else {
1911 eventLSync->setReadOnly( false ); 1914 eventLSync->setReadOnly( false );
1912 eventLSync->setDtStart( mLastCalendarSync ); 1915 eventLSync->setDtStart( mLastCalendarSync );
1913 eventRSync->setDtStart( mLastCalendarSync ); 1916 eventRSync->setDtStart( mLastCalendarSync );
1914 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1917 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1915 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1918 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1916 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 1919 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
1917 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 1920 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
1918 eventLSync->setReadOnly( true ); 1921 eventLSync->setReadOnly( true );
1919 } 1922 }
1920 qDebug("KO: Normal sync: %d ",mGlobalSyncMode == SYNC_MODE_NORMAL ); 1923 qDebug("KO: Normal sync: %d ",mGlobalSyncMode == SYNC_MODE_NORMAL );
1921 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncManager->syncWithDesktop() && !mMultiResourceSync ) // kde is abnormal... 1924 if ( mGlobalSyncMode == SYNC_MODE_NORMAL && !mSyncManager->syncWithDesktop() && !mMultiResourceSync ) // kde is abnormal...
1922 remote->addEvent( eventRSync ); 1925 remote->addEvent( eventRSync );
1923 else 1926 else
1924 delete eventRSync; 1927 delete eventRSync;
1925 qDebug("KO: Sync with desktop %d ",mSyncManager->syncWithDesktop() ); 1928 qDebug("KO: Sync with desktop %d ",mSyncManager->syncWithDesktop() );
1926 QString mes; 1929 QString mes;
1927 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 %d incoming filtered out\n %d outgoing filtered out\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR, filteredIN, filteredOUT ); 1930 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 %d incoming filtered out\n %d outgoing filtered out\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR, filteredIN, filteredOUT );
1928 QString delmess; 1931 QString delmess;
1929 if ( delFut ) { 1932 if ( delFut ) {
1930 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are more\nthan %d weeks in the past or\nmore than %d weeks in the future.\nAfter skipping, remote has\n%d calendar/todo items."), delFut,mSyncManager->mWriteBackInPast,mSyncManager->mWriteBackInFuture, remRem-delFut); 1933 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are more\nthan %d weeks in the past or\nmore than %d weeks in the future.\nAfter skipping, remote has\n%d calendar/todo items."), delFut,mSyncManager->mWriteBackInPast,mSyncManager->mWriteBackInFuture, remRem-delFut);
1931 mes += delmess; 1934 mes += delmess;
1932 } 1935 }
1933 mes = i18n("Local calendar changed!\n") +mes; 1936 mes = i18n("Local calendar changed!\n") +mes;
1934 mCalendar->checkAlarmForIncidence( 0, true ); 1937 mCalendar->checkAlarmForIncidence( 0, true );
1935 qDebug( mes ); 1938 qDebug( mes );
1936 if ( mSyncManager->mShowSyncSummary ) { 1939 if ( mSyncManager->mShowSyncSummary ) {
1937 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes, 1940 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(this, mes,
1938 i18n("KO/Pi Synchronization"),i18n("Write back"))) { 1941 i18n("KO/Pi Synchronization"),i18n("Write back"))) {
1939 qDebug("KO: WB cancelled "); 1942 qDebug("KO: WB cancelled ");
1940 mSyncManager->mWriteBackFile = false; 1943 mSyncManager->mWriteBackFile = false;
1941 return syncOK; 1944 return syncOK;
1942 } 1945 }
1943 } 1946 }
1944 return syncOK; 1947 return syncOK;
1945} 1948}
1946 1949
1947void CalendarView::setSyncDevice( QString s ) 1950void CalendarView::setSyncDevice( QString s )
1948{ 1951{
1949 mCurrentSyncDevice= s; 1952 mCurrentSyncDevice= s;
1950} 1953}
1951void CalendarView::setSyncName( QString s ) 1954void CalendarView::setSyncName( QString s )
1952{ 1955{
1953 mCurrentSyncName= s; 1956 mCurrentSyncName= s;
1954} 1957}
1955bool CalendarView::syncCalendar(QString filename, int mode) 1958bool CalendarView::syncCalendar(QString filename, int mode)
1956{ 1959{
1957 //qDebug("syncCalendar %s ", filename.latin1()); 1960 //qDebug("syncCalendar %s ", filename.latin1());
1958 mGlobalSyncMode = SYNC_MODE_NORMAL; 1961 mGlobalSyncMode = SYNC_MODE_NORMAL;
1959 CalendarLocal* calendar = new CalendarLocal(); 1962 CalendarLocal* calendar = new CalendarLocal();
1960 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1963 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1961 FileStorage* storage = new FileStorage( calendar ); 1964 FileStorage* storage = new FileStorage( calendar );
1962 bool syncOK = false; 1965 bool syncOK = false;
1963 storage->setFileName( filename ); 1966 storage->setFileName( filename );
1964 // qDebug("loading ... "); 1967 // qDebug("loading ... ");
1965 if ( storage->load() ) { 1968 if ( storage->load() ) {
1966 getEventViewerDialog()->setSyncMode( true ); 1969 getEventViewerDialog()->setSyncMode( true );
1967 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1970 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1968 getEventViewerDialog()->setSyncMode( false ); 1971 getEventViewerDialog()->setSyncMode( false );
1969 if ( syncOK ) { 1972 if ( syncOK ) {
1970 if ( mSyncManager->mWriteBackFile ) 1973 if ( mSyncManager->mWriteBackFile )
1971 { 1974 {
1972 storage->setSaveFormat( new ICalFormat() ); 1975 storage->setSaveFormat( new ICalFormat() );
1973 storage->save(); 1976 storage->save();
1974 } 1977 }
1975 } 1978 }
1976 setModified( true ); 1979 setModified( true );
1977 } 1980 }
1978 delete storage; 1981 delete storage;
1979 delete calendar; 1982 delete calendar;
1980 if ( syncOK ) 1983 if ( syncOK )
1981 updateView(); 1984 updateView();
1982 return syncOK; 1985 return syncOK;
1983} 1986}
1984 1987
1985void CalendarView::syncExternal( int mode ) 1988void CalendarView::syncExternal( int mode )
1986{ 1989{
1987 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1990 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1988 qApp->processEvents(); 1991 qApp->processEvents();
1989 CalendarLocal* calendar = new CalendarLocal(); 1992 CalendarLocal* calendar = new CalendarLocal();
1990 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 1993 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
1991 bool syncOK = false; 1994 bool syncOK = false;
1992 bool loadSuccess = false; 1995 bool loadSuccess = false;
1993 PhoneFormat* phoneFormat = 0; 1996 PhoneFormat* phoneFormat = 0;
1994 emit tempDisableBR(true); 1997 emit tempDisableBR(true);
1995#ifndef DESKTOP_VERSION 1998#ifndef DESKTOP_VERSION
1996 SharpFormat* sharpFormat = 0; 1999 SharpFormat* sharpFormat = 0;
1997 if ( mode == 0 ) { // sharp 2000 if ( mode == 0 ) { // sharp
1998 sharpFormat = new SharpFormat () ; 2001 sharpFormat = new SharpFormat () ;
1999 loadSuccess = sharpFormat->load( calendar, mCalendar ); 2002 loadSuccess = sharpFormat->load( calendar, mCalendar );
2000 2003
2001 } else 2004 } else
2002#endif 2005#endif
2003 if ( mode == 1 ) { // phone 2006 if ( mode == 1 ) { // phone
2004 phoneFormat = new PhoneFormat (mCurrentSyncDevice, 2007 phoneFormat = new PhoneFormat (mCurrentSyncDevice,
2005 mSyncManager->mPhoneDevice, 2008 mSyncManager->mPhoneDevice,
2006 mSyncManager->mPhoneConnection, 2009 mSyncManager->mPhoneConnection,
2007 mSyncManager->mPhoneModel); 2010 mSyncManager->mPhoneModel);
2008 loadSuccess = phoneFormat->load( calendar,mCalendar); 2011 loadSuccess = phoneFormat->load( calendar,mCalendar);
2009 2012
2010 } else { 2013 } else {
2011 emit tempDisableBR(false); 2014 emit tempDisableBR(false);
2012 return; 2015 return;
2013 } 2016 }
2014 if ( loadSuccess ) { 2017 if ( loadSuccess ) {
2015 getEventViewerDialog()->setSyncMode( true ); 2018 getEventViewerDialog()->setSyncMode( true );
2016 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 2019 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
2017 getEventViewerDialog()->setSyncMode( false ); 2020 getEventViewerDialog()->setSyncMode( false );
2018 qApp->processEvents(); 2021 qApp->processEvents();
2019 if ( syncOK ) { 2022 if ( syncOK ) {
2020 if ( mSyncManager->mWriteBackFile ) 2023 if ( mSyncManager->mWriteBackFile )
2021 { 2024 {
2022 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 2025 QPtrList<Incidence> iL = mCalendar->rawIncidences();
2023 Incidence* inc = iL.first(); 2026 Incidence* inc = iL.first();
2024 if ( phoneFormat ) { 2027 if ( phoneFormat ) {
2025 while ( inc ) { 2028 while ( inc ) {
2026 inc->removeID(mCurrentSyncDevice); 2029 inc->removeID(mCurrentSyncDevice);
2027 inc = iL.next(); 2030 inc = iL.next();
2028 } 2031 }
2029 } 2032 }
2030#ifndef DESKTOP_VERSION 2033#ifndef DESKTOP_VERSION
2031 if ( sharpFormat ) 2034 if ( sharpFormat )
2032 sharpFormat->save(calendar); 2035 sharpFormat->save(calendar);
2033#endif 2036#endif
2034 if ( phoneFormat ) 2037 if ( phoneFormat )
2035 phoneFormat->save(calendar); 2038 phoneFormat->save(calendar);
2036 iL = calendar->rawIncidences(); 2039 iL = calendar->rawIncidences();
2037 inc = iL.first(); 2040 inc = iL.first();
2038 Incidence* loc; 2041 Incidence* loc;
2039 while ( inc ) { 2042 while ( inc ) {
2040 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { 2043 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) {
2041 loc = mCalendar->incidence(inc->uid() ); 2044 loc = mCalendar->incidence(inc->uid() );
2042 if ( loc ) { 2045 if ( loc ) {
2043 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) ); 2046 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) );
2044 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) ); 2047 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) );
2045 } 2048 }
2046 } 2049 }
2047 inc = iL.next(); 2050 inc = iL.next();
2048 } 2051 }
2049 Incidence* lse = getLastSyncEvent(); 2052 Incidence* lse = getLastSyncEvent();
2050 if ( lse ) { 2053 if ( lse ) {
2051 lse->setReadOnly( false ); 2054 lse->setReadOnly( false );
2052 lse->setDescription( "" ); 2055 lse->setDescription( "" );
2053 lse->setReadOnly( true ); 2056 lse->setReadOnly( true );
2054 } 2057 }
2055 } 2058 }
2056 } else { 2059 } else {
2057 topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") ); 2060 topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") );
2058 } 2061 }
2059 setModified( true ); 2062 setModified( true );
2060 } else { 2063 } else {
2061 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; 2064 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ;
2062 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"), 2065 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"),
2063 question, i18n("Ok")) ; 2066 question, i18n("Ok")) ;
2064 2067
2065 } 2068 }
2066 delete calendar; 2069 delete calendar;
2067 updateView(); 2070 updateView();
2068 emit tempDisableBR(false); 2071 emit tempDisableBR(false);
2069 return ;//syncOK; 2072 return ;//syncOK;
2070 2073
2071} 2074}
2072 2075
2073bool CalendarView::importBday() 2076bool CalendarView::importBday()
2074{ 2077{
2075#ifndef KORG_NOKABC 2078#ifndef KORG_NOKABC
2076 2079
2077#ifdef DESKTOP_VERSION 2080#ifdef DESKTOP_VERSION
2078 int curCal = mCalendar->defaultCalendar(); 2081 int curCal = mCalendar->defaultCalendar();
2079 int bd = mCalEditView->getBirtdayID(); 2082 int bd = mCalEditView->getBirtdayID();
2080 if ( bd == 0 ) 2083 if ( bd == 0 )
2081 return false; 2084 return false;
2082 mCalendar->setDefaultCalendar( bd ); 2085 mCalendar->setDefaultCalendar( bd );
2083 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 2086 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
2084 KABC::AddressBook::Iterator it; 2087 KABC::AddressBook::Iterator it;
2085 int count = 0; 2088 int count = 0;
2086 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 2089 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
2087 ++count; 2090 ++count;
2088 } 2091 }
2089 QProgressBar bar(count,0 ); 2092 QProgressBar bar(count,0 );
2090 int w = 300; 2093 int w = 300;
2091 if ( QApplication::desktop()->width() < 320 ) 2094 if ( QApplication::desktop()->width() < 320 )
2092 w = 220; 2095 w = 220;
2093 int h = bar.sizeHint().height() ; 2096 int h = bar.sizeHint().height() ;
2094 int dw = QApplication::desktop()->width(); 2097 int dw = QApplication::desktop()->width();
2095 int dh = QApplication::desktop()->height(); 2098 int dh = QApplication::desktop()->height();
2096 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2099 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2097 bar.show(); 2100 bar.show();
2098 bar.setCaption (i18n("Reading addressbook - close to abort!") ); 2101 bar.setCaption (i18n("Reading addressbook - close to abort!") );
2099 qApp->processEvents(); 2102 qApp->processEvents();
2100 count = 0; 2103 count = 0;
2101 int addCount = 0; 2104 int addCount = 0;
2102 KCal::Attendee* a = 0; 2105 KCal::Attendee* a = 0;
2103 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 2106 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
2104 if ( ! bar.isVisible() ) 2107 if ( ! bar.isVisible() )
2105 return false; 2108 return false;
2106 bar.setProgress( count++ ); 2109 bar.setProgress( count++ );
2107 qApp->processEvents(); 2110 qApp->processEvents();
2108 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() ); 2111 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() );
2109 if ( (*it).birthday().date().isValid() ){ 2112 if ( (*it).birthday().date().isValid() ){
2110 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 2113 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
2111 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) ) 2114 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) )
2112 ++addCount; 2115 ++addCount;
2113 } 2116 }
2114 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); 2117 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d");
2115 if ( anni.isValid() ){ 2118 if ( anni.isValid() ){
2116 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 2119 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
2117 if ( addAnniversary( anni, (*it).assembledName(), a, false ) ) 2120 if ( addAnniversary( anni, (*it).assembledName(), a, false ) )
2118 ++addCount; 2121 ++addCount;
2119 } 2122 }
2120 } 2123 }
2121 mCalendar->setDefaultCalendar( curCal ); 2124 mCalendar->setDefaultCalendar( curCal );
2122 updateView(); 2125 updateView();
2123 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 2126 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
2124#else //DESKTOP_VERSION 2127#else //DESKTOP_VERSION
2125 2128
2126 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); 2129 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/);
2127 // the result should now arrive through method insertBirthdays 2130 // the result should now arrive through method insertBirthdays
2128 2131
2129#endif //DESKTOP_VERSION 2132#endif //DESKTOP_VERSION
2130 2133
2131#endif //KORG_NOKABC 2134#endif //KORG_NOKABC
2132 2135
2133 2136
2134 return true; 2137 return true;
2135} 2138}
2136 2139
2137// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI 2140// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI
2138void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList, 2141void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList,
2139 const QStringList& anniversaryList, const QStringList& realNameList, 2142 const QStringList& anniversaryList, const QStringList& realNameList,
2140 const QStringList& emailList, const QStringList& assembledNameList, 2143 const QStringList& emailList, const QStringList& assembledNameList,
2141 const QStringList& uidList) 2144 const QStringList& uidList)
2142{ 2145{
2143 2146
2144 //qDebug("KO::CalendarView::insertBirthdays"); 2147 //qDebug("KO::CalendarView::insertBirthdays");
2145 if (uid == this->name()) 2148 if (uid == this->name())
2146 { 2149 {
2147 int curCal = mCalendar->defaultCalendar(); 2150 int curCal = mCalendar->defaultCalendar();
2148 int bd = mCalEditView->getBirtdayID(); 2151 int bd = mCalEditView->getBirtdayID();
2149 if ( bd == 0 ) 2152 if ( bd == 0 )
2150 return; 2153 return;
2151 mCalendar->setDefaultCalendar( bd ); 2154 mCalendar->setDefaultCalendar( bd );
2152 2155
2153 2156
2154 int count = birthdayList.count(); 2157 int count = birthdayList.count();
2155 int addCount = 0; 2158 int addCount = 0;
2156 KCal::Attendee* a = 0; 2159 KCal::Attendee* a = 0;
2157 2160
2158 //qDebug("CalView 1 %i", count); 2161 //qDebug("CalView 1 %i", count);
2159 2162
2160 QProgressBar bar(count,0 ); 2163 QProgressBar bar(count,0 );
2161 int w = 300; 2164 int w = 300;
2162 if ( QApplication::desktop()->width() < 320 ) 2165 if ( QApplication::desktop()->width() < 320 )
2163 w = 220; 2166 w = 220;
2164 int h = bar.sizeHint().height() ; 2167 int h = bar.sizeHint().height() ;
2165 int dw = QApplication::desktop()->width(); 2168 int dw = QApplication::desktop()->width();
2166 int dh = QApplication::desktop()->height(); 2169 int dh = QApplication::desktop()->height();
2167 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2170 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2168 bar.show(); 2171 bar.show();
2169 bar.setCaption (i18n("inserting birthdays - close to abort!") ); 2172 bar.setCaption (i18n("inserting birthdays - close to abort!") );
2170 qApp->processEvents(); 2173 qApp->processEvents();
2171 2174
2172 QDate birthday; 2175 QDate birthday;
2173 QDate anniversary; 2176 QDate anniversary;
2174 QString realName; 2177 QString realName;
2175 QString email; 2178 QString email;
2176 QString assembledName; 2179 QString assembledName;
2177 QString uid; 2180 QString uid;
2178 bool ok = true; 2181 bool ok = true;
2179 for ( int i = 0; i < count; i++) 2182 for ( int i = 0; i < count; i++)
2180 { 2183 {
2181 if ( ! bar.isVisible() ) 2184 if ( ! bar.isVisible() )
2182 return; 2185 return;
2183 bar.setProgress( i ); 2186 bar.setProgress( i );
2184 qApp->processEvents(); 2187 qApp->processEvents();
2185 2188
2186 birthday = KGlobal::locale()->readDate(birthdayList[i], KLocale::ISODate, &ok); 2189 birthday = KGlobal::locale()->readDate(birthdayList[i], KLocale::ISODate, &ok);
2187 if (!ok) { 2190 if (!ok) {
2188 ;//qDebug("CalendarView::insertBirthdays found invalid birthday: %s",birthdayList[i].latin1()); 2191 ;//qDebug("CalendarView::insertBirthdays found invalid birthday: %s",birthdayList[i].latin1());
2189 } 2192 }
2190 2193
2191 anniversary = KGlobal::locale()->readDate(anniversaryList[i], KLocale::ISODate, &ok); 2194 anniversary = KGlobal::locale()->readDate(anniversaryList[i], KLocale::ISODate, &ok);
2192 if (!ok) { 2195 if (!ok) {
2193 ;//qDebug("CalendarView::insertBirthdays found invalid anniversary: %s",anniversaryList[i].latin1()); 2196 ;//qDebug("CalendarView::insertBirthdays found invalid anniversary: %s",anniversaryList[i].latin1());
2194 } 2197 }
2195 realName = realNameList[i]; 2198 realName = realNameList[i];
2196 email = emailList[i]; 2199 email = emailList[i];
2197 assembledName = assembledNameList[i]; 2200 assembledName = assembledNameList[i];
2198 uid = uidList[i]; 2201 uid = uidList[i];
2199 //qDebug("insert birthday in KO/Pi: %s,%s,%s,%s: %s, %s", realName.latin1(), email.latin1(), assembledName.latin1(), uid.latin1(), birthdayList[i].latin1(), anniversaryList[i].latin1() ); 2202 //qDebug("insert birthday in KO/Pi: %s,%s,%s,%s: %s, %s", realName.latin1(), email.latin1(), assembledName.latin1(), uid.latin1(), birthdayList[i].latin1(), anniversaryList[i].latin1() );
2200 2203
2201 if ( birthday.isValid() ){ 2204 if ( birthday.isValid() ){
2202 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction, 2205 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction,
2203 KCal::Attendee::ReqParticipant,uid) ; 2206 KCal::Attendee::ReqParticipant,uid) ;
2204 if ( addAnniversary( birthday, assembledName, a, true ) ) 2207 if ( addAnniversary( birthday, assembledName, a, true ) )
2205 ++addCount; 2208 ++addCount;
2206 } 2209 }
2207 2210
2208 if ( anniversary.isValid() ){ 2211 if ( anniversary.isValid() ){
2209 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction, 2212 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction,
2210 KCal::Attendee::ReqParticipant,uid) ; 2213 KCal::Attendee::ReqParticipant,uid) ;
2211 if ( addAnniversary( anniversary, assembledName, a, false ) ) 2214 if ( addAnniversary( anniversary, assembledName, a, false ) )
2212 ++addCount; 2215 ++addCount;
2213 } 2216 }
2214 } 2217 }
2215 2218
2216 mCalendar->setDefaultCalendar( curCal ); 2219 mCalendar->setDefaultCalendar( curCal );
2217 updateView(); 2220 updateView();
2218 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 2221 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
2219 2222
2220 } 2223 }
2221 2224
2222} 2225}
2223 2226
2224 2227
2225 2228
2226bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday) 2229bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday)
2227{ 2230{
2228 //qDebug("addAnni "); 2231 //qDebug("addAnni ");
2229 Event * ev = new Event(); 2232 Event * ev = new Event();
2230 ev->setOrganizer(KOPrefs::instance()->email()); 2233 ev->setOrganizer(KOPrefs::instance()->email());
2231 if ( a ) { 2234 if ( a ) {
2232 ev->addAttendee( a ); 2235 ev->addAttendee( a );
2233 } 2236 }
2234 QString kind; 2237 QString kind;
2235 if ( birthday ) { 2238 if ( birthday ) {
2236 kind = i18n( "Birthday" ); 2239 kind = i18n( "Birthday" );
2237 ev->setSummary( name + " (" + QString::number(date.year()) +")"); 2240 ev->setSummary( name + " (" + QString::number(date.year()) +")");
2238 } 2241 }
2239 else { 2242 else {
2240 kind = i18n( "Anniversary" ); 2243 kind = i18n( "Anniversary" );
2241 ev->setSummary( name + " (" + QString::number(date.year()) +") " + kind ); 2244 ev->setSummary( name + " (" + QString::number(date.year()) +") " + kind );
2242 } 2245 }
2243 ev->setCategories( kind ); 2246 ev->setCategories( kind );
2244 ev->setDtStart( QDateTime(date) ); 2247 ev->setDtStart( QDateTime(date) );
2245 ev->setDtEnd( QDateTime(date) ); 2248 ev->setDtEnd( QDateTime(date) );
2246 ev->setFloats( true ); 2249 ev->setFloats( true );
2247 Recurrence * rec = ev->recurrence(); 2250 Recurrence * rec = ev->recurrence();
2248 rec->setYearly(Recurrence::rYearlyMonth,1,-1); 2251 rec->setYearly(Recurrence::rYearlyMonth,1,-1);
2249 rec->addYearlyNum( date.month() ); 2252 rec->addYearlyNum( date.month() );
2250 if ( !mCalendar->addAnniversaryNoDup( ev ) ) { 2253 if ( !mCalendar->addAnniversaryNoDup( ev ) ) {
2251 delete ev; 2254 delete ev;
2252 return false; 2255 return false;
2253 } 2256 }
2254 return true; 2257 return true;
2255 2258
2256} 2259}
2257bool CalendarView::importQtopia( const QString &categories, 2260bool CalendarView::importQtopia( const QString &categories,
2258 const QString &datebook, 2261 const QString &datebook,
2259 const QString &todolist ) 2262 const QString &todolist )
2260{ 2263{
2261 2264
2262 QtopiaFormat qtopiaFormat; 2265 QtopiaFormat qtopiaFormat;
2263 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 2266 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
2264 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); 2267 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories );
2265 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); 2268 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook );
2266 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); 2269 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist );
2267 2270
2268 updateView(); 2271 updateView();
2269 return true; 2272 return true;
2270 2273
2271#if 0 2274#if 0
2272 mGlobalSyncMode = SYNC_MODE_QTOPIA; 2275 mGlobalSyncMode = SYNC_MODE_QTOPIA;
2273 mCurrentSyncDevice = "qtopia-XML"; 2276 mCurrentSyncDevice = "qtopia-XML";
2274 if ( mSyncManager->mAskForPreferences ) 2277 if ( mSyncManager->mAskForPreferences )
2275 edit_sync_options(); 2278 edit_sync_options();
2276 qApp->processEvents(); 2279 qApp->processEvents();
2277 CalendarLocal* calendar = new CalendarLocal(); 2280 CalendarLocal* calendar = new CalendarLocal();
2278 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 2281 calendar->setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
2279 bool syncOK = false; 2282 bool syncOK = false;
2280 QtopiaFormat qtopiaFormat; 2283 QtopiaFormat qtopiaFormat;
2281 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 2284 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
2282 bool loadOk = true; 2285 bool loadOk = true;
2283 if ( !categories.isEmpty() ) 2286 if ( !categories.isEmpty() )
2284 loadOk = qtopiaFormat.load( calendar, categories ); 2287 loadOk = qtopiaFormat.load( calendar, categories );
2285 if ( loadOk && !datebook.isEmpty() ) 2288 if ( loadOk && !datebook.isEmpty() )
2286 loadOk = qtopiaFormat.load( calendar, datebook ); 2289 loadOk = qtopiaFormat.load( calendar, datebook );
2287 if ( loadOk && !todolist.isEmpty() ) 2290 if ( loadOk && !todolist.isEmpty() )
2288 loadOk = qtopiaFormat.load( calendar, todolist ); 2291 loadOk = qtopiaFormat.load( calendar, todolist );
2289 2292
2290 if ( loadOk ) { 2293 if ( loadOk ) {
2291 getEventViewerDialog()->setSyncMode( true ); 2294 getEventViewerDialog()->setSyncMode( true );
2292 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs ); 2295 syncOK = synchronizeCalendar( mCalendar, calendar, mSyncManager->mSyncAlgoPrefs );
2293 getEventViewerDialog()->setSyncMode( false ); 2296 getEventViewerDialog()->setSyncMode( false );
2294 qApp->processEvents(); 2297 qApp->processEvents();
2295 if ( syncOK ) { 2298 if ( syncOK ) {
2296 if ( mSyncManager->mWriteBackFile ) 2299 if ( mSyncManager->mWriteBackFile )
2297 { 2300 {
2298 // write back XML file 2301 // write back XML file
2299 2302
2300 } 2303 }
2301 setModified( true ); 2304 setModified( true );
2302 } 2305 }
2303 } else { 2306 } else {
2304 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 2307 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
2305 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 2308 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
2306 question, i18n("Ok")) ; 2309 question, i18n("Ok")) ;
2307 } 2310 }
2308 delete calendar; 2311 delete calendar;
2309 updateView(); 2312 updateView();
2310 return syncOK; 2313 return syncOK;
2311 2314
2312 2315
2313#endif 2316#endif
2314 2317
2315} 2318}
2316 2319
2317void CalendarView::setSyncEventsReadOnly() 2320void CalendarView::setSyncEventsReadOnly()
2318{ 2321{
2319 mCalendar->setSyncEventsReadOnly(); 2322 mCalendar->setSyncEventsReadOnly();
2320} 2323}
2321 2324
2322bool CalendarView::loadCalendars() 2325bool CalendarView::loadCalendars()
2323{ 2326{
2324 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2327 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2325 KopiCalendarFile * cal = calendars.first(); 2328 KopiCalendarFile * cal = calendars.first();
2326 mCalendar->setDefaultCalendar( 1 ); 2329 mCalendar->setDefaultCalendar( 1 );
2327 openCalendar( MainWindow::defaultFileName(), false ); 2330 openCalendar( MainWindow::defaultFileName(), false );
2328 cal = calendars.next(); 2331 cal = calendars.next();
2329 while ( cal ) { 2332 while ( cal ) {
2330 addCalendar( cal ); 2333 addCalendar( cal );
2331 cal = calendars.next(); 2334 cal = calendars.next();
2332 } 2335 }
2333 restoreCalendarSettings(); 2336 restoreCalendarSettings();
2334 return true; 2337 return true;
2335} 2338}
2336bool CalendarView::restoreCalendarSettings() 2339bool CalendarView::restoreCalendarSettings()
2337{ 2340{
2338 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2341 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2339 KopiCalendarFile * cal = calendars.first(); 2342 KopiCalendarFile * cal = calendars.first();
2340 while ( cal ) { 2343 while ( cal ) {
2341 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled ); 2344 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled );
2342 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled ); 2345 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled );
2343 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly ); 2346 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly );
2344 if ( cal->isStandard ) 2347 if ( cal->isStandard )
2345 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2348 mCalendar->setDefaultCalendar( cal->mCalNumber );
2346 cal = calendars.next(); 2349 cal = calendars.next();
2347 } 2350 }
2348 setSyncEventsReadOnly(); 2351 setSyncEventsReadOnly();
2349 mCalendar->reInitAlarmSettings(); 2352 mCalendar->reInitAlarmSettings();
2350 updateUnmanagedViews(); 2353 updateUnmanagedViews();
2351 updateView(); 2354 updateView();
2352 return true; 2355 return true;
2353} 2356}
2354void CalendarView::addCalendarId( int id ) 2357void CalendarView::addCalendarId( int id )
2355{ 2358{
2356 KopiCalendarFile * cal = KOPrefs::instance()->getCalendar( id ); 2359 KopiCalendarFile * cal = KOPrefs::instance()->getCalendar( id );
2357 if ( cal ) 2360 if ( cal )
2358 addCalendar( cal ); 2361 addCalendar( cal );
2359} 2362}
2360bool CalendarView::addCalendar( KopiCalendarFile * cal ) 2363bool CalendarView::addCalendar( KopiCalendarFile * cal )
2361{ 2364{
2362 cal->mErrorOnLoad = false; 2365 cal->mErrorOnLoad = false;
2363 if ( mCalendar->addCalendarFile( cal->mFileName, cal->mCalNumber )) { 2366 if ( mCalendar->addCalendarFile( cal->mFileName, cal->mCalNumber )) {
2364 cal->mLoadDt = QDateTime::currentDateTime(); 2367 cal->mLoadDt = QDateTime::currentDateTime();
2365 return true; 2368 return true;
2366 } 2369 }
2367 qDebug("KO: Error adding calendar file %s ",cal->mFileName.latin1() ); 2370 qDebug("KO: Error adding calendar file %s ",cal->mFileName.latin1() );
2368 cal->mErrorOnLoad = true; 2371 cal->mErrorOnLoad = true;
2369 return false; 2372 return false;
2370} 2373}
2371bool CalendarView::openCalendar(QString filename, bool merge) 2374bool CalendarView::openCalendar(QString filename, bool merge)
2372{ 2375{
2373 2376
2374 if (filename.isEmpty()) { 2377 if (filename.isEmpty()) {
2375 return false; 2378 return false;
2376 } 2379 }
2377 2380
2378 if (!QFile::exists(filename)) { 2381 if (!QFile::exists(filename)) {
2379 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 2382 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
2380 return false; 2383 return false;
2381 } 2384 }
2382 2385
2383 globalFlagBlockAgenda = 1; 2386 globalFlagBlockAgenda = 1;
2384 clearAllViews(); 2387 clearAllViews();
2385 if (!merge) { 2388 if (!merge) {
2386 mViewManager->setDocumentId( filename ); 2389 mViewManager->setDocumentId( filename );
2387 mCalendar->close(); 2390 mCalendar->close();
2388 } 2391 }
2389 mStorage->setFileName( filename ); 2392 mStorage->setFileName( filename );
2390 2393
2391 if ( mStorage->load() ) { 2394 if ( mStorage->load() ) {
2392 if ( merge ) ;//setModified( true ); 2395 if ( merge ) ;//setModified( true );
2393 else { 2396 else {
2394 //setModified( true ); 2397 //setModified( true );
2395 mViewManager->setDocumentId( filename ); 2398 mViewManager->setDocumentId( filename );
2396 mDialogManager->setDocumentId( filename ); 2399 mDialogManager->setDocumentId( filename );
2397 mTodoList->setDocumentId( filename ); 2400 mTodoList->setDocumentId( filename );
2398 } 2401 }
2399 globalFlagBlockAgenda = 2; 2402 globalFlagBlockAgenda = 2;
2400 // if ( getLastSyncEvent() ) 2403 // if ( getLastSyncEvent() )
2401 // getLastSyncEvent()->setReadOnly( true ); 2404 // getLastSyncEvent()->setReadOnly( true );
2402 mCalendar->reInitAlarmSettings(); 2405 mCalendar->reInitAlarmSettings();
2403 setSyncEventsReadOnly(); 2406 setSyncEventsReadOnly();
2404 //updateUnmanagedViews(); 2407 //updateUnmanagedViews();
2405 //updateView(); 2408 //updateView();
2406 if ( filename != MainWindow::defaultFileName() ) { 2409 if ( filename != MainWindow::defaultFileName() ) {
2407 saveCalendar( MainWindow::defaultFileName() ); 2410 saveCalendar( MainWindow::defaultFileName() );
2408 } else { 2411 } else {
2409 QFileInfo finf ( MainWindow::defaultFileName()); 2412 QFileInfo finf ( MainWindow::defaultFileName());
2410 if ( finf.exists() ) { 2413 if ( finf.exists() ) {
2411 setLoadedFileVersion( finf.lastModified () ); 2414 setLoadedFileVersion( finf.lastModified () );
2412 } 2415 }
2413 } 2416 }
2414 return true; 2417 return true;
2415 } else { 2418 } else {
2416 // while failing to load, the calendar object could 2419 // while failing to load, the calendar object could
2417 // have become partially populated. Clear it out. 2420 // have become partially populated. Clear it out.
2418 if ( !merge ) { 2421 if ( !merge ) {
2419 mCalendar->close(); 2422 mCalendar->close();
2420 mViewManager->setDocumentId( filename ); 2423 mViewManager->setDocumentId( filename );
2421 mDialogManager->setDocumentId( filename ); 2424 mDialogManager->setDocumentId( filename );
2422 mTodoList->setDocumentId( filename ); 2425 mTodoList->setDocumentId( filename );
2423 } 2426 }
2424 2427
2425 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 2428 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
2426 2429
2427 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) ); 2430 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) );
2428 globalFlagBlockAgenda = 2; 2431 globalFlagBlockAgenda = 2;
2429 mCalendar->reInitAlarmSettings(); 2432 mCalendar->reInitAlarmSettings();
2430 setSyncEventsReadOnly(); 2433 setSyncEventsReadOnly();
2431 updateUnmanagedViews(); 2434 updateUnmanagedViews();
2432 updateView(); 2435 updateView();
2433 } 2436 }
2434 return false; 2437 return false;
2435} 2438}
2436void CalendarView::mergeFile( QString fn ) 2439void CalendarView::mergeFile( QString fn )
2437{ 2440{
2438 clearAllViews(); 2441 clearAllViews();
2439 mCalendar->mergeCalendarFile( fn ); 2442 mCalendar->mergeCalendarFile( fn );
2440 mCalendar->reInitAlarmSettings(); 2443 mCalendar->reInitAlarmSettings();
2441 setSyncEventsReadOnly(); 2444 setSyncEventsReadOnly();
2442 updateUnmanagedViews(); 2445 updateUnmanagedViews();
2443 updateView(); 2446 updateView();
2444} 2447}
2445void CalendarView::mergeFileResource( QString fn ,QString resource ) 2448void CalendarView::mergeFileResource( QString fn ,QString resource )
2446{ 2449{
2447 2450
2448 if ( resource == "ALL" ) { 2451 if ( resource == "ALL" ) {
2449 mergeFile( fn ); 2452 mergeFile( fn );
2450 return; 2453 return;
2451 } 2454 }
2452 2455
2453 int exclusiveResource = KOPrefs::instance()->getFuzzyCalendarID( resource ); 2456 int exclusiveResource = KOPrefs::instance()->getFuzzyCalendarID( resource );
2454 if ( !exclusiveResource ) { 2457 if ( !exclusiveResource ) {
2455 qDebug("KO: CalendarView::mergeFileResource: resource not found %s", resource.latin1() ); 2458 qDebug("KO: CalendarView::mergeFileResource: resource not found %s", resource.latin1() );
2456 return; 2459 return;
2457 } 2460 }
2458 clearAllViews(); 2461 clearAllViews();
2459 mCalendar->setCalendarRemove( exclusiveResource ); 2462 mCalendar->setCalendarRemove( exclusiveResource );
2460 int def = mCalendar->defaultCalendar(); 2463 int def = mCalendar->defaultCalendar();
2461 mCalendar->setDefaultCalendar(exclusiveResource); 2464 mCalendar->setDefaultCalendar(exclusiveResource);
2462 if ( !mCalendar->addCalendarFile( fn, exclusiveResource )) { 2465 if ( !mCalendar->addCalendarFile( fn, exclusiveResource )) {
2463 qDebug("KO: CalendarView::mergeFileResource: error adding file %s", fn.latin1() ); 2466 qDebug("KO: CalendarView::mergeFileResource: error adding file %s", fn.latin1() );
2464 } 2467 }
2465 mCalendar->setDefaultCalendar( def ); 2468 mCalendar->setDefaultCalendar( def );
2466 mCalendar->reInitAlarmSettings(); 2469 mCalendar->reInitAlarmSettings();
2467 setSyncEventsReadOnly(); 2470 setSyncEventsReadOnly();
2468 updateUnmanagedViews(); 2471 updateUnmanagedViews();
2469 updateView(); 2472 updateView();
2470} 2473}
2471void CalendarView::showOpenError() 2474void CalendarView::showOpenError()
2472{ 2475{
2473 KMessageBox::error(this,i18n("Couldn't load calendar\n.")); 2476 KMessageBox::error(this,i18n("Couldn't load calendar\n."));
2474} 2477}
2475void CalendarView::setLoadedFileVersion(QDateTime dt) 2478void CalendarView::setLoadedFileVersion(QDateTime dt)
2476{ 2479{
2477 loadedFileVersion = dt; 2480 loadedFileVersion = dt;
2478} 2481}
2479bool CalendarView::checkFileChanged(QString fn) 2482bool CalendarView::checkFileChanged(QString fn)
2480{ 2483{
2481 QFileInfo finf ( fn ); 2484 QFileInfo finf ( fn );
2482 if ( !finf.exists() ) 2485 if ( !finf.exists() )
2483 return true; 2486 return true;
2484 QDateTime dt = finf.lastModified (); 2487 QDateTime dt = finf.lastModified ();
2485 if ( dt <= loadedFileVersion ) 2488 if ( dt <= loadedFileVersion )
2486 return false; 2489 return false;
2487 return true; 2490 return true;
2488 2491
2489} 2492}
2490void CalendarView::watchSavedFile() 2493void CalendarView::watchSavedFile()
2491{ 2494{
2492 QFileInfo finf ( MainWindow::defaultFileName()); 2495 QFileInfo finf ( MainWindow::defaultFileName());
2493 if ( !finf.exists() ) 2496 if ( !finf.exists() )
2494 return; 2497 return;
2495 QDateTime dt = finf.lastModified (); 2498 QDateTime dt = finf.lastModified ();
2496 if ( dt < loadedFileVersion ) { 2499 if ( dt < loadedFileVersion ) {
2497 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1()); 2500 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1());
2498 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) ); 2501 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) );
2499 return; 2502 return;
2500 } 2503 }
2501 loadedFileVersion = dt; 2504 loadedFileVersion = dt;
2502} 2505}
2503bool CalendarView::checkAllFileVersions() 2506bool CalendarView::checkAllFileVersions()
2504{ 2507{
2505 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2508 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2506 KopiCalendarFile * cal = calendars.first(); 2509 KopiCalendarFile * cal = calendars.first();
2507 mCalendar->setDefaultCalendar( 1 ); 2510 mCalendar->setDefaultCalendar( 1 );
2508 mCalendar->setDefaultCalendarEnabledOnly(); 2511 mCalendar->setDefaultCalendarEnabledOnly();
2509 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2512 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2510 if ( !checkFileVersion(MainWindow::defaultFileName())) { 2513 if ( !checkFileVersion(MainWindow::defaultFileName())) {
2511 restoreCalendarSettings(); 2514 restoreCalendarSettings();
2512 return false; 2515 return false;
2513 } 2516 }
2514 } 2517 }
2515 cal = calendars.next(); 2518 cal = calendars.next();
2516 QDateTime storeTemp = loadedFileVersion; 2519 QDateTime storeTemp = loadedFileVersion;
2517 while ( cal ) { 2520 while ( cal ) {
2518 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2521 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2519 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2522 mCalendar->setDefaultCalendar( cal->mCalNumber );
2520 mCalendar->setDefaultCalendarEnabledOnly(); 2523 mCalendar->setDefaultCalendarEnabledOnly();
2521 loadedFileVersion = cal->mLoadDt.addSecs( 15 ); 2524 loadedFileVersion = cal->mLoadDt.addSecs( 15 );
2522 if ( !checkFileVersion(cal->mFileName )) { 2525 if ( !checkFileVersion(cal->mFileName )) {
2523 loadedFileVersion = storeTemp; 2526 loadedFileVersion = storeTemp;
2524 restoreCalendarSettings(); 2527 restoreCalendarSettings();
2525 return false; 2528 return false;
2526 } 2529 }
2527 } 2530 }
2528 cal = calendars.next(); 2531 cal = calendars.next();
2529 } 2532 }
2530 loadedFileVersion = storeTemp; 2533 loadedFileVersion = storeTemp;
2531 return true; 2534 return true;
2532} 2535}
2533bool CalendarView::checkFileVersion(QString fn) 2536bool CalendarView::checkFileVersion(QString fn)
2534{ 2537{
2535 QFileInfo finf ( fn ); 2538 QFileInfo finf ( fn );
2536 if ( !finf.exists() ) 2539 if ( !finf.exists() )
2537 return true; 2540 return true;
2538 QDateTime dt = finf.lastModified (); 2541 QDateTime dt = finf.lastModified ();
2539 //qDebug("loaded file version %s %s", fn.latin1(), loadedFileVersion.toString().latin1()); 2542 //qDebug("loaded file version %s %s", fn.latin1(), loadedFileVersion.toString().latin1());
2540 //qDebug("file on disk version %s %s", fn.latin1(),dt.toString().latin1()); 2543 //qDebug("file on disk version %s %s", fn.latin1(),dt.toString().latin1());
2541 if ( dt <= loadedFileVersion ) 2544 if ( dt <= loadedFileVersion )
2542 return true; 2545 return true;
2543 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file\n%1\non disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg(KGlobal::formatMessage(fn,0)).arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) , 2546 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file\n%1\non disk has changed!\nFile size: %2 bytes.\nLast modified: %3\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg(KGlobal::formatMessage(fn,0)).arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) ,
2544 i18n("KO/Pi Warning"),i18n("Overwrite"), 2547 i18n("KO/Pi Warning"),i18n("Overwrite"),
2545 i18n("Sync+save")); 2548 i18n("Sync+save"));
2546 2549
2547 if ( km == KMessageBox::Cancel ) 2550 if ( km == KMessageBox::Cancel )
2548 return false; 2551 return false;
2549 if ( km == KMessageBox::Yes ) 2552 if ( km == KMessageBox::Yes )
2550 return true; 2553 return true;
2551 2554
2552 setSyncDevice("deleteaftersync" ); 2555 setSyncDevice("deleteaftersync" );
2553 mSyncManager->mAskForPreferences = true; 2556 mSyncManager->mAskForPreferences = true;
2554 mSyncManager->mSyncAlgoPrefs = 3; 2557 mSyncManager->mSyncAlgoPrefs = 3;
2555 mSyncManager->mWriteBackFile = false; 2558 mSyncManager->mWriteBackFile = false;
2556 mSyncManager->mWriteBackExistingOnly = false; 2559 mSyncManager->mWriteBackExistingOnly = false;
2557 mSyncManager->mShowSyncSummary = false; 2560 mSyncManager->mShowSyncSummary = false;
2558 mMultiResourceSync = false; 2561 mMultiResourceSync = false;
2559 syncCalendar( fn, 3 ); 2562 syncCalendar( fn, 3 );
2560 Event * e = getLastSyncEvent(); 2563 Event * e = getLastSyncEvent();
2561 if ( e ) 2564 if ( e )
2562 mCalendar->deleteEvent( e ); 2565 mCalendar->deleteEvent( e );
2563 return true; 2566 return true;
2564} 2567}
2565bool CalendarView::saveCalendars() 2568bool CalendarView::saveCalendars()
2566{ 2569{
2567 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 2570 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
2568 KopiCalendarFile * cal = calendars.first(); 2571 KopiCalendarFile * cal = calendars.first();
2569 mCalendar->setDefaultCalendar( 1 ); 2572 mCalendar->setDefaultCalendar( 1 );
2570 mCalendar->setDefaultCalendarEnabledOnly(); 2573 mCalendar->setDefaultCalendarEnabledOnly();
2571 QString saveError; 2574 QString saveError;
2572 if ( !saveCalendar( MainWindow::defaultFileName() ) ) 2575 if ( !saveCalendar( MainWindow::defaultFileName() ) )
2573 saveError = cal->mName +"\n"; 2576 saveError = cal->mName +"\n";
2574 cal = calendars.next(); 2577 cal = calendars.next();
2575 while ( cal ) { 2578 while ( cal ) {
2576 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) { 2579 if ( !cal->isReadOnly && !cal->mErrorOnLoad ) {
2577 mCalendar->setDefaultCalendar( cal->mCalNumber ); 2580 mCalendar->setDefaultCalendar( cal->mCalNumber );
2578 mCalendar->setDefaultCalendarEnabledOnly(); 2581 mCalendar->setDefaultCalendarEnabledOnly();
2579 if ( saveCalendar( cal->mFileName ) ) 2582 if ( saveCalendar( cal->mFileName ) )
2580 cal->mLoadDt = QDateTime::currentDateTime(); 2583 cal->mLoadDt = QDateTime::currentDateTime();
2581 else 2584 else
2582 saveError += cal->mName + "\n"; 2585 saveError += cal->mName + "\n";
2583 } 2586 }
2584 cal = calendars.next(); 2587 cal = calendars.next();
2585 } 2588 }
2586 restoreCalendarSettings(); 2589 restoreCalendarSettings();
2587 //saveError = "test error"; 2590 //saveError = "test error";
2588 if ( !saveError.isEmpty() ) { 2591 if ( !saveError.isEmpty() ) {
2589 saveError = KGlobal::formatMessage( i18n("Calendar(s) not saved:"),0 )+"\n" + saveError; 2592 saveError = KGlobal::formatMessage( i18n("Calendar(s) not saved:"),0 )+"\n" + saveError;
2590 KMessageBox::error(this, saveError, i18n("Error saving data")); 2593 KMessageBox::error(this, saveError, i18n("Error saving data"));
2591 return false; 2594 return false;
2592 } 2595 }
2593 return true; 2596 return true;
2594} 2597}
2595bool CalendarView::saveCalendarResource(QString filename, QString resource) 2598bool CalendarView::saveCalendarResource(QString filename, QString resource)
2596{ 2599{
2597 if ( resource == "ALL" ) 2600 if ( resource == "ALL" )
2598 return saveCalendar( filename ); 2601 return saveCalendar( filename );
2599 int exclusiveResource = KOPrefs::instance()->getFuzzyCalendarID( resource ); 2602 int exclusiveResource = KOPrefs::instance()->getFuzzyCalendarID( resource );
2600 if ( !exclusiveResource ) { 2603 if ( !exclusiveResource ) {
2601 qDebug("KO: CalendarView::saveCalendarResource: resource not found %s", resource.latin1() ); 2604 qDebug("KO: CalendarView::saveCalendarResource: resource not found %s", resource.latin1() );
2602 return false; 2605 return false;
2603 } 2606 }
2604 mCalendar->setDefaultCalendar( exclusiveResource ); 2607 mCalendar->setDefaultCalendar( exclusiveResource );
2605 mCalendar->setDefaultCalendarEnabledOnly(); 2608 mCalendar->setDefaultCalendarEnabledOnly();
2606 mCalendar->setSyncEventsEnabled(); 2609 mCalendar->setSyncEventsEnabled();
2607 bool res = saveCalendar( filename ); 2610 bool res = saveCalendar( filename );
2608 restoreCalendarSettings(); 2611 restoreCalendarSettings();
2609 return res; 2612 return res;
2610 2613
2611} 2614}
2612bool CalendarView::saveCalendar( QString filename ) 2615bool CalendarView::saveCalendar( QString filename )
2613{ 2616{
2614 2617
2615 // Store back all unsaved data into calendar object 2618 // Store back all unsaved data into calendar object
2616 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 2619 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
2617 if ( mViewManager->currentView() ) 2620 if ( mViewManager->currentView() )
2618 mViewManager->currentView()->flushView(); 2621 mViewManager->currentView()->flushView();
2619 2622
2620 2623
2621 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2); 2624 QDateTime lfv = QDateTime::currentDateTime().addSecs( -2);
2622 mStorage->setSaveFormat( new ICalFormat() ); 2625 mStorage->setSaveFormat( new ICalFormat() );
2623 mStorage->setFileName( filename ); 2626 mStorage->setFileName( filename );
2624 bool success; 2627 bool success;
2625 success = mStorage->save(); 2628 success = mStorage->save();
2626 if ( !success ) { 2629 if ( !success ) {
2627 return false; 2630 return false;
2628 } 2631 }
2629 if ( filename == MainWindow::defaultFileName() ) { 2632 if ( filename == MainWindow::defaultFileName() ) {
2630 setLoadedFileVersion( lfv ); 2633 setLoadedFileVersion( lfv );
2631 watchSavedFile(); 2634 watchSavedFile();
2632 } 2635 }
2633 return true; 2636 return true;
2634} 2637}
2635 2638
2636void CalendarView::closeCalendar() 2639void CalendarView::closeCalendar()
2637{ 2640{
2638 2641
2639 // child windows no longer valid 2642 // child windows no longer valid
2640 clearAllViews(); 2643 clearAllViews();
2641 emit closingDown(); 2644 emit closingDown();
2642 2645
2643 mCalendar->close(); 2646 mCalendar->close();
2644 setModified(false); 2647 setModified(false);
2645 updateView(); 2648 updateView();
2646} 2649}
2647 2650
2648void CalendarView::archiveCalendar() 2651void CalendarView::archiveCalendar()
2649{ 2652{
2650 mDialogManager->showArchiveDialog(); 2653 mDialogManager->showArchiveDialog();
2651} 2654}
2652 2655
2653 2656
2654void CalendarView::readSettings() 2657void CalendarView::readSettings()
2655{ 2658{
2656 2659
2657 2660
2658 // mViewManager->showAgendaView(); 2661 // mViewManager->showAgendaView();
2659 QString str; 2662 QString str;
2660 //qDebug("CalendarView::readSettings() "); 2663 //qDebug("CalendarView::readSettings() ");
diff --git a/libkdepim/ksyncmanager.cpp b/libkdepim/ksyncmanager.cpp
index e1b15d2..8bf0d27 100644
--- a/libkdepim/ksyncmanager.cpp
+++ b/libkdepim/ksyncmanager.cpp
@@ -139,1640 +139,1674 @@ void KSyncManager::fillSyncMenu()
139 mSyncProfileNames = prof; 139 mSyncProfileNames = prof;
140 unsigned int i; 140 unsigned int i;
141 for ( i = 0; i < prof.count(); ++i ) { 141 for ( i = 0; i < prof.count(); ++i ) {
142 QString insertText = prof[i]; 142 QString insertText = prof[i];
143 if ( i == 0 ) { 143 if ( i == 0 ) {
144#ifdef DESKTOP_VERSION 144#ifdef DESKTOP_VERSION
145#ifdef _WIN32_ 145#ifdef _WIN32_
146 insertText = "OutLook(not_implemented)"; 146 insertText = "OutLook(not_implemented)";
147#else 147#else
148 insertText = "KDE_Desktop"; 148 insertText = "KDE_Desktop";
149#endif 149#endif
150#else 150#else
151 insertText = "Sharp_DTM"; 151 insertText = "Sharp_DTM";
152#endif 152#endif
153 } 153 }
154 mSyncMenu->insertItem( insertText, 1000+i ); 154 mSyncMenu->insertItem( insertText, 1000+i );
155 clearMenu->insertItem( insertText, 1000+i ); 155 clearMenu->insertItem( insertText, 1000+i );
156 if ( i == 2 ) 156 if ( i == 2 )
157 mSyncMenu->insertSeparator(); 157 mSyncMenu->insertSeparator();
158 } 158 }
159 QDir app_dir; 159 QDir app_dir;
160 //US do not display SharpDTM if app is pwmpi, or no sharpfiles available 160 //US do not display SharpDTM if app is pwmpi, or no sharpfiles available
161 if ( mTargetApp == PWMPI) { 161 if ( mTargetApp == PWMPI) {
162 mSyncMenu->removeItem( 1000 ); 162 mSyncMenu->removeItem( 1000 );
163 clearMenu->removeItem( 1000 ); 163 clearMenu->removeItem( 1000 );
164 } 164 }
165#ifndef DESKTOP_VERSION 165#ifndef DESKTOP_VERSION
166 else if (!app_dir.exists(QDir::homeDirPath()+"/Applications/dtm" ) ) { 166 else if (!app_dir.exists(QDir::homeDirPath()+"/Applications/dtm" ) ) {
167 mSyncMenu->removeItem( 1000 ); 167 mSyncMenu->removeItem( 1000 );
168 clearMenu->removeItem( 1000 ); 168 clearMenu->removeItem( 1000 );
169 } 169 }
170#endif 170#endif
171 mSyncMenu->removeItem( 1002 ); 171 mSyncMenu->removeItem( 1002 );
172 clearMenu->removeItem( 1002 ); 172 clearMenu->removeItem( 1002 );
173} 173}
174void KSyncManager::slotClearMenu( int action ) 174void KSyncManager::slotClearMenu( int action )
175{ 175{
176 QString syncDevice; 176 QString syncDevice;
177 if ( action > 999 ) { 177 if ( action > 999 ) {
178 syncDevice = mSyncProfileNames[action - 1000] ; 178 syncDevice = mSyncProfileNames[action - 1000] ;
179 } 179 }
180 180
181 181
182 182
183 int result = 0; 183 int result = 0;
184 QString sd; 184 QString sd;
185 if ( syncDevice.isEmpty() ) 185 if ( syncDevice.isEmpty() )
186 sd = i18n("Do you want to\nclear all sync info\nof all profiles?"); 186 sd = i18n("Do you want to\nclear all sync info\nof all profiles?");
187 else 187 else
188 sd = i18n("Do you want to\nclear the sync\ninfo of profile\n%1?\n"). arg( syncDevice ); 188 sd = i18n("Do you want to\nclear the sync\ninfo of profile\n%1?\n"). arg( syncDevice );
189 189
190 result = QMessageBox::warning( mParent, i18n("Warning!"),sd,i18n("OK"), i18n("Cancel"), 0, 190 result = QMessageBox::warning( mParent, i18n("Warning!"),sd,i18n("OK"), i18n("Cancel"), 0,
191 0, 1 ); 191 0, 1 );
192 if ( result ) 192 if ( result )
193 return; 193 return;
194 mImplementation->removeSyncInfo( syncDevice ); 194 mImplementation->removeSyncInfo( syncDevice );
195} 195}
196void KSyncManager::slotSyncMenu( int action ) 196void KSyncManager::slotSyncMenu( int action )
197{ 197{
198 qDebug("KSM::syncaction %d ", action); 198 qDebug("KSM::syncaction %d ", action);
199 mCurrentResourceLocal = ""; 199 mCurrentResourceLocal = "";
200 emit multiResourceSyncStart( false ); 200 emit multiResourceSyncStart( false );
201 if ( action == 5000 ) 201 if ( action == 5000 )
202 return; 202 return;
203 mSyncWithDesktop = false; 203 mSyncWithDesktop = false;
204 if ( action == 0 ) { 204 if ( action == 0 ) {
205 205
206 // seems to be a Qt2 event handling bug 206 // seems to be a Qt2 event handling bug
207 // syncmenu.clear causes a segfault at first time 207 // syncmenu.clear causes a segfault at first time
208 // when we call it after the main event loop, it is ok 208 // when we call it after the main event loop, it is ok
209 // same behaviour when calling OM/Pi via QCOP for the first time 209 // same behaviour when calling OM/Pi via QCOP for the first time
210 QTimer::singleShot ( 1, this, SLOT ( confSync() ) ); 210 QTimer::singleShot ( 1, this, SLOT ( confSync() ) );
211 //confSync(); 211 //confSync();
212 212
213 return; 213 return;
214 } 214 }
215 if ( action == 1 ) { 215 if ( action == 1 ) {
216 multiSync( true ); 216 multiSync( true );
217 return; 217 return;
218 } 218 }
219 if ( action == 2 ) { 219 if ( action == 2 ) {
220 enableQuick(); 220 enableQuick();
221 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); 221 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) );
222 return; 222 return;
223 } 223 }
224 if ( action == 3 ) { 224 if ( action == 3 ) {
225 delete mServerSocket; 225 delete mServerSocket;
226 mServerSocket = 0; 226 mServerSocket = 0;
227 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); 227 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) );
228 return; 228 return;
229 } 229 }
230 230
231 if (blockSave()) 231 if (blockSave())
232 return; 232 return;
233 233
234 setBlockSave(true); 234 setBlockSave(true);
235 bool silent = false; 235 bool silent = false;
236 if ( action == 999 ) { 236 if ( action == 999 ) {
237 //special mode for silent syncing 237 //special mode for silent syncing
238 action = 1000; 238 action = 1000;
239 silent = true; 239 silent = true;
240 } 240 }
241 241
242 mCurrentSyncProfile = action - 1000 ; 242 mCurrentSyncProfile = action - 1000 ;
243 mCurrentSyncDevice = mSyncProfileNames[mCurrentSyncProfile] ; 243 mCurrentSyncDevice = mSyncProfileNames[mCurrentSyncProfile] ;
244 mCurrentSyncName = mLocalMachineName ; 244 mCurrentSyncName = mLocalMachineName ;
245 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 245 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
246 KSyncProfile* temp = new KSyncProfile (); 246 KSyncProfile* temp = new KSyncProfile ();
247 temp->setName(mSyncProfileNames[mCurrentSyncProfile]); 247 temp->setName(mSyncProfileNames[mCurrentSyncProfile]);
248 temp->readConfig(&config); 248 temp->readConfig(&config);
249 if (silent) { 249 if (silent) {
250 mAskForPreferences = false; 250 mAskForPreferences = false;
251 mShowSyncSummary = false; 251 mShowSyncSummary = false;
252 mWriteBackFile = true; 252 mWriteBackFile = true;
253 mSyncAlgoPrefs = 2;// take newest 253 mSyncAlgoPrefs = 2;// take newest
254 } 254 }
255 else { 255 else {
256 mAskForPreferences = temp->getAskForPreferences(); 256 mAskForPreferences = temp->getAskForPreferences();
257 mShowSyncSummary = temp->getShowSummaryAfterSync(); 257 mShowSyncSummary = temp->getShowSummaryAfterSync();
258 mWriteBackFile = temp->getWriteBackFile(); 258 mWriteBackFile = temp->getWriteBackFile();
259 mSyncAlgoPrefs = temp->getSyncPrefs(); 259 mSyncAlgoPrefs = temp->getSyncPrefs();
260 } 260 }
261 mWriteBackExistingOnly = temp->getWriteBackExisting(); 261 mWriteBackExistingOnly = temp->getWriteBackExisting();
262 mIsKapiFile = temp->getIsKapiFile(); 262 mIsKapiFile = temp->getIsKapiFile();
263 mWriteBackInFuture = 0; 263 mWriteBackInFuture = 0;
264 if ( temp->getWriteBackFuture() ) { 264 if ( temp->getWriteBackFuture() ) {
265 mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); 265 mWriteBackInFuture = temp->getWriteBackFutureWeeks( );
266 mWriteBackInPast = temp->getWriteBackPastWeeks( ); 266 mWriteBackInPast = temp->getWriteBackPastWeeks( );
267 } 267 }
268 mFilterInCal = temp->getFilterInCal(); 268 mFilterInCal = temp->getFilterInCal();
269 mFilterOutCal = temp->getFilterOutCal(); 269 mFilterOutCal = temp->getFilterOutCal();
270 mFilterInAB = temp->getFilterInAB(); 270 mFilterInAB = temp->getFilterInAB();
271 mFilterOutAB = temp->getFilterOutAB(); 271 mFilterOutAB = temp->getFilterOutAB();
272 272
273 if ( action == 1000 ) { 273 if ( action == 1000 ) {
274 mIsKapiFile = false; 274 mIsKapiFile = false;
275#ifdef DESKTOP_VERSION 275#ifdef DESKTOP_VERSION
276 syncKDE(); 276 syncKDE();
277#else 277#else
278 syncSharp(); 278 syncSharp();
279#endif 279#endif
280 280
281 } else if ( action == 1001 ) { 281 } else if ( action == 1001 ) {
282 syncLocalFile(); 282 syncLocalFile();
283 283
284 } else if ( action == 1002 ) { 284 } else if ( action == 1002 ) {
285 mWriteBackFile = false; 285 mWriteBackFile = false;
286 mAskForPreferences = false; 286 mAskForPreferences = false;
287 mShowSyncSummary = false; 287 mShowSyncSummary = false;
288 mSyncAlgoPrefs = 3; 288 mSyncAlgoPrefs = 3;
289 quickSyncLocalFile(); 289 quickSyncLocalFile();
290 290
291 } else if ( action >= 1003 ) { 291 } else if ( action >= 1003 ) {
292 if ( temp->getIsLocalFileSync() ) { 292 if ( temp->getIsLocalFileSync() ) {
293 switch(mTargetApp) 293 switch(mTargetApp)
294 { 294 {
295 case (KAPI): 295 case (KAPI):
296 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) ) 296 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) )
297 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB(); 297 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB();
298 break; 298 break;
299 case (KOPI): 299 case (KOPI):
300 if ( syncWithFile( temp->getRemoteFileName( ), false ) ) 300 if ( syncWithFile( temp->getRemoteFileName( ), false ) )
301 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName(); 301 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName();
302 break; 302 break;
303 case (PWMPI): 303 case (PWMPI):
304 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) ) 304 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) )
305 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM(); 305 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM();
306 break; 306 break;
307 default: 307 default:
308 qDebug("KSM::slotSyncMenu: invalid apptype selected"); 308 qDebug("KSM::slotSyncMenu: invalid apptype selected");
309 break; 309 break;
310 310
311 } 311 }
312 } else { 312 } else {
313 if ( temp->getIsPhoneSync() ) { 313 if ( temp->getIsPhoneSync() ) {
314 mPhoneDevice = temp->getPhoneDevice( ) ; 314 mPhoneDevice = temp->getPhoneDevice( ) ;
315 mPhoneConnection = temp->getPhoneConnection( ); 315 mPhoneConnection = temp->getPhoneConnection( );
316 mPhoneModel = temp->getPhoneModel( ); 316 mPhoneModel = temp->getPhoneModel( );
317 syncPhone(); 317 syncPhone();
318 } else if ( temp->getIsPiSync()|| temp->getIsPiSyncSpec()) { 318 } else if ( temp->getIsPiSync()|| temp->getIsPiSyncSpec()) {
319 mSpecificResources.clear(); 319 mSpecificResources.clear();
320 if ( mTargetApp == KAPI ) { 320 if ( mTargetApp == KAPI ) {
321 mPassWordPiSync = temp->getRemotePwAB(); 321 mPassWordPiSync = temp->getRemotePwAB();
322 mActiveSyncPort = temp->getRemotePortAB(); 322 mActiveSyncPort = temp->getRemotePortAB();
323 mActiveSyncIP = temp->getRemoteIPAB(); 323 mActiveSyncIP = temp->getRemoteIPAB();
324 } else if ( mTargetApp == KOPI ) { 324 } else if ( mTargetApp == KOPI ) {
325 if ( temp->getIsPiSyncSpec() ) 325 if ( temp->getIsPiSyncSpec() )
326 mSpecificResources = QStringList::split( ":", temp->getResSpecKopi(),true ); 326 mSpecificResources = QStringList::split( ":", temp->getResSpecKopi(),true );
327 mPassWordPiSync = temp->getRemotePw(); 327 mPassWordPiSync = temp->getRemotePw();
328 mActiveSyncPort = temp->getRemotePort(); 328 mActiveSyncPort = temp->getRemotePort();
329 mActiveSyncIP = temp->getRemoteIP(); 329 mActiveSyncIP = temp->getRemoteIP();
330 } else { 330 } else {
331 mPassWordPiSync = temp->getRemotePwPWM(); 331 mPassWordPiSync = temp->getRemotePwPWM();
332 mActiveSyncPort = temp->getRemotePortPWM(); 332 mActiveSyncPort = temp->getRemotePortPWM();
333 mActiveSyncIP = temp->getRemoteIPPWM(); 333 mActiveSyncIP = temp->getRemoteIPPWM();
334 } 334 }
335 syncPi(); 335 syncPi();
336 while ( !mPisyncFinished ) { 336 while ( !mPisyncFinished ) {
337 //qDebug("waiting "); 337 //qDebug("waiting ");
338 qApp->processEvents(); 338 qApp->processEvents();
339 } 339 }
340 } else 340 } else
341 syncRemote( temp ); 341 syncRemote( temp );
342 342
343 } 343 }
344 } 344 }
345 delete temp; 345 delete temp;
346 setBlockSave(false); 346 setBlockSave(false);
347} 347}
348 348
349void KSyncManager::enableQuick( bool ask ) 349void KSyncManager::enableQuick( bool ask )
350{ 350{
351 bool autoStart; 351 bool autoStart;
352 bool changed = false; 352 bool changed = false;
353 if ( ask ) { 353 if ( ask ) {
354 QDialog dia ( 0, "input-dialog", true ); 354 QDialog dia ( 0, "input-dialog", true );
355 QLineEdit lab ( &dia ); 355 QLineEdit lab ( &dia );
356 QVBoxLayout lay( &dia ); 356 QVBoxLayout lay( &dia );
357 lab.setText( mPrefs->mPassiveSyncPort ); 357 lab.setText( mPrefs->mPassiveSyncPort );
358 lay.setMargin(7); 358 lay.setMargin(7);
359 lay.setSpacing(7); 359 lay.setSpacing(7);
360 int po = 9197+mTargetApp; 360 int po = 9197+mTargetApp;
361 QLabel label ( i18n("Port number (Default: %1)\nValid range from 1 to 65535").arg(po), &dia ); 361 QLabel label ( i18n("Port number (Default: %1)\nValid range from 1 to 65535").arg(po), &dia );
362 lay.addWidget( &label); 362 lay.addWidget( &label);
363 lay.addWidget( &lab); 363 lay.addWidget( &lab);
364 364
365 QLineEdit lepw ( &dia ); 365 QLineEdit lepw ( &dia );
366 lepw.setText( mPrefs->mPassiveSyncPw ); 366 lepw.setText( mPrefs->mPassiveSyncPw );
367 QLabel label2 ( i18n("Password to enable\naccess from remote:"), &dia ); 367 QLabel label2 ( i18n("Password to enable\naccess from remote:"), &dia );
368 lay.addWidget( &label2); 368 lay.addWidget( &label2);
369 lay.addWidget( &lepw); 369 lay.addWidget( &lepw);
370 QCheckBox autostart(i18n("Automatically start\nat application startup"), &dia ); 370 QCheckBox autostart(i18n("Automatically start\nat application startup"), &dia );
371 lay.addWidget( &autostart); 371 lay.addWidget( &autostart);
372 autostart.setChecked( mPrefs->mPassiveSyncAutoStart ); 372 autostart.setChecked( mPrefs->mPassiveSyncAutoStart );
373#ifdef DESKTOP_VERSION 373#ifdef DESKTOP_VERSION
374#ifdef _WIN32_ 374#ifdef _WIN32_
375 QCheckBox syncdesktop( i18n("Automatically sync with Outlook\nwhen receiving sync request"),&dia ); 375 QCheckBox syncdesktop( i18n("Automatically sync with Outlook\nwhen receiving sync request"),&dia );
376 syncdesktop.hide();// not implemented! 376 syncdesktop.hide();// not implemented!
377#else 377#else
378 QCheckBox syncdesktop( i18n("Automatically sync with KDE-Desktop\nwhen receiving sync request"),&dia ); 378 QCheckBox syncdesktop( i18n("Automatically sync with KDE-Desktop\nwhen receiving sync request"),&dia );
379#endif 379#endif
380 lay.addWidget( &syncdesktop); 380 lay.addWidget( &syncdesktop);
381#else 381#else
382 mPrefs->mPassiveSyncWithDesktop = false; 382 mPrefs->mPassiveSyncWithDesktop = false;
383 QCheckBox syncdesktop( i18n("Automatically sync\nwith KDE-Desktop"),&dia ); 383 QCheckBox syncdesktop( i18n("Automatically sync\nwith KDE-Desktop"),&dia );
384 syncdesktop.hide(); 384 syncdesktop.hide();
385#endif 385#endif
386 syncdesktop.setChecked( mPrefs->mPassiveSyncWithDesktop ); 386 syncdesktop.setChecked( mPrefs->mPassiveSyncWithDesktop );
387 387
388 QPushButton pb ( "OK", &dia); 388 QPushButton pb ( "OK", &dia);
389 lay.addWidget( &pb ); 389 lay.addWidget( &pb );
390 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 390 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
391 dia.resize( 230,120 ); 391 dia.resize( 230,120 );
392 dia.setCaption( i18n("Enter port for Pi-Sync") ); 392 dia.setCaption( i18n("Enter port for Pi-Sync") );
393 dia.show(); 393 dia.show();
394#ifndef DESKTOP_VERSION 394#ifndef DESKTOP_VERSION
395 int dw = QApplication::desktop()->width(); 395 int dw = QApplication::desktop()->width();
396 int dh = QApplication::desktop()->height(); 396 int dh = QApplication::desktop()->height();
397 dia.move( (dw-dia.width())/2, (dh - dia.height() )/2 ); 397 dia.move( (dw-dia.width())/2, (dh - dia.height() )/2 );
398#endif 398#endif
399 if ( ! dia.exec() ) 399 if ( ! dia.exec() )
400 return; 400 return;
401 dia.hide(); 401 dia.hide();
402 qApp->processEvents(); 402 qApp->processEvents();
403 if ( mPrefs->mPassiveSyncPw != lepw.text() ) { 403 if ( mPrefs->mPassiveSyncPw != lepw.text() ) {
404 changed = true; 404 changed = true;
405 mPrefs->mPassiveSyncPw = lepw.text(); 405 mPrefs->mPassiveSyncPw = lepw.text();
406 } 406 }
407 if ( mPrefs->mPassiveSyncPort != lab.text() ) { 407 if ( mPrefs->mPassiveSyncPort != lab.text() ) {
408 mPrefs->mPassiveSyncPort = lab.text(); 408 mPrefs->mPassiveSyncPort = lab.text();
409 changed = true; 409 changed = true;
410 } 410 }
411 autoStart = autostart.isChecked(); 411 autoStart = autostart.isChecked();
412 if (mPrefs->mPassiveSyncWithDesktop != syncdesktop.isChecked() ) { 412 if (mPrefs->mPassiveSyncWithDesktop != syncdesktop.isChecked() ) {
413 changed = true; 413 changed = true;
414 mPrefs->mPassiveSyncWithDesktop = syncdesktop.isChecked(); 414 mPrefs->mPassiveSyncWithDesktop = syncdesktop.isChecked();
415 } 415 }
416 } 416 }
417 else 417 else
418 autoStart = mPrefs->mPassiveSyncAutoStart; 418 autoStart = mPrefs->mPassiveSyncAutoStart;
419 if ( autoStart != mPrefs->mPassiveSyncAutoStart ) 419 if ( autoStart != mPrefs->mPassiveSyncAutoStart )
420 changed = true; 420 changed = true;
421 bool ok; 421 bool ok;
422 mPrefs->mPassiveSyncAutoStart = false; 422 mPrefs->mPassiveSyncAutoStart = false;
423 Q_UINT32 port_t = mPrefs->mPassiveSyncPort.toUInt(&ok); 423 Q_UINT32 port_t = mPrefs->mPassiveSyncPort.toUInt(&ok);
424 qDebug("%d ", port_t); 424 qDebug("%d ", port_t);
425 if ( ! ok || port_t > 65535 ) { 425 if ( ! ok || port_t > 65535 ) {
426 KMessageBox::information( 0, i18n("No valid port number:\n%1").arg ( mPrefs->mPassiveSyncPort ), i18n("Pi-Sync Port Error")); 426 KMessageBox::information( 0, i18n("No valid port number:\n%1").arg ( mPrefs->mPassiveSyncPort ), i18n("Pi-Sync Port Error"));
427 return; 427 return;
428 } 428 }
429 Q_UINT16 port = port_t; 429 Q_UINT16 port = port_t;
430 //qDebug("port %d ", port); 430 //qDebug("port %d ", port);
431 mServerSocket = new KServerSocket ( mPrefs->mPassiveSyncPw, port ,1 ); 431 mServerSocket = new KServerSocket ( mPrefs->mPassiveSyncPw, port ,1 );
432 mServerSocket->setFileName( defaultFileName() );//bbb 432 mServerSocket->setFileName( defaultFileName() );//bbb
433 if ( !mServerSocket->ok() ) { 433 if ( !mServerSocket->ok() ) {
434 QTimer::singleShot( 2000, this, SLOT ( displayErrorPort() ) ); 434 QTimer::singleShot( 2000, this, SLOT ( displayErrorPort() ) );
435 delete mServerSocket; 435 delete mServerSocket;
436 mServerSocket = 0; 436 mServerSocket = 0;
437 return; 437 return;
438 } 438 }
439 mPrefs->mPassiveSyncAutoStart = autoStart; 439 mPrefs->mPassiveSyncAutoStart = autoStart;
440 if ( changed ) { 440 if ( changed ) {
441 mPrefs->writeConfig(); 441 mPrefs->writeConfig();
442 } 442 }
443 connect( mServerSocket, SIGNAL ( request_file() ),this, SIGNAL ( request_file() ) ); 443 connect( mServerSocket, SIGNAL ( request_file() ),this, SIGNAL ( request_file() ) );
444 connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SIGNAL ( getFile( bool ) ) ); 444 connect( mServerSocket, SIGNAL ( file_received( bool ) ), this, SIGNAL ( getFile( bool ) ) );
445 connect( mServerSocket, SIGNAL ( request_file(const QString &) ),this, SIGNAL ( request_file(const QString &) ) ); 445 connect( mServerSocket, SIGNAL ( request_file(const QString &) ),this, SIGNAL ( request_file(const QString &) ) );
446 connect( mServerSocket, SIGNAL ( file_received( bool ,const QString &) ), this, SIGNAL ( getFile( bool,const QString & ) ) ); 446 connect( mServerSocket, SIGNAL ( file_received( bool ,const QString &) ), this, SIGNAL ( getFile( bool,const QString & ) ) );
447} 447}
448void KSyncManager::displayErrorPort() 448void KSyncManager::displayErrorPort()
449{ 449{
450 KMessageBox::information( 0, i18n("<b>Enabling Pi-Sync failed!</b> Failed to bind or listen to the port %1! Is another instance already listening to that port?").arg( mPrefs->mPassiveSyncPort) , i18n("Pi-Sync Port Error")); 450 KMessageBox::information( 0, i18n("<b>Enabling Pi-Sync failed!</b> Failed to bind or listen to the port %1! Is another instance already listening to that port?").arg( mPrefs->mPassiveSyncPort) , i18n("Pi-Sync Port Error"));
451} 451}
452void KSyncManager::syncLocalFile() 452void KSyncManager::syncLocalFile()
453{ 453{
454 454
455 QString fn =mPrefs->mLastSyncedLocalFile; 455 QString fn =mPrefs->mLastSyncedLocalFile;
456 QString ext; 456 QString ext;
457 457
458 switch(mTargetApp) 458 switch(mTargetApp)
459 { 459 {
460 case (KAPI): 460 case (KAPI):
461 ext = "(*.vcf)"; 461 ext = "(*.vcf)";
462 break; 462 break;
463 case (KOPI): 463 case (KOPI):
464 ext = "(*.ics/*.vcs)"; 464 ext = "(*.ics/*.vcs)";
465 break; 465 break;
466 case (PWMPI): 466 case (PWMPI):
467 ext = "(*.pwm)"; 467 ext = "(*.pwm)";
468 break; 468 break;
469 default: 469 default:
470 qDebug("KSM::syncLocalFile: invalid apptype selected"); 470 qDebug("KSM::syncLocalFile: invalid apptype selected");
471 break; 471 break;
472 472
473 } 473 }
474 474
475 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename"+ext), mParent ); 475 fn =KFileDialog:: getOpenFileName( fn, i18n("Sync filename"+ext), mParent );
476 if ( fn == "" ) 476 if ( fn == "" )
477 return; 477 return;
478 if ( syncWithFile( fn, false ) ) { 478 if ( syncWithFile( fn, false ) ) {
479 qDebug("KSM::syncLocalFile() successful "); 479 qDebug("KSM::syncLocalFile() successful ");
480 } 480 }
481 481
482} 482}
483 483
484bool KSyncManager::syncWithFile( QString fn , bool quick ) 484bool KSyncManager::syncWithFile( QString fn , bool quick )
485{ 485{
486 bool ret = false; 486 bool ret = false;
487 QFileInfo info; 487 QFileInfo info;
488 info.setFile( fn ); 488 info.setFile( fn );
489 QString mess; 489 QString mess;
490 if ( !info. exists() ) { 490 if ( !info. exists() ) {
491 mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) ); 491 mess = i18n( "Sync file \n...%1\ndoes not exist!\nNothing synced!\n").arg(fn.right( 30) );
492 QMessageBox::warning( mParent, i18n("Warning!"), 492 QMessageBox::warning( mParent, i18n("Warning!"),
493 mess ); 493 mess );
494 return ret; 494 return ret;
495 } 495 }
496 int result = 0; 496 int result = 0;
497 if ( !quick ) { 497 if ( !quick ) {
498 mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false )); 498 mess = i18n("Sync with file \n...%1\nfrom:\n%2\n").arg(fn.right( 25)).arg(KGlobal::locale()->formatDateTime(info.lastModified (), true, false ));
499 result = QMessageBox::warning( mParent, i18n("Warning!"), 499 result = QMessageBox::warning( mParent, i18n("Warning!"),
500 mess, 500 mess,
501 i18n("Sync"), i18n("Cancel"), 0, 501 i18n("Sync"), i18n("Cancel"), 0,
502 0, 1 ); 502 0, 1 );
503 if ( result ) 503 if ( result )
504 return false; 504 return false;
505 } 505 }
506 if ( mAskForPreferences ) 506 if ( mAskForPreferences )
507 if ( !edit_sync_options()) { 507 if ( !edit_sync_options()) {
508 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); 508 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") );
509 return false; 509 return false;
510 } 510 }
511 if ( result == 0 ) { 511 if ( result == 0 ) {
512 //qDebug("Now sycing ... "); 512 //qDebug("Now sycing ... ");
513 if ( ret = mImplementation->sync( this, fn, mSyncAlgoPrefs ,mCurrentResourceLocal ) ) 513 if ( ret = mImplementation->sync( this, fn, mSyncAlgoPrefs ,mCurrentResourceLocal ) )
514 mParent->topLevelWidget()->setCaption( i18n("Synchronization successful") ); 514 mParent->topLevelWidget()->setCaption( i18n("Synchronization successful") );
515 else 515 else
516 mParent->topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") ); 516 mParent->topLevelWidget()->setCaption( i18n("Sync cancelled or failed.") );
517 if ( ! quick ) 517 if ( ! quick )
518 mPrefs->mLastSyncedLocalFile = fn; 518 mPrefs->mLastSyncedLocalFile = fn;
519 } 519 }
520 return ret; 520 return ret;
521} 521}
522 522
523void KSyncManager::quickSyncLocalFile() 523void KSyncManager::quickSyncLocalFile()
524{ 524{
525 525
526 if ( syncWithFile( mPrefs->mLastSyncedLocalFile, true ) ) { 526 if ( syncWithFile( mPrefs->mLastSyncedLocalFile, true ) ) {
527 qDebug("KSM::quick syncLocalFile() successful "); 527 qDebug("KSM::quick syncLocalFile() successful ");
528 528
529 } 529 }
530} 530}
531 531
532void KSyncManager::multiSync( bool askforPrefs ) 532void KSyncManager::multiSync( bool askforPrefs )
533{ 533{
534 if (blockSave()) 534 if (blockSave())
535 return; 535 return;
536 setBlockSave(true); 536 setBlockSave(true);
537 mCurrentResourceLocal = ""; 537 mCurrentResourceLocal = "";
538 if ( askforPrefs ) { 538 if ( askforPrefs ) {
539 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!"); 539 QString question = i18n("Do you really want\nto multiple sync\nwith all checked profiles?\nSyncing takes some\ntime - all profiles\nare synced twice!");
540 if ( QMessageBox::information( mParent, i18n("KDE-Pim Sync"), 540 if ( QMessageBox::information( mParent, i18n("KDE-Pim Sync"),
541 question, 541 question,
542 i18n("Yes"), i18n("No"), 542 i18n("Yes"), i18n("No"),
543 0, 0 ) != 0 ) { 543 0, 0 ) != 0 ) {
544 setBlockSave(false); 544 setBlockSave(false);
545 mParent->topLevelWidget()->setCaption(i18n("Aborted! Nothing synced!")); 545 mParent->topLevelWidget()->setCaption(i18n("Aborted! Nothing synced!"));
546 return; 546 return;
547 } 547 }
548 } 548 }
549 mCurrentSyncDevice = i18n("Multiple profiles") ; 549 mCurrentSyncDevice = i18n("Multiple profiles") ;
550 mSyncAlgoPrefs = mPrefs->mRingSyncAlgoPrefs; 550 mSyncAlgoPrefs = mPrefs->mRingSyncAlgoPrefs;
551 if ( askforPrefs ) { 551 if ( askforPrefs ) {
552 if ( !edit_sync_options()) { 552 if ( !edit_sync_options()) {
553 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted.") ); 553 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted.") );
554 return; 554 return;
555 } 555 }
556 mPrefs->mRingSyncAlgoPrefs = mSyncAlgoPrefs; 556 mPrefs->mRingSyncAlgoPrefs = mSyncAlgoPrefs;
557 } 557 }
558 mParent->topLevelWidget()->setCaption(i18n("Multiple sync started.") ); 558 mParent->topLevelWidget()->setCaption(i18n("Multiple sync started.") );
559 qApp->processEvents(); 559 qApp->processEvents();
560 int num = ringSync() ; 560 int num = ringSync() ;
561 if ( num > 1 ) 561 if ( num > 1 )
562 ringSync(); 562 ringSync();
563 setBlockSave(false); 563 setBlockSave(false);
564 if ( num ) 564 if ( num )
565 emit save(); 565 emit save();
566 if ( num ) 566 if ( num )
567 mParent->topLevelWidget()->setCaption(i18n("%1 profiles synced. Multiple sync complete!").arg(num) ); 567 mParent->topLevelWidget()->setCaption(i18n("%1 profiles synced. Multiple sync complete!").arg(num) );
568 else 568 else
569 mParent->topLevelWidget()->setCaption(i18n("Nothing synced! No profiles defined for multisync!")); 569 mParent->topLevelWidget()->setCaption(i18n("Nothing synced! No profiles defined for multisync!"));
570 return; 570 return;
571} 571}
572 572
573int KSyncManager::ringSync() 573int KSyncManager::ringSync()
574{ 574{
575 emit multiResourceSyncStart( false ); 575 emit multiResourceSyncStart( false );
576 int syncedProfiles = 0; 576 int syncedProfiles = 0;
577 unsigned int i; 577 unsigned int i;
578 QTime timer; 578 QTime timer;
579 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) ); 579 KConfig config ( locateLocal( "config","ksyncprofilesrc" ) );
580 QStringList syncProfileNames = mSyncProfileNames; 580 QStringList syncProfileNames = mSyncProfileNames;
581 KSyncProfile* temp = new KSyncProfile (); 581 KSyncProfile* temp = new KSyncProfile ();
582 mAskForPreferences = false; 582 mAskForPreferences = false;
583 mCurrentResourceLocal = ""; 583 mCurrentResourceLocal = "";
584 for ( i = 0; i < syncProfileNames.count(); ++i ) { 584 for ( i = 0; i < syncProfileNames.count(); ++i ) {
585 mCurrentSyncProfile = i; 585 mCurrentSyncProfile = i;
586 temp->setName(syncProfileNames[mCurrentSyncProfile]); 586 temp->setName(syncProfileNames[mCurrentSyncProfile]);
587 temp->readConfig(&config); 587 temp->readConfig(&config);
588 588
589 bool includeInRingSync = false; 589 bool includeInRingSync = false;
590 switch(mTargetApp) 590 switch(mTargetApp)
591 { 591 {
592 case (KAPI): 592 case (KAPI):
593 includeInRingSync = temp->getIncludeInRingSyncAB(); 593 includeInRingSync = temp->getIncludeInRingSyncAB();
594 break; 594 break;
595 case (KOPI): 595 case (KOPI):
596 includeInRingSync = temp->getIncludeInRingSync(); 596 includeInRingSync = temp->getIncludeInRingSync();
597 break; 597 break;
598 case (PWMPI): 598 case (PWMPI):
599 includeInRingSync = temp->getIncludeInRingSyncPWM(); 599 includeInRingSync = temp->getIncludeInRingSyncPWM();
600 break; 600 break;
601 default: 601 default:
602 qDebug("KSM::ringSync: invalid apptype selected"); 602 qDebug("KSM::ringSync: invalid apptype selected");
603 break; 603 break;
604 604
605 } 605 }
606 606
607 607
608 if ( includeInRingSync && ( i < 1 || i > 2 )) { 608 if ( includeInRingSync && ( i < 1 || i > 2 )) {
609 mParent->topLevelWidget()->setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... ")); 609 mParent->topLevelWidget()->setCaption(i18n("Profile ")+syncProfileNames[mCurrentSyncProfile]+ i18n(" is synced ... "));
610 ++syncedProfiles; 610 ++syncedProfiles;
611 mSyncWithDesktop = false; 611 mSyncWithDesktop = false;
612 // mAskForPreferences = temp->getAskForPreferences(); 612 // mAskForPreferences = temp->getAskForPreferences();
613 mWriteBackFile = temp->getWriteBackFile(); 613 mWriteBackFile = temp->getWriteBackFile();
614 mWriteBackExistingOnly = temp->getWriteBackExisting(); 614 mWriteBackExistingOnly = temp->getWriteBackExisting();
615 mIsKapiFile = temp->getIsKapiFile(); 615 mIsKapiFile = temp->getIsKapiFile();
616 mWriteBackInFuture = 0; 616 mWriteBackInFuture = 0;
617 if ( temp->getWriteBackFuture() ) { 617 if ( temp->getWriteBackFuture() ) {
618 mWriteBackInFuture = temp->getWriteBackFutureWeeks( ); 618 mWriteBackInFuture = temp->getWriteBackFutureWeeks( );
619 mWriteBackInPast = temp->getWriteBackPastWeeks( ); 619 mWriteBackInPast = temp->getWriteBackPastWeeks( );
620 } 620 }
621 mFilterInCal = temp->getFilterInCal(); 621 mFilterInCal = temp->getFilterInCal();
622 mFilterOutCal = temp->getFilterOutCal(); 622 mFilterOutCal = temp->getFilterOutCal();
623 mFilterInAB = temp->getFilterInAB(); 623 mFilterInAB = temp->getFilterInAB();
624 mFilterOutAB = temp->getFilterOutAB(); 624 mFilterOutAB = temp->getFilterOutAB();
625 mShowSyncSummary = false; 625 mShowSyncSummary = false;
626 mCurrentSyncDevice = syncProfileNames[i] ; 626 mCurrentSyncDevice = syncProfileNames[i] ;
627 mCurrentSyncName = mLocalMachineName; 627 mCurrentSyncName = mLocalMachineName;
628 if ( i == 0 ) { 628 if ( i == 0 ) {
629 mIsKapiFile = false; 629 mIsKapiFile = false;
630#ifdef DESKTOP_VERSION 630#ifdef DESKTOP_VERSION
631 syncKDE(); 631 syncKDE();
632#else 632#else
633 syncSharp(); 633 syncSharp();
634#endif 634#endif
635 } else { 635 } else {
636 if ( temp->getIsLocalFileSync() ) { 636 if ( temp->getIsLocalFileSync() ) {
637 switch(mTargetApp) 637 switch(mTargetApp)
638 { 638 {
639 case (KAPI): 639 case (KAPI):
640 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) ) 640 if ( syncWithFile( temp->getRemoteFileNameAB( ), false ) )
641 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB(); 641 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNameAB();
642 break; 642 break;
643 case (KOPI): 643 case (KOPI):
644 if ( syncWithFile( temp->getRemoteFileName( ), false ) ) 644 if ( syncWithFile( temp->getRemoteFileName( ), false ) )
645 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName(); 645 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileName();
646 break; 646 break;
647 case (PWMPI): 647 case (PWMPI):
648 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) ) 648 if ( syncWithFile( temp->getRemoteFileNamePWM( ), false ) )
649 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM(); 649 mPrefs->mLastSyncedLocalFile = temp->getRemoteFileNamePWM();
650 break; 650 break;
651 default: 651 default:
652 qDebug("KSM: invalid apptype selected"); 652 qDebug("KSM: invalid apptype selected");
653 break; 653 break;
654 } 654 }
655 } else { 655 } else {
656 if ( temp->getIsPhoneSync() ) { 656 if ( temp->getIsPhoneSync() ) {
657 mPhoneDevice = temp->getPhoneDevice( ) ; 657 mPhoneDevice = temp->getPhoneDevice( ) ;
658 mPhoneConnection = temp->getPhoneConnection( ); 658 mPhoneConnection = temp->getPhoneConnection( );
659 mPhoneModel = temp->getPhoneModel( ); 659 mPhoneModel = temp->getPhoneModel( );
660 syncPhone(); 660 syncPhone();
661 } else if ( temp->getIsPiSync() || temp->getIsPiSyncSpec()) { 661 } else if ( temp->getIsPiSync() || temp->getIsPiSyncSpec()) {
662 mSpecificResources.clear(); 662 mSpecificResources.clear();
663 if ( mTargetApp == KAPI ) { 663 if ( mTargetApp == KAPI ) {
664 mPassWordPiSync = temp->getRemotePwAB(); 664 mPassWordPiSync = temp->getRemotePwAB();
665 mActiveSyncPort = temp->getRemotePortAB(); 665 mActiveSyncPort = temp->getRemotePortAB();
666 mActiveSyncIP = temp->getRemoteIPAB(); 666 mActiveSyncIP = temp->getRemoteIPAB();
667 } else if ( mTargetApp == KOPI ) { 667 } else if ( mTargetApp == KOPI ) {
668 mSpecificResources = QStringList::split( ":", temp->getResSpecKopi(),true ); 668 mSpecificResources = QStringList::split( ":", temp->getResSpecKopi(),true );
669 mPassWordPiSync = temp->getRemotePw(); 669 mPassWordPiSync = temp->getRemotePw();
670 mActiveSyncPort = temp->getRemotePort(); 670 mActiveSyncPort = temp->getRemotePort();
671 mActiveSyncIP = temp->getRemoteIP(); 671 mActiveSyncIP = temp->getRemoteIP();
672 } else { 672 } else {
673 mPassWordPiSync = temp->getRemotePwPWM(); 673 mPassWordPiSync = temp->getRemotePwPWM();
674 mActiveSyncPort = temp->getRemotePortPWM(); 674 mActiveSyncPort = temp->getRemotePortPWM();
675 mActiveSyncIP = temp->getRemoteIPPWM(); 675 mActiveSyncIP = temp->getRemoteIPPWM();
676 } 676 }
677 syncPi(); 677 syncPi();
678 while ( !mPisyncFinished ) { 678 while ( !mPisyncFinished ) {
679 //qDebug("waiting "); 679 //qDebug("waiting ");
680 qApp->processEvents(); 680 qApp->processEvents();
681 } 681 }
682 timer.start(); 682 timer.start();
683 while ( timer.elapsed () < 2000 ) { 683 while ( timer.elapsed () < 2000 ) {
684 qApp->processEvents(); 684 qApp->processEvents();
685 } 685 }
686 } else 686 } else
687 syncRemote( temp, false ); 687 syncRemote( temp, false );
688 688
689 } 689 }
690 } 690 }
691 timer.start(); 691 timer.start();
692 mParent->topLevelWidget()->setCaption(i18n("Multiple sync in progress ... please wait!") ); 692 mParent->topLevelWidget()->setCaption(i18n("Multiple sync in progress ... please wait!") );
693 while ( timer.elapsed () < 2000 ) { 693 while ( timer.elapsed () < 2000 ) {
694 qApp->processEvents(); 694 qApp->processEvents();
695#ifndef _WIN32_ 695#ifndef _WIN32_
696 sleep (1); 696 sleep (1);
697#endif 697#endif
698 } 698 }
699 699
700 } 700 }
701 701
702 } 702 }
703 delete temp; 703 delete temp;
704 return syncedProfiles; 704 return syncedProfiles;
705} 705}
706 706
707void KSyncManager::syncRemote( KSyncProfile* prof, bool ask) 707void KSyncManager::syncRemote( KSyncProfile* prof, bool ask)
708{ 708{
709 QString question; 709 QString question;
710 if ( ask ) { 710 if ( ask ) {
711 question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n"; 711 question = i18n("Do you really want\nto remote sync\nwith profile \n")+ prof->getName()+" ?\n";
712 if ( QMessageBox::information( mParent, i18n("Sync"), 712 if ( QMessageBox::information( mParent, i18n("Sync"),
713 question, 713 question,
714 i18n("Yes"), i18n("No"), 714 i18n("Yes"), i18n("No"),
715 0, 0 ) != 0 ) 715 0, 0 ) != 0 )
716 return; 716 return;
717 } 717 }
718 718
719 QString preCommand; 719 QString preCommand;
720 QString localTempFile; 720 QString localTempFile;
721 QString postCommand; 721 QString postCommand;
722 722
723 switch(mTargetApp) 723 switch(mTargetApp)
724 { 724 {
725 case (KAPI): 725 case (KAPI):
726 preCommand = prof->getPreSyncCommandAB(); 726 preCommand = prof->getPreSyncCommandAB();
727 postCommand = prof->getPostSyncCommandAB(); 727 postCommand = prof->getPostSyncCommandAB();
728 localTempFile = prof->getLocalTempFileAB(); 728 localTempFile = prof->getLocalTempFileAB();
729 break; 729 break;
730 case (KOPI): 730 case (KOPI):
731 preCommand = prof->getPreSyncCommand(); 731 preCommand = prof->getPreSyncCommand();
732 postCommand = prof->getPostSyncCommand(); 732 postCommand = prof->getPostSyncCommand();
733 localTempFile = prof->getLocalTempFile(); 733 localTempFile = prof->getLocalTempFile();
734 break; 734 break;
735 case (PWMPI): 735 case (PWMPI):
736 preCommand = prof->getPreSyncCommandPWM(); 736 preCommand = prof->getPreSyncCommandPWM();
737 postCommand = prof->getPostSyncCommandPWM(); 737 postCommand = prof->getPostSyncCommandPWM();
738 localTempFile = prof->getLocalTempFilePWM(); 738 localTempFile = prof->getLocalTempFilePWM();
739 break; 739 break;
740 default: 740 default:
741 qDebug("KSM::syncRemote: invalid apptype selected"); 741 qDebug("KSM::syncRemote: invalid apptype selected");
742 break; 742 break;
743 } 743 }
744 744
745 745
746 int fi; 746 int fi;
747 if ( (fi = preCommand.find("$PWD$")) > 0 ) { 747 if ( (fi = preCommand.find("$PWD$")) > 0 ) {
748 QString pwd = getPassword(); 748 QString pwd = getPassword();
749 preCommand = preCommand.left( fi )+ pwd + preCommand.mid( fi+5 ); 749 preCommand = preCommand.left( fi )+ pwd + preCommand.mid( fi+5 );
750 750
751 } 751 }
752 int maxlen = 30; 752 int maxlen = 30;
753 if ( QApplication::desktop()->width() > 320 ) 753 if ( QApplication::desktop()->width() > 320 )
754 maxlen += 25; 754 maxlen += 25;
755 mParent->topLevelWidget()->setCaption ( i18n( "Copy remote file to local machine..." ) ); 755 mParent->topLevelWidget()->setCaption ( i18n( "Copy remote file to local machine..." ) );
756 int fileSize = 0; 756 int fileSize = 0;
757 int result = system ( preCommand ); 757 int result = system ( preCommand );
758 // 0 : okay 758 // 0 : okay
759 // 256: no such file or dir 759 // 256: no such file or dir
760 // 760 //
761 qDebug("KSM::Sync: Remote copy result(0 = okay): %d ",result ); 761 qDebug("KSM::Sync: Remote copy result(0 = okay): %d ",result );
762 if ( result != 0 ) { 762 if ( result != 0 ) {
763 unsigned int len = maxlen; 763 unsigned int len = maxlen;
764 while ( len < preCommand.length() ) { 764 while ( len < preCommand.length() ) {
765 preCommand.insert( len , "\n" ); 765 preCommand.insert( len , "\n" );
766 len += maxlen +2; 766 len += maxlen +2;
767 } 767 }
768 question = i18n("Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n").arg (preCommand) ; 768 question = i18n("Sorry, the copy command failed!\nCommand was:\n%1\n \nTry command on console to get more\ndetailed info about the reason.\n").arg (preCommand) ;
769 QMessageBox::information( mParent, i18n("Sync - ERROR"), 769 QMessageBox::information( mParent, i18n("Sync - ERROR"),
770 question, 770 question,
771 i18n("Okay!")) ; 771 i18n("Okay!")) ;
772 mParent->topLevelWidget()->setCaption ("KDE-Pim"); 772 mParent->topLevelWidget()->setCaption ("KDE-Pim");
773 return; 773 return;
774 } 774 }
775 mParent->topLevelWidget()->setCaption ( i18n( "Copying succeed." ) ); 775 mParent->topLevelWidget()->setCaption ( i18n( "Copying succeed." ) );
776 //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() ); 776 //qDebug(" file **%s** ",prof->getLocalTempFile().latin1() );
777 777
778 if ( syncWithFile( localTempFile, true ) ) { 778 if ( syncWithFile( localTempFile, true ) ) {
779 779
780 if ( mWriteBackFile ) { 780 if ( mWriteBackFile ) {
781 int fi; 781 int fi;
782 if ( (fi = postCommand.find("$PWD$")) > 0 ) { 782 if ( (fi = postCommand.find("$PWD$")) > 0 ) {
783 QString pwd = getPassword(); 783 QString pwd = getPassword();
784 postCommand = postCommand.left( fi )+ pwd + postCommand.mid( fi+5 ); 784 postCommand = postCommand.left( fi )+ pwd + postCommand.mid( fi+5 );
785 785
786 } 786 }
787 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file ..." ) ); 787 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file ..." ) );
788 result = system ( postCommand ); 788 result = system ( postCommand );
789 qDebug("KSM::Sync:Writing back file result: %d ", result); 789 qDebug("KSM::Sync:Writing back file result: %d ", result);
790 if ( result != 0 ) { 790 if ( result != 0 ) {
791 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file result: " )+QString::number( result ) ); 791 mParent->topLevelWidget()->setCaption ( i18n( "Writing back file result: " )+QString::number( result ) );
792 return; 792 return;
793 } else { 793 } else {
794 mParent->topLevelWidget()->setCaption ( i18n( "Syncronization sucessfully completed" ) ); 794 mParent->topLevelWidget()->setCaption ( i18n( "Syncronization sucessfully completed" ) );
795 } 795 }
796 } 796 }
797 } 797 }
798 return; 798 return;
799} 799}
800bool KSyncManager::edit_pisync_options() 800bool KSyncManager::edit_pisync_options()
801{ 801{
802 QDialog dia( mParent, "dia", true ); 802 QDialog dia( mParent, "dia", true );
803 dia.setCaption( i18n("Pi-Sync options for device: " ) +mCurrentSyncDevice ); 803 dia.setCaption( i18n("Pi-Sync options for device: " ) +mCurrentSyncDevice );
804 QVBoxLayout lay ( &dia ); 804 QVBoxLayout lay ( &dia );
805 lay.setSpacing( 5 ); 805 lay.setSpacing( 5 );
806 lay.setMargin( 3 ); 806 lay.setMargin( 3 );
807 QLabel lab1 ( i18n("Password for remote access:"), &dia); 807 QLabel lab1 ( i18n("Password for remote access:"), &dia);
808 lay.addWidget( &lab1 ); 808 lay.addWidget( &lab1 );
809 QLineEdit le1 (&dia ); 809 QLineEdit le1 (&dia );
810 lay.addWidget( &le1 ); 810 lay.addWidget( &le1 );
811 QLabel lab2 ( i18n("Remote IP address:"), &dia); 811 QLabel lab2 ( i18n("Remote IP address:"), &dia);
812 lay.addWidget( &lab2 ); 812 lay.addWidget( &lab2 );
813 QLineEdit le2 (&dia ); 813 QLineEdit le2 (&dia );
814 lay.addWidget( &le2 ); 814 lay.addWidget( &le2 );
815 QLabel lab3 ( i18n("Remote port number:\n(May be: 1 - 65535)"), &dia); 815 QLabel lab3 ( i18n("Remote port number:\n(May be: 1 - 65535)"), &dia);
816 lay.addWidget( &lab3 ); 816 lay.addWidget( &lab3 );
817 QLineEdit le3 (&dia ); 817 QLineEdit le3 (&dia );
818 lay.addWidget( &le3 ); 818 lay.addWidget( &le3 );
819 QPushButton pb ( "OK", &dia); 819 QPushButton pb ( "OK", &dia);
820 lay.addWidget( &pb ); 820 lay.addWidget( &pb );
821 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 821 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
822 le1.setText( mPassWordPiSync ); 822 le1.setText( mPassWordPiSync );
823 le2.setText( mActiveSyncIP ); 823 le2.setText( mActiveSyncIP );
824 le3.setText( mActiveSyncPort ); 824 le3.setText( mActiveSyncPort );
825 if ( dia.exec() ) { 825 if ( dia.exec() ) {
826 mPassWordPiSync = le1.text(); 826 mPassWordPiSync = le1.text();
827 mActiveSyncPort = le3.text(); 827 mActiveSyncPort = le3.text();
828 mActiveSyncIP = le2.text(); 828 mActiveSyncIP = le2.text();
829 return true; 829 return true;
830 } 830 }
831 return false; 831 return false;
832} 832}
833bool KSyncManager::edit_sync_options() 833bool KSyncManager::edit_sync_options()
834{ 834{
835 835
836 QDialog dia( mParent, "dia", true ); 836 QDialog dia( mParent, "dia", true );
837 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice ); 837 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice );
838 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia); 838 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia);
839 QVBoxLayout lay ( &dia ); 839 QVBoxLayout lay ( &dia );
840 lay.setSpacing( 2 ); 840 lay.setSpacing( 2 );
841 lay.setMargin( 3 ); 841 lay.setMargin( 3 );
842 lay.addWidget(&gr); 842 lay.addWidget(&gr);
843 QRadioButton loc ( i18n("Take local entry on conflict"), &gr ); 843 QRadioButton loc ( i18n("Take local entry on conflict"), &gr );
844 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr ); 844 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr );
845 QRadioButton newest( i18n("Take newest entry on conflict"), &gr ); 845 QRadioButton newest( i18n("Take newest entry on conflict"), &gr );
846 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr ); 846 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr );
847 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr ); 847 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr );
848 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr ); 848 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr );
849 //QRadioButton both( i18n("Take both on conflict"), &gr ); 849 //QRadioButton both( i18n("Take both on conflict"), &gr );
850 QPushButton pb ( "OK", &dia); 850 QPushButton pb ( "OK", &dia);
851 lay.addWidget( &pb ); 851 lay.addWidget( &pb );
852 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 852 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
853 switch ( mSyncAlgoPrefs ) { 853 switch ( mSyncAlgoPrefs ) {
854 case 0: 854 case 0:
855 loc.setChecked( true); 855 loc.setChecked( true);
856 break; 856 break;
857 case 1: 857 case 1:
858 rem.setChecked( true ); 858 rem.setChecked( true );
859 break; 859 break;
860 case 2: 860 case 2:
861 newest.setChecked( true); 861 newest.setChecked( true);
862 break; 862 break;
863 case 3: 863 case 3:
864 ask.setChecked( true); 864 ask.setChecked( true);
865 break; 865 break;
866 case 4: 866 case 4:
867 f_loc.setChecked( true); 867 f_loc.setChecked( true);
868 break; 868 break;
869 case 5: 869 case 5:
870 f_rem.setChecked( true); 870 f_rem.setChecked( true);
871 break; 871 break;
872 case 6: 872 case 6:
873 // both.setChecked( true); 873 // both.setChecked( true);
874 break; 874 break;
875 default: 875 default:
876 break; 876 break;
877 } 877 }
878 if ( dia.exec() ) { 878 if ( dia.exec() ) {
879 mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ; 879 mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ;
880 return true; 880 return true;
881 } 881 }
882 return false; 882 return false;
883} 883}
884 884
885QString KSyncManager::getPassword( ) 885QString KSyncManager::getPassword( )
886{ 886{
887 QString retfile = ""; 887 QString retfile = "";
888 QDialog dia ( mParent, "input-dialog", true ); 888 QDialog dia ( mParent, "input-dialog", true );
889 QLineEdit lab ( &dia ); 889 QLineEdit lab ( &dia );
890 lab.setEchoMode( QLineEdit::Password ); 890 lab.setEchoMode( QLineEdit::Password );
891 QVBoxLayout lay( &dia ); 891 QVBoxLayout lay( &dia );
892 lay.setMargin(7); 892 lay.setMargin(7);
893 lay.setSpacing(7); 893 lay.setSpacing(7);
894 lay.addWidget( &lab); 894 lay.addWidget( &lab);
895 dia.setFixedSize( 230,50 ); 895 dia.setFixedSize( 230,50 );
896 dia.setCaption( i18n("Enter password") ); 896 dia.setCaption( i18n("Enter password") );
897 QPushButton pb ( "OK", &dia); 897 QPushButton pb ( "OK", &dia);
898 lay.addWidget( &pb ); 898 lay.addWidget( &pb );
899 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 899 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
900 dia.show(); 900 dia.show();
901 int res = dia.exec(); 901 int res = dia.exec();
902 if ( res ) 902 if ( res )
903 retfile = lab.text(); 903 retfile = lab.text();
904 dia.hide(); 904 dia.hide();
905 qApp->processEvents(); 905 qApp->processEvents();
906 return retfile; 906 return retfile;
907 907
908} 908}
909 909
910 910
911void KSyncManager::confSync() 911void KSyncManager::confSync()
912{ 912{
913 static KSyncPrefsDialog* sp = 0; 913 static KSyncPrefsDialog* sp = 0;
914 if ( ! sp ) { 914 if ( ! sp ) {
915 sp = new KSyncPrefsDialog( mParent, "syncprefs", true ); 915 sp = new KSyncPrefsDialog( mParent, "syncprefs", true );
916 } 916 }
917 sp->usrReadConfig(); 917 sp->usrReadConfig();
918#ifndef DESKTOP_VERSION 918#ifndef DESKTOP_VERSION
919 sp->showMaximized(); 919 sp->showMaximized();
920#else 920#else
921 sp->show(); 921 sp->show();
922#endif 922#endif
923 sp->exec(); 923 sp->exec();
924 QStringList oldSyncProfileNames = mSyncProfileNames; 924 QStringList oldSyncProfileNames = mSyncProfileNames;
925 mSyncProfileNames = sp->getSyncProfileNames(); 925 mSyncProfileNames = sp->getSyncProfileNames();
926 mLocalMachineName = sp->getLocalMachineName (); 926 mLocalMachineName = sp->getLocalMachineName ();
927 int ii; 927 int ii;
928 for ( ii = 0; ii < oldSyncProfileNames.count(); ++ii ) { 928 for ( ii = 0; ii < oldSyncProfileNames.count(); ++ii ) {
929 if ( ! mSyncProfileNames.contains( oldSyncProfileNames[ii] ) ) 929 if ( ! mSyncProfileNames.contains( oldSyncProfileNames[ii] ) )
930 mImplementation->removeSyncInfo( oldSyncProfileNames[ii] ); 930 mImplementation->removeSyncInfo( oldSyncProfileNames[ii] );
931 } 931 }
932 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) ); 932 QTimer::singleShot ( 1, this, SLOT ( fillSyncMenu() ) );
933} 933}
934void KSyncManager::syncKDE() 934void KSyncManager::syncKDE()
935{ 935{
936 mSyncWithDesktop = true; 936 mSyncWithDesktop = true;
937 emit save(); 937 emit save();
938 switch(mTargetApp) 938 switch(mTargetApp)
939 { 939 {
940 case (KAPI): 940 case (KAPI):
941 { 941 {
942#ifdef DESKTOP_VERSION 942#ifdef DESKTOP_VERSION
943 QString command = "kdeabdump33"; 943 QString command = "kdeabdump33";
944 QString commandfile = "kdeabdump33"; 944 QString commandfile = "kdeabdump33";
945 QString commandpath = qApp->applicationDirPath () + "/"; 945 QString commandpath = qApp->applicationDirPath () + "/";
946#else 946#else
947 QString command = "kdeabdump33"; 947 QString command = "kdeabdump33";
948 QString commandfile = "kdeabdump33"; 948 QString commandfile = "kdeabdump33";
949 QString commandpath = QDir::homeDirPath ()+"/"; 949 QString commandpath = QDir::homeDirPath ()+"/";
950#endif 950#endif
951 if ( ! QFile::exists ( commandpath+commandfile ) ) 951 if ( ! QFile::exists ( commandpath+commandfile ) )
952 command = commandfile; 952 command = commandfile;
953 else 953 else
954 command = commandpath+commandfile; 954 command = commandpath+commandfile;
955 955
956 QString fileName = QDir::homeDirPath ()+"/.kdeaddressbookdump.vcf"; 956 QString fileName = QDir::homeDirPath ()+"/.kdeaddressbookdump.vcf";
957 int result = system ( command.latin1()); 957 int result = system ( command.latin1());
958 qDebug("AB dump 33 command call result: %d ", result); 958 qDebug("AB dump 33 command call result: %d ", result);
959 if ( result != 0 ) { 959 if ( result != 0 ) {
960 qDebug("Calling AB dump version 33 failed. Trying 34... "); 960 qDebug("Calling AB dump version 33 failed. Trying 34... ");
961 commandfile = "kdeabdump34"; 961 commandfile = "kdeabdump34";
962 if ( ! QFile::exists ( commandpath+commandfile ) ) 962 if ( ! QFile::exists ( commandpath+commandfile ) )
963 command = commandfile; 963 command = commandfile;
964 else 964 else
965 command = commandpath+commandfile; 965 command = commandpath+commandfile;
966 result = system ( command.latin1()); 966 result = system ( command.latin1());
967 qDebug("AB dump 34 command call result: %d ", result); 967 qDebug("AB dump 34 command call result: %d ", result);
968 if ( result != 0 ) { 968 if ( result != 0 ) {
969 KMessageBox::error( 0, i18n("Error accessing KDE addressbook data.\nMake sure the file\n%1kdeabdump3x\nexists ( x = 3 or 4 ).\nSupported KDE versions are 3.3 and 3.4.\nUsed version should be auto detected.\n").arg( commandpath )); 969 KMessageBox::error( 0, i18n("Error accessing KDE addressbook data.\nMake sure the file\n%1kdeabdump3x\nexists ( x = 3 or 4 ).\nSupported KDE versions are 3.3 and 3.4.\nUsed version should be auto detected.\n").arg( commandpath ));
970 return; 970 return;
971 } 971 }
972 } 972 }
973 if ( syncWithFile( fileName,true ) ) { 973 if ( syncWithFile( fileName,true ) ) {
974 if ( mWriteBackFile ) { 974 if ( mWriteBackFile ) {
975 command += " --read"; 975 command += " --read";
976 system ( command.latin1()); 976 system ( command.latin1());
977 } 977 }
978 } 978 }
979 979
980 } 980 }
981 break; 981 break;
982 case (KOPI): 982 case (KOPI):
983 { 983 {
984#ifdef DESKTOP_VERSION 984#ifdef DESKTOP_VERSION
985 QString command = "kdecaldump33"; 985 QString command = "kdecaldump33";
986 QString commandfile = "kdecaldump33"; 986 QString commandfile = "kdecaldump33";
987 QString commandpath = qApp->applicationDirPath () + "/"; 987 QString commandpath = qApp->applicationDirPath () + "/";
988#else 988#else
989 QString command = "kdecaldump33"; 989 QString command = "kdecaldump33";
990 QString commandfile = "kdecaldump33"; 990 QString commandfile = "kdecaldump33";
991 QString commandpath = QDir::homeDirPath ()+"/"; 991 QString commandpath = QDir::homeDirPath ()+"/";
992#endif 992#endif
993 if ( ! QFile::exists ( commandpath+commandfile ) ) 993 if ( ! QFile::exists ( commandpath+commandfile ) )
994 command = commandfile; 994 command = commandfile;
995 else 995 else
996 command = commandpath+commandfile; 996 command = commandpath+commandfile;
997 997
998 QString fileName = QDir::homeDirPath ()+"/.kdecalendardump.ics"; 998 QString fileName = QDir::homeDirPath ()+"/.kdecalendardump.ics";
999 int result = system ( command.latin1()); 999 int result = system ( command.latin1());
1000 qDebug("Cal dump 33 command call result result: %d ", result); 1000 qDebug("Cal dump 33 command call result result: %d ", result);
1001 if ( result != 0 ) { 1001 if ( result != 0 ) {
1002 qDebug("Calling CAL dump version 33 failed. Trying 34... "); 1002 qDebug("Calling CAL dump version 33 failed. Trying 34... ");
1003 commandfile = "kdecaldump34"; 1003 commandfile = "kdecaldump34";
1004 if ( ! QFile::exists ( commandpath+commandfile ) ) 1004 if ( ! QFile::exists ( commandpath+commandfile ) )
1005 command = commandfile; 1005 command = commandfile;
1006 else 1006 else
1007 command = commandpath+commandfile; 1007 command = commandpath+commandfile;
1008 result = system ( command.latin1()); 1008 result = system ( command.latin1());
1009 qDebug("Cal dump 34 command call result result: %d ", result); 1009 qDebug("Cal dump 34 command call result result: %d ", result);
1010 if ( result != 0 ) { 1010 if ( result != 0 ) {
1011 KMessageBox::error( 0, i18n("Error accessing KDE calendar data.\nMake sure the file\n%1kdecaldump3x\nexists ( x = 3 or 4 ).\nSupported KDE versions are 3.3 and 3.4.\nUsed version should be auto detected.\n").arg( commandpath )); 1011 KMessageBox::error( 0, i18n("Error accessing KDE calendar data.\nMake sure the file\n%1kdecaldump3x\nexists ( x = 3 or 4 ).\nSupported KDE versions are 3.3 and 3.4.\nUsed version should be auto detected.\n").arg( commandpath ));
1012 return; 1012 return;
1013 } 1013 }
1014 } 1014 }
1015 if ( syncWithFile( fileName,true ) ) { 1015 if ( syncWithFile( fileName,true ) ) {
1016 if ( mWriteBackFile ) { 1016 if ( mWriteBackFile ) {
1017 command += " --read"; 1017 command += " --read";
1018 system ( command.latin1()); 1018 system ( command.latin1());
1019 } 1019 }
1020 } 1020 }
1021 1021
1022 } 1022 }
1023 break; 1023 break;
1024 case (PWMPI): 1024 case (PWMPI):
1025 1025
1026 break; 1026 break;
1027 default: 1027 default:
1028 qDebug("KSM::slotSyncMenu: invalid apptype selected"); 1028 qDebug("KSM::slotSyncMenu: invalid apptype selected");
1029 break; 1029 break;
1030 1030
1031 } 1031 }
1032} 1032}
1033 1033
1034void KSyncManager::syncSharp() 1034void KSyncManager::syncSharp()
1035{ 1035{
1036 1036
1037 if ( ! syncExternalApplication("sharp") ) 1037 if ( ! syncExternalApplication("sharp") )
1038 qDebug("KSM::ERROR sync sharp "); 1038 qDebug("KSM::ERROR sync sharp ");
1039} 1039}
1040 1040
1041bool KSyncManager::syncExternalApplication(QString resource) 1041bool KSyncManager::syncExternalApplication(QString resource)
1042{ 1042{
1043 1043
1044 emit save(); 1044 emit save();
1045 1045
1046 if ( mAskForPreferences ) 1046 if ( mAskForPreferences )
1047 if ( !edit_sync_options()) { 1047 if ( !edit_sync_options()) {
1048 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); 1048 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") );
1049 return false; 1049 return false;
1050 } 1050 }
1051 1051
1052 qDebug("KSM::Sync extern %s", resource.latin1()); 1052 qDebug("KSM::Sync extern %s", resource.latin1());
1053 1053
1054 bool syncOK = mImplementation->syncExternal(this, resource); 1054 bool syncOK = mImplementation->syncExternal(this, resource);
1055 1055
1056 return syncOK; 1056 return syncOK;
1057 1057
1058} 1058}
1059 1059
1060void KSyncManager::syncPhone() 1060void KSyncManager::syncPhone()
1061{ 1061{
1062 1062
1063 syncExternalApplication("phone"); 1063 syncExternalApplication("phone");
1064 1064
1065} 1065}
1066 1066
1067void KSyncManager::showProgressBar(int percentage, QString caption, int total) 1067void KSyncManager::showProgressBar(int percentage, QString caption, int total)
1068{ 1068{
1069 if (!bar->isVisible()) 1069 if (!bar->isVisible())
1070 { 1070 {
1071 int w = 300; 1071 int w = 300;
1072 if ( QApplication::desktop()->width() < 320 ) 1072 if ( QApplication::desktop()->width() < 320 )
1073 w = 220; 1073 w = 220;
1074 int h = bar->sizeHint().height() ; 1074 int h = bar->sizeHint().height() ;
1075 int dw = QApplication::desktop()->width(); 1075 int dw = QApplication::desktop()->width();
1076 int dh = QApplication::desktop()->height(); 1076 int dh = QApplication::desktop()->height();
1077 bar->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1077 bar->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1078 bar->setCaption (caption); 1078 bar->setCaption (caption);
1079 bar->setTotalSteps ( total ) ; 1079 bar->setTotalSteps ( total ) ;
1080 bar->show(); 1080 bar->show();
1081 } 1081 }
1082 bar->raise(); 1082 bar->raise();
1083 bar->setProgress( percentage ); 1083 bar->setProgress( percentage );
1084 qApp->processEvents(); 1084 qApp->processEvents();
1085} 1085}
1086 1086
1087void KSyncManager::hideProgressBar() 1087void KSyncManager::hideProgressBar()
1088{ 1088{
1089 bar->hide(); 1089 bar->hide();
1090 qApp->processEvents(); 1090 qApp->processEvents();
1091} 1091}
1092 1092
1093bool KSyncManager::isProgressBarCanceled() 1093bool KSyncManager::isProgressBarCanceled()
1094{ 1094{
1095 return !bar->isVisible(); 1095 return !bar->isVisible();
1096} 1096}
1097 1097
1098QString KSyncManager::syncFileName() 1098QString KSyncManager::syncFileName()
1099{ 1099{
1100 1100
1101 QString fn = "tempfile"; 1101 QString fn = "tempfile";
1102 switch(mTargetApp) 1102 switch(mTargetApp)
1103 { 1103 {
1104 case (KAPI): 1104 case (KAPI):
1105 fn = "tempsyncab.vcf"; 1105 fn = "tempsyncab.vcf";
1106 break; 1106 break;
1107 case (KOPI): 1107 case (KOPI):
1108 fn = "tempsynccal.ics"; 1108 fn = "tempsynccal.ics";
1109 break; 1109 break;
1110 case (PWMPI): 1110 case (PWMPI):
1111 fn = "tempsyncpw.pwm"; 1111 fn = "tempsyncpw.pwm";
1112 break; 1112 break;
1113 default: 1113 default:
1114 break; 1114 break;
1115 } 1115 }
1116#ifdef DESKTOP_VERSION 1116#ifdef DESKTOP_VERSION
1117 return locateLocal( "tmp", fn ); 1117 return locateLocal( "tmp", fn );
1118#else 1118#else
1119 return (QString( "/tmp/" )+ fn ); 1119 return (QString( "/tmp/" )+ fn );
1120#endif 1120#endif
1121} 1121}
1122 1122
1123void KSyncManager::syncPi() 1123void KSyncManager::syncPi()
1124{ 1124{
1125 mIsKapiFile = true; 1125 mIsKapiFile = true;
1126 mPisyncFinished = false; 1126 mPisyncFinished = false;
1127 qApp->processEvents(); 1127 qApp->processEvents();
1128 if ( mAskForPreferences ) 1128 if ( mAskForPreferences )
1129 if ( !edit_pisync_options()) { 1129 if ( !edit_pisync_options()) {
1130 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") ); 1130 mParent->topLevelWidget()->setCaption( i18n("Syncing aborted. Nothing synced.") );
1131 mPisyncFinished = true; 1131 mPisyncFinished = true;
1132 return; 1132 return;
1133 } 1133 }
1134 bool ok; 1134 bool ok;
1135 Q_UINT16 port = mActiveSyncPort.toUInt(&ok); 1135 Q_UINT16 port = mActiveSyncPort.toUInt(&ok);
1136 if ( ! ok ) { 1136 if ( ! ok ) {
1137 mParent->topLevelWidget()->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") ); 1137 mParent->topLevelWidget()->setCaption( i18n("Sorry, no valid port.Syncing cancelled.") );
1138 mPisyncFinished = true; 1138 mPisyncFinished = true;
1139 return; 1139 return;
1140 } 1140 }
1141 mCurrentResourceLocal = ""; 1141 mCurrentResourceLocal = "";
1142 mCurrentResourceRemote = ""; 1142 mCurrentResourceRemote = "";
1143 if ( mSpecificResources.count() ) { 1143 if ( mSpecificResources.count() ) {
1144 int lastSyncRes = mSpecificResources.count()/2; 1144 int lastSyncRes = mSpecificResources.count()/2;
1145 int ccc = mSpecificResources.count()-1; 1145 int ccc = mSpecificResources.count()-1;
1146 while ( lastSyncRes > 0 && ccc > 0 && mSpecificResources[ ccc ].isEmpty() ) { 1146 while ( lastSyncRes > 0 && ccc > 0 && mSpecificResources[ ccc ].isEmpty() ) {
1147 --ccc; 1147 --ccc;
1148 --lastSyncRes; 1148 --lastSyncRes;
1149 //qDebug ( "KSM: sync pi %d",ccc ); 1149 //qDebug ( "KSM: sync pi %d",ccc );
1150 } 1150 }
1151 int startLocal = 0; 1151 int startLocal = 0;
1152 int startRemote = mSpecificResources.count()/2; 1152 int startRemote = mSpecificResources.count()/2;
1153 emit multiResourceSyncStart( true ); 1153 emit multiResourceSyncStart( true );
1154 while ( startLocal < mSpecificResources.count()/2 ) { 1154 while ( startLocal < mSpecificResources.count()/2 ) {
1155 if ( startLocal+1 >= lastSyncRes ) 1155 if ( startLocal+1 >= lastSyncRes )
1156 emit multiResourceSyncStart( false ); 1156 emit multiResourceSyncStart( false );
1157 mPisyncFinished = false; 1157 mPisyncFinished = false;
1158 mCurrentResourceLocal = mSpecificResources[ startLocal ]; 1158 mCurrentResourceLocal = mSpecificResources[ startLocal ];
1159 mCurrentResourceRemote = mSpecificResources[ startRemote ]; 1159 mCurrentResourceRemote = mSpecificResources[ startRemote ];
1160 //qDebug ( "KSM: AAASyncing resources: Local: %s --- Remote: %s ",mCurrentResourceLocal.latin1(), mCurrentResourceRemote.latin1() ); 1160 //qDebug ( "KSM: AAASyncing resources: Local: %s --- Remote: %s ",mCurrentResourceLocal.latin1(), mCurrentResourceRemote.latin1() );
1161 if ( !mCurrentResourceRemote.isEmpty() ) { 1161 if ( !mCurrentResourceRemote.isEmpty() ) {
1162 qDebug ( "KSM: Syncing resources: Local: %s --- Remote: %s ",mCurrentResourceLocal.latin1(), mCurrentResourceRemote.latin1() ); 1162 qDebug ( "KSM: Syncing resources: Local: %s --- Remote: %s ",mCurrentResourceLocal.latin1(), mCurrentResourceRemote.latin1() );
1163
1163 KCommandSocket* commandSocket = new KCommandSocket( mCurrentResourceRemote, mPassWordPiSync, port, mActiveSyncIP, this, mParent->topLevelWidget() ); 1164 KCommandSocket* commandSocket = new KCommandSocket( mCurrentResourceRemote, mPassWordPiSync, port, mActiveSyncIP, this, mParent->topLevelWidget() );
1164 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); 1165 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) );
1165 commandSocket->readFile( syncFileName() ); 1166 commandSocket->readFile( syncFileName() );
1167 mParent->topLevelWidget()->setCaption( i18n("Syncing %1 <-> %2").arg( mCurrentResourceLocal ).arg( mCurrentResourceRemote ) );
1166 while ( !mPisyncFinished ) { 1168 while ( !mPisyncFinished ) {
1167 //qDebug("waiting "); 1169 //qDebug("waiting ");
1168 qApp->processEvents(); 1170 qApp->processEvents();
1169 } 1171 }
1172 if ( startLocal+1 < mSpecificResources.count()/2 ) {
1173 mParent->topLevelWidget()->setCaption( i18n("Waiting 2 secs before syncing next resource...") );
1174 QTime timer;
1175 timer.start();
1176 while ( timer.elapsed () < 2000 ) {
1177 qApp->processEvents();
1178 }
1179 }
1170 } 1180 }
1171 ++startRemote; 1181 ++startRemote;
1172 ++startLocal; 1182 ++startLocal;
1183
1173 } 1184 }
1174 mPisyncFinished = true; 1185 mPisyncFinished = true;
1175 } else { 1186 } else {
1176 KCommandSocket* commandSocket = new KCommandSocket( "", mPassWordPiSync, port, mActiveSyncIP, this, mParent->topLevelWidget() ); 1187 KCommandSocket* commandSocket = new KCommandSocket( "", mPassWordPiSync, port, mActiveSyncIP, this, mParent->topLevelWidget() );
1177 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) ); 1188 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int )), this, SLOT(deleteCommandSocket(KCommandSocket*, int)) );
1178 commandSocket->readFile( syncFileName() ); 1189 commandSocket->readFile( syncFileName() );
1179 } 1190 }
1180} 1191}
1181 1192
1182void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state) 1193void KSyncManager::deleteCommandSocket(KCommandSocket*s, int state)
1183{ 1194{
1184 //enum { success, errorW, errorR, quiet }; 1195 //enum { success, errorW, errorR, quiet };
1185 1196
1186 1197
1187 1198
1188 if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ||state == KCommandSocket::errorPW || 1199 if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ||state == KCommandSocket::errorPW ||
1189 state == KCommandSocket::errorCA ||state == KCommandSocket::errorFI ||state == KCommandSocket::errorUN||state == KCommandSocket::errorED ) { 1200 state == KCommandSocket::errorCA ||state == KCommandSocket::errorFI ||state == KCommandSocket::errorUN||state == KCommandSocket::errorED ) {
1190 if ( state == KCommandSocket::errorPW ) 1201 if ( state == KCommandSocket::errorPW )
1191 mParent->topLevelWidget()->setCaption( i18n("Wrong password: Receiving remote file failed.") ); 1202 mParent->topLevelWidget()->setCaption( i18n("Wrong password: Receiving remote file failed.") );
1192 else if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO ) 1203 else if ( state == KCommandSocket::errorR ||state == KCommandSocket::errorTO )
1193 mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") ); 1204 mParent->topLevelWidget()->setCaption( i18n("ERROR: Receiving remote file failed.") );
1194 else if ( state == KCommandSocket::errorCA ) 1205 else if ( state == KCommandSocket::errorCA )
1195 mParent->topLevelWidget()->setCaption( i18n("Sync cancelled from remote.") ); 1206 mParent->topLevelWidget()->setCaption( i18n("Sync cancelled from remote.") );
1196 else if ( state == KCommandSocket::errorFI ) 1207 else if ( state == KCommandSocket::errorFI )
1197 mParent->topLevelWidget()->setCaption( i18n("File error on remote.") ); 1208 mParent->topLevelWidget()->setCaption( i18n("File error on remote.") );
1198 else if ( state == KCommandSocket::errorED ) 1209 else if ( state == KCommandSocket::errorED )
1199 mParent->topLevelWidget()->setCaption( i18n("Please close error dialog on remote.") ); 1210 mParent->topLevelWidget()->setCaption( i18n("Please close error dialog on remote.") );
1200 else if ( state == KCommandSocket::errorUN ) 1211 else if ( state == KCommandSocket::errorUN )
1201 mParent->topLevelWidget()->setCaption( i18n("Unknown error on remote.") ); 1212 mParent->topLevelWidget()->setCaption( i18n("Unknown error on remote.") );
1202 delete s; 1213 delete s;
1203 if ( state == KCommandSocket::errorR ) { 1214 if ( state == KCommandSocket::errorR ) {
1204 KCommandSocket* commandSocket = new KCommandSocket( "",mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this, mParent->topLevelWidget()); 1215 KCommandSocket* commandSocket = new KCommandSocket( "",mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this, mParent->topLevelWidget());
1205 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); 1216 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) );
1206 commandSocket->sendStop(); 1217 commandSocket->sendStop();
1207 } 1218 }
1208 mPisyncFinished = true; 1219 mPisyncFinished = true;
1209 return; 1220 return;
1210 1221
1211 } else if ( state == KCommandSocket::errorW ) { 1222 } else if ( state == KCommandSocket::errorW ) {
1212 mParent->topLevelWidget()->setCaption( i18n("ERROR:Writing back file failed.") ); 1223 mParent->topLevelWidget()->setCaption( i18n("ERROR:Writing back file failed.") );
1213 mPisyncFinished = true; 1224 mPisyncFinished = true;
1214 1225
1215 } else if ( state == KCommandSocket::successR ) { 1226 } else if ( state == KCommandSocket::successR ) {
1216 QTimer::singleShot( 1, this , SLOT ( readFileFromSocket())); 1227 QTimer::singleShot( 1, this , SLOT ( readFileFromSocket()));
1217 1228
1218 } else if ( state == KCommandSocket::successW ) { 1229 } else if ( state == KCommandSocket::successW ) {
1219 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync successful!") ); 1230 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync successful!") );
1220 mPisyncFinished = true; 1231 mPisyncFinished = true;
1221 } else if ( state == KCommandSocket::quiet ){ 1232 } else if ( state == KCommandSocket::quiet ){
1222 qDebug("KSS: quiet "); 1233 qDebug("KSS: quiet ");
1223 mPisyncFinished = true; 1234 mPisyncFinished = true;
1224 } else { 1235 } else {
1225 qDebug("KSS: Error: unknown state: %d ", state); 1236 qDebug("KSS: Error: unknown state: %d ", state);
1226 mPisyncFinished = true; 1237 mPisyncFinished = true;
1227 } 1238 }
1228 1239
1229 delete s; 1240 delete s;
1230} 1241}
1231 1242
1232void KSyncManager::readFileFromSocket() 1243void KSyncManager::readFileFromSocket()
1233{ 1244{
1234 QString fileName = syncFileName(); 1245 QString fileName = syncFileName();
1235 bool syncOK = true; 1246 bool syncOK = true;
1236 mParent->topLevelWidget()->setCaption( i18n("Remote file saved to temp file.") ); 1247 mParent->topLevelWidget()->setCaption( i18n("Remote file saved to temp file.") );
1237 if ( ! syncWithFile( fileName , true ) ) { 1248 if ( ! syncWithFile( fileName , true ) ) {
1238 mParent->topLevelWidget()->setCaption( i18n("Syncing failed.") ); 1249 mParent->topLevelWidget()->setCaption( i18n("Syncing failed.") );
1239 syncOK = false; 1250 syncOK = false;
1240 } 1251 }
1241 KCommandSocket* commandSocket = new KCommandSocket( mCurrentResourceRemote,mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this, mParent->topLevelWidget() ); 1252 KCommandSocket* commandSocket = new KCommandSocket( mCurrentResourceRemote,mPassWordPiSync, mActiveSyncPort.toUInt(), mActiveSyncIP, this, mParent->topLevelWidget() );
1242 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) ); 1253 connect( commandSocket, SIGNAL(commandFinished( KCommandSocket*, int)), this, SLOT(deleteCommandSocket(KCommandSocket*, int )) );
1243 if ( mWriteBackFile && syncOK ) { 1254 if ( mWriteBackFile && syncOK ) {
1244 mParent->topLevelWidget()->setCaption( i18n("Sending back file ...") ); 1255 mParent->topLevelWidget()->setCaption( i18n("Sending back file ...") );
1245 commandSocket->writeFile( fileName ); 1256 commandSocket->writeFile( fileName );
1246 } 1257 }
1247 else { 1258 else {
1248 commandSocket->sendStop(); 1259 commandSocket->sendStop();
1249 if ( syncOK ) 1260 if ( syncOK )
1250 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") ); 1261 mParent->topLevelWidget()->setCaption( i18n("Pi-Sync succesful!") );
1251 mPisyncFinished = true; 1262 mPisyncFinished = true;
1252 } 1263 }
1253} 1264}
1254 1265
1255KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name ) 1266KServerSocket:: KServerSocket ( QString pw, Q_UINT16 port, int backlog, QObject * parent, const char * name ) : QServerSocket( port, backlog, parent, name )
1256{ 1267{
1268 mPendingConnect = 0;
1257 mPassWord = pw; 1269 mPassWord = pw;
1258 mSocket = 0; 1270 mSocket = 0;
1259 mSyncActionDialog = 0; 1271 mSyncActionDialog = 0;
1260 blockRC = false; 1272 blockRC = false;
1261 mErrorMessage = 0; 1273 mErrorMessage = 0;
1262} 1274}
1263 1275void KServerSocket::waitForSocketFinish()
1276{
1277 if ( mSocket ) {
1278 qDebug("KSS:: waiting for finish operation");
1279 QTimer::singleShot( 250, this , SLOT ( waitForSocketFinish()));
1280 return;
1281 }
1282 mSocket = new QSocket( this );
1283 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) );
1284 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) );
1285 mSocket->setSocket( mPendingConnect );
1286 mPendingConnect = 0;
1287}
1264void KServerSocket::newConnection ( int socket ) 1288void KServerSocket::newConnection ( int socket )
1265{ 1289{
1266 // qDebug("KServerSocket:New connection %d ", socket); 1290 // qDebug("KServerSocket:New connection %d ", socket);
1291 if ( mPendingConnect ) {
1292 qDebug("KSS::Error : new Connection");
1293 return;
1294 }
1267 if ( mSocket ) { 1295 if ( mSocket ) {
1296 mPendingConnect = socket;
1297 QTimer::singleShot( 250, this , SLOT ( waitForSocketFinish()));
1298 return;
1268 qDebug("KSS::newConnection Socket deleted! "); 1299 qDebug("KSS::newConnection Socket deleted! ");
1269 delete mSocket; 1300 delete mSocket;
1270 mSocket = 0; 1301 mSocket = 0;
1271 } 1302 }
1303 mPendingConnect = 0;
1272 mSocket = new QSocket( this ); 1304 mSocket = new QSocket( this );
1273 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) ); 1305 connect( mSocket , SIGNAL(readyRead()), this, SLOT(readClient()) );
1274 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) ); 1306 connect( mSocket , SIGNAL(delayedCloseFinished()), this, SLOT(discardClient()) );
1275 mSocket->setSocket( socket ); 1307 mSocket->setSocket( socket );
1276} 1308}
1277 1309
1278void KServerSocket::discardClient() 1310void KServerSocket::discardClient()
1279{ 1311{
1280 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1312 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1281} 1313}
1282void KServerSocket::deleteSocket() 1314void KServerSocket::deleteSocket()
1283{ 1315{
1284 qDebug("KSS::deleteSocket"); 1316 qDebug("KSS::deleteSocket");
1285 if ( mSocket ) { 1317 if ( mSocket ) {
1286 delete mSocket; 1318 delete mSocket;
1287 mSocket = 0; 1319 mSocket = 0;
1288 } 1320 }
1289 if ( mErrorMessage ) 1321 if ( mErrorMessage )
1290 QTimer::singleShot( 10, this , SLOT ( displayErrorMessage())); 1322 QTimer::singleShot( 10, this , SLOT ( displayErrorMessage()));
1291} 1323}
1292void KServerSocket::readClient() 1324void KServerSocket::readClient()
1293{ 1325{
1294 if ( blockRC ) 1326 if ( blockRC )
1295 return; 1327 return;
1296 if ( mSocket == 0 ) { 1328 if ( mSocket == 0 ) {
1297 qDebug("ERROR::KSS::readClient(): mSocket == 0 "); 1329 qDebug("ERROR::KSS::readClient(): mSocket == 0 ");
1298 return; 1330 return;
1299 } 1331 }
1300 if ( mErrorMessage ) { 1332 if ( mErrorMessage ) {
1301 mErrorMessage = 999; 1333 mErrorMessage = 999;
1302 error_connect("ERROR_ED\r\n\r\n"); 1334 error_connect("ERROR_ED\r\n\r\n");
1303 return; 1335 return;
1304 } 1336 }
1305 mResource = ""; 1337 mResource = "";
1306 mErrorMessage = 0; 1338 mErrorMessage = 0;
1307 //qDebug("KServerSocket::readClient()"); 1339 //qDebug("KServerSocket::readClient()");
1308 if ( mSocket->canReadLine() ) { 1340 if ( mSocket->canReadLine() ) {
1309 QString line = mSocket->readLine(); 1341 QString line = mSocket->readLine();
1310 //qDebug("KServerSocket readline: %s ", line.latin1()); 1342 //qDebug("KServerSocket readline: %s ", line.latin1());
1311 QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), line ); 1343 QStringList tokens = QStringList::split( QRegExp("[ \r\n][ \r\n]*"), line );
1312 if ( tokens[0] == "GET" ) { 1344 if ( tokens[0] == "GET" ) {
1313 if ( tokens[1] == mPassWord ) { 1345 if ( tokens[1] == mPassWord ) {
1314 //emit sendFile( mSocket ); 1346 //emit sendFile( mSocket );
1315 bool ok = false; 1347 bool ok = false;
1316 QDateTime dt = KGlobal::locale()->readDateTime( tokens[2], KLocale::ISODate, &ok); 1348 QDateTime dt = KGlobal::locale()->readDateTime( tokens[2], KLocale::ISODate, &ok);
1317 if ( ok ) { 1349 if ( ok ) {
1318 KSyncManager::mRequestedSyncEvent = dt; 1350 KSyncManager::mRequestedSyncEvent = dt;
1319 } 1351 }
1320 else 1352 else
1321 KSyncManager::mRequestedSyncEvent = QDateTime(); 1353 KSyncManager::mRequestedSyncEvent = QDateTime();
1322 mResource =tokens[3]; 1354 mResource =tokens[3];
1323 send_file(); 1355 send_file();
1324 } 1356 }
1325 else { 1357 else {
1326 mErrorMessage = 1; 1358 mErrorMessage = 1;
1327 error_connect("ERROR_PW\r\n\r\n"); 1359 error_connect("ERROR_PW\r\n\r\n");
1328 } 1360 }
1329 } 1361 }
1330 if ( tokens[0] == "PUT" ) { 1362 if ( tokens[0] == "PUT" ) {
1331 if ( tokens[1] == mPassWord ) { 1363 if ( tokens[1] == mPassWord ) {
1332 //emit getFile( mSocket ); 1364 //emit getFile( mSocket );
1333 blockRC = true; 1365 blockRC = true;
1334 mResource =tokens[2]; 1366 mResource =tokens[2];
1335 get_file(); 1367 get_file();
1336 } 1368 }
1337 else { 1369 else {
1338 mErrorMessage = 2; 1370 mErrorMessage = 2;
1339 error_connect("ERROR_PW\r\n\r\n"); 1371 error_connect("ERROR_PW\r\n\r\n");
1340 end_connect(); 1372 end_connect();
1341 } 1373 }
1342 } 1374 }
1343 if ( tokens[0] == "STOP" ) { 1375 if ( tokens[0] == "STOP" ) {
1344 //emit endConnect(); 1376 //emit endConnect();
1345 end_connect(); 1377 end_connect();
1346 } 1378 }
1347 } 1379 }
1348} 1380}
1349void KServerSocket::displayErrorMessage() 1381void KServerSocket::displayErrorMessage()
1350{ 1382{
1351 if ( mErrorMessage == 1 ) { 1383 if ( mErrorMessage == 1 ) {
1352 KMessageBox::error( 0, i18n("Got send file request\nwith invalid password"), i18n("Pi-Sync Error")); 1384 KMessageBox::error( 0, i18n("Got send file request\nwith invalid password"), i18n("Pi-Sync Error"));
1353 mErrorMessage = 0; 1385 mErrorMessage = 0;
1354 } 1386 }
1355 else if ( mErrorMessage == 2 ) { 1387 else if ( mErrorMessage == 2 ) {
1356 KMessageBox::error( 0, i18n("Got receive file request\nwith invalid password"), i18n("Pi-Sync Error")); 1388 KMessageBox::error( 0, i18n("Got receive file request\nwith invalid password"), i18n("Pi-Sync Error"));
1357 mErrorMessage = 0; 1389 mErrorMessage = 0;
1358 } 1390 }
1359} 1391}
1360void KServerSocket::error_connect( QString errmess ) 1392void KServerSocket::error_connect( QString errmess )
1361{ 1393{
1362 QTextStream os( mSocket ); 1394 QTextStream os( mSocket );
1363 os.setEncoding( QTextStream::Latin1 ); 1395 os.setEncoding( QTextStream::Latin1 );
1364 os << errmess ; 1396 os << errmess ;
1365 mSocket->close(); 1397 mSocket->close();
1366 if ( mSocket->state() == QSocket::Idle ) { 1398 if ( mSocket->state() == QSocket::Idle ) {
1367 QTimer::singleShot( 0, this , SLOT ( discardClient())); 1399 QTimer::singleShot( 0, this , SLOT ( discardClient()));
1368 } 1400 }
1369} 1401}
1370void KServerSocket::end_connect() 1402void KServerSocket::end_connect()
1371{ 1403{
1372 delete mSyncActionDialog; 1404 delete mSyncActionDialog;
1373 mSyncActionDialog = 0; 1405 mSyncActionDialog = 0;
1374} 1406}
1375void KServerSocket::send_file() 1407void KServerSocket::send_file()
1376{ 1408{
1377 //qDebug("MainWindow::sendFile(QSocket* s) "); 1409 //qDebug("MainWindow::sendFile(QSocket* s) ");
1378 if ( mSyncActionDialog ) 1410 if ( mSyncActionDialog )
1379 delete mSyncActionDialog; 1411 delete mSyncActionDialog;
1380 mSyncActionDialog = new QDialog ( 0, "input-dialog", true ); 1412 mSyncActionDialog = new QDialog ( 0, "input-dialog", true );
1381 mSyncActionDialog->setCaption(i18n("Received sync request")); 1413 mSyncActionDialog->setCaption(i18n("Received sync request"));
1382 QLabel* label = new QLabel( i18n("Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog."), mSyncActionDialog ); 1414 QLabel* label = new QLabel( i18n("Synchronizing from remote ...\n\nDo not use this application!\n\nIf syncing fails\nyou can close this dialog."), mSyncActionDialog );
1383 label->setAlignment ( Qt::AlignHCenter ); 1415 label->setAlignment ( Qt::AlignHCenter );
1384 QVBoxLayout* lay = new QVBoxLayout( mSyncActionDialog ); 1416 QVBoxLayout* lay = new QVBoxLayout( mSyncActionDialog );
1385 lay->addWidget( label); 1417 lay->addWidget( label);
1386 lay->setMargin(7); 1418 lay->setMargin(7);
1387 lay->setSpacing(7); 1419 lay->setSpacing(7);
1388 if ( KSyncManager::mRequestedSyncEvent.isValid() ) { 1420 if ( KSyncManager::mRequestedSyncEvent.isValid() ) {
1389 int secs = QDateTime::currentDateTime().secsTo( KSyncManager::mRequestedSyncEvent ); 1421 int secs = QDateTime::currentDateTime().secsTo( KSyncManager::mRequestedSyncEvent );
1390 //secs = 333; 1422 //secs = 333;
1391 if ( secs < 0 ) 1423 if ( secs < 0 )
1392 secs = secs * (-1); 1424 secs = secs * (-1);
1393 if ( secs > 30 ) 1425 if ( secs > 30 )
1394 //if ( true ) 1426 //if ( true )
1395 { 1427 {
1396 QString warning = i18n("Clock skew of\nsyncing devices\nis %1 seconds!").arg( secs ); 1428 QString warning = i18n("Clock skew of\nsyncing devices\nis %1 seconds!").arg( secs );
1397 QLabel* label = new QLabel( warning, mSyncActionDialog ); 1429 QLabel* label = new QLabel( warning, mSyncActionDialog );
1398 label->setAlignment ( Qt::AlignHCenter ); 1430 label->setAlignment ( Qt::AlignHCenter );
1399 lay->addWidget( label); 1431 lay->addWidget( label);
1400 if ( secs > 180 ) 1432 if ( secs > 180 )
1401 { 1433 {
1402 if ( secs > 300 ) { 1434 if ( secs > 300 ) {
1403 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(0, i18n("The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!"), i18n("High clock skew!"),i18n("Synchronize!"))) { 1435 if ( KMessageBox::Cancel == KMessageBox::warningContinueCancel(0, i18n("The clocks of the syncing\ndevices have a difference\nof more than 5 minutes.\nPlease adjust your clocks.\nYou may get wrong syncing results!\nPlease confirm synchronization!"), i18n("High clock skew!"),i18n("Synchronize!"))) {
1404 qDebug("KSS::Sync cancelled ,cs"); 1436 qDebug("KSS::Sync cancelled ,cs");
1405 mErrorMessage = 0; 1437 mErrorMessage = 0;
1406 end_connect(); 1438 end_connect();
1407 error_connect("ERROR_CA\r\n\r\n"); 1439 error_connect("ERROR_CA\r\n\r\n");
1408 return ; 1440 return ;
1409 } 1441 }
1410 } 1442 }
1411 QFont f = label->font(); 1443 QFont f = label->font();
1412 f.setPointSize ( f.pointSize() *2 ); 1444 f.setPointSize ( f.pointSize() *2 );
1413 f. setBold (true ); 1445 f. setBold (true );
1414 QLabel* label = new QLabel( warning, mSyncActionDialog ); 1446 QLabel* label = new QLabel( warning, mSyncActionDialog );
1415 label->setFont( f ); 1447 label->setFont( f );
1416 warning = i18n("ADJUST\nYOUR\nCLOCKS!"); 1448 warning = i18n("ADJUST\nYOUR\nCLOCKS!");
1417 label->setText( warning ); 1449 label->setText( warning );
1418 label->setAlignment ( Qt::AlignHCenter ); 1450 label->setAlignment ( Qt::AlignHCenter );
1419 lay->addWidget( label); 1451 lay->addWidget( label);
1420 mSyncActionDialog->setFixedSize( 230, 300); 1452 mSyncActionDialog->setFixedSize( 230, 300);
1421 } else { 1453 } else {
1422 mSyncActionDialog->setFixedSize( 230, 200); 1454 mSyncActionDialog->setFixedSize( 230, 200);
1423 } 1455 }
1424 } else { 1456 } else {
1425 mSyncActionDialog->setFixedSize( 230, 120); 1457 mSyncActionDialog->setFixedSize( 230, 120);
1426 } 1458 }
1427 } else 1459 } else
1428 mSyncActionDialog->setFixedSize( 230, 120); 1460 mSyncActionDialog->setFixedSize( 230, 120);
1429 mSyncActionDialog->show(); 1461 mSyncActionDialog->show();
1430 mSyncActionDialog->raise(); 1462 mSyncActionDialog->raise();
1431 emit request_file(mResource); 1463 emit request_file(mResource);
1432 emit request_file(); 1464 emit request_file();
1433 qApp->processEvents(); 1465 qApp->processEvents();
1434 QString fileName = mFileName; 1466 QString fileName = mFileName;
1435 QFile file( fileName ); 1467 QFile file( fileName );
1436 if (!file.open( IO_ReadOnly ) ) { 1468 if (!file.open( IO_ReadOnly ) ) {
1437 mErrorMessage = 0; 1469 mErrorMessage = 0;
1438 end_connect(); 1470 end_connect();
1439 error_connect("ERROR_FI\r\n\r\n"); 1471 error_connect("ERROR_FI\r\n\r\n");
1440 return ; 1472 return ;
1441 } 1473 }
1442 mSyncActionDialog->setCaption( i18n("Sending file...") ); 1474 mSyncActionDialog->setCaption( i18n("Sending file...") );
1443 QTextStream ts( &file ); 1475 QTextStream ts( &file );
1444 ts.setEncoding( QTextStream::Latin1 ); 1476 ts.setEncoding( QTextStream::Latin1 );
1445 1477
1446 QTextStream os( mSocket ); 1478 QTextStream os( mSocket );
1447 os.setEncoding( QTextStream::Latin1 ); 1479 os.setEncoding( QTextStream::Latin1 );
1448 while ( ! ts.atEnd() ) { 1480 while ( ! ts.atEnd() ) {
1449 os << ts.readLine() << "\r\n"; 1481 os << ts.readLine() << "\r\n";
1450 } 1482 }
1451 os << "\r\n"; 1483 os << "\r\n";
1452 //os << ts.read(); 1484 //os << ts.read();
1453 file.close(); 1485 file.close();
1454 mSyncActionDialog->setCaption( i18n("Waiting for synced file...") ); 1486 mSyncActionDialog->setCaption( i18n("Waiting for synced file...") );
1455 mSocket->close(); 1487 mSocket->close();
1456 if ( mSocket->state() == QSocket::Idle ) 1488 if ( mSocket->state() == QSocket::Idle )
1457 QTimer::singleShot( 10, this , SLOT ( discardClient())); 1489 QTimer::singleShot( 10, this , SLOT ( discardClient()));
1458} 1490}
1459void KServerSocket::get_file() 1491void KServerSocket::get_file()
1460{ 1492{
1461 mSyncActionDialog->setCaption( i18n("Receiving synced file...") ); 1493 mSyncActionDialog->setCaption( i18n("Receiving synced file...") );
1462 1494
1463 piTime.start(); 1495 piTime.start();
1464 piFileString = ""; 1496 piFileString = "";
1465 QTimer::singleShot( 1, this , SLOT (readBackFileFromSocket( ) )); 1497 QTimer::singleShot( 1, this , SLOT (readBackFileFromSocket( ) ));
1466} 1498}
1467 1499
1468 1500
1469void KServerSocket::readBackFileFromSocket() 1501void KServerSocket::readBackFileFromSocket()
1470{ 1502{
1471 //qDebug("readBackFileFromSocket() %d ", piTime.elapsed ()); 1503 //qDebug("readBackFileFromSocket() %d ", piTime.elapsed ());
1472 while ( mSocket->canReadLine () ) { 1504 while ( mSocket->canReadLine () ) {
1473 piTime.restart(); 1505 piTime.restart();
1474 QString line = mSocket->readLine (); 1506 QString line = mSocket->readLine ();
1475 piFileString += line; 1507 piFileString += line;
1476 //qDebug("readline: %s ", line.latin1()); 1508 //qDebug("readline: %s ", line.latin1());
1477 mSyncActionDialog->setCaption( i18n("Received %1 bytes").arg( piFileString.length() ) ); 1509 mSyncActionDialog->setCaption( i18n("Received %1 bytes").arg( piFileString.length() ) );
1478 1510
1479 } 1511 }
1480 if ( piTime.elapsed () < 3000 ) { 1512 if ( piTime.elapsed () < 3000 ) {
1481 // wait for more 1513 // wait for more
1482 //qDebug("waitformore "); 1514 //qDebug("waitformore ");
1483 QTimer::singleShot( 100, this , SLOT (readBackFileFromSocket( ) )); 1515 QTimer::singleShot( 100, this , SLOT (readBackFileFromSocket( ) ));
1484 return; 1516 return;
1485 } 1517 }
1486 QString fileName = mFileName; 1518 QString fileName = mFileName;
1487 QFile file ( fileName ); 1519 QFile file ( fileName );
1488 if (!file.open( IO_WriteOnly ) ) { 1520 if (!file.open( IO_WriteOnly ) ) {
1489 delete mSyncActionDialog; 1521 delete mSyncActionDialog;
1490 mSyncActionDialog = 0; 1522 mSyncActionDialog = 0;
1491 qDebug("KSS:Error open read back file "); 1523 qDebug("KSS:Error open read back file ");
1492 piFileString = ""; 1524 piFileString = "";
1493 emit file_received( false, mResource); 1525 emit file_received( false, mResource);
1494 emit file_received( false); 1526 emit file_received( false);
1495 blockRC = false; 1527 blockRC = false;
1496 return ; 1528 return ;
1497 1529
1498 } 1530 }
1499 1531
1500 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); 1532 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1));
1501 QTextStream ts ( &file ); 1533 QTextStream ts ( &file );
1502 ts.setEncoding( QTextStream::Latin1 ); 1534 ts.setEncoding( QTextStream::Latin1 );
1503 mSyncActionDialog->setCaption( i18n("Writing file to disk...") ); 1535 mSyncActionDialog->setCaption( i18n("Writing file to disk...") );
1504 ts << piFileString; 1536 ts << piFileString;
1505 mSocket->close(); 1537 mSocket->close();
1506 if ( mSocket->state() == QSocket::Idle ) 1538 if ( mSocket->state() == QSocket::Idle )
1507 QTimer::singleShot( 10, this , SLOT ( discardClient())); 1539 QTimer::singleShot( 10, this , SLOT ( discardClient()));
1508 file.close(); 1540 file.close();
1509 piFileString = ""; 1541 piFileString = "";
1510 emit file_received( true, mResource ); 1542 emit file_received( true, mResource );
1511 emit file_received( true); 1543 emit file_received( true);
1512 delete mSyncActionDialog; 1544 delete mSyncActionDialog;
1513 mSyncActionDialog = 0; 1545 mSyncActionDialog = 0;
1514 blockRC = false; 1546 blockRC = false;
1515 1547
1516} 1548}
1517 1549
1518KCommandSocket::KCommandSocket ( QString remres, QString password, Q_UINT16 port, QString host, QObject * parent, QWidget * cap, const char * name ): QObject( parent, name ) 1550KCommandSocket::KCommandSocket ( QString remres, QString password, Q_UINT16 port, QString host, QObject * parent, QWidget * cap, const char * name ): QObject( parent, name )
1519{ 1551{
1520 mRemoteResource = remres; 1552 mRemoteResource = remres;
1521 if ( mRemoteResource.isEmpty() ) 1553 if ( mRemoteResource.isEmpty() )
1522 mRemoteResource = "ALL"; 1554 mRemoteResource = "ALL";
1523 else 1555 else
1524 mRemoteResource.replace (QRegExp (" "),"_" ); 1556 mRemoteResource.replace (QRegExp (" "),"_" );
1525 mPassWord = password; 1557 mPassWord = password;
1526 mSocket = 0; 1558 mSocket = 0;
1527 mFirst = false; 1559 mFirst = false;
1528 mFirstLine = true; 1560 mFirstLine = true;
1529 mPort = port; 1561 mPort = port;
1530 mHost = host; 1562 mHost = host;
1531 tlw = cap; 1563 tlw = cap;
1532 mRetVal = quiet; 1564 mRetVal = quiet;
1533 mTimerSocket = new QTimer ( this ); 1565 mTimerSocket = new QTimer ( this );
1534 connect( mTimerSocket, SIGNAL ( timeout () ), this, SLOT ( updateConnectDialog() ) ); 1566 connect( mTimerSocket, SIGNAL ( timeout () ), this, SLOT ( updateConnectDialog() ) );
1535 mConnectProgress.setCaption( i18n("Pi-Sync") ); 1567 mConnectProgress.setCaption( i18n("Pi-Sync") );
1536 connect( &mConnectProgress, SIGNAL ( cancelled () ), this, SLOT ( deleteSocket() ) ); 1568 connect( &mConnectProgress, SIGNAL ( cancelled () ), this, SLOT ( deleteSocket() ) );
1537 mConnectCount = -1; 1569 mConnectCount = -1;
1538} 1570}
1539void KCommandSocket::sendFileRequest() 1571void KCommandSocket::sendFileRequest()
1540{ 1572{
1541 if ( tlw ) 1573 if ( tlw )
1542 tlw->setCaption( i18n("Connected! Sending request for remote file ...") ); 1574 tlw->setCaption( i18n("Connected! Sending request for remote file ...") );
1543 mConnectProgress.hide(); 1575 mConnectProgress.hide();
1544 mConnectCount = 300;mConnectMax = 300; 1576 mConnectCount = 300;mConnectMax = 300;
1545 mConnectProgress.setCaption( i18n("Pi-Sync: Connected!") ); 1577 mConnectProgress.setCaption( i18n("Pi-Sync: Connected!") );
1578 mConnectProgress.setLabelText( i18n("Waiting for remote file...") );
1546 mTimerSocket->start( 100, true ); 1579 mTimerSocket->start( 100, true );
1547 QTextStream os( mSocket ); 1580 QTextStream os( mSocket );
1548 os.setEncoding( QTextStream::Latin1 ); 1581 os.setEncoding( QTextStream::Latin1 );
1549 1582
1550 QString curDt = " " +KGlobal::locale()->formatDateTime(QDateTime::currentDateTime().addSecs(-1),true, true,KLocale::ISODate ); 1583 QString curDt = " " +KGlobal::locale()->formatDateTime(QDateTime::currentDateTime().addSecs(-1),true, true,KLocale::ISODate );
1551 os << "GET " << mPassWord << curDt << " " << mRemoteResource << "\r\n\r\n"; 1584 os << "GET " << mPassWord << curDt << " " << mRemoteResource << "\r\n\r\n";
1552} 1585}
1553 1586
1554void KCommandSocket::readFile( QString fn ) 1587void KCommandSocket::readFile( QString fn )
1555{ 1588{
1556 if ( !mSocket ) { 1589 if ( !mSocket ) {
1557 mSocket = new QSocket( this ); 1590 mSocket = new QSocket( this );
1591 qDebug("KCS: read file - new socket");
1558 connect( mSocket, SIGNAL(readyRead()), this, SLOT(startReadFileFromSocket()) ); 1592 connect( mSocket, SIGNAL(readyRead()), this, SLOT(startReadFileFromSocket()) );
1559 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1593 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1560 connect( mSocket, SIGNAL(connected ()), this, SLOT(sendFileRequest() )); 1594 connect( mSocket, SIGNAL(connected ()), this, SLOT(sendFileRequest() ));
1561 } 1595 }
1562 mFileString = ""; 1596 mFileString = "";
1563 mFileName = fn; 1597 mFileName = fn;
1564 mFirst = true; 1598 mFirst = true;
1565 if ( tlw ) 1599 if ( tlw )
1566 tlw->setCaption( i18n("Trying to connect to remote...") ); 1600 tlw->setCaption( i18n("Trying to connect to remote...") );
1567 mConnectCount = 30;mConnectMax = 30; 1601 mConnectCount = 30;mConnectMax = 30;
1568 mTimerSocket->start( 1000, true ); 1602 mTimerSocket->start( 1000, true );
1569 mSocket->connectToHost( mHost, mPort ); 1603 mSocket->connectToHost( mHost, mPort );
1570 qDebug("KSS: Waiting for connection"); 1604 qDebug("KCS: Waiting for connection");
1571} 1605}
1572void KCommandSocket::updateConnectDialog() 1606void KCommandSocket::updateConnectDialog()
1573{ 1607{
1574 1608
1575 if ( mConnectCount == mConnectMax ) { 1609 if ( mConnectCount == mConnectMax ) {
1576 //qDebug("MAXX %d", mConnectMax); 1610 qDebug("MAXX %d", mConnectMax);
1577 mConnectProgress.setTotalSteps ( 30 ); 1611 mConnectProgress.setTotalSteps ( 30 );
1578 mConnectProgress.show(); 1612 mConnectProgress.show();
1579 mConnectProgress.setLabelText( i18n("Trying to connect to remote...") ); 1613 mConnectProgress.setLabelText( i18n("Trying to connect to remote...") );
1580 } 1614 }
1581 //qDebug("updateConnectDialog() %d", mConnectCount); 1615 qDebug("updateConnectDialog() %d", mConnectCount);
1582 mConnectProgress.raise(); 1616 mConnectProgress.raise();
1583 mConnectProgress.setProgress( (mConnectMax - mConnectCount)%30 ); 1617 mConnectProgress.setProgress( (mConnectMax - mConnectCount)%30 );
1584 --mConnectCount; 1618 --mConnectCount;
1585 if ( mConnectCount > 0 ) 1619 if ( mConnectCount > 0 )
1586 mTimerSocket->start( 1000, true ); 1620 mTimerSocket->start( 1000, true );
1587 else 1621 else
1588 deleteSocket(); 1622 deleteSocket();
1589 1623
1590} 1624}
1591void KCommandSocket::writeFile( QString fileName ) 1625void KCommandSocket::writeFile( QString fileName )
1592{ 1626{
1593 if ( !mSocket ) { 1627 if ( !mSocket ) {
1594 mSocket = new QSocket( this ); 1628 mSocket = new QSocket( this );
1595 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1629 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1596 connect( mSocket, SIGNAL(connected ()), this, SLOT(writeFileToSocket()) ); 1630 connect( mSocket, SIGNAL(connected ()), this, SLOT(writeFileToSocket()) );
1597 } 1631 }
1598 mFileName = fileName ; 1632 mFileName = fileName ;
1599 mConnectCount = 30;mConnectMax = 30; 1633 mConnectCount = 30;mConnectMax = 30;
1600 mTimerSocket->start( 1000, true ); 1634 mTimerSocket->start( 1000, true );
1601 mSocket->connectToHost( mHost, mPort ); 1635 mSocket->connectToHost( mHost, mPort );
1602} 1636}
1603void KCommandSocket::writeFileToSocket() 1637void KCommandSocket::writeFileToSocket()
1604{ 1638{
1605 mTimerSocket->stop(); 1639 mTimerSocket->stop();
1606 QFile file2( mFileName ); 1640 QFile file2( mFileName );
1607 if (!file2.open( IO_ReadOnly ) ) { 1641 if (!file2.open( IO_ReadOnly ) ) {
1608 mConnectProgress.hide(); 1642 mConnectProgress.hide();
1609 mConnectCount = -1; 1643 mConnectCount = -1;
1610 mRetVal= errorW; 1644 mRetVal= errorW;
1611 mSocket->close(); 1645 mSocket->close();
1612 if ( mSocket->state() == QSocket::Idle ) 1646 if ( mSocket->state() == QSocket::Idle )
1613 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1647 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1614 return ; 1648 return ;
1615 } 1649 }
1616 mConnectProgress.setTotalSteps ( file2.size() ); 1650 mConnectProgress.setTotalSteps ( file2.size() );
1617 mConnectProgress.show(); 1651 mConnectProgress.show();
1618 int count = 0; 1652 int count = 0;
1619 mConnectProgress.setLabelText( i18n("Sending back synced file...") ); 1653 mConnectProgress.setLabelText( i18n("Sending back synced file...") );
1620 mConnectProgress.setProgress( count ); 1654 mConnectProgress.setProgress( count );
1621 mConnectProgress.blockSignals( true ); 1655 mConnectProgress.blockSignals( true );
1622 QTextStream ts2( &file2 ); 1656 QTextStream ts2( &file2 );
1623 ts2.setEncoding( QTextStream::Latin1 ); 1657 ts2.setEncoding( QTextStream::Latin1 );
1624 QTextStream os2( mSocket ); 1658 QTextStream os2( mSocket );
1625 os2.setEncoding( QTextStream::Latin1 ); 1659 os2.setEncoding( QTextStream::Latin1 );
1626 os2 << "PUT " << mPassWord << " " << mRemoteResource << "\r\n\r\n";; 1660 os2 << "PUT " << mPassWord << " " << mRemoteResource << "\r\n\r\n";;
1627 int byteCount = 0; 1661 int byteCount = 0;
1628 int byteMax = file2.size()/53; 1662 int byteMax = file2.size()/53;
1629 while ( ! ts2.atEnd() ) { 1663 while ( ! ts2.atEnd() ) {
1630 qApp->processEvents(); 1664 qApp->processEvents();
1631 if ( byteCount > byteMax ) { 1665 if ( byteCount > byteMax ) {
1632 byteCount = 0; 1666 byteCount = 0;
1633 mConnectProgress.setProgress( count ); 1667 mConnectProgress.setProgress( count );
1634 } 1668 }
1635 QString temp = ts2.readLine(); 1669 QString temp = ts2.readLine();
1636 count += temp.length(); 1670 count += temp.length();
1637 byteCount += temp.length(); 1671 byteCount += temp.length();
1638 os2 << temp << "\r\n"; 1672 os2 << temp << "\r\n";
1639 } 1673 }
1640 file2.close(); 1674 file2.close();
1641 mConnectProgress.hide(); 1675 mConnectProgress.hide();
1642 mConnectCount = -1; 1676 mConnectCount = -1;
1643 os2 << "\r\n"; 1677 os2 << "\r\n";
1644 mRetVal= successW; 1678 mRetVal= successW;
1645 mSocket->close(); 1679 mSocket->close();
1646 if ( mSocket->state() == QSocket::Idle ) 1680 if ( mSocket->state() == QSocket::Idle )
1647 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1681 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1648 mConnectProgress.blockSignals( false ); 1682 mConnectProgress.blockSignals( false );
1649} 1683}
1650void KCommandSocket::sendStop() 1684void KCommandSocket::sendStop()
1651{ 1685{
1652 if ( !mSocket ) { 1686 if ( !mSocket ) {
1653 mSocket = new QSocket( this ); 1687 mSocket = new QSocket( this );
1654 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1688 connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1655 } 1689 }
1656 mSocket->connectToHost( mHost, mPort ); 1690 mSocket->connectToHost( mHost, mPort );
1657 QTextStream os2( mSocket ); 1691 QTextStream os2( mSocket );
1658 os2.setEncoding( QTextStream::Latin1 ); 1692 os2.setEncoding( QTextStream::Latin1 );
1659 os2 << "STOP\r\n\r\n"; 1693 os2 << "STOP\r\n\r\n";
1660 mSocket->close(); 1694 mSocket->close();
1661 if ( mSocket->state() == QSocket::Idle ) 1695 if ( mSocket->state() == QSocket::Idle )
1662 QTimer::singleShot( 10, this , SLOT ( deleteSocket())); 1696 QTimer::singleShot( 10, this , SLOT ( deleteSocket()));
1663} 1697}
1664 1698
1665void KCommandSocket::startReadFileFromSocket() 1699void KCommandSocket::startReadFileFromSocket()
1666{ 1700{
1667 if ( ! mFirst ) 1701 if ( ! mFirst )
1668 return; 1702 return;
1669 mConnectProgress.setLabelText( i18n("Receiving file from remote...") ); 1703 mConnectProgress.setLabelText( i18n("Receiving file from remote...") );
1670 mFirst = false; 1704 mFirst = false;
1671 mFileString = ""; 1705 mFileString = "";
1672 mTime.start(); 1706 mTime.start();
1673 mFirstLine = true; 1707 mFirstLine = true;
1674 QTimer::singleShot( 1, this , SLOT (readFileFromSocket( ) )); 1708 QTimer::singleShot( 1, this , SLOT (readFileFromSocket( ) ));
1675 1709
1676} 1710}
1677void KCommandSocket::readFileFromSocket() 1711void KCommandSocket::readFileFromSocket()
1678{ 1712{
1679 //qDebug("readBackFileFromSocket() %d ", mTime.elapsed ()); 1713 //qDebug("readBackFileFromSocket() %d ", mTime.elapsed ());
1680 while ( mSocket->canReadLine () ) { 1714 while ( mSocket->canReadLine () ) {
1681 mTime.restart(); 1715 mTime.restart();
1682 QString line = mSocket->readLine (); 1716 QString line = mSocket->readLine ();
1683 if ( mFirstLine ) { 1717 if ( mFirstLine ) {
1684 mFirstLine = false; 1718 mFirstLine = false;
1685 if ( line.left( 6 ) == "ERROR_" ) { 1719 if ( line.left( 6 ) == "ERROR_" ) {
1686 mTimerSocket->stop(); 1720 mTimerSocket->stop();
1687 mConnectCount = -1; 1721 mConnectCount = -1;
1688 if ( line.left( 8 ) == "ERROR_PW" ) { 1722 if ( line.left( 8 ) == "ERROR_PW" ) {
1689 mRetVal = errorPW; 1723 mRetVal = errorPW;
1690 deleteSocket(); 1724 deleteSocket();
1691 return ; 1725 return ;
1692 } 1726 }
1693 if ( line.left( 8 ) == "ERROR_CA" ) { 1727 if ( line.left( 8 ) == "ERROR_CA" ) {
1694 mRetVal = errorCA; 1728 mRetVal = errorCA;
1695 deleteSocket(); 1729 deleteSocket();
1696 return ; 1730 return ;
1697 } 1731 }
1698 if ( line.left( 8 ) == "ERROR_FI" ) { 1732 if ( line.left( 8 ) == "ERROR_FI" ) {
1699 mRetVal = errorFI; 1733 mRetVal = errorFI;
1700 deleteSocket(); 1734 deleteSocket();
1701 return ; 1735 return ;
1702 } 1736 }
1703 if ( line.left( 8 ) == "ERROR_ED" ) { 1737 if ( line.left( 8 ) == "ERROR_ED" ) {
1704 mRetVal = errorED; 1738 mRetVal = errorED;
1705 deleteSocket(); 1739 deleteSocket();
1706 return ; 1740 return ;
1707 } 1741 }
1708 mRetVal = errorUN; 1742 mRetVal = errorUN;
1709 deleteSocket(); 1743 deleteSocket();
1710 return ; 1744 return ;
1711 } 1745 }
1712 } 1746 }
1713 mFileString += line; 1747 mFileString += line;
1714 //qDebug("readline: %s ", line.latin1()); 1748 //qDebug("readline: %s ", line.latin1());
1715 } 1749 }
1716 if ( mTime.elapsed () < 3000 ) { 1750 if ( mTime.elapsed () < 3000 ) {
1717 // wait for more 1751 // wait for more
1718 //qDebug("waitformore "); 1752 //qDebug("waitformore ");
1719 QTimer::singleShot( 100, this , SLOT (readFileFromSocket( ) )); 1753 QTimer::singleShot( 100, this , SLOT (readFileFromSocket( ) ));
1720 return; 1754 return;
1721 } 1755 }
1722 mTimerSocket->stop(); 1756 mTimerSocket->stop();
1723 mConnectCount = -1; 1757 mConnectCount = -1;
1724 mConnectProgress.hide(); 1758 mConnectProgress.hide();
1725 QString fileName = mFileName; 1759 QString fileName = mFileName;
1726 QFile file ( fileName ); 1760 QFile file ( fileName );
1727 if (!file.open( IO_WriteOnly ) ) { 1761 if (!file.open( IO_WriteOnly ) ) {
1728 mFileString = ""; 1762 mFileString = "";
1729 mRetVal = errorR; 1763 mRetVal = errorR;
1730 qDebug("KSS:Error open temp sync file for writing: %s",fileName.latin1() ); 1764 qDebug("KSS:Error open temp sync file for writing: %s",fileName.latin1() );
1731 deleteSocket(); 1765 deleteSocket();
1732 return ; 1766 return ;
1733 1767
1734 } 1768 }
1735 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1)); 1769 // mView->setLoadedFileVersion(QDateTime::currentDateTime().addSecs( -1));
1736 QTextStream ts ( &file ); 1770 QTextStream ts ( &file );
1737 ts.setEncoding( QTextStream::Latin1 ); 1771 ts.setEncoding( QTextStream::Latin1 );
1738 ts << mFileString; 1772 ts << mFileString;
1739 file.close(); 1773 file.close();
1740 mFileString = ""; 1774 mFileString = "";
1741 mRetVal = successR; 1775 mRetVal = successR;
1742 mSocket->close(); 1776 mSocket->close();
1743 // if state is not idle, deleteSocket(); is called via 1777 // if state is not idle, deleteSocket(); is called via
1744 // connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) ); 1778 // connect( mSocket, SIGNAL(delayedCloseFinished ()), this, SLOT(deleteSocket()) );
1745 if ( mSocket->state() == QSocket::Idle ) 1779 if ( mSocket->state() == QSocket::Idle )
1746 deleteSocket(); 1780 deleteSocket();
1747} 1781}
1748 1782
1749void KCommandSocket::deleteSocket() 1783void KCommandSocket::deleteSocket()
1750{ 1784{
1751 //qDebug("KCommandSocket::deleteSocket() "); 1785 //qDebug("KCommandSocket::deleteSocket() ");
1752 mConnectProgress.hide(); 1786 mConnectProgress.hide();
1753 1787
1754 if ( mConnectCount >= 0 ) { 1788 if ( mConnectCount >= 0 ) {
1755 mTimerSocket->stop(); 1789 mTimerSocket->stop();
1756 mRetVal = errorTO; 1790 mRetVal = errorTO;
1757 qDebug("KCS::Connection to remote host timed out"); 1791 qDebug("KCS::Connection to remote host timed out");
1758 if ( mSocket ) { 1792 if ( mSocket ) {
1759 mSocket->close(); 1793 mSocket->close();
1760 //if ( mSocket->state() == QSocket::Idle ) 1794 //if ( mSocket->state() == QSocket::Idle )
1761 // deleteSocket(); 1795 // deleteSocket();
1762 delete mSocket; 1796 delete mSocket;
1763 mSocket = 0; 1797 mSocket = 0;
1764 } 1798 }
1765 if ( mConnectCount == 0 ) 1799 if ( mConnectCount == 0 )
1766 KMessageBox::error( 0, i18n("Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host?")); 1800 KMessageBox::error( 0, i18n("Connection to remote\nhost timed out!\nDid you forgot to enable\nsyncing on remote host?"));
1767 else if ( tlw ) 1801 else if ( tlw )
1768 tlw->setCaption( i18n("Connection to remote host cancelled!") ); 1802 tlw->setCaption( i18n("Connection to remote host cancelled!") );
1769 emit commandFinished( this, mRetVal ); 1803 emit commandFinished( this, mRetVal );
1770 return; 1804 return;
1771 } 1805 }
1772 //qDebug("KCommandSocket::deleteSocket() %d", mRetVal ); 1806 //qDebug("KCommandSocket::deleteSocket() %d", mRetVal );
1773 if ( mSocket) 1807 if ( mSocket)
1774 delete mSocket; 1808 delete mSocket;
1775 mSocket = 0; 1809 mSocket = 0;
1776 //qDebug("commandFinished "); 1810 //qDebug("commandFinished ");
1777 emit commandFinished( this, mRetVal ); 1811 emit commandFinished( this, mRetVal );
1778} 1812}
diff --git a/libkdepim/ksyncmanager.h b/libkdepim/ksyncmanager.h
index 53c611d..604adb8 100644
--- a/libkdepim/ksyncmanager.h
+++ b/libkdepim/ksyncmanager.h
@@ -1,247 +1,249 @@
1/* 1/*
2 This file is part of KDE-Pim/Pi. 2 This file is part of KDE-Pim/Pi.
3 Copyright (c) 2004 Ulf Schenk 3 Copyright (c) 2004 Ulf Schenk
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19 19
20 $Id$ 20 $Id$
21*/ 21*/
22#ifndef _KSYNCMANAGER_H 22#ifndef _KSYNCMANAGER_H
23#define _KSYNCMANAGER_H 23#define _KSYNCMANAGER_H
24 24
25#include <qobject.h> 25#include <qobject.h>
26#include <qstring.h> 26#include <qstring.h>
27#include <qsocket.h> 27#include <qsocket.h>
28#include <qdatetime.h> 28#include <qdatetime.h>
29#include <qserversocket.h> 29#include <qserversocket.h>
30#include <qtextstream.h> 30#include <qtextstream.h>
31#include <qregexp.h> 31#include <qregexp.h>
32#include <qprogressdialog.h> 32#include <qprogressdialog.h>
33#include <kdialog.h> 33#include <kdialog.h>
34 34
35class QPopupMenu; 35class QPopupMenu;
36class KSyncProfile; 36class KSyncProfile;
37class KPimPrefs; 37class KPimPrefs;
38class QWidget; 38class QWidget;
39class KSyncManager; 39class KSyncManager;
40class KSyncInterface; 40class KSyncInterface;
41class QProgressBar; 41class QProgressBar;
42 42
43 43
44class KServerSocket : public QServerSocket 44class KServerSocket : public QServerSocket
45{ 45{
46 Q_OBJECT 46 Q_OBJECT
47 47
48 public: 48 public:
49 KServerSocket ( QString password, Q_UINT16 port, int backlog = 0, QObject * parent=0, const char * name=0 ); 49 KServerSocket ( QString password, Q_UINT16 port, int backlog = 0, QObject * parent=0, const char * name=0 );
50 50
51 void newConnection ( int socket ) ; 51 void newConnection ( int socket ) ;
52 void setFileName( QString fn ) {mFileName = fn;}; 52 void setFileName( QString fn ) {mFileName = fn;};
53 signals: 53 signals:
54 void file_received( bool ); 54 void file_received( bool );
55 void request_file(); 55 void request_file();
56 void file_received( bool, const QString &); 56 void file_received( bool, const QString &);
57 void request_file(const QString &); 57 void request_file(const QString &);
58 void saveFile(); 58 void saveFile();
59 void endConnect(); 59 void endConnect();
60 private slots: 60 private slots:
61 void waitForSocketFinish();
61 void discardClient(); 62 void discardClient();
62 void deleteSocket(); 63 void deleteSocket();
63 void readClient(); 64 void readClient();
64 void displayErrorMessage(); 65 void displayErrorMessage();
65 void readBackFileFromSocket(); 66 void readBackFileFromSocket();
66 private : 67 private :
68 int mPendingConnect;
67 QString mResource; 69 QString mResource;
68 int mErrorMessage; 70 int mErrorMessage;
69 bool blockRC; 71 bool blockRC;
70 void send_file(); 72 void send_file();
71 void get_file(); 73 void get_file();
72 void end_connect(); 74 void end_connect();
73 void error_connect( QString ); 75 void error_connect( QString );
74 QDialog* mSyncActionDialog; 76 QDialog* mSyncActionDialog;
75 QSocket* mSocket; 77 QSocket* mSocket;
76 QString mPassWord; 78 QString mPassWord;
77 QString mFileName; 79 QString mFileName;
78 QTime piTime; 80 QTime piTime;
79 QString piFileString; 81 QString piFileString;
80}; 82};
81 83
82class KCommandSocket : public QObject 84class KCommandSocket : public QObject
83{ 85{
84 Q_OBJECT 86 Q_OBJECT
85 public: 87 public:
86 enum state { successR, errorR, successW, errorW, errorTO, errorPW, errorCA, errorFI, errorUN, errorED,quiet }; 88 enum state { successR, errorR, successW, errorW, errorTO, errorPW, errorCA, errorFI, errorUN, errorED,quiet };
87 KCommandSocket (QString remoteResource, QString password, Q_UINT16 port, QString host, QObject * parent=0, QWidget* cap = 0, const char * name=0 ); 89 KCommandSocket (QString remoteResource, QString password, Q_UINT16 port, QString host, QObject * parent=0, QWidget* cap = 0, const char * name=0 );
88 void readFile( QString ); 90 void readFile( QString );
89 void writeFile( QString ); 91 void writeFile( QString );
90 void sendStop(); 92 void sendStop();
91 93
92 private slots : 94 private slots :
93 void sendFileRequest(); 95 void sendFileRequest();
94 void updateConnectDialog(); 96 void updateConnectDialog();
95 97
96 signals: 98 signals:
97 void commandFinished( KCommandSocket*, int ); 99 void commandFinished( KCommandSocket*, int );
98 private slots: 100 private slots:
99 void startReadFileFromSocket(); 101 void startReadFileFromSocket();
100 void readFileFromSocket(); 102 void readFileFromSocket();
101 void deleteSocket(); 103 void deleteSocket();
102 void writeFileToSocket(); 104 void writeFileToSocket();
103 private : 105 private :
104 QString mRemoteResource; 106 QString mRemoteResource;
105 int mConnectCount; 107 int mConnectCount;
106 int mConnectMax; 108 int mConnectMax;
107 KProgressDialog mConnectProgress; 109 KProgressDialog mConnectProgress;
108 QWidget* tlw; 110 QWidget* tlw;
109 QSocket* mSocket; 111 QSocket* mSocket;
110 QString mPassWord; 112 QString mPassWord;
111 Q_UINT16 mPort; 113 Q_UINT16 mPort;
112 QString mHost; 114 QString mHost;
113 QString mFileName; 115 QString mFileName;
114 QTimer* mTimerSocket; 116 QTimer* mTimerSocket;
115 int mRetVal; 117 int mRetVal;
116 QTime mTime; 118 QTime mTime;
117 QString mFileString; 119 QString mFileString;
118 bool mFirst; 120 bool mFirst;
119 bool mFirstLine; 121 bool mFirstLine;
120}; 122};
121 123
122 124
123class KSyncManager : public QObject 125class KSyncManager : public QObject
124{ 126{
125 Q_OBJECT 127 Q_OBJECT
126 128
127 public: 129 public:
128 enum TargetApp { 130 enum TargetApp {
129 KOPI = 0, 131 KOPI = 0,
130 KAPI = 1, 132 KAPI = 1,
131 PWMPI = 2 }; 133 PWMPI = 2 };
132 134
133 KSyncManager(QWidget* parent, KSyncInterface* implementation, TargetApp ta, KPimPrefs* prefs, QPopupMenu* syncmenu); 135 KSyncManager(QWidget* parent, KSyncInterface* implementation, TargetApp ta, KPimPrefs* prefs, QPopupMenu* syncmenu);
134 ~KSyncManager() ; 136 ~KSyncManager() ;
135 137
136 void multiSync( bool askforPrefs ); 138 void multiSync( bool askforPrefs );
137 bool blockSave() { return mBlockSaveFlag; } 139 bool blockSave() { return mBlockSaveFlag; }
138 void setBlockSave(bool sa) { mBlockSaveFlag = sa; } 140 void setBlockSave(bool sa) { mBlockSaveFlag = sa; }
139 void setDefaultFileName( QString s) ; 141 void setDefaultFileName( QString s) ;
140 QString defaultFileName() { return mDefFileName ;} 142 QString defaultFileName() { return mDefFileName ;}
141 QString syncFileName(); 143 QString syncFileName();
142 void enableQuick( bool ask = true); 144 void enableQuick( bool ask = true);
143 145
144 bool syncWithDesktop () { return mSyncWithDesktop;} 146 bool syncWithDesktop () { return mSyncWithDesktop;}
145 QString getCurrentSyncDevice() { return mCurrentSyncDevice; } 147 QString getCurrentSyncDevice() { return mCurrentSyncDevice; }
146 QString getCurrentSyncName() { return mCurrentSyncName; } 148 QString getCurrentSyncName() { return mCurrentSyncName; }
147 149
148 void showProgressBar(int percentage, QString caption = QString::null, int total=100); 150 void showProgressBar(int percentage, QString caption = QString::null, int total=100);
149 void hideProgressBar(); 151 void hideProgressBar();
150 bool isProgressBarCanceled(); 152 bool isProgressBarCanceled();
151 153
152 // sync stuff 154 // sync stuff
153 QString mLocalMachineName; 155 QString mLocalMachineName;
154 QStringList mExternSyncProfiles; 156 QStringList mExternSyncProfiles;
155 QStringList mSyncProfileNames; 157 QStringList mSyncProfileNames;
156 bool mAskForPreferences; 158 bool mAskForPreferences;
157 bool mShowSyncSummary; 159 bool mShowSyncSummary;
158 bool mIsKapiFile; 160 bool mIsKapiFile;
159 bool mWriteBackExistingOnly; 161 bool mWriteBackExistingOnly;
160 int mSyncAlgoPrefs; 162 int mSyncAlgoPrefs;
161 bool mWriteBackFile; 163 bool mWriteBackFile;
162 int mWriteBackInFuture; 164 int mWriteBackInFuture;
163 int mWriteBackInPast; 165 int mWriteBackInPast;
164 QString mPhoneDevice; 166 QString mPhoneDevice;
165 QString mPhoneConnection; 167 QString mPhoneConnection;
166 QString mPhoneModel; 168 QString mPhoneModel;
167 QString mPassWordPiSync; 169 QString mPassWordPiSync;
168 QString mActiveSyncPort; 170 QString mActiveSyncPort;
169 QString mActiveSyncIP ; 171 QString mActiveSyncIP ;
170 QString mFilterInCal; 172 QString mFilterInCal;
171 QString mFilterOutCal; 173 QString mFilterOutCal;
172 QString mFilterInAB; 174 QString mFilterInAB;
173 QString mFilterOutAB; 175 QString mFilterOutAB;
174 static QDateTime mRequestedSyncEvent; 176 static QDateTime mRequestedSyncEvent;
175 177
176 signals: 178 signals:
177 void save(); 179 void save();
178 void request_file(); 180 void request_file();
179 void getFile( bool ); 181 void getFile( bool );
180 void getFile( bool, const QString &); 182 void getFile( bool, const QString &);
181 void request_file(const QString &); 183 void request_file(const QString &);
182 void multiResourceSyncStart( bool ); 184 void multiResourceSyncStart( bool );
183 185
184 public slots: 186 public slots:
185 void slotSyncMenu( int ); 187 void slotSyncMenu( int );
186 void slotClearMenu( int action ); 188 void slotClearMenu( int action );
187 void deleteCommandSocket(KCommandSocket*s, int state); 189 void deleteCommandSocket(KCommandSocket*s, int state);
188 void readFileFromSocket(); 190 void readFileFromSocket();
189 void fillSyncMenu(); 191 void fillSyncMenu();
190 192
191 private: 193 private:
192 void syncPi(); 194 void syncPi();
193 KServerSocket * mServerSocket; 195 KServerSocket * mServerSocket;
194 KPimPrefs* mPrefs; 196 KPimPrefs* mPrefs;
195 QString mDefFileName; 197 QString mDefFileName;
196 QString mCurrentSyncDevice; 198 QString mCurrentSyncDevice;
197 QString mCurrentSyncName; 199 QString mCurrentSyncName;
198 void quickSyncLocalFile(); 200 void quickSyncLocalFile();
199 bool syncWithFile( QString fn , bool quick ); 201 bool syncWithFile( QString fn , bool quick );
200 void syncLocalFile(); 202 void syncLocalFile();
201 void syncPhone(); 203 void syncPhone();
202 void syncSharp(); 204 void syncSharp();
203 void syncKDE(); 205 void syncKDE();
204 bool syncExternalApplication(QString); 206 bool syncExternalApplication(QString);
205 int mCurrentSyncProfile ; 207 int mCurrentSyncProfile ;
206 void syncRemote( KSyncProfile* prof, bool ask = true); 208 void syncRemote( KSyncProfile* prof, bool ask = true);
207 bool edit_sync_options(); 209 bool edit_sync_options();
208 bool edit_pisync_options(); 210 bool edit_pisync_options();
209 int ringSync(); 211 int ringSync();
210 QString getPassword( ); 212 QString getPassword( );
211 bool mPisyncFinished; 213 bool mPisyncFinished;
212 QStringList mSpecificResources; 214 QStringList mSpecificResources;
213 QString mCurrentResourceLocal; 215 QString mCurrentResourceLocal;
214 QString mCurrentResourceRemote; 216 QString mCurrentResourceRemote;
215 bool mBlockSaveFlag; 217 bool mBlockSaveFlag;
216 QWidget* mParent; 218 QWidget* mParent;
217 KSyncInterface* mImplementation; 219 KSyncInterface* mImplementation;
218 TargetApp mTargetApp; 220 TargetApp mTargetApp;
219 QPopupMenu* mSyncMenu; 221 QPopupMenu* mSyncMenu;
220 QProgressBar* bar; 222 QProgressBar* bar;
221 bool mSyncWithDesktop; 223 bool mSyncWithDesktop;
222 224
223private slots: 225private slots:
224 void displayErrorPort(); 226 void displayErrorPort();
225 void confSync(); 227 void confSync();
226 228
227 229
228}; 230};
229 231
230 232
231class KSyncInterface 233class KSyncInterface
232{ 234{
233 public : 235 public :
234 virtual void removeSyncInfo( QString syncProfile) = 0; 236 virtual void removeSyncInfo( QString syncProfile) = 0;
235 virtual bool sync(KSyncManager* manager, QString filename, int mode, QString resource) = 0; 237 virtual bool sync(KSyncManager* manager, QString filename, int mode, QString resource) = 0;
236 virtual bool syncExternal(KSyncManager* manager, QString resource) 238 virtual bool syncExternal(KSyncManager* manager, QString resource)
237 { 239 {
238 // empty implementation, because some syncable applications do not 240 // empty implementation, because some syncable applications do not
239 // have an external(sharpdtm) syncmode, like pwmanager. 241 // have an external(sharpdtm) syncmode, like pwmanager.
240 return false; 242 return false;
241 } 243 }
242 244
243 245
244}; 246};
245 247
246 248
247#endif 249#endif