summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-10-07 08:21:07 (UTC)
committer zautrix <zautrix>2004-10-07 08:21:07 (UTC)
commit9345818e9c291130691288e4b065190259eb4e01 (patch) (unidiff)
tree860b8666dc71fc34819e380bda48ec3427aee822
parentf1699230250cdfb37216121257196b5be9f094fa (diff)
downloadkdepimpi-9345818e9c291130691288e4b065190259eb4e01.zip
kdepimpi-9345818e9c291130691288e4b065190259eb4e01.tar.gz
kdepimpi-9345818e9c291130691288e4b065190259eb4e01.tar.bz2
did I chanhe something?
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/calendarview.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index d71ea08..1d62046 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -411,2054 +411,2054 @@ void CalendarView::init()
411 this, SLOT ( moveIncidence( Incidence * ) ) ); 411 this, SLOT ( moveIncidence( Incidence * ) ) );
412 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ), 412 connect( mTodoList, SIGNAL( beamTodoSignal( Incidence * ) ),
413 this, SLOT ( beamIncidence( Incidence * ) ) ); 413 this, SLOT ( beamIncidence( Incidence * ) ) );
414 414
415 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ), 415 connect( mTodoList, SIGNAL( unparentTodoSignal( Todo * ) ),
416 this, SLOT ( todo_unsub( Todo * ) ) ); 416 this, SLOT ( todo_unsub( Todo * ) ) );
417 417
418 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList, 418 connect( this, SIGNAL( todoModified( Todo *, int )), mTodoList,
419 SLOT( updateTodo( Todo *, int ) ) ); 419 SLOT( updateTodo( Todo *, int ) ) );
420 connect( this, SIGNAL( todoModified( Todo *, int )), this, 420 connect( this, SIGNAL( todoModified( Todo *, int )), this,
421 SLOT( changeTodoDisplay( Todo *, int ) ) ); 421 SLOT( changeTodoDisplay( Todo *, int ) ) );
422 422
423 423
424 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) ); 424 connect( mFilterView, SIGNAL( filterChanged() ), SLOT( updateFilter() ) );
425 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) ); 425 connect( mFilterView, SIGNAL( editFilters() ), SLOT( editFilters() ) );
426 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) ); 426 connect( mCalendar, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addAlarm(const QDateTime &, const QString & ) ) );
427 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) ); 427 connect( mCalendar, SIGNAL( removeAlarm(const QDateTime &, const QString & ) ), SLOT( removeAlarm(const QDateTime &, const QString & ) ) );
428 428
429 429
430 430
431 431
432 432
433 connect(QApplication::clipboard(),SIGNAL(dataChanged()), 433 connect(QApplication::clipboard(),SIGNAL(dataChanged()),
434 SLOT(checkClipboard())); 434 SLOT(checkClipboard()));
435 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ), 435 connect( mTodoList,SIGNAL( incidenceSelected( Incidence * ) ),
436 SLOT( processTodoListSelection( Incidence * ) ) ); 436 SLOT( processTodoListSelection( Incidence * ) ) );
437 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool))); 437 connect(mTodoList,SIGNAL(isModified(bool)),SLOT(setModified(bool)));
438 438
439 // kdDebug() << "CalendarView::CalendarView() done" << endl; 439 // kdDebug() << "CalendarView::CalendarView() done" << endl;
440 440
441 mDateFrame = new QVBox(0,0,WType_Popup); 441 mDateFrame = new QVBox(0,0,WType_Popup);
442 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised); 442 //mDateFrame->setFrameStyle(QFrame::PopupPanel | QFrame::Raised);
443 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised ); 443 mDateFrame->setFrameStyle( QFrame::WinPanel |QFrame::Raised );
444 mDateFrame->setLineWidth(3); 444 mDateFrame->setLineWidth(3);
445 mDateFrame->hide(); 445 mDateFrame->hide();
446 mDateFrame->setCaption( i18n( "Pick a date to display")); 446 mDateFrame->setCaption( i18n( "Pick a date to display"));
447 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() ); 447 mDatePicker = new KDatePicker ( mDateFrame , QDate::currentDate() );
448 448
449 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate))); 449 connect(mDatePicker,SIGNAL(dateSelected(QDate)),SLOT(slotSelectPickerDate(QDate)));
450 450
451 mEventEditor = mDialogManager->getEventEditor(); 451 mEventEditor = mDialogManager->getEventEditor();
452 mTodoEditor = mDialogManager->getTodoEditor(); 452 mTodoEditor = mDialogManager->getTodoEditor();
453 453
454 mFlagEditDescription = false; 454 mFlagEditDescription = false;
455 455
456 mSuspendTimer = new QTimer( this ); 456 mSuspendTimer = new QTimer( this );
457 mAlarmTimer = new QTimer( this ); 457 mAlarmTimer = new QTimer( this );
458 mRecheckAlarmTimer = new QTimer( this ); 458 mRecheckAlarmTimer = new QTimer( this );
459 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) ); 459 connect( mRecheckAlarmTimer, SIGNAL( timeout () ), SLOT( recheckTimerAlarm() ) );
460 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) ); 460 connect( mSuspendTimer, SIGNAL( timeout () ), SLOT( suspendAlarm() ) );
461 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) ); 461 connect( mAlarmTimer, SIGNAL( timeout () ), SLOT( timerAlarm() ) );
462 mAlarmDialog = new AlarmDialog( this ); 462 mAlarmDialog = new AlarmDialog( this );
463 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) ); 463 connect( mAlarmDialog, SIGNAL( addAlarm(const QDateTime &, const QString & ) ), SLOT( addSuspendAlarm(const QDateTime &, const QString & ) ) );
464 mAlarmDialog->setServerNotification( false ); 464 mAlarmDialog->setServerNotification( false );
465 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime ); 465 mAlarmDialog->setSuspendTime( KOPrefs::instance()->mAlarmSuspendTime );
466 466
467 467
468#ifndef DESKTOP_VERSION 468#ifndef DESKTOP_VERSION
469//US listen for arriving address resultsets 469//US listen for arriving address resultsets
470 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)), 470 connect(ExternalAppHandler::instance(), SIGNAL(receivedBirthdayListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)),
471 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&))); 471 this, SLOT(insertBirthdays(const QString&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&, const QStringList&)));
472#endif 472#endif
473 473
474} 474}
475 475
476 476
477CalendarView::~CalendarView() 477CalendarView::~CalendarView()
478{ 478{
479 // kdDebug() << "~CalendarView()" << endl; 479 // kdDebug() << "~CalendarView()" << endl;
480 //qDebug("CalendarView::~CalendarView() "); 480 //qDebug("CalendarView::~CalendarView() ");
481 delete mDialogManager; 481 delete mDialogManager;
482 delete mViewManager; 482 delete mViewManager;
483 delete mStorage; 483 delete mStorage;
484 delete mDateFrame ; 484 delete mDateFrame ;
485 delete beamDialog; 485 delete beamDialog;
486 //kdDebug() << "~CalendarView() done" << endl; 486 //kdDebug() << "~CalendarView() done" << endl;
487} 487}
488void CalendarView::timerAlarm() 488void CalendarView::timerAlarm()
489{ 489{
490 //qDebug("CalendarView::timerAlarm() "); 490 //qDebug("CalendarView::timerAlarm() ");
491 computeAlarm(mAlarmNotification ); 491 computeAlarm(mAlarmNotification );
492} 492}
493 493
494void CalendarView::suspendAlarm() 494void CalendarView::suspendAlarm()
495{ 495{
496 //qDebug(" CalendarView::suspendAlarm() "); 496 //qDebug(" CalendarView::suspendAlarm() ");
497 computeAlarm(mSuspendAlarmNotification ); 497 computeAlarm(mSuspendAlarmNotification );
498 498
499} 499}
500 500
501void CalendarView::startAlarm( QString mess , QString filename) 501void CalendarView::startAlarm( QString mess , QString filename)
502{ 502{
503 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount ); 503 mAlarmDialog->eventNotification( mess, KOPrefs::instance()->mAlarmPlayBeeps, filename, true,KOPrefs::instance()->mAlarmBeepInterval ,KOPrefs::instance()->mAlarmSuspendCount );
504 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) ); 504 QTimer::singleShot( 3000, this, SLOT( checkNextTimerAlarm() ) );
505 505
506} 506}
507 507
508void CalendarView::checkNextTimerAlarm() 508void CalendarView::checkNextTimerAlarm()
509{ 509{
510 mCalendar->checkAlarmForIncidence( 0, true ); 510 mCalendar->checkAlarmForIncidence( 0, true );
511} 511}
512 512
513void CalendarView::computeAlarm( QString msg ) 513void CalendarView::computeAlarm( QString msg )
514{ 514{
515 515
516 QString mess = msg; 516 QString mess = msg;
517 QString mAlarmMessage = mess.mid( 9 ); 517 QString mAlarmMessage = mess.mid( 9 );
518 QString filename = MainWindow::resourcePath(); 518 QString filename = MainWindow::resourcePath();
519 filename += "koalarm.wav"; 519 filename += "koalarm.wav";
520 QString tempfilename; 520 QString tempfilename;
521 if ( mess.left( 13 ) == "suspend_alarm") { 521 if ( mess.left( 13 ) == "suspend_alarm") {
522 bool error = false; 522 bool error = false;
523 int len = mess.mid( 13 ).find("+++"); 523 int len = mess.mid( 13 ).find("+++");
524 if ( len < 2 ) 524 if ( len < 2 )
525 error = true; 525 error = true;
526 else { 526 else {
527 tempfilename = mess.mid( 13, len ); 527 tempfilename = mess.mid( 13, len );
528 if ( !QFile::exists( tempfilename ) ) 528 if ( !QFile::exists( tempfilename ) )
529 error = true; 529 error = true;
530 } 530 }
531 if ( ! error ) { 531 if ( ! error ) {
532 filename = tempfilename; 532 filename = tempfilename;
533 } 533 }
534 mAlarmMessage = mess.mid( 13+len+3 ); 534 mAlarmMessage = mess.mid( 13+len+3 );
535 //qDebug("suspend file %s ",tempfilename.latin1() ); 535 //qDebug("suspend file %s ",tempfilename.latin1() );
536 startAlarm( mAlarmMessage, filename); 536 startAlarm( mAlarmMessage, filename);
537 return; 537 return;
538 } 538 }
539 if ( mess.left( 11 ) == "timer_alarm") { 539 if ( mess.left( 11 ) == "timer_alarm") {
540 //mTimerTime = 0; 540 //mTimerTime = 0;
541 startAlarm( mess.mid( 11 ), filename ); 541 startAlarm( mess.mid( 11 ), filename );
542 return; 542 return;
543 } 543 }
544 if ( mess.left( 10 ) == "proc_alarm") { 544 if ( mess.left( 10 ) == "proc_alarm") {
545 bool error = false; 545 bool error = false;
546 int len = mess.mid( 10 ).find("+++"); 546 int len = mess.mid( 10 ).find("+++");
547 if ( len < 2 ) 547 if ( len < 2 )
548 error = true; 548 error = true;
549 else { 549 else {
550 tempfilename = mess.mid( 10, len ); 550 tempfilename = mess.mid( 10, len );
551 if ( !QFile::exists( tempfilename ) ) 551 if ( !QFile::exists( tempfilename ) )
552 error = true; 552 error = true;
553 } 553 }
554 if ( error ) { 554 if ( error ) {
555 mAlarmMessage = "Procedure Alarm\nError - File not found\n"; 555 mAlarmMessage = "Procedure Alarm\nError - File not found\n";
556 mAlarmMessage += mess.mid( 10+len+3+9 ); 556 mAlarmMessage += mess.mid( 10+len+3+9 );
557 } else { 557 } else {
558 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent"); 558 //QCopEnvelope e("QPE/Application/kopi", "-writeFileSilent");
559 //qDebug("-----system command %s ",tempfilename.latin1() ); 559 //qDebug("-----system command %s ",tempfilename.latin1() );
560#ifndef _WIN32_ 560#ifndef _WIN32_
561 if ( vfork () == 0 ) { 561 if ( vfork () == 0 ) {
562 execl ( tempfilename.latin1(), 0 ); 562 execl ( tempfilename.latin1(), 0 );
563 return; 563 return;
564 } 564 }
565#else 565#else
566 QProcess* p = new QProcess(); 566 QProcess* p = new QProcess();
567 p->addArgument( tempfilename.latin1() ); 567 p->addArgument( tempfilename.latin1() );
568 p->start(); 568 p->start();
569 return; 569 return;
570#endif 570#endif
571 571
572 return; 572 return;
573 } 573 }
574 574
575 //qDebug("+++++++system command %s ",tempfilename.latin1() ); 575 //qDebug("+++++++system command %s ",tempfilename.latin1() );
576 } 576 }
577 if ( mess.left( 11 ) == "audio_alarm") { 577 if ( mess.left( 11 ) == "audio_alarm") {
578 bool error = false; 578 bool error = false;
579 int len = mess.mid( 11 ).find("+++"); 579 int len = mess.mid( 11 ).find("+++");
580 if ( len < 2 ) 580 if ( len < 2 )
581 error = true; 581 error = true;
582 else { 582 else {
583 tempfilename = mess.mid( 11, len ); 583 tempfilename = mess.mid( 11, len );
584 if ( !QFile::exists( tempfilename ) ) 584 if ( !QFile::exists( tempfilename ) )
585 error = true; 585 error = true;
586 } 586 }
587 if ( ! error ) { 587 if ( ! error ) {
588 filename = tempfilename; 588 filename = tempfilename;
589 } 589 }
590 mAlarmMessage = mess.mid( 11+len+3+9 ); 590 mAlarmMessage = mess.mid( 11+len+3+9 );
591 //qDebug("audio file command %s ",tempfilename.latin1() ); 591 //qDebug("audio file command %s ",tempfilename.latin1() );
592 } 592 }
593 if ( mess.left( 9 ) == "cal_alarm") { 593 if ( mess.left( 9 ) == "cal_alarm") {
594 mAlarmMessage = mess.mid( 9 ) ; 594 mAlarmMessage = mess.mid( 9 ) ;
595 } 595 }
596 596
597 startAlarm( mAlarmMessage, filename ); 597 startAlarm( mAlarmMessage, filename );
598 598
599 599
600} 600}
601 601
602void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti ) 602void CalendarView::addSuspendAlarm(const QDateTime &qdt, const QString &noti )
603{ 603{
604 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 604 //qDebug("+++++addSUSPENDAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
605 605
606 mSuspendAlarmNotification = noti; 606 mSuspendAlarmNotification = noti;
607 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000; 607 int ms = QDateTime::currentDateTime().secsTo( qdt )*1000;
608 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000); 608 //qDebug("Suspend Alarm timer started with secs: %d ", ms/1000);
609 mSuspendTimer->start( ms , true ); 609 mSuspendTimer->start( ms , true );
610 610
611} 611}
612 612
613void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti ) 613void CalendarView::addAlarm(const QDateTime &qdt, const QString &noti )
614{ 614{
615 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 615 //qDebug("+++++addAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
616 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 616 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
617#ifndef DESKTOP_VERSION 617#ifndef DESKTOP_VERSION
618 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() ); 618 AlarmServer::addAlarm ( qdt,"koalarm", noti.latin1() );
619#endif 619#endif
620 return; 620 return;
621 } 621 }
622 int maxSec; 622 int maxSec;
623 //maxSec = 5; //testing only 623 //maxSec = 5; //testing only
624 maxSec = 86400+3600; // one day+1hour 624 maxSec = 86400+3600; // one day+1hour
625 mAlarmNotification = noti; 625 mAlarmNotification = noti;
626 int sec = QDateTime::currentDateTime().secsTo( qdt ); 626 int sec = QDateTime::currentDateTime().secsTo( qdt );
627 if ( sec > maxSec ) { 627 if ( sec > maxSec ) {
628 mRecheckAlarmTimer->start( maxSec * 1000 ); 628 mRecheckAlarmTimer->start( maxSec * 1000 );
629 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec ); 629 // qDebug("recheck Alarm timer started with secs: %d next alarm in sec:%d", maxSec,sec );
630 return; 630 return;
631 } else { 631 } else {
632 mRecheckAlarmTimer->stop(); 632 mRecheckAlarmTimer->stop();
633 } 633 }
634 //qDebug("Alarm timer started with secs: %d ", sec); 634 //qDebug("Alarm timer started with secs: %d ", sec);
635 mAlarmTimer->start( sec *1000 , true ); 635 mAlarmTimer->start( sec *1000 , true );
636 636
637} 637}
638// called by mRecheckAlarmTimer to get next alarm 638// called by mRecheckAlarmTimer to get next alarm
639// we need this, because a QTimer has only a max range of 25 days 639// we need this, because a QTimer has only a max range of 25 days
640void CalendarView::recheckTimerAlarm() 640void CalendarView::recheckTimerAlarm()
641{ 641{
642 mAlarmTimer->stop(); 642 mAlarmTimer->stop();
643 mRecheckAlarmTimer->stop(); 643 mRecheckAlarmTimer->stop();
644 mCalendar->checkAlarmForIncidence( 0, true ); 644 mCalendar->checkAlarmForIncidence( 0, true );
645} 645}
646void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti ) 646void CalendarView::removeAlarm(const QDateTime &qdt, const QString &noti )
647{ 647{
648 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() ); 648 //qDebug("-----removeAlarm %s %s ", qdt.toString().latin1() , noti.latin1() );
649 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) { 649 if ( ! KOPrefs::instance()->mUseInternalAlarmNotification ) {
650#ifndef DESKTOP_VERSION 650#ifndef DESKTOP_VERSION
651 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() ); 651 AlarmServer::deleteAlarm (qdt ,"koalarm" ,noti.latin1() );
652#endif 652#endif
653 return; 653 return;
654 } 654 }
655 mAlarmTimer->stop(); 655 mAlarmTimer->stop();
656} 656}
657void CalendarView::selectWeekNum ( int num ) 657void CalendarView::selectWeekNum ( int num )
658{ 658{
659 dateNavigator()->selectWeek( num ); 659 dateNavigator()->selectWeek( num );
660 mViewManager->showWeekView(); 660 mViewManager->showWeekView();
661} 661}
662KOViewManager *CalendarView::viewManager() 662KOViewManager *CalendarView::viewManager()
663{ 663{
664 return mViewManager; 664 return mViewManager;
665} 665}
666 666
667KODialogManager *CalendarView::dialogManager() 667KODialogManager *CalendarView::dialogManager()
668{ 668{
669 return mDialogManager; 669 return mDialogManager;
670} 670}
671 671
672QDate CalendarView::startDate() 672QDate CalendarView::startDate()
673{ 673{
674 DateList dates = mNavigator->selectedDates(); 674 DateList dates = mNavigator->selectedDates();
675 675
676 return dates.first(); 676 return dates.first();
677} 677}
678 678
679QDate CalendarView::endDate() 679QDate CalendarView::endDate()
680{ 680{
681 DateList dates = mNavigator->selectedDates(); 681 DateList dates = mNavigator->selectedDates();
682 682
683 return dates.last(); 683 return dates.last();
684} 684}
685 685
686 686
687void CalendarView::createPrinter() 687void CalendarView::createPrinter()
688{ 688{
689#ifndef KORG_NOPRINTER 689#ifndef KORG_NOPRINTER
690 if (!mCalPrinter) { 690 if (!mCalPrinter) {
691 mCalPrinter = new CalPrinter(this, mCalendar); 691 mCalPrinter = new CalPrinter(this, mCalendar);
692 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig())); 692 connect(this, SIGNAL(configChanged()), mCalPrinter, SLOT(updateConfig()));
693 } 693 }
694#endif 694#endif
695} 695}
696 696
697void CalendarView::confSync() 697void CalendarView::confSync()
698{ 698{
699 static KSyncPrefsDialog* sp = 0; 699 static KSyncPrefsDialog* sp = 0;
700 if ( ! sp ) { 700 if ( ! sp ) {
701 sp = new KSyncPrefsDialog( this, "syncprefs", true ); 701 sp = new KSyncPrefsDialog( this, "syncprefs", true );
702 } 702 }
703 sp->usrReadConfig(); 703 sp->usrReadConfig();
704#ifndef DESKTOP_VERSION 704#ifndef DESKTOP_VERSION
705 sp->showMaximized(); 705 sp->showMaximized();
706#else 706#else
707 sp->show(); 707 sp->show();
708#endif 708#endif
709 sp->exec(); 709 sp->exec();
710 KOPrefs::instance()->mSyncProfileNames = sp->getSyncProfileNames(); 710 KOPrefs::instance()->mSyncProfileNames = sp->getSyncProfileNames();
711 KOPrefs::instance()->mLocalMachineName = sp->getLocalMachineName (); 711 KOPrefs::instance()->mLocalMachineName = sp->getLocalMachineName ();
712} 712}
713 713
714 714
715//KOPrefs::instance()->mWriteBackFile 715//KOPrefs::instance()->mWriteBackFile
716//KOPrefs::instance()->mWriteBackExistingOnly 716//KOPrefs::instance()->mWriteBackExistingOnly
717 717
718// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict")); 718// 0 syncPrefsGroup->addRadio(i18n("Take local entry on conflict"));
719// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict")); 719// 1 syncPrefsGroup->addRadio(i18n("Take remote entry on conflict"));
720// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict")); 720// 2 syncPrefsGroup->addRadio(i18n("Take newest entry on conflict"));
721// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict")); 721// 3 syncPrefsGroup->addRadio(i18n("Ask for every entry on conflict"));
722// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always")); 722// 4 syncPrefsGroup->addRadio(i18n("Force take local entry always"));
723// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always")); 723// 5 syncPrefsGroup->addRadio(i18n("Force take remote entry always"));
724 724
725int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full ) 725int CalendarView::takeEvent( Incidence* local, Incidence* remote, int mode , bool full )
726{ 726{
727 727
728 //void setZaurusId(int id); 728 //void setZaurusId(int id);
729 // int zaurusId() const; 729 // int zaurusId() const;
730 // void setZaurusUid(int id); 730 // void setZaurusUid(int id);
731 // int zaurusUid() const; 731 // int zaurusUid() const;
732 // void setZaurusStat(int id); 732 // void setZaurusStat(int id);
733 // int zaurusStat() const; 733 // int zaurusStat() const;
734 // 0 equal 734 // 0 equal
735 // 1 take local 735 // 1 take local
736 // 2 take remote 736 // 2 take remote
737 // 3 cancel 737 // 3 cancel
738 QDateTime lastSync = mLastCalendarSync; 738 QDateTime lastSync = mLastCalendarSync;
739 QDateTime localMod = local->lastModified(); 739 QDateTime localMod = local->lastModified();
740 QDateTime remoteMod = remote->lastModified(); 740 QDateTime remoteMod = remote->lastModified();
741 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 741 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
742 bool remCh, locCh; 742 bool remCh, locCh;
743 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) ); 743 remCh = ( remote->getCsum(mCurrentSyncDevice) != local->getCsum(mCurrentSyncDevice) );
744 //if ( remCh ) 744 //if ( remCh )
745 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() ); 745 //qDebug("loc %s rem %s", local->getCsum(mCurrentSyncDevice).latin1(), remote->getCsum(mCurrentSyncDevice).latin1() );
746 locCh = ( localMod > mLastCalendarSync ); 746 locCh = ( localMod > mLastCalendarSync );
747 if ( !remCh && ! locCh ) { 747 if ( !remCh && ! locCh ) {
748 //qDebug("both not changed "); 748 //qDebug("both not changed ");
749 lastSync = localMod.addDays(1); 749 lastSync = localMod.addDays(1);
750 if ( mode <= SYNC_PREF_ASK ) 750 if ( mode <= SYNC_PREF_ASK )
751 return 0; 751 return 0;
752 } else { 752 } else {
753 if ( locCh ) { 753 if ( locCh ) {
754 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1()); 754 //qDebug("loc changed %d %s %s", local->revision() , localMod.toString().latin1(), mLastCalendarSync.toString().latin1());
755 lastSync = localMod.addDays( -1 ); 755 lastSync = localMod.addDays( -1 );
756 if ( !remCh ) 756 if ( !remCh )
757 remoteMod = ( lastSync.addDays( -1 ) ); 757 remoteMod = ( lastSync.addDays( -1 ) );
758 } else { 758 } else {
759 //qDebug(" not loc changed "); 759 //qDebug(" not loc changed ");
760 lastSync = localMod.addDays( 1 ); 760 lastSync = localMod.addDays( 1 );
761 if ( remCh ) 761 if ( remCh )
762 remoteMod =( lastSync.addDays( 1 ) ); 762 remoteMod =( lastSync.addDays( 1 ) );
763 763
764 } 764 }
765 } 765 }
766 full = true; 766 full = true;
767 if ( mode < SYNC_PREF_ASK ) 767 if ( mode < SYNC_PREF_ASK )
768 mode = SYNC_PREF_ASK; 768 mode = SYNC_PREF_ASK;
769 } else { 769 } else {
770 if ( localMod == remoteMod ) 770 if ( localMod == remoteMod )
771 if ( local->revision() == remote->revision() ) 771 if ( local->revision() == remote->revision() )
772 return 0; 772 return 0;
773 773
774 } 774 }
775 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() ); 775 // qDebug(" %d %d conflict on %s %s ", mode, full, local->summary().latin1(), remote->summary().latin1() );
776 776
777 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision()); 777 //qDebug("%s %d %s %d", localMod.toString().latin1() , local->revision(), remoteMod.toString().latin1(), remote->revision());
778 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() ); 778 //qDebug("%d %d %d %d ", localMod.time().second(), localMod.time().msec(), remoteMod.time().second(), remoteMod.time().msec() );
779 //full = true; //debug only 779 //full = true; //debug only
780 if ( full ) { 780 if ( full ) {
781 bool equ = false; 781 bool equ = false;
782 if ( local->type() == "Event" ) { 782 if ( local->type() == "Event" ) {
783 equ = (*((Event*) local) == *((Event*) remote)); 783 equ = (*((Event*) local) == *((Event*) remote));
784 } 784 }
785 else if ( local->type() =="Todo" ) 785 else if ( local->type() =="Todo" )
786 equ = (*((Todo*) local) == (*(Todo*) remote)); 786 equ = (*((Todo*) local) == (*(Todo*) remote));
787 else if ( local->type() =="Journal" ) 787 else if ( local->type() =="Journal" )
788 equ = (*((Journal*) local) == *((Journal*) remote)); 788 equ = (*((Journal*) local) == *((Journal*) remote));
789 if ( equ ) { 789 if ( equ ) {
790 //qDebug("equal "); 790 //qDebug("equal ");
791 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 791 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
792 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) ); 792 local->setCsum( mCurrentSyncDevice, remote->getCsum(mCurrentSyncDevice) );
793 } 793 }
794 if ( mode < SYNC_PREF_FORCE_LOCAL ) 794 if ( mode < SYNC_PREF_FORCE_LOCAL )
795 return 0; 795 return 0;
796 796
797 }//else //debug only 797 }//else //debug only
798 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1()); 798 //qDebug("not equal %s %s ", local->summary().latin1(), remote->summary().latin1());
799 } 799 }
800 int result; 800 int result;
801 bool localIsNew; 801 bool localIsNew;
802 //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() ); 802 //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() );
803 803
804 if ( full && mode < SYNC_PREF_NEWEST ) 804 if ( full && mode < SYNC_PREF_NEWEST )
805 mode = SYNC_PREF_ASK; 805 mode = SYNC_PREF_ASK;
806 806
807 switch( mode ) { 807 switch( mode ) {
808 case SYNC_PREF_LOCAL: 808 case SYNC_PREF_LOCAL:
809 if ( lastSync > remoteMod ) 809 if ( lastSync > remoteMod )
810 return 1; 810 return 1;
811 if ( lastSync > localMod ) 811 if ( lastSync > localMod )
812 return 2; 812 return 2;
813 return 1; 813 return 1;
814 break; 814 break;
815 case SYNC_PREF_REMOTE: 815 case SYNC_PREF_REMOTE:
816 if ( lastSync > remoteMod ) 816 if ( lastSync > remoteMod )
817 return 1; 817 return 1;
818 if ( lastSync > localMod ) 818 if ( lastSync > localMod )
819 return 2; 819 return 2;
820 return 2; 820 return 2;
821 break; 821 break;
822 case SYNC_PREF_NEWEST: 822 case SYNC_PREF_NEWEST:
823 if ( localMod > remoteMod ) 823 if ( localMod > remoteMod )
824 return 1; 824 return 1;
825 else 825 else
826 return 2; 826 return 2;
827 break; 827 break;
828 case SYNC_PREF_ASK: 828 case SYNC_PREF_ASK:
829 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 829 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
830 if ( lastSync > remoteMod ) 830 if ( lastSync > remoteMod )
831 return 1; 831 return 1;
832 if ( lastSync > localMod ) 832 if ( lastSync > localMod )
833 return 2; 833 return 2;
834 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() ); 834 //qDebug("lsy %s --- lo %s --- re %s ", lastSync.toString().latin1(), localMod.toString().latin1(), remoteMod.toString().latin1() );
835 localIsNew = localMod >= remoteMod; 835 localIsNew = localMod >= remoteMod;
836 if ( localIsNew ) 836 if ( localIsNew )
837 getEventViewerDialog()->setColorMode( 1 ); 837 getEventViewerDialog()->setColorMode( 1 );
838 else 838 else
839 getEventViewerDialog()->setColorMode( 2 ); 839 getEventViewerDialog()->setColorMode( 2 );
840 getEventViewerDialog()->setIncidence(local); 840 getEventViewerDialog()->setIncidence(local);
841 if ( localIsNew ) 841 if ( localIsNew )
842 getEventViewerDialog()->setColorMode( 2 ); 842 getEventViewerDialog()->setColorMode( 2 );
843 else 843 else
844 getEventViewerDialog()->setColorMode( 1 ); 844 getEventViewerDialog()->setColorMode( 1 );
845 getEventViewerDialog()->addIncidence(remote); 845 getEventViewerDialog()->addIncidence(remote);
846 getEventViewerDialog()->setColorMode( 0 ); 846 getEventViewerDialog()->setColorMode( 0 );
847 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() ); 847 //qDebug("local %d remote %d ",local->relatedTo(),remote->relatedTo() );
848 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!")); 848 getEventViewerDialog()->setCaption( mCurrentSyncDevice +i18n(" : Conflict! Please choose entry!"));
849 getEventViewerDialog()->showMe(); 849 getEventViewerDialog()->showMe();
850 result = getEventViewerDialog()->executeS( localIsNew ); 850 result = getEventViewerDialog()->executeS( localIsNew );
851 return result; 851 return result;
852 852
853 break; 853 break;
854 case SYNC_PREF_FORCE_LOCAL: 854 case SYNC_PREF_FORCE_LOCAL:
855 return 1; 855 return 1;
856 break; 856 break;
857 case SYNC_PREF_FORCE_REMOTE: 857 case SYNC_PREF_FORCE_REMOTE:
858 return 2; 858 return 2;
859 break; 859 break;
860 860
861 default: 861 default:
862 // SYNC_PREF_TAKE_BOTH not implemented 862 // SYNC_PREF_TAKE_BOTH not implemented
863 break; 863 break;
864 } 864 }
865 return 0; 865 return 0;
866} 866}
867Event* CalendarView::getLastSyncEvent() 867Event* CalendarView::getLastSyncEvent()
868{ 868{
869 Event* lse; 869 Event* lse;
870 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() ); 870 //qDebug("CurrentSyncDevice %s ",mCurrentSyncDevice .latin1() );
871 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice ); 871 lse = mCalendar->event( "last-syncEvent-"+mCurrentSyncDevice );
872 if (!lse) { 872 if (!lse) {
873 lse = new Event(); 873 lse = new Event();
874 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice ); 874 lse->setUid( "last-syncEvent-"+mCurrentSyncDevice );
875 QString sum = ""; 875 QString sum = "";
876 if ( KOPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) ) 876 if ( KOPrefs::instance()->mExternSyncProfiles.contains( mCurrentSyncDevice ) )
877 sum = "E: "; 877 sum = "E: ";
878 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event")); 878 lse->setSummary(sum+mCurrentSyncDevice + i18n(" - sync event"));
879 lse->setDtStart( mLastCalendarSync ); 879 lse->setDtStart( mLastCalendarSync );
880 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 880 lse->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
881 lse->setCategories( i18n("SyncEvent") ); 881 lse->setCategories( i18n("SyncEvent") );
882 lse->setReadOnly( true ); 882 lse->setReadOnly( true );
883 mCalendar->addEvent( lse ); 883 mCalendar->addEvent( lse );
884 } 884 }
885 885
886 return lse; 886 return lse;
887 887
888} 888}
889 889
890// we check, if the to delete event has a id for a profile 890// we check, if the to delete event has a id for a profile
891// if yes, we set this id in the profile to delete 891// if yes, we set this id in the profile to delete
892void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete ) 892void CalendarView::checkExternSyncEvent( QPtrList<Event> lastSync , Incidence* toDelete )
893{ 893{
894 if ( lastSync.count() == 0 ) { 894 if ( lastSync.count() == 0 ) {
895 //qDebug(" lastSync.count() == 0"); 895 //qDebug(" lastSync.count() == 0");
896 return; 896 return;
897 } 897 }
898 if ( toDelete->type() == "Journal" ) 898 if ( toDelete->type() == "Journal" )
899 return; 899 return;
900 900
901 Event* eve = lastSync.first(); 901 Event* eve = lastSync.first();
902 902
903 while ( eve ) { 903 while ( eve ) {
904 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name 904 QString id = toDelete->getID( eve->uid().mid( 15 ) ); // this is the sync profile name
905 if ( !id.isEmpty() ) { 905 if ( !id.isEmpty() ) {
906 QString des = eve->description(); 906 QString des = eve->description();
907 QString pref = "e"; 907 QString pref = "e";
908 if ( toDelete->type() == "Todo" ) 908 if ( toDelete->type() == "Todo" )
909 pref = "t"; 909 pref = "t";
910 des += pref+ id + ","; 910 des += pref+ id + ",";
911 eve->setReadOnly( false ); 911 eve->setReadOnly( false );
912 eve->setDescription( des ); 912 eve->setDescription( des );
913 //qDebug("setdes %s ", des.latin1()); 913 //qDebug("setdes %s ", des.latin1());
914 eve->setReadOnly( true ); 914 eve->setReadOnly( true );
915 } 915 }
916 eve = lastSync.next(); 916 eve = lastSync.next();
917 } 917 }
918 918
919} 919}
920void CalendarView::checkExternalId( Incidence * inc ) 920void CalendarView::checkExternalId( Incidence * inc )
921{ 921{
922 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ; 922 QPtrList<Event> lastSync = mCalendar->getExternLastSyncEvents() ;
923 checkExternSyncEvent( lastSync, inc ); 923 checkExternSyncEvent( lastSync, inc );
924 924
925} 925}
926bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode ) 926bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int mode )
927{ 927{
928 bool syncOK = true; 928 bool syncOK = true;
929 int addedEvent = 0; 929 int addedEvent = 0;
930 int addedEventR = 0; 930 int addedEventR = 0;
931 int deletedEventR = 0; 931 int deletedEventR = 0;
932 int deletedEventL = 0; 932 int deletedEventL = 0;
933 int changedLocal = 0; 933 int changedLocal = 0;
934 int changedRemote = 0; 934 int changedRemote = 0;
935 //QPtrList<Event> el = local->rawEvents(); 935 //QPtrList<Event> el = local->rawEvents();
936 Event* eventR; 936 Event* eventR;
937 QString uid; 937 QString uid;
938 int take; 938 int take;
939 Event* eventL; 939 Event* eventL;
940 Event* eventRSync; 940 Event* eventRSync;
941 Event* eventLSync; 941 Event* eventLSync;
942 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents(); 942 QPtrList<Event> eventRSyncSharp = remote->getExternLastSyncEvents();
943 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents(); 943 QPtrList<Event> eventLSyncSharp = local->getExternLastSyncEvents();
944 bool fullDateRange = false; 944 bool fullDateRange = false;
945 local->resetTempSyncStat(); 945 local->resetTempSyncStat();
946 mLastCalendarSync = QDateTime::currentDateTime(); 946 mLastCalendarSync = QDateTime::currentDateTime();
947 QDateTime modifiedCalendar = mLastCalendarSync;; 947 QDateTime modifiedCalendar = mLastCalendarSync;;
948 eventLSync = getLastSyncEvent(); 948 eventLSync = getLastSyncEvent();
949 eventR = remote->event("last-syncEvent-"+mCurrentSyncName ); 949 eventR = remote->event("last-syncEvent-"+mCurrentSyncName );
950 if ( eventR ) { 950 if ( eventR ) {
951 eventRSync = (Event*) eventR->clone(); 951 eventRSync = (Event*) eventR->clone();
952 remote->deleteEvent(eventR ); 952 remote->deleteEvent(eventR );
953 953
954 } else { 954 } else {
955 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 955 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
956 eventRSync = (Event*)eventLSync->clone(); 956 eventRSync = (Event*)eventLSync->clone();
957 } else { 957 } else {
958 fullDateRange = true; 958 fullDateRange = true;
959 eventRSync = new Event(); 959 eventRSync = new Event();
960 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event")); 960 eventRSync->setSummary(mCurrentSyncName + i18n(" - sync event"));
961 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName ); 961 eventRSync->setUid("last-syncEvent-"+mCurrentSyncName );
962 eventRSync->setDtStart( mLastCalendarSync ); 962 eventRSync->setDtStart( mLastCalendarSync );
963 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) ); 963 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 7200 ) );
964 eventRSync->setCategories( i18n("SyncEvent") ); 964 eventRSync->setCategories( i18n("SyncEvent") );
965 } 965 }
966 } 966 }
967 if ( eventLSync->dtStart() == mLastCalendarSync ) 967 if ( eventLSync->dtStart() == mLastCalendarSync )
968 fullDateRange = true; 968 fullDateRange = true;
969 969
970 if ( ! fullDateRange ) { 970 if ( ! fullDateRange ) {
971 if ( eventLSync->dtStart() != eventRSync->dtStart() ) { 971 if ( eventLSync->dtStart() != eventRSync->dtStart() ) {
972 972
973 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() ); 973 // qDebug("set fulldate to true %s %s" ,eventLSync->dtStart().toString().latin1(), eventRSync->dtStart().toString().latin1() );
974 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec()); 974 //qDebug("%d %d %d %d ", eventLSync->dtStart().time().second(), eventLSync->dtStart().time().msec() , eventRSync->dtStart().time().second(), eventRSync->dtStart().time().msec());
975 fullDateRange = true; 975 fullDateRange = true;
976 } 976 }
977 } 977 }
978 if ( fullDateRange ) 978 if ( fullDateRange )
979 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365); 979 mLastCalendarSync = QDateTime::currentDateTime().addDays( -100*365);
980 else 980 else
981 mLastCalendarSync = eventLSync->dtStart(); 981 mLastCalendarSync = eventLSync->dtStart();
982 // for resyncing if own file has changed 982 // for resyncing if own file has changed
983 if ( mCurrentSyncDevice == "deleteaftersync" ) { 983 if ( mCurrentSyncDevice == "deleteaftersync" ) {
984 mLastCalendarSync = loadedFileVersion; 984 mLastCalendarSync = loadedFileVersion;
985 qDebug("setting mLastCalendarSync "); 985 qDebug("setting mLastCalendarSync ");
986 } 986 }
987 //qDebug("*************************** "); 987 //qDebug("*************************** ");
988 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() ); 988 qDebug("mLastCalendarSync %s ",mLastCalendarSync.toString().latin1() );
989 QPtrList<Incidence> er = remote->rawIncidences(); 989 QPtrList<Incidence> er = remote->rawIncidences();
990 Incidence* inR = er.first(); 990 Incidence* inR = er.first();
991 Incidence* inL; 991 Incidence* inL;
992 QProgressBar bar( er.count(),0 ); 992 QProgressBar bar( er.count(),0 );
993 bar.setCaption (i18n("Syncing - close to abort!") ); 993 bar.setCaption (i18n("Syncing - close to abort!") );
994 994
995 int w = 300; 995 int w = 300;
996 if ( QApplication::desktop()->width() < 320 ) 996 if ( QApplication::desktop()->width() < 320 )
997 w = 220; 997 w = 220;
998 int h = bar.sizeHint().height() ; 998 int h = bar.sizeHint().height() ;
999 int dw = QApplication::desktop()->width(); 999 int dw = QApplication::desktop()->width();
1000 int dh = QApplication::desktop()->height(); 1000 int dh = QApplication::desktop()->height();
1001 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1001 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1002 bar.show(); 1002 bar.show();
1003 int modulo = (er.count()/10)+1; 1003 int modulo = (er.count()/10)+1;
1004 int incCounter = 0; 1004 int incCounter = 0;
1005 while ( inR ) { 1005 while ( inR ) {
1006 if ( ! bar.isVisible() ) 1006 if ( ! bar.isVisible() )
1007 return false; 1007 return false;
1008 if ( incCounter % modulo == 0 ) 1008 if ( incCounter % modulo == 0 )
1009 bar.setProgress( incCounter ); 1009 bar.setProgress( incCounter );
1010 ++incCounter; 1010 ++incCounter;
1011 uid = inR->uid(); 1011 uid = inR->uid();
1012 bool skipIncidence = false; 1012 bool skipIncidence = false;
1013 if ( uid.left(15) == QString("last-syncEvent-") ) 1013 if ( uid.left(15) == QString("last-syncEvent-") )
1014 skipIncidence = true; 1014 skipIncidence = true;
1015 QString idS; 1015 QString idS;
1016 qApp->processEvents(); 1016 qApp->processEvents();
1017 if ( !skipIncidence ) { 1017 if ( !skipIncidence ) {
1018 inL = local->incidence( uid ); 1018 inL = local->incidence( uid );
1019 if ( inL ) { // maybe conflict - same uid in both calendars 1019 if ( inL ) { // maybe conflict - same uid in both calendars
1020 int maxrev = inL->revision(); 1020 int maxrev = inL->revision();
1021 if ( maxrev < inR->revision() ) 1021 if ( maxrev < inR->revision() )
1022 maxrev = inR->revision(); 1022 maxrev = inR->revision();
1023 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) { 1023 if ( (take = takeEvent( inL, inR, mode, fullDateRange )) > 0 ) {
1024 //qDebug("take %d %s ", take, inL->summary().latin1()); 1024 //qDebug("take %d %s ", take, inL->summary().latin1());
1025 if ( take == 3 ) 1025 if ( take == 3 )
1026 return false; 1026 return false;
1027 if ( take == 1 ) {// take local 1027 if ( take == 1 ) {// take local
1028 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) 1028 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL )
1029 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1029 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1030 else 1030 else
1031 idS = inR->IDStr(); 1031 idS = inR->IDStr();
1032 remote->deleteIncidence( inR ); 1032 remote->deleteIncidence( inR );
1033 if ( inL->revision() < maxrev ) 1033 if ( inL->revision() < maxrev )
1034 inL->setRevision( maxrev ); 1034 inL->setRevision( maxrev );
1035 inR = inL->clone(); 1035 inR = inL->clone();
1036 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1036 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1037 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL ) 1037 if ( mGlobalSyncMode != SYNC_MODE_EXTERNAL )
1038 inR->setIDStr( idS ); 1038 inR->setIDStr( idS );
1039 remote->addIncidence( inR ); 1039 remote->addIncidence( inR );
1040 ++changedRemote; 1040 ++changedRemote;
1041 } else { 1041 } else {
1042 if ( inR->revision() < maxrev ) 1042 if ( inR->revision() < maxrev )
1043 inR->setRevision( maxrev ); 1043 inR->setRevision( maxrev );
1044 idS = inL->IDStr(); 1044 idS = inL->IDStr();
1045 local->deleteIncidence( inL ); 1045 local->deleteIncidence( inL );
1046 inL = inR->clone(); 1046 inL = inR->clone();
1047 inL->setIDStr( idS ); 1047 inL->setIDStr( idS );
1048 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1048 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1049 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) ); 1049 inL->setCsum( mCurrentSyncDevice, inR->getCsum(mCurrentSyncDevice) );
1050 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) ); 1050 inL->setID( mCurrentSyncDevice, inR->getID(mCurrentSyncDevice) );
1051 } 1051 }
1052 local->addIncidence( inL ); 1052 local->addIncidence( inL );
1053 ++changedLocal; 1053 ++changedLocal;
1054 } 1054 }
1055 } 1055 }
1056 } else { // no conflict 1056 } else { // no conflict
1057 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1057 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1058 QString des = eventLSync->description(); 1058 QString des = eventLSync->description();
1059 QString pref = "e"; 1059 QString pref = "e";
1060 if ( inR->type() == "Todo" ) 1060 if ( inR->type() == "Todo" )
1061 pref = "t"; 1061 pref = "t";
1062 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it 1062 if ( des.find(pref+ inR->getID(mCurrentSyncDevice) +"," ) >= 0 && mode != 5) { // delete it
1063 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE ); 1063 inR->setTempSyncStat( SYNC_TEMPSTATE_DELETE );
1064 //remote->deleteIncidence( inR ); 1064 //remote->deleteIncidence( inR );
1065 ++deletedEventR; 1065 ++deletedEventR;
1066 } else { 1066 } else {
1067 inR->setLastModified( modifiedCalendar ); 1067 inR->setLastModified( modifiedCalendar );
1068 inL = inR->clone(); 1068 inL = inR->clone();
1069 local->addIncidence( inL ); 1069 local->addIncidence( inL );
1070 ++addedEvent; 1070 ++addedEvent;
1071 } 1071 }
1072 } else { 1072 } else {
1073 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) { 1073 if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
1074 inR->setLastModified( modifiedCalendar ); 1074 inR->setLastModified( modifiedCalendar );
1075 local->addIncidence( inR->clone() ); 1075 local->addIncidence( inR->clone() );
1076 ++addedEvent; 1076 ++addedEvent;
1077 } else { 1077 } else {
1078 checkExternSyncEvent(eventRSyncSharp, inR); 1078 checkExternSyncEvent(eventRSyncSharp, inR);
1079 remote->deleteIncidence( inR ); 1079 remote->deleteIncidence( inR );
1080 ++deletedEventR; 1080 ++deletedEventR;
1081 } 1081 }
1082 } 1082 }
1083 } 1083 }
1084 } 1084 }
1085 inR = er.next(); 1085 inR = er.next();
1086 } 1086 }
1087 QPtrList<Incidence> el = local->rawIncidences(); 1087 QPtrList<Incidence> el = local->rawIncidences();
1088 inL = el.first(); 1088 inL = el.first();
1089 modulo = (el.count()/10)+1; 1089 modulo = (el.count()/10)+1;
1090 bar.setCaption (i18n("Add / remove events") ); 1090 bar.setCaption (i18n("Add / remove events") );
1091 bar.setTotalSteps ( el.count() ) ; 1091 bar.setTotalSteps ( el.count() ) ;
1092 bar.show(); 1092 bar.show();
1093 incCounter = 0; 1093 incCounter = 0;
1094 1094
1095 while ( inL ) { 1095 while ( inL ) {
1096 1096
1097 qApp->processEvents(); 1097 qApp->processEvents();
1098 if ( ! bar.isVisible() ) 1098 if ( ! bar.isVisible() )
1099 return false; 1099 return false;
1100 if ( incCounter % modulo == 0 ) 1100 if ( incCounter % modulo == 0 )
1101 bar.setProgress( incCounter ); 1101 bar.setProgress( incCounter );
1102 ++incCounter; 1102 ++incCounter;
1103 uid = inL->uid(); 1103 uid = inL->uid();
1104 bool skipIncidence = false; 1104 bool skipIncidence = false;
1105 if ( uid.left(15) == QString("last-syncEvent-") ) 1105 if ( uid.left(15) == QString("last-syncEvent-") )
1106 skipIncidence = true; 1106 skipIncidence = true;
1107 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" ) 1107 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL && inL->type() == "Journal" )
1108 skipIncidence = true; 1108 skipIncidence = true;
1109 if ( !skipIncidence ) { 1109 if ( !skipIncidence ) {
1110 inR = remote->incidence( uid ); 1110 inR = remote->incidence( uid );
1111 if ( ! inR ) { 1111 if ( ! inR ) {
1112 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) { 1112 if ( mGlobalSyncMode == SYNC_MODE_EXTERNAL ) {
1113 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) { 1113 if ( !inL->getID(mCurrentSyncDevice).isEmpty() && mode != 4 ) {
1114 checkExternSyncEvent(eventLSyncSharp, inL); 1114 checkExternSyncEvent(eventLSyncSharp, inL);
1115 local->deleteIncidence( inL ); 1115 local->deleteIncidence( inL );
1116 ++deletedEventL; 1116 ++deletedEventL;
1117 } else { 1117 } else {
1118 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 1118 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
1119 inL->removeID(mCurrentSyncDevice ); 1119 inL->removeID(mCurrentSyncDevice );
1120 ++addedEventR; 1120 ++addedEventR;
1121 //qDebug("remote added Incidence %s ", inL->summary().latin1()); 1121 //qDebug("remote added Incidence %s ", inL->summary().latin1());
1122 inL->setLastModified( modifiedCalendar ); 1122 inL->setLastModified( modifiedCalendar );
1123 inR = inL->clone(); 1123 inR = inL->clone();
1124 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL ); 1124 inR->setTempSyncStat( SYNC_TEMPSTATE_INITIAL );
1125 remote->addIncidence( inR ); 1125 remote->addIncidence( inR );
1126 } 1126 }
1127 } 1127 }
1128 } else { 1128 } else {
1129 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) { 1129 if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
1130 checkExternSyncEvent(eventLSyncSharp, inL); 1130 checkExternSyncEvent(eventLSyncSharp, inL);
1131 local->deleteIncidence( inL ); 1131 local->deleteIncidence( inL );
1132 ++deletedEventL; 1132 ++deletedEventL;
1133 } else { 1133 } else {
1134 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) { 1134 if ( ! KOPrefs::instance()->mWriteBackExistingOnly ) {
1135 ++addedEventR; 1135 ++addedEventR;
1136 inL->setLastModified( modifiedCalendar ); 1136 inL->setLastModified( modifiedCalendar );
1137 remote->addIncidence( inL->clone() ); 1137 remote->addIncidence( inL->clone() );
1138 } 1138 }
1139 } 1139 }
1140 } 1140 }
1141 } 1141 }
1142 } 1142 }
1143 inL = el.next(); 1143 inL = el.next();
1144 } 1144 }
1145 int delFut = 0; 1145 int delFut = 0;
1146 if ( KOPrefs::instance()->mWriteBackInFuture ) { 1146 if ( KOPrefs::instance()->mWriteBackInFuture ) {
1147 er = remote->rawIncidences(); 1147 er = remote->rawIncidences();
1148 inR = er.first(); 1148 inR = er.first();
1149 QDateTime dt; 1149 QDateTime dt;
1150 QDateTime cur = QDateTime::currentDateTime().addDays( -7 ); 1150 QDateTime cur = QDateTime::currentDateTime().addDays( -7 );
1151 QDateTime end = cur.addDays( (KOPrefs::instance()->mWriteBackInFuture +1 ) *7 ); 1151 QDateTime end = cur.addDays( (KOPrefs::instance()->mWriteBackInFuture +1 ) *7 );
1152 while ( inR ) { 1152 while ( inR ) {
1153 if ( inR->type() == "Todo" ) { 1153 if ( inR->type() == "Todo" ) {
1154 Todo * t = (Todo*)inR; 1154 Todo * t = (Todo*)inR;
1155 if ( t->hasDueDate() ) 1155 if ( t->hasDueDate() )
1156 dt = t->dtDue(); 1156 dt = t->dtDue();
1157 else 1157 else
1158 dt = cur.addSecs( 62 ); 1158 dt = cur.addSecs( 62 );
1159 } 1159 }
1160 else if (inR->type() == "Event" ) { 1160 else if (inR->type() == "Event" ) {
1161 bool ok; 1161 bool ok;
1162 dt = inR->getNextOccurence( cur, &ok ); 1162 dt = inR->getNextOccurence( cur, &ok );
1163 if ( !ok ) 1163 if ( !ok )
1164 dt = cur.addSecs( -62 ); 1164 dt = cur.addSecs( -62 );
1165 } 1165 }
1166 else 1166 else
1167 dt = inR->dtStart(); 1167 dt = inR->dtStart();
1168 if ( dt < cur || dt > end ) { 1168 if ( dt < cur || dt > end ) {
1169 remote->deleteIncidence( inR ); 1169 remote->deleteIncidence( inR );
1170 ++delFut; 1170 ++delFut;
1171 } 1171 }
1172 inR = er.next(); 1172 inR = er.next();
1173 } 1173 }
1174 } 1174 }
1175 bar.hide(); 1175 bar.hide();
1176 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); 1176 mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 );
1177 eventLSync->setReadOnly( false ); 1177 eventLSync->setReadOnly( false );
1178 eventLSync->setDtStart( mLastCalendarSync ); 1178 eventLSync->setDtStart( mLastCalendarSync );
1179 eventRSync->setDtStart( mLastCalendarSync ); 1179 eventRSync->setDtStart( mLastCalendarSync );
1180 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1180 eventLSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1181 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) ); 1181 eventRSync->setDtEnd( mLastCalendarSync.addSecs( 3600 ) );
1182 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ; 1182 eventRSync->setLocation( i18n("Remote from: ")+mCurrentSyncName ) ;
1183 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); 1183 eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName );
1184 eventLSync->setReadOnly( true ); 1184 eventLSync->setReadOnly( true );
1185 if ( mGlobalSyncMode == SYNC_MODE_NORMAL) 1185 if ( mGlobalSyncMode == SYNC_MODE_NORMAL)
1186 remote->addEvent( eventRSync ); 1186 remote->addEvent( eventRSync );
1187 QString mes; 1187 QString mes;
1188 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR ); 1188 mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR );
1189 QString delmess; 1189 QString delmess;
1190 if ( delFut ) { 1190 if ( delFut ) {
1191 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are in the past or\nmore than %d weeks in the future.\n"),delFut, KOPrefs::instance()->mWriteBackInFuture ); 1191 delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are in the past or\nmore than %d weeks in the future.\n"),delFut, KOPrefs::instance()->mWriteBackInFuture );
1192 mes += delmess; 1192 mes += delmess;
1193 } 1193 }
1194 if ( KOPrefs::instance()->mShowSyncSummary ) { 1194 if ( KOPrefs::instance()->mShowSyncSummary ) {
1195 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") ); 1195 KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") );
1196 } 1196 }
1197 qDebug( mes ); 1197 qDebug( mes );
1198 mCalendar->checkAlarmForIncidence( 0, true ); 1198 mCalendar->checkAlarmForIncidence( 0, true );
1199 return syncOK; 1199 return syncOK;
1200} 1200}
1201 1201
1202void CalendarView::setSyncDevice( QString s ) 1202void CalendarView::setSyncDevice( QString s )
1203{ 1203{
1204 mCurrentSyncDevice= s; 1204 mCurrentSyncDevice= s;
1205} 1205}
1206void CalendarView::setSyncName( QString s ) 1206void CalendarView::setSyncName( QString s )
1207{ 1207{
1208 mCurrentSyncName= s; 1208 mCurrentSyncName= s;
1209} 1209}
1210bool CalendarView::syncCalendar(QString filename, int mode) 1210bool CalendarView::syncCalendar(QString filename, int mode)
1211{ 1211{
1212 mGlobalSyncMode = SYNC_MODE_NORMAL; 1212 mGlobalSyncMode = SYNC_MODE_NORMAL;
1213 CalendarLocal* calendar = new CalendarLocal(); 1213 CalendarLocal* calendar = new CalendarLocal();
1214 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1214 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1215 FileStorage* storage = new FileStorage( calendar ); 1215 FileStorage* storage = new FileStorage( calendar );
1216 bool syncOK = false; 1216 bool syncOK = false;
1217 storage->setFileName( filename ); 1217 storage->setFileName( filename );
1218 // qDebug("loading ... "); 1218 // qDebug("loading ... ");
1219 if ( storage->load() ) { 1219 if ( storage->load() ) {
1220 getEventViewerDialog()->setSyncMode( true ); 1220 getEventViewerDialog()->setSyncMode( true );
1221 syncOK = synchronizeCalendar( mCalendar, calendar, mode ); 1221 syncOK = synchronizeCalendar( mCalendar, calendar, mode );
1222 getEventViewerDialog()->setSyncMode( false ); 1222 getEventViewerDialog()->setSyncMode( false );
1223 if ( syncOK ) { 1223 if ( syncOK ) {
1224 if ( KOPrefs::instance()->mWriteBackFile ) 1224 if ( KOPrefs::instance()->mWriteBackFile )
1225 { 1225 {
1226 storage->setSaveFormat( new ICalFormat() ); 1226 storage->setSaveFormat( new ICalFormat() );
1227 storage->save(); 1227 storage->save();
1228 } 1228 }
1229 } 1229 }
1230 setModified( true ); 1230 setModified( true );
1231 } 1231 }
1232 delete storage; 1232 delete storage;
1233 delete calendar; 1233 delete calendar;
1234 if ( syncOK ) 1234 if ( syncOK )
1235 updateView(); 1235 updateView();
1236 return syncOK; 1236 return syncOK;
1237} 1237}
1238void CalendarView::syncPhone() 1238void CalendarView::syncPhone()
1239{ 1239{
1240 syncExternal( 1 ); 1240 syncExternal( 1 );
1241} 1241}
1242void CalendarView::syncExternal( int mode ) 1242void CalendarView::syncExternal( int mode )
1243{ 1243{
1244 mGlobalSyncMode = SYNC_MODE_EXTERNAL; 1244 mGlobalSyncMode = SYNC_MODE_EXTERNAL;
1245 //mCurrentSyncDevice = "sharp-DTM"; 1245 //mCurrentSyncDevice = "sharp-DTM";
1246 if ( KOPrefs::instance()->mAskForPreferences ) 1246 if ( KOPrefs::instance()->mAskForPreferences )
1247 edit_sync_options(); 1247 edit_sync_options();
1248 qApp->processEvents(); 1248 qApp->processEvents();
1249 CalendarLocal* calendar = new CalendarLocal(); 1249 CalendarLocal* calendar = new CalendarLocal();
1250 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1250 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1251 bool syncOK = false; 1251 bool syncOK = false;
1252 bool loadSuccess = false; 1252 bool loadSuccess = false;
1253 PhoneFormat* phoneFormat = 0; 1253 PhoneFormat* phoneFormat = 0;
1254#ifndef DESKTOP_VERSION 1254#ifndef DESKTOP_VERSION
1255 SharpFormat* sharpFormat = 0; 1255 SharpFormat* sharpFormat = 0;
1256 if ( mode == 0 ) { // sharp 1256 if ( mode == 0 ) { // sharp
1257 sharpFormat = new SharpFormat () ; 1257 sharpFormat = new SharpFormat () ;
1258 loadSuccess = sharpFormat->load( calendar, mCalendar ); 1258 loadSuccess = sharpFormat->load( calendar, mCalendar );
1259 1259
1260 } else 1260 } else
1261#endif 1261#endif
1262 if ( mode == 1 ) { // phone 1262 if ( mode == 1 ) { // phone
1263 phoneFormat = new PhoneFormat (mCurrentSyncDevice, 1263 phoneFormat = new PhoneFormat (mCurrentSyncDevice,
1264 KOPrefs::instance()->mPhoneDevice, 1264 KOPrefs::instance()->mPhoneDevice,
1265 KOPrefs::instance()->mPhoneConnection, 1265 KOPrefs::instance()->mPhoneConnection,
1266 KOPrefs::instance()->mPhoneModel); 1266 KOPrefs::instance()->mPhoneModel);
1267 loadSuccess = phoneFormat->load( calendar,mCalendar); 1267 loadSuccess = phoneFormat->load( calendar,mCalendar);
1268 1268
1269 } else 1269 } else
1270 return; 1270 return;
1271 if ( loadSuccess ) { 1271 if ( loadSuccess ) {
1272 getEventViewerDialog()->setSyncMode( true ); 1272 getEventViewerDialog()->setSyncMode( true );
1273 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs ); 1273 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs );
1274 getEventViewerDialog()->setSyncMode( false ); 1274 getEventViewerDialog()->setSyncMode( false );
1275 qApp->processEvents(); 1275 qApp->processEvents();
1276 if ( syncOK ) { 1276 if ( syncOK ) {
1277 if ( KOPrefs::instance()->mWriteBackFile ) 1277 if ( KOPrefs::instance()->mWriteBackFile )
1278 { 1278 {
1279 QPtrList<Incidence> iL = mCalendar->rawIncidences(); 1279 QPtrList<Incidence> iL = mCalendar->rawIncidences();
1280 Incidence* inc = iL.first(); 1280 Incidence* inc = iL.first();
1281 if ( phoneFormat ) { 1281 if ( phoneFormat ) {
1282 while ( inc ) { 1282 while ( inc ) {
1283 inc->removeID(mCurrentSyncDevice); 1283 inc->removeID(mCurrentSyncDevice);
1284 inc = iL.next(); 1284 inc = iL.next();
1285 } 1285 }
1286 } 1286 }
1287#ifndef DESKTOP_VERSION 1287#ifndef DESKTOP_VERSION
1288 if ( sharpFormat ) 1288 if ( sharpFormat )
1289 sharpFormat->save(calendar); 1289 sharpFormat->save(calendar);
1290#endif 1290#endif
1291 if ( phoneFormat ) 1291 if ( phoneFormat )
1292 phoneFormat->save(calendar); 1292 phoneFormat->save(calendar);
1293 iL = calendar->rawIncidences(); 1293 iL = calendar->rawIncidences();
1294 inc = iL.first(); 1294 inc = iL.first();
1295 Incidence* loc; 1295 Incidence* loc;
1296 while ( inc ) { 1296 while ( inc ) {
1297 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) { 1297 if ( inc->tempSyncStat() == SYNC_TEMPSTATE_NEW_ID ) {
1298 loc = mCalendar->incidence(inc->uid() ); 1298 loc = mCalendar->incidence(inc->uid() );
1299 if ( loc ) { 1299 if ( loc ) {
1300 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) ); 1300 loc->setID(mCurrentSyncDevice, inc->getID(mCurrentSyncDevice) );
1301 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) ); 1301 loc->setCsum( mCurrentSyncDevice, inc->getCsum(mCurrentSyncDevice) );
1302 } 1302 }
1303 } 1303 }
1304 inc = iL.next(); 1304 inc = iL.next();
1305 } 1305 }
1306 Incidence* lse = getLastSyncEvent(); 1306 Incidence* lse = getLastSyncEvent();
1307 if ( lse ) { 1307 if ( lse ) {
1308 lse->setReadOnly( false ); 1308 lse->setReadOnly( false );
1309 lse->setDescription( "" ); 1309 lse->setDescription( "" );
1310 lse->setReadOnly( true ); 1310 lse->setReadOnly( true );
1311 } 1311 }
1312 } 1312 }
1313 } 1313 }
1314 setModified( true ); 1314 setModified( true );
1315 } else { 1315 } else {
1316 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ; 1316 QString question = i18n("Sorry, the database access\ncommand failed!\n\nNothing synced!\n") ;
1317 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"), 1317 QMessageBox::information( 0, i18n("KO/Pi Import - ERROR"),
1318 question, i18n("Ok")) ; 1318 question, i18n("Ok")) ;
1319 1319
1320 } 1320 }
1321 delete calendar; 1321 delete calendar;
1322 updateView(); 1322 updateView();
1323 return ;//syncOK; 1323 return ;//syncOK;
1324 1324
1325} 1325}
1326void CalendarView::syncSharp() 1326void CalendarView::syncSharp()
1327{ 1327{
1328 syncExternal( 0 ); 1328 syncExternal( 0 );
1329 1329
1330} 1330}
1331 1331
1332 1332
1333//#include <kabc/stdaddressbook.h> 1333//#include <kabc/stdaddressbook.h>
1334bool CalendarView::importBday() 1334bool CalendarView::importBday()
1335{ 1335{
1336#ifndef KORG_NOKABC 1336#ifndef KORG_NOKABC
1337 1337
1338#ifdef DESKTOP_VERSION 1338#ifdef DESKTOP_VERSION
1339 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true ); 1339 KABC::StdAddressBook* AddressBook = KABC::StdAddressBook::self( true );
1340 KABC::AddressBook::Iterator it; 1340 KABC::AddressBook::Iterator it;
1341 int count = 0; 1341 int count = 0;
1342 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1342 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1343 ++count; 1343 ++count;
1344 } 1344 }
1345 QProgressBar bar(count,0 ); 1345 QProgressBar bar(count,0 );
1346 int w = 300; 1346 int w = 300;
1347 if ( QApplication::desktop()->width() < 320 ) 1347 if ( QApplication::desktop()->width() < 320 )
1348 w = 220; 1348 w = 220;
1349 int h = bar.sizeHint().height() ; 1349 int h = bar.sizeHint().height() ;
1350 int dw = QApplication::desktop()->width(); 1350 int dw = QApplication::desktop()->width();
1351 int dh = QApplication::desktop()->height(); 1351 int dh = QApplication::desktop()->height();
1352 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1352 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1353 bar.show(); 1353 bar.show();
1354 bar.setCaption (i18n("Reading addressbook - close to abort!") ); 1354 bar.setCaption (i18n("Reading addressbook - close to abort!") );
1355 qApp->processEvents(); 1355 qApp->processEvents();
1356 count = 0; 1356 count = 0;
1357 int addCount = 0; 1357 int addCount = 0;
1358 KCal::Attendee* a = 0; 1358 KCal::Attendee* a = 0;
1359 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) { 1359 for( it = AddressBook->begin(); it != AddressBook->end(); ++it ) {
1360 if ( ! bar.isVisible() ) 1360 if ( ! bar.isVisible() )
1361 return false; 1361 return false;
1362 bar.setProgress( count++ ); 1362 bar.setProgress( count++ );
1363 qApp->processEvents(); 1363 qApp->processEvents();
1364 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() ); 1364 //qDebug("add BDay %s %s", (*it).realName().latin1(),(*it).birthday().date().toString().latin1() );
1365 if ( (*it).birthday().date().isValid() ){ 1365 if ( (*it).birthday().date().isValid() ){
1366 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1366 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1367 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) ) 1367 if ( addAnniversary( (*it).birthday().date(), (*it).assembledName(), a, true ) )
1368 ++addCount; 1368 ++addCount;
1369 } 1369 }
1370 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d"); 1370 QDate anni = KGlobal::locale()->readDate( (*it).custom("KADDRESSBOOK", "X-Anniversary" ), "%Y-%m-%d");
1371 if ( anni.isValid() ){ 1371 if ( anni.isValid() ){
1372 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ; 1372 a = new KCal::Attendee( (*it).realName(), (*it).preferredEmail(),false,KCal::Attendee::NeedsAction,KCal::Attendee::ReqParticipant,(*it).uid()) ;
1373 if ( addAnniversary( anni, (*it).assembledName(), a, false ) ) 1373 if ( addAnniversary( anni, (*it).assembledName(), a, false ) )
1374 ++addCount; 1374 ++addCount;
1375 } 1375 }
1376 } 1376 }
1377 updateView(); 1377 updateView();
1378 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 1378 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
1379#else //DESKTOP_VERSION 1379#else //DESKTOP_VERSION
1380 1380
1381 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/); 1381 ExternalAppHandler::instance()->requestBirthdayListFromKAPI("QPE/Application/kopi", this->name() /* name is here the unique uid*/);
1382 // the result should now arrive through method insertBirthdays 1382 // the result should now arrive through method insertBirthdays
1383 1383
1384#endif //DESKTOP_VERSION 1384#endif //DESKTOP_VERSION
1385 1385
1386#endif //KORG_NOKABC 1386#endif //KORG_NOKABC
1387 1387
1388 1388
1389 return true; 1389 return true;
1390} 1390}
1391 1391
1392// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI 1392// This method will be called from Ka/Pi as a response to requestBirthdayListFromKAPI
1393void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList, 1393void CalendarView::insertBirthdays(const QString& uid, const QStringList& birthdayList,
1394 const QStringList& anniversaryList, const QStringList& realNameList, 1394 const QStringList& anniversaryList, const QStringList& realNameList,
1395 const QStringList& emailList, const QStringList& assembledNameList, 1395 const QStringList& emailList, const QStringList& assembledNameList,
1396 const QStringList& uidList) 1396 const QStringList& uidList)
1397{ 1397{
1398 qDebug("CalendarView::insertBirthdays"); 1398 qDebug("CalendarView::insertBirthdays");
1399 if (uid == this->name()) 1399 if (uid == this->name())
1400 { 1400 {
1401 int count = birthdayList.count(); 1401 int count = birthdayList.count();
1402 int addCount = 0; 1402 int addCount = 0;
1403 KCal::Attendee* a = 0; 1403 KCal::Attendee* a = 0;
1404 1404
1405 qDebug("CalView 1 %i", count); 1405 qDebug("CalView 1 %i", count);
1406 1406
1407 QProgressBar bar(count,0 ); 1407 QProgressBar bar(count,0 );
1408 int w = 300; 1408 int w = 300;
1409 if ( QApplication::desktop()->width() < 320 ) 1409 if ( QApplication::desktop()->width() < 320 )
1410 w = 220; 1410 w = 220;
1411 int h = bar.sizeHint().height() ; 1411 int h = bar.sizeHint().height() ;
1412 int dw = QApplication::desktop()->width(); 1412 int dw = QApplication::desktop()->width();
1413 int dh = QApplication::desktop()->height(); 1413 int dh = QApplication::desktop()->height();
1414 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 1414 bar.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
1415 bar.show(); 1415 bar.show();
1416 bar.setCaption (i18n("inserting birthdays - close to abort!") ); 1416 bar.setCaption (i18n("inserting birthdays - close to abort!") );
1417 qApp->processEvents(); 1417 qApp->processEvents();
1418 1418
1419 QDate birthday; 1419 QDate birthday;
1420 QDate anniversary; 1420 QDate anniversary;
1421 QString realName; 1421 QString realName;
1422 QString email; 1422 QString email;
1423 QString assembledName; 1423 QString assembledName;
1424 QString uid; 1424 QString uid;
1425 bool ok = true; 1425 bool ok = true;
1426 for ( int i = 0; i < count; i++) 1426 for ( int i = 0; i < count; i++)
1427 { 1427 {
1428 if ( ! bar.isVisible() ) 1428 if ( ! bar.isVisible() )
1429 return; 1429 return;
1430 bar.setProgress( i ); 1430 bar.setProgress( i );
1431 qApp->processEvents(); 1431 qApp->processEvents();
1432 1432
1433 birthday = KGlobal::locale()->readDate(birthdayList[i], KLocale::ISODate, &ok); 1433 birthday = KGlobal::locale()->readDate(birthdayList[i], KLocale::ISODate, &ok);
1434 if (!ok) { 1434 if (!ok) {
1435 ; //qDebug("CalendarView::insertBirthdays found invalid birthday: %s",birthdayList[i].latin1()); 1435 ;//qDebug("CalendarView::insertBirthdays found invalid birthday: %s",birthdayList[i].latin1());
1436 } 1436 }
1437 1437
1438 anniversary = KGlobal::locale()->readDate(anniversaryList[i], KLocale::ISODate, &ok); 1438 anniversary = KGlobal::locale()->readDate(anniversaryList[i], KLocale::ISODate, &ok);
1439 if (!ok) { 1439 if (!ok) {
1440 ;// qDebug("CalendarView::insertBirthdays found invalid anniversary: %s",anniversaryList[i].latin1()); 1440 ;//qDebug("CalendarView::insertBirthdays found invalid anniversary: %s",anniversaryList[i].latin1());
1441 } 1441 }
1442 realName = realNameList[i]; 1442 realName = realNameList[i];
1443 email = emailList[i]; 1443 email = emailList[i];
1444 assembledName = assembledNameList[i]; 1444 assembledName = assembledNameList[i];
1445 uid = uidList[i]; 1445 uid = uidList[i];
1446 //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() ); 1446 //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() );
1447 1447
1448 if ( birthday.isValid() ){ 1448 if ( birthday.isValid() ){
1449 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction, 1449 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction,
1450 KCal::Attendee::ReqParticipant,uid) ; 1450 KCal::Attendee::ReqParticipant,uid) ;
1451 if ( addAnniversary( birthday, assembledName, a, true ) ) 1451 if ( addAnniversary( birthday, assembledName, a, true ) )
1452 ++addCount; 1452 ++addCount;
1453 } 1453 }
1454 1454
1455 if ( anniversary.isValid() ){ 1455 if ( anniversary.isValid() ){
1456 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction, 1456 a = new KCal::Attendee( realName, email,false,KCal::Attendee::NeedsAction,
1457 KCal::Attendee::ReqParticipant,uid) ; 1457 KCal::Attendee::ReqParticipant,uid) ;
1458 if ( addAnniversary( anniversary, assembledName, a, false ) ) 1458 if ( addAnniversary( anniversary, assembledName, a, false ) )
1459 ++addCount; 1459 ++addCount;
1460 } 1460 }
1461 } 1461 }
1462 1462
1463 updateView(); 1463 updateView();
1464 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!")); 1464 topLevelWidget()->setCaption(QString::number( addCount )+ i18n(" birthdays/anniversaries added!"));
1465 1465
1466 } 1466 }
1467 1467
1468} 1468}
1469 1469
1470 1470
1471 1471
1472bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday) 1472bool CalendarView::addAnniversary( QDate date, QString name, KCal::Attendee* a, bool birthday)
1473{ 1473{
1474 //qDebug("addAnni "); 1474 //qDebug("addAnni ");
1475 Event * ev = new Event(); 1475 Event * ev = new Event();
1476 if ( a ) { 1476 if ( a ) {
1477 ev->addAttendee( a ); 1477 ev->addAttendee( a );
1478 } 1478 }
1479 QString kind; 1479 QString kind;
1480 if ( birthday ) 1480 if ( birthday )
1481 kind = i18n( "Birthday" ); 1481 kind = i18n( "Birthday" );
1482 else 1482 else
1483 kind = i18n( "Anniversary" ); 1483 kind = i18n( "Anniversary" );
1484 ev->setSummary( name + " - " + kind ); 1484 ev->setSummary( name + " - " + kind );
1485 ev->setOrganizer( "nobody@nowhere" ); 1485 ev->setOrganizer( "nobody@nowhere" );
1486 ev->setCategories( kind ); 1486 ev->setCategories( kind );
1487 ev->setDtStart( QDateTime(date) ); 1487 ev->setDtStart( QDateTime(date) );
1488 ev->setDtEnd( QDateTime(date) ); 1488 ev->setDtEnd( QDateTime(date) );
1489 ev->setFloats( true ); 1489 ev->setFloats( true );
1490 Recurrence * rec = ev->recurrence(); 1490 Recurrence * rec = ev->recurrence();
1491 rec->setYearly(Recurrence::rYearlyMonth,1,-1); 1491 rec->setYearly(Recurrence::rYearlyMonth,1,-1);
1492 rec->addYearlyNum( date.month() ); 1492 rec->addYearlyNum( date.month() );
1493 if ( !mCalendar->addAnniversaryNoDup( ev ) ) { 1493 if ( !mCalendar->addAnniversaryNoDup( ev ) ) {
1494 delete ev; 1494 delete ev;
1495 return false; 1495 return false;
1496 } 1496 }
1497 return true; 1497 return true;
1498 1498
1499} 1499}
1500bool CalendarView::importQtopia( const QString &categories, 1500bool CalendarView::importQtopia( const QString &categories,
1501 const QString &datebook, 1501 const QString &datebook,
1502 const QString &todolist ) 1502 const QString &todolist )
1503{ 1503{
1504 1504
1505 QtopiaFormat qtopiaFormat; 1505 QtopiaFormat qtopiaFormat;
1506 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1506 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1507 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories ); 1507 if ( !categories.isEmpty() ) qtopiaFormat.load( mCalendar, categories );
1508 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook ); 1508 if ( !datebook.isEmpty() ) qtopiaFormat.load( mCalendar, datebook );
1509 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist ); 1509 if ( !todolist.isEmpty() ) qtopiaFormat.load( mCalendar, todolist );
1510 1510
1511 updateView(); 1511 updateView();
1512 return true; 1512 return true;
1513 1513
1514#if 0 1514#if 0
1515 mGlobalSyncMode = SYNC_MODE_QTOPIA; 1515 mGlobalSyncMode = SYNC_MODE_QTOPIA;
1516 mCurrentSyncDevice = "qtopia-XML"; 1516 mCurrentSyncDevice = "qtopia-XML";
1517 if ( KOPrefs::instance()->mAskForPreferences ) 1517 if ( KOPrefs::instance()->mAskForPreferences )
1518 edit_sync_options(); 1518 edit_sync_options();
1519 qApp->processEvents(); 1519 qApp->processEvents();
1520 CalendarLocal* calendar = new CalendarLocal(); 1520 CalendarLocal* calendar = new CalendarLocal();
1521 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 1521 calendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
1522 bool syncOK = false; 1522 bool syncOK = false;
1523 QtopiaFormat qtopiaFormat; 1523 QtopiaFormat qtopiaFormat;
1524 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories)); 1524 qtopiaFormat.setCategoriesList ( &(KOPrefs::instance()->mCustomCategories));
1525 bool loadOk = true; 1525 bool loadOk = true;
1526 if ( !categories.isEmpty() ) 1526 if ( !categories.isEmpty() )
1527 loadOk = qtopiaFormat.load( calendar, categories ); 1527 loadOk = qtopiaFormat.load( calendar, categories );
1528 if ( loadOk && !datebook.isEmpty() ) 1528 if ( loadOk && !datebook.isEmpty() )
1529 loadOk = qtopiaFormat.load( calendar, datebook ); 1529 loadOk = qtopiaFormat.load( calendar, datebook );
1530 if ( loadOk && !todolist.isEmpty() ) 1530 if ( loadOk && !todolist.isEmpty() )
1531 loadOk = qtopiaFormat.load( calendar, todolist ); 1531 loadOk = qtopiaFormat.load( calendar, todolist );
1532 1532
1533 if ( loadOk ) { 1533 if ( loadOk ) {
1534 getEventViewerDialog()->setSyncMode( true ); 1534 getEventViewerDialog()->setSyncMode( true );
1535 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs ); 1535 syncOK = synchronizeCalendar( mCalendar, calendar, KOPrefs::instance()->mSyncAlgoPrefs );
1536 getEventViewerDialog()->setSyncMode( false ); 1536 getEventViewerDialog()->setSyncMode( false );
1537 qApp->processEvents(); 1537 qApp->processEvents();
1538 if ( syncOK ) { 1538 if ( syncOK ) {
1539 if ( KOPrefs::instance()->mWriteBackFile ) 1539 if ( KOPrefs::instance()->mWriteBackFile )
1540 { 1540 {
1541 // write back XML file 1541 // write back XML file
1542 1542
1543 } 1543 }
1544 setModified( true ); 1544 setModified( true );
1545 } 1545 }
1546 } else { 1546 } else {
1547 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ; 1547 QString question = i18n("Sorry, the file loading\ncommand failed!\n\nNothing synced!\n") ;
1548 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"), 1548 QMessageBox::information( 0, i18n("KO/Pi Sync - ERROR"),
1549 question, i18n("Ok")) ; 1549 question, i18n("Ok")) ;
1550 } 1550 }
1551 delete calendar; 1551 delete calendar;
1552 updateView(); 1552 updateView();
1553 return syncOK; 1553 return syncOK;
1554 1554
1555 1555
1556#endif 1556#endif
1557 1557
1558} 1558}
1559 1559
1560void CalendarView::setSyncEventsReadOnly() 1560void CalendarView::setSyncEventsReadOnly()
1561{ 1561{
1562 Event * ev; 1562 Event * ev;
1563 QPtrList<Event> eL = mCalendar->rawEvents(); 1563 QPtrList<Event> eL = mCalendar->rawEvents();
1564 ev = eL.first(); 1564 ev = eL.first();
1565 while ( ev ) { 1565 while ( ev ) {
1566 if ( ev->uid().left(15) == QString("last-syncEvent-") ) 1566 if ( ev->uid().left(15) == QString("last-syncEvent-") )
1567 ev->setReadOnly( true ); 1567 ev->setReadOnly( true );
1568 ev = eL.next(); 1568 ev = eL.next();
1569 } 1569 }
1570} 1570}
1571bool CalendarView::openCalendar(QString filename, bool merge) 1571bool CalendarView::openCalendar(QString filename, bool merge)
1572{ 1572{
1573 1573
1574 if (filename.isEmpty()) { 1574 if (filename.isEmpty()) {
1575 return false; 1575 return false;
1576 } 1576 }
1577 1577
1578 if (!QFile::exists(filename)) { 1578 if (!QFile::exists(filename)) {
1579 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename)); 1579 KMessageBox::error(this,i18n("File does not exist:\n '%1'.").arg(filename));
1580 return false; 1580 return false;
1581 } 1581 }
1582 1582
1583 globalFlagBlockAgenda = 1; 1583 globalFlagBlockAgenda = 1;
1584 if (!merge) mCalendar->close(); 1584 if (!merge) mCalendar->close();
1585 1585
1586 mStorage->setFileName( filename ); 1586 mStorage->setFileName( filename );
1587 1587
1588 if ( mStorage->load() ) { 1588 if ( mStorage->load() ) {
1589 if ( merge ) ;//setModified( true ); 1589 if ( merge ) ;//setModified( true );
1590 else { 1590 else {
1591 //setModified( true ); 1591 //setModified( true );
1592 mViewManager->setDocumentId( filename ); 1592 mViewManager->setDocumentId( filename );
1593 mDialogManager->setDocumentId( filename ); 1593 mDialogManager->setDocumentId( filename );
1594 mTodoList->setDocumentId( filename ); 1594 mTodoList->setDocumentId( filename );
1595 } 1595 }
1596 globalFlagBlockAgenda = 2; 1596 globalFlagBlockAgenda = 2;
1597 // if ( getLastSyncEvent() ) 1597 // if ( getLastSyncEvent() )
1598 // getLastSyncEvent()->setReadOnly( true ); 1598 // getLastSyncEvent()->setReadOnly( true );
1599 mCalendar->reInitAlarmSettings(); 1599 mCalendar->reInitAlarmSettings();
1600 setSyncEventsReadOnly(); 1600 setSyncEventsReadOnly();
1601 updateUnmanagedViews(); 1601 updateUnmanagedViews();
1602 updateView(); 1602 updateView();
1603 setLoadedFileVersion( QDateTime::currentDateTime().addSecs( -1 )); 1603 setLoadedFileVersion( QDateTime::currentDateTime().addSecs( -1 ));
1604 if ( filename != MainWindow::defaultFileName() ) { 1604 if ( filename != MainWindow::defaultFileName() ) {
1605 saveCalendar( MainWindow::defaultFileName() ); 1605 saveCalendar( MainWindow::defaultFileName() );
1606 watchSavedFile(); 1606 watchSavedFile();
1607 } 1607 }
1608 return true; 1608 return true;
1609 } else { 1609 } else {
1610 // while failing to load, the calendar object could 1610 // while failing to load, the calendar object could
1611 // have become partially populated. Clear it out. 1611 // have become partially populated. Clear it out.
1612 if ( !merge ) { 1612 if ( !merge ) {
1613 mCalendar->close(); 1613 mCalendar->close();
1614 mViewManager->setDocumentId( filename ); 1614 mViewManager->setDocumentId( filename );
1615 mDialogManager->setDocumentId( filename ); 1615 mDialogManager->setDocumentId( filename );
1616 mTodoList->setDocumentId( filename ); 1616 mTodoList->setDocumentId( filename );
1617 } 1617 }
1618 1618
1619 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename)); 1619 //KMessageBox::error(this,i18n("Couldn't load calendar\n '%1'.").arg(filename));
1620 1620
1621 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) ); 1621 QTimer::singleShot ( 1, this, SLOT ( showOpenError() ) );
1622 globalFlagBlockAgenda = 2; 1622 globalFlagBlockAgenda = 2;
1623 mCalendar->reInitAlarmSettings(); 1623 mCalendar->reInitAlarmSettings();
1624 setSyncEventsReadOnly(); 1624 setSyncEventsReadOnly();
1625 updateUnmanagedViews(); 1625 updateUnmanagedViews();
1626 updateView(); 1626 updateView();
1627 } 1627 }
1628 return false; 1628 return false;
1629} 1629}
1630void CalendarView::showOpenError() 1630void CalendarView::showOpenError()
1631{ 1631{
1632 KMessageBox::error(this,i18n("Couldn't load calendar\n.")); 1632 KMessageBox::error(this,i18n("Couldn't load calendar\n."));
1633} 1633}
1634void CalendarView::setLoadedFileVersion(QDateTime dt) 1634void CalendarView::setLoadedFileVersion(QDateTime dt)
1635{ 1635{
1636 loadedFileVersion = dt; 1636 loadedFileVersion = dt;
1637} 1637}
1638bool CalendarView::checkFileChanged(QString fn) 1638bool CalendarView::checkFileChanged(QString fn)
1639{ 1639{
1640 QFileInfo finf ( fn ); 1640 QFileInfo finf ( fn );
1641 if ( !finf.exists() ) 1641 if ( !finf.exists() )
1642 return true; 1642 return true;
1643 QDateTime dt = finf.lastModified (); 1643 QDateTime dt = finf.lastModified ();
1644 if ( dt <= loadedFileVersion ) 1644 if ( dt <= loadedFileVersion )
1645 return false; 1645 return false;
1646 return true; 1646 return true;
1647 1647
1648} 1648}
1649void CalendarView::watchSavedFile() 1649void CalendarView::watchSavedFile()
1650{ 1650{
1651 QFileInfo finf ( MainWindow::defaultFileName()); 1651 QFileInfo finf ( MainWindow::defaultFileName());
1652 if ( !finf.exists() ) 1652 if ( !finf.exists() )
1653 return; 1653 return;
1654 QDateTime dt = finf.lastModified (); 1654 QDateTime dt = finf.lastModified ();
1655 if ( dt < loadedFileVersion ) { 1655 if ( dt < loadedFileVersion ) {
1656 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1()); 1656 //qDebug("watch %s %s ", dt.toString().latin1(), loadedFileVersion.toString().latin1());
1657 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) ); 1657 QTimer::singleShot( 1000 , this, SLOT ( watchSavedFile() ) );
1658 return; 1658 return;
1659 } 1659 }
1660 loadedFileVersion = dt; 1660 loadedFileVersion = dt;
1661} 1661}
1662 1662
1663bool CalendarView::checkFileVersion(QString fn) 1663bool CalendarView::checkFileVersion(QString fn)
1664{ 1664{
1665 QFileInfo finf ( fn ); 1665 QFileInfo finf ( fn );
1666 if ( !finf.exists() ) 1666 if ( !finf.exists() )
1667 return true; 1667 return true;
1668 QDateTime dt = finf.lastModified (); 1668 QDateTime dt = finf.lastModified ();
1669 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1()); 1669 //qDebug("loaded file version %s",loadedFileVersion.toString().latin1());
1670 //qDebug("file on disk version %s",dt.toString().latin1()); 1670 //qDebug("file on disk version %s",dt.toString().latin1());
1671 if ( dt <= loadedFileVersion ) 1671 if ( dt <= loadedFileVersion )
1672 return true; 1672 return true;
1673 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) , 1673 int km = KMessageBox::warningYesNoCancel(this, i18n("\nThe file on disk has changed!\nFile size: %1 bytes.\nLast modified: %2\nDo you want to:\n\n - Save and overwrite file?\n - Sync with file, then save?\n - Cancel without saving? \n").arg( QString::number( finf.size())).arg( KGlobal::locale()->formatDateTime(finf.lastModified (), true, true)) ,
1674 i18n("KO/Pi Warning"),i18n("Overwrite"), 1674 i18n("KO/Pi Warning"),i18n("Overwrite"),
1675 i18n("Sync+save")); 1675 i18n("Sync+save"));
1676 1676
1677 if ( km == KMessageBox::Cancel ) 1677 if ( km == KMessageBox::Cancel )
1678 return false; 1678 return false;
1679 if ( km == KMessageBox::Yes ) 1679 if ( km == KMessageBox::Yes )
1680 return true; 1680 return true;
1681 1681
1682 setSyncDevice("deleteaftersync" ); 1682 setSyncDevice("deleteaftersync" );
1683 KOPrefs::instance()->mAskForPreferences = true; 1683 KOPrefs::instance()->mAskForPreferences = true;
1684 KOPrefs::instance()->mSyncAlgoPrefs = 3; 1684 KOPrefs::instance()->mSyncAlgoPrefs = 3;
1685 KOPrefs::instance()->mWriteBackFile = false; 1685 KOPrefs::instance()->mWriteBackFile = false;
1686 KOPrefs::instance()->mWriteBackExistingOnly = false; 1686 KOPrefs::instance()->mWriteBackExistingOnly = false;
1687 KOPrefs::instance()->mShowSyncSummary = false; 1687 KOPrefs::instance()->mShowSyncSummary = false;
1688 syncCalendar( fn, 3 ); 1688 syncCalendar( fn, 3 );
1689 Event * e = getLastSyncEvent(); 1689 Event * e = getLastSyncEvent();
1690 mCalendar->deleteEvent ( e ); 1690 mCalendar->deleteEvent ( e );
1691 updateView(); 1691 updateView();
1692 return true; 1692 return true;
1693} 1693}
1694 1694
1695bool CalendarView::saveCalendar( QString filename ) 1695bool CalendarView::saveCalendar( QString filename )
1696{ 1696{
1697 1697
1698 // Store back all unsaved data into calendar object 1698 // Store back all unsaved data into calendar object
1699 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() ); 1699 // qDebug("file %s %d ", filename.latin1() , mViewManager->currentView() );
1700 if ( mViewManager->currentView() ) 1700 if ( mViewManager->currentView() )
1701 mViewManager->currentView()->flushView(); 1701 mViewManager->currentView()->flushView();
1702 1702
1703 //mStorage->setFileName( filename ); 1703 //mStorage->setFileName( filename );
1704 1704
1705 mStorage->setSaveFormat( new ICalFormat() ); 1705 mStorage->setSaveFormat( new ICalFormat() );
1706 mStorage->setFileName( filename ); 1706 mStorage->setFileName( filename );
1707 bool success; 1707 bool success;
1708 success = mStorage->save(); 1708 success = mStorage->save();
1709 if ( !success ) { 1709 if ( !success ) {
1710 return false; 1710 return false;
1711 } 1711 }
1712 1712
1713 return true; 1713 return true;
1714} 1714}
1715 1715
1716void CalendarView::closeCalendar() 1716void CalendarView::closeCalendar()
1717{ 1717{
1718 1718
1719 // child windows no longer valid 1719 // child windows no longer valid
1720 emit closingDown(); 1720 emit closingDown();
1721 1721
1722 mCalendar->close(); 1722 mCalendar->close();
1723 setModified(false); 1723 setModified(false);
1724 updateView(); 1724 updateView();
1725} 1725}
1726 1726
1727void CalendarView::archiveCalendar() 1727void CalendarView::archiveCalendar()
1728{ 1728{
1729 mDialogManager->showArchiveDialog(); 1729 mDialogManager->showArchiveDialog();
1730} 1730}
1731 1731
1732 1732
1733void CalendarView::readSettings() 1733void CalendarView::readSettings()
1734{ 1734{
1735 1735
1736 1736
1737 // mViewManager->showAgendaView(); 1737 // mViewManager->showAgendaView();
1738 QString str; 1738 QString str;
1739 //qDebug("CalendarView::readSettings() "); 1739 //qDebug("CalendarView::readSettings() ");
1740 // read settings from the KConfig, supplying reasonable 1740 // read settings from the KConfig, supplying reasonable
1741 // defaults where none are to be found 1741 // defaults where none are to be found
1742 KConfig *config = KOGlobals::config(); 1742 KConfig *config = KOGlobals::config();
1743#ifndef KORG_NOSPLITTER 1743#ifndef KORG_NOSPLITTER
1744 config->setGroup("KOrganizer Geometry"); 1744 config->setGroup("KOrganizer Geometry");
1745 1745
1746 QValueList<int> sizes = config->readIntListEntry("Separator1"); 1746 QValueList<int> sizes = config->readIntListEntry("Separator1");
1747 if (sizes.count() != 2) { 1747 if (sizes.count() != 2) {
1748 sizes << mDateNavigator->minimumSizeHint().width(); 1748 sizes << mDateNavigator->minimumSizeHint().width();
1749 sizes << 300; 1749 sizes << 300;
1750 } 1750 }
1751 mPanner->setSizes(sizes); 1751 mPanner->setSizes(sizes);
1752 1752
1753 sizes = config->readIntListEntry("Separator2"); 1753 sizes = config->readIntListEntry("Separator2");
1754 if ( ( mResourceView && sizes.count() == 4 ) || 1754 if ( ( mResourceView && sizes.count() == 4 ) ||
1755 ( !mResourceView && sizes.count() == 3 ) ) { 1755 ( !mResourceView && sizes.count() == 3 ) ) {
1756 mLeftSplitter->setSizes(sizes); 1756 mLeftSplitter->setSizes(sizes);
1757 } 1757 }
1758#endif 1758#endif
1759 globalFlagBlockAgenda = 1; 1759 globalFlagBlockAgenda = 1;
1760 mViewManager->showAgendaView(); 1760 mViewManager->showAgendaView();
1761 //mViewManager->readSettings( config ); 1761 //mViewManager->readSettings( config );
1762 mTodoList->restoreLayout(config,QString("Todo Layout")); 1762 mTodoList->restoreLayout(config,QString("Todo Layout"));
1763 readFilterSettings(config); 1763 readFilterSettings(config);
1764 config->setGroup( "Views" ); 1764 config->setGroup( "Views" );
1765 int dateCount = config->readNumEntry( "ShownDatesCount", 7 ); 1765 int dateCount = config->readNumEntry( "ShownDatesCount", 7 );
1766 if ( dateCount == 5 ) mNavigator->selectWorkWeek(); 1766 if ( dateCount == 5 ) mNavigator->selectWorkWeek();
1767 else if ( dateCount == 7 ) mNavigator->selectWeek(); 1767 else if ( dateCount == 7 ) mNavigator->selectWeek();
1768 else mNavigator->selectDates( dateCount ); 1768 else mNavigator->selectDates( dateCount );
1769 // mViewManager->readSettings( config ); 1769 // mViewManager->readSettings( config );
1770 updateConfig(); 1770 updateConfig();
1771 globalFlagBlockAgenda = 2; 1771 globalFlagBlockAgenda = 2;
1772 mViewManager->readSettings( config ); 1772 mViewManager->readSettings( config );
1773#ifdef DESKTOP_VERSION 1773#ifdef DESKTOP_VERSION
1774 config->setGroup("WidgetLayout"); 1774 config->setGroup("WidgetLayout");
1775 QStringList list; 1775 QStringList list;
1776 list = config->readListEntry("MainLayout"); 1776 list = config->readListEntry("MainLayout");
1777 int x,y,w,h; 1777 int x,y,w,h;
1778 if ( ! list.isEmpty() ) { 1778 if ( ! list.isEmpty() ) {
1779 x = list[0].toInt(); 1779 x = list[0].toInt();
1780 y = list[1].toInt(); 1780 y = list[1].toInt();
1781 w = list[2].toInt(); 1781 w = list[2].toInt();
1782 h = list[3].toInt(); 1782 h = list[3].toInt();
1783 topLevelWidget()->setGeometry(x,y,w,h); 1783 topLevelWidget()->setGeometry(x,y,w,h);
1784 1784
1785 } else { 1785 } else {
1786 topLevelWidget()->setGeometry( 40 ,40 , 640, 440); 1786 topLevelWidget()->setGeometry( 40 ,40 , 640, 440);
1787 } 1787 }
1788 list = config->readListEntry("EditEventLayout"); 1788 list = config->readListEntry("EditEventLayout");
1789 if ( ! list.isEmpty() ) { 1789 if ( ! list.isEmpty() ) {
1790 x = list[0].toInt(); 1790 x = list[0].toInt();
1791 y = list[1].toInt(); 1791 y = list[1].toInt();
1792 w = list[2].toInt(); 1792 w = list[2].toInt();
1793 h = list[3].toInt(); 1793 h = list[3].toInt();
1794 mEventEditor->setGeometry(x,y,w,h); 1794 mEventEditor->setGeometry(x,y,w,h);
1795 1795
1796 } 1796 }
1797 list = config->readListEntry("EditTodoLayout"); 1797 list = config->readListEntry("EditTodoLayout");
1798 if ( ! list.isEmpty() ) { 1798 if ( ! list.isEmpty() ) {
1799 x = list[0].toInt(); 1799 x = list[0].toInt();
1800 y = list[1].toInt(); 1800 y = list[1].toInt();
1801 w = list[2].toInt(); 1801 w = list[2].toInt();
1802 h = list[3].toInt(); 1802 h = list[3].toInt();
1803 mTodoEditor->setGeometry(x,y,w,h); 1803 mTodoEditor->setGeometry(x,y,w,h);
1804 1804
1805 } 1805 }
1806 list = config->readListEntry("ViewerLayout"); 1806 list = config->readListEntry("ViewerLayout");
1807 if ( ! list.isEmpty() ) { 1807 if ( ! list.isEmpty() ) {
1808 x = list[0].toInt(); 1808 x = list[0].toInt();
1809 y = list[1].toInt(); 1809 y = list[1].toInt();
1810 w = list[2].toInt(); 1810 w = list[2].toInt();
1811 h = list[3].toInt(); 1811 h = list[3].toInt();
1812 getEventViewerDialog()->setGeometry(x,y,w,h); 1812 getEventViewerDialog()->setGeometry(x,y,w,h);
1813 } 1813 }
1814#endif 1814#endif
1815 1815
1816} 1816}
1817 1817
1818 1818
1819void CalendarView::writeSettings() 1819void CalendarView::writeSettings()
1820{ 1820{
1821 // kdDebug() << "CalendarView::writeSettings" << endl; 1821 // kdDebug() << "CalendarView::writeSettings" << endl;
1822 1822
1823 KConfig *config = KOGlobals::config(); 1823 KConfig *config = KOGlobals::config();
1824 1824
1825#ifndef KORG_NOSPLITTER 1825#ifndef KORG_NOSPLITTER
1826 config->setGroup("KOrganizer Geometry"); 1826 config->setGroup("KOrganizer Geometry");
1827 1827
1828 QValueList<int> list = mPanner->sizes(); 1828 QValueList<int> list = mPanner->sizes();
1829 config->writeEntry("Separator1",list); 1829 config->writeEntry("Separator1",list);
1830 1830
1831 list = mLeftSplitter->sizes(); 1831 list = mLeftSplitter->sizes();
1832 config->writeEntry("Separator2",list); 1832 config->writeEntry("Separator2",list);
1833#endif 1833#endif
1834 1834
1835 mViewManager->writeSettings( config ); 1835 mViewManager->writeSettings( config );
1836 mTodoList->saveLayout(config,QString("Todo Layout")); 1836 mTodoList->saveLayout(config,QString("Todo Layout"));
1837 mDialogManager->writeSettings( config ); 1837 mDialogManager->writeSettings( config );
1838 //KOPrefs::instance()->usrWriteConfig(); 1838 //KOPrefs::instance()->usrWriteConfig();
1839 KOPrefs::instance()->writeConfig(); 1839 KOPrefs::instance()->writeConfig();
1840 1840
1841 writeFilterSettings(config); 1841 writeFilterSettings(config);
1842 1842
1843 config->setGroup( "Views" ); 1843 config->setGroup( "Views" );
1844 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() ); 1844 config->writeEntry( "ShownDatesCount", mNavigator->selectedDates().count() );
1845 1845
1846#ifdef DESKTOP_VERSION 1846#ifdef DESKTOP_VERSION
1847 config->setGroup("WidgetLayout"); 1847 config->setGroup("WidgetLayout");
1848 QStringList list ;//= config->readListEntry("MainLayout"); 1848 QStringList list ;//= config->readListEntry("MainLayout");
1849 int x,y,w,h; 1849 int x,y,w,h;
1850 QWidget* wid; 1850 QWidget* wid;
1851 wid = topLevelWidget(); 1851 wid = topLevelWidget();
1852 x = wid->geometry().x(); 1852 x = wid->geometry().x();
1853 y = wid->geometry().y(); 1853 y = wid->geometry().y();
1854 w = wid->width(); 1854 w = wid->width();
1855 h = wid->height(); 1855 h = wid->height();
1856 list.clear(); 1856 list.clear();
1857 list << QString::number( x ); 1857 list << QString::number( x );
1858 list << QString::number( y ); 1858 list << QString::number( y );
1859 list << QString::number( w ); 1859 list << QString::number( w );
1860 list << QString::number( h ); 1860 list << QString::number( h );
1861 config->writeEntry("MainLayout",list ); 1861 config->writeEntry("MainLayout",list );
1862 1862
1863 wid = mEventEditor; 1863 wid = mEventEditor;
1864 x = wid->geometry().x(); 1864 x = wid->geometry().x();
1865 y = wid->geometry().y(); 1865 y = wid->geometry().y();
1866 w = wid->width(); 1866 w = wid->width();
1867 h = wid->height(); 1867 h = wid->height();
1868 list.clear(); 1868 list.clear();
1869 list << QString::number( x ); 1869 list << QString::number( x );
1870 list << QString::number( y ); 1870 list << QString::number( y );
1871 list << QString::number( w ); 1871 list << QString::number( w );
1872 list << QString::number( h ); 1872 list << QString::number( h );
1873 config->writeEntry("EditEventLayout",list ); 1873 config->writeEntry("EditEventLayout",list );
1874 1874
1875 wid = mTodoEditor; 1875 wid = mTodoEditor;
1876 x = wid->geometry().x(); 1876 x = wid->geometry().x();
1877 y = wid->geometry().y(); 1877 y = wid->geometry().y();
1878 w = wid->width(); 1878 w = wid->width();
1879 h = wid->height(); 1879 h = wid->height();
1880 list.clear(); 1880 list.clear();
1881 list << QString::number( x ); 1881 list << QString::number( x );
1882 list << QString::number( y ); 1882 list << QString::number( y );
1883 list << QString::number( w ); 1883 list << QString::number( w );
1884 list << QString::number( h ); 1884 list << QString::number( h );
1885 config->writeEntry("EditTodoLayout",list ); 1885 config->writeEntry("EditTodoLayout",list );
1886 wid = getEventViewerDialog(); 1886 wid = getEventViewerDialog();
1887 x = wid->geometry().x(); 1887 x = wid->geometry().x();
1888 y = wid->geometry().y(); 1888 y = wid->geometry().y();
1889 w = wid->width(); 1889 w = wid->width();
1890 h = wid->height(); 1890 h = wid->height();
1891 list.clear(); 1891 list.clear();
1892 list << QString::number( x ); 1892 list << QString::number( x );
1893 list << QString::number( y ); 1893 list << QString::number( y );
1894 list << QString::number( w ); 1894 list << QString::number( w );
1895 list << QString::number( h ); 1895 list << QString::number( h );
1896 config->writeEntry("ViewerLayout",list ); 1896 config->writeEntry("ViewerLayout",list );
1897 wid = mDialogManager->getSearchDialog(); 1897 wid = mDialogManager->getSearchDialog();
1898 if ( wid ) { 1898 if ( wid ) {
1899 x = wid->geometry().x(); 1899 x = wid->geometry().x();
1900 y = wid->geometry().y(); 1900 y = wid->geometry().y();
1901 w = wid->width(); 1901 w = wid->width();
1902 h = wid->height(); 1902 h = wid->height();
1903 list.clear(); 1903 list.clear();
1904 list << QString::number( x ); 1904 list << QString::number( x );
1905 list << QString::number( y ); 1905 list << QString::number( y );
1906 list << QString::number( w ); 1906 list << QString::number( w );
1907 list << QString::number( h ); 1907 list << QString::number( h );
1908 config->writeEntry("SearchLayout",list ); 1908 config->writeEntry("SearchLayout",list );
1909 } 1909 }
1910#endif 1910#endif
1911 1911
1912 1912
1913 config->sync(); 1913 config->sync();
1914} 1914}
1915 1915
1916void CalendarView::readFilterSettings(KConfig *config) 1916void CalendarView::readFilterSettings(KConfig *config)
1917{ 1917{
1918 // kdDebug() << "CalendarView::readFilterSettings()" << endl; 1918 // kdDebug() << "CalendarView::readFilterSettings()" << endl;
1919 1919
1920 mFilters.clear(); 1920 mFilters.clear();
1921 1921
1922 config->setGroup("General"); 1922 config->setGroup("General");
1923 QStringList filterList = config->readListEntry("CalendarFilters"); 1923 QStringList filterList = config->readListEntry("CalendarFilters");
1924 1924
1925 QStringList::ConstIterator it = filterList.begin(); 1925 QStringList::ConstIterator it = filterList.begin();
1926 QStringList::ConstIterator end = filterList.end(); 1926 QStringList::ConstIterator end = filterList.end();
1927 while(it != end) { 1927 while(it != end) {
1928 // kdDebug() << " filter: " << (*it) << endl; 1928 // kdDebug() << " filter: " << (*it) << endl;
1929 1929
1930 CalFilter *filter; 1930 CalFilter *filter;
1931 filter = new CalFilter(*it); 1931 filter = new CalFilter(*it);
1932 config->setGroup("Filter_" + (*it)); 1932 config->setGroup("Filter_" + (*it));
1933 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) ); 1933 //qDebug("readFilterSettings %d ",config->readNumEntry("Criteria",0) );
1934 filter->setCriteria(config->readNumEntry("Criteria",0)); 1934 filter->setCriteria(config->readNumEntry("Criteria",0));
1935 filter->setCategoryList(config->readListEntry("CategoryList")); 1935 filter->setCategoryList(config->readListEntry("CategoryList"));
1936 mFilters.append(filter); 1936 mFilters.append(filter);
1937 1937
1938 ++it; 1938 ++it;
1939 } 1939 }
1940 1940
1941 if (mFilters.count() == 0) { 1941 if (mFilters.count() == 0) {
1942 CalFilter *filter = new CalFilter(i18n("Default")); 1942 CalFilter *filter = new CalFilter(i18n("Default"));
1943 mFilters.append(filter); 1943 mFilters.append(filter);
1944 } 1944 }
1945 mFilterView->updateFilters(); 1945 mFilterView->updateFilters();
1946 config->setGroup("FilterView"); 1946 config->setGroup("FilterView");
1947 1947
1948 mFilterView->blockSignals(true); 1948 mFilterView->blockSignals(true);
1949 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled")); 1949 mFilterView->setFiltersEnabled(config->readBoolEntry("FilterEnabled"));
1950 mFilterView->setSelectedFilter(config->readEntry("Current Filter")); 1950 mFilterView->setSelectedFilter(config->readEntry("Current Filter"));
1951 mFilterView->blockSignals(false); 1951 mFilterView->blockSignals(false);
1952 // We do it manually to avoid it being done twice by the above calls 1952 // We do it manually to avoid it being done twice by the above calls
1953 updateFilter(); 1953 updateFilter();
1954} 1954}
1955 1955
1956void CalendarView::writeFilterSettings(KConfig *config) 1956void CalendarView::writeFilterSettings(KConfig *config)
1957{ 1957{
1958 // kdDebug() << "CalendarView::writeFilterSettings()" << endl; 1958 // kdDebug() << "CalendarView::writeFilterSettings()" << endl;
1959 1959
1960 QStringList filterList; 1960 QStringList filterList;
1961 1961
1962 CalFilter *filter = mFilters.first(); 1962 CalFilter *filter = mFilters.first();
1963 while(filter) { 1963 while(filter) {
1964 // kdDebug() << " fn: " << filter->name() << endl; 1964 // kdDebug() << " fn: " << filter->name() << endl;
1965 filterList << filter->name(); 1965 filterList << filter->name();
1966 config->setGroup("Filter_" + filter->name()); 1966 config->setGroup("Filter_" + filter->name());
1967 config->writeEntry("Criteria",filter->criteria()); 1967 config->writeEntry("Criteria",filter->criteria());
1968 config->writeEntry("CategoryList",filter->categoryList()); 1968 config->writeEntry("CategoryList",filter->categoryList());
1969 filter = mFilters.next(); 1969 filter = mFilters.next();
1970 } 1970 }
1971 config->setGroup("General"); 1971 config->setGroup("General");
1972 config->writeEntry("CalendarFilters",filterList); 1972 config->writeEntry("CalendarFilters",filterList);
1973 1973
1974 config->setGroup("FilterView"); 1974 config->setGroup("FilterView");
1975 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled()); 1975 config->writeEntry("FilterEnabled",mFilterView->filtersEnabled());
1976 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name()); 1976 config->writeEntry("Current Filter",mFilterView->selectedFilter()->name());
1977} 1977}
1978 1978
1979 1979
1980void CalendarView::goToday() 1980void CalendarView::goToday()
1981{ 1981{
1982 mNavigator->selectToday(); 1982 mNavigator->selectToday();
1983} 1983}
1984 1984
1985void CalendarView::goNext() 1985void CalendarView::goNext()
1986{ 1986{
1987 mNavigator->selectNext(); 1987 mNavigator->selectNext();
1988} 1988}
1989 1989
1990void CalendarView::goPrevious() 1990void CalendarView::goPrevious()
1991{ 1991{
1992 mNavigator->selectPrevious(); 1992 mNavigator->selectPrevious();
1993} 1993}
1994void CalendarView::goNextMonth() 1994void CalendarView::goNextMonth()
1995{ 1995{
1996 mNavigator->selectNextMonth(); 1996 mNavigator->selectNextMonth();
1997} 1997}
1998 1998
1999void CalendarView::goPreviousMonth() 1999void CalendarView::goPreviousMonth()
2000{ 2000{
2001 mNavigator->selectPreviousMonth(); 2001 mNavigator->selectPreviousMonth();
2002} 2002}
2003void CalendarView::writeLocale() 2003void CalendarView::writeLocale()
2004{ 2004{
2005 //KPimGlobalPrefs::instance()->setGlobalConfig(); 2005 //KPimGlobalPrefs::instance()->setGlobalConfig();
2006#if 0 2006#if 0
2007 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime ); 2007 KGlobal::locale()->setHore24Format( !KOPrefs::instance()->mPreferredTime );
2008 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday ); 2008 KGlobal::locale()->setWeekStartMonday( !KOPrefs::instance()->mWeekStartsOnSunday );
2009 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate ); 2009 KGlobal::locale()->setIntDateFormat( (KLocale::IntDateFormat)KOPrefs::instance()->mPreferredDate );
2010 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage ); 2010 KGlobal::locale()->setLanguage( KOPrefs::instance()->mPreferredLanguage );
2011 QString dummy = KOPrefs::instance()->mUserDateFormatLong; 2011 QString dummy = KOPrefs::instance()->mUserDateFormatLong;
2012 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") )); 2012 KGlobal::locale()->setDateFormat(dummy.replace( QRegExp("K"), QString(",") ));
2013 dummy = KOPrefs::instance()->mUserDateFormatShort; 2013 dummy = KOPrefs::instance()->mUserDateFormatShort;
2014 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") )); 2014 KGlobal::locale()->setDateFormatShort(dummy.replace( QRegExp("K"), QString(",") ));
2015 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving, 2015 KGlobal::locale()->setDaylightSaving( KOPrefs::instance()->mUseDaylightsaving,
2016 KOPrefs::instance()->mDaylightsavingStart, 2016 KOPrefs::instance()->mDaylightsavingStart,
2017 KOPrefs::instance()->mDaylightsavingEnd ); 2017 KOPrefs::instance()->mDaylightsavingEnd );
2018 KGlobal::locale()->setTimezone( KOPrefs::instance()->mTimeZoneId ); 2018 KGlobal::locale()->setTimezone( KOPrefs::instance()->mTimeZoneId );
2019#endif 2019#endif
2020} 2020}
2021void CalendarView::updateConfig() 2021void CalendarView::updateConfig()
2022{ 2022{
2023 writeLocale(); 2023 writeLocale();
2024 if ( KOPrefs::instance()->mUseAppColors ) 2024 if ( KOPrefs::instance()->mUseAppColors )
2025 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true ); 2025 QApplication::setPalette( QPalette (KOPrefs::instance()->mAppColor1, KOPrefs::instance()->mAppColor2), true );
2026 emit configChanged(); 2026 emit configChanged();
2027 mTodoList->updateConfig(); 2027 mTodoList->updateConfig();
2028 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont); 2028 // mDateNavigator->setFont ( KOPrefs::instance()->mDateNavigatorFont);
2029 mCalendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 2029 mCalendar->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
2030 // To make the "fill window" configurations work 2030 // To make the "fill window" configurations work
2031 //mViewManager->raiseCurrentView(); 2031 //mViewManager->raiseCurrentView();
2032} 2032}
2033 2033
2034 2034
2035void CalendarView::eventChanged(Event *event) 2035void CalendarView::eventChanged(Event *event)
2036{ 2036{
2037 changeEventDisplay(event,KOGlobals::EVENTEDITED); 2037 changeEventDisplay(event,KOGlobals::EVENTEDITED);
2038 //updateUnmanagedViews(); 2038 //updateUnmanagedViews();
2039} 2039}
2040 2040
2041void CalendarView::eventAdded(Event *event) 2041void CalendarView::eventAdded(Event *event)
2042{ 2042{
2043 changeEventDisplay(event,KOGlobals::EVENTADDED); 2043 changeEventDisplay(event,KOGlobals::EVENTADDED);
2044} 2044}
2045 2045
2046void CalendarView::eventToBeDeleted(Event *) 2046void CalendarView::eventToBeDeleted(Event *)
2047{ 2047{
2048 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl; 2048 kdDebug() << "CalendarView::eventToBeDeleted(): to be implemented" << endl;
2049} 2049}
2050 2050
2051void CalendarView::eventDeleted() 2051void CalendarView::eventDeleted()
2052{ 2052{
2053 changeEventDisplay(0,KOGlobals::EVENTDELETED); 2053 changeEventDisplay(0,KOGlobals::EVENTDELETED);
2054} 2054}
2055void CalendarView::changeTodoDisplay(Todo *which, int action) 2055void CalendarView::changeTodoDisplay(Todo *which, int action)
2056{ 2056{
2057 changeIncidenceDisplay((Incidence *)which, action); 2057 changeIncidenceDisplay((Incidence *)which, action);
2058 mDateNavigator->updateView(); //LR 2058 mDateNavigator->updateView(); //LR
2059 //mDialogManager->updateSearchDialog(); 2059 //mDialogManager->updateSearchDialog();
2060 2060
2061 if (which) { 2061 if (which) {
2062 mViewManager->updateWNview(); 2062 mViewManager->updateWNview();
2063 //mTodoList->updateView(); 2063 //mTodoList->updateView();
2064 } 2064 }
2065 2065
2066} 2066}
2067 2067
2068void CalendarView::changeIncidenceDisplay(Incidence *which, int action) 2068void CalendarView::changeIncidenceDisplay(Incidence *which, int action)
2069{ 2069{
2070 updateUnmanagedViews(); 2070 updateUnmanagedViews();
2071 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action ); 2071 //qDebug(" CalendarView::changeIncidenceDisplay++++++++++++++++++++++++++ %d %d ",which, action );
2072 if ( action == KOGlobals::EVENTDELETED ) { //delete 2072 if ( action == KOGlobals::EVENTDELETED ) { //delete
2073 mCalendar->checkAlarmForIncidence( 0, true ); 2073 mCalendar->checkAlarmForIncidence( 0, true );
2074 if ( mEventViewerDialog ) 2074 if ( mEventViewerDialog )
2075 mEventViewerDialog->hide(); 2075 mEventViewerDialog->hide();
2076 } 2076 }
2077 else 2077 else
2078 mCalendar->checkAlarmForIncidence( which , false ); 2078 mCalendar->checkAlarmForIncidence( which , false );
2079} 2079}
2080 2080
2081// most of the changeEventDisplays() right now just call the view's 2081// most of the changeEventDisplays() right now just call the view's
2082// total update mode, but they SHOULD be recoded to be more refresh-efficient. 2082// total update mode, but they SHOULD be recoded to be more refresh-efficient.
2083void CalendarView::changeEventDisplay(Event *which, int action) 2083void CalendarView::changeEventDisplay(Event *which, int action)
2084{ 2084{
2085 // kdDebug() << "CalendarView::changeEventDisplay" << endl; 2085 // kdDebug() << "CalendarView::changeEventDisplay" << endl;
2086 changeIncidenceDisplay((Incidence *)which, action); 2086 changeIncidenceDisplay((Incidence *)which, action);
2087 mDateNavigator->updateView(); 2087 mDateNavigator->updateView();
2088 //mDialogManager->updateSearchDialog(); 2088 //mDialogManager->updateSearchDialog();
2089 2089
2090 if (which) { 2090 if (which) {
2091 // If there is an event view visible update the display 2091 // If there is an event view visible update the display
2092 mViewManager->currentView()->changeEventDisplay(which,action); 2092 mViewManager->currentView()->changeEventDisplay(which,action);
2093 // TODO: check, if update needed 2093 // TODO: check, if update needed
2094 // if (which->getTodoStatus()) { 2094 // if (which->getTodoStatus()) {
2095 mTodoList->updateView(); 2095 mTodoList->updateView();
2096 // } 2096 // }
2097 } else { 2097 } else {
2098 mViewManager->currentView()->updateView(); 2098 mViewManager->currentView()->updateView();
2099 } 2099 }
2100} 2100}
2101 2101
2102 2102
2103void CalendarView::updateTodoViews() 2103void CalendarView::updateTodoViews()
2104{ 2104{
2105 2105
2106 mTodoList->updateView(); 2106 mTodoList->updateView();
2107 mViewManager->currentView()->updateView(); 2107 mViewManager->currentView()->updateView();
2108 2108
2109} 2109}
2110 2110
2111 2111
2112void CalendarView::updateView(const QDate &start, const QDate &end) 2112void CalendarView::updateView(const QDate &start, const QDate &end)
2113{ 2113{
2114 mTodoList->updateView(); 2114 mTodoList->updateView();
2115 mViewManager->updateView(start, end); 2115 mViewManager->updateView(start, end);
2116 //mDateNavigator->updateView(); 2116 //mDateNavigator->updateView();
2117} 2117}
2118 2118
2119void CalendarView::updateView() 2119void CalendarView::updateView()
2120{ 2120{
2121 DateList tmpList = mNavigator->selectedDates(); 2121 DateList tmpList = mNavigator->selectedDates();
2122 2122
2123 // We assume that the navigator only selects consecutive days. 2123 // We assume that the navigator only selects consecutive days.
2124 updateView( tmpList.first(), tmpList.last() ); 2124 updateView( tmpList.first(), tmpList.last() );
2125} 2125}
2126 2126
2127void CalendarView::updateUnmanagedViews() 2127void CalendarView::updateUnmanagedViews()
2128{ 2128{
2129 mDateNavigator->updateDayMatrix(); 2129 mDateNavigator->updateDayMatrix();
2130} 2130}
2131 2131
2132int CalendarView::msgItemDelete() 2132int CalendarView::msgItemDelete()
2133{ 2133{
2134 return KMessageBox::warningContinueCancel(this, 2134 return KMessageBox::warningContinueCancel(this,
2135 i18n("This item will be\npermanently deleted."), 2135 i18n("This item will be\npermanently deleted."),
2136 i18n("KO/Pi Confirmation"),i18n("Delete")); 2136 i18n("KO/Pi Confirmation"),i18n("Delete"));
2137} 2137}
2138 2138
2139 2139
2140void CalendarView::edit_cut() 2140void CalendarView::edit_cut()
2141{ 2141{
2142 Event *anEvent=0; 2142 Event *anEvent=0;
2143 2143
2144 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2144 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2145 2145
2146 if (mViewManager->currentView()->isEventView()) { 2146 if (mViewManager->currentView()->isEventView()) {
2147 if ( incidence && incidence->type() == "Event" ) { 2147 if ( incidence && incidence->type() == "Event" ) {
2148 anEvent = static_cast<Event *>(incidence); 2148 anEvent = static_cast<Event *>(incidence);
2149 } 2149 }
2150 } 2150 }
2151 2151
2152 if (!anEvent) { 2152 if (!anEvent) {
2153 KNotifyClient::beep(); 2153 KNotifyClient::beep();
2154 return; 2154 return;
2155 } 2155 }
2156 DndFactory factory( mCalendar ); 2156 DndFactory factory( mCalendar );
2157 factory.cutEvent(anEvent); 2157 factory.cutEvent(anEvent);
2158 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED); 2158 changeEventDisplay(anEvent, KOGlobals::EVENTDELETED);
2159} 2159}
2160 2160
2161void CalendarView::edit_copy() 2161void CalendarView::edit_copy()
2162{ 2162{
2163 Event *anEvent=0; 2163 Event *anEvent=0;
2164 2164
2165 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first(); 2165 Incidence *incidence = mViewManager->currentView()->selectedIncidences().first();
2166 2166
2167 if (mViewManager->currentView()->isEventView()) { 2167 if (mViewManager->currentView()->isEventView()) {
2168 if ( incidence && incidence->type() == "Event" ) { 2168 if ( incidence && incidence->type() == "Event" ) {
2169 anEvent = static_cast<Event *>(incidence); 2169 anEvent = static_cast<Event *>(incidence);
2170 } 2170 }
2171 } 2171 }
2172 2172
2173 if (!anEvent) { 2173 if (!anEvent) {
2174 KNotifyClient::beep(); 2174 KNotifyClient::beep();
2175 return; 2175 return;
2176 } 2176 }
2177 DndFactory factory( mCalendar ); 2177 DndFactory factory( mCalendar );
2178 factory.copyEvent(anEvent); 2178 factory.copyEvent(anEvent);
2179} 2179}
2180 2180
2181void CalendarView::edit_paste() 2181void CalendarView::edit_paste()
2182{ 2182{
2183 QDate date = mNavigator->selectedDates().first(); 2183 QDate date = mNavigator->selectedDates().first();
2184 2184
2185 DndFactory factory( mCalendar ); 2185 DndFactory factory( mCalendar );
2186 Event *pastedEvent = factory.pasteEvent( date ); 2186 Event *pastedEvent = factory.pasteEvent( date );
2187 2187
2188 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED ); 2188 changeEventDisplay( pastedEvent, KOGlobals::EVENTADDED );
2189} 2189}
2190 2190
2191void CalendarView::edit_options() 2191void CalendarView::edit_options()
2192{ 2192{
2193 mDialogManager->showOptionsDialog(); 2193 mDialogManager->showOptionsDialog();
2194 //writeSettings(); 2194 //writeSettings();
2195} 2195}
2196void CalendarView::edit_sync_options() 2196void CalendarView::edit_sync_options()
2197{ 2197{
2198 //mDialogManager->showSyncOptions(); 2198 //mDialogManager->showSyncOptions();
2199 //KOPrefs::instance()->mSyncAlgoPrefs 2199 //KOPrefs::instance()->mSyncAlgoPrefs
2200 QDialog dia( this, "dia", true ); 2200 QDialog dia( this, "dia", true );
2201 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice ); 2201 dia.setCaption( i18n("Device: " ) +mCurrentSyncDevice );
2202 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia); 2202 QButtonGroup gr ( 1, Qt::Horizontal, i18n("Sync preferences"), &dia);
2203 QVBoxLayout lay ( &dia ); 2203 QVBoxLayout lay ( &dia );
2204 lay.setSpacing( 2 ); 2204 lay.setSpacing( 2 );
2205 lay.setMargin( 3 ); 2205 lay.setMargin( 3 );
2206 lay.addWidget(&gr); 2206 lay.addWidget(&gr);
2207 QRadioButton loc ( i18n("Take local entry on conflict"), &gr ); 2207 QRadioButton loc ( i18n("Take local entry on conflict"), &gr );
2208 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr ); 2208 QRadioButton rem ( i18n("Take remote entry on conflict"), &gr );
2209 QRadioButton newest( i18n("Take newest entry on conflict"), &gr ); 2209 QRadioButton newest( i18n("Take newest entry on conflict"), &gr );
2210 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr ); 2210 QRadioButton ask( i18n("Ask for every entry on conflict"), &gr );
2211 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr ); 2211 QRadioButton f_loc( i18n("Force: Take local entry always"), &gr );
2212 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr ); 2212 QRadioButton f_rem( i18n("Force: Take remote entry always"), &gr );
2213 //QRadioButton both( i18n("Take both on conflict"), &gr ); 2213 //QRadioButton both( i18n("Take both on conflict"), &gr );
2214 QPushButton pb ( "OK", &dia); 2214 QPushButton pb ( "OK", &dia);
2215 lay.addWidget( &pb ); 2215 lay.addWidget( &pb );
2216 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) ); 2216 connect(&pb, SIGNAL( clicked() ), &dia, SLOT ( accept() ) );
2217 switch ( KOPrefs::instance()->mSyncAlgoPrefs ) { 2217 switch ( KOPrefs::instance()->mSyncAlgoPrefs ) {
2218 case 0: 2218 case 0:
2219 loc.setChecked( true); 2219 loc.setChecked( true);
2220 break; 2220 break;
2221 case 1: 2221 case 1:
2222 rem.setChecked( true ); 2222 rem.setChecked( true );
2223 break; 2223 break;
2224 case 2: 2224 case 2:
2225 newest.setChecked( true); 2225 newest.setChecked( true);
2226 break; 2226 break;
2227 case 3: 2227 case 3:
2228 ask.setChecked( true); 2228 ask.setChecked( true);
2229 break; 2229 break;
2230 case 4: 2230 case 4:
2231 f_loc.setChecked( true); 2231 f_loc.setChecked( true);
2232 break; 2232 break;
2233 case 5: 2233 case 5:
2234 f_rem.setChecked( true); 2234 f_rem.setChecked( true);
2235 break; 2235 break;
2236 case 6: 2236 case 6:
2237 // both.setChecked( true); 2237 // both.setChecked( true);
2238 break; 2238 break;
2239 default: 2239 default:
2240 break; 2240 break;
2241 } 2241 }
2242 if ( dia.exec() ) { 2242 if ( dia.exec() ) {
2243 KOPrefs::instance()->mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ; 2243 KOPrefs::instance()->mSyncAlgoPrefs = rem.isChecked()*1+newest.isChecked()*2+ ask.isChecked()*3+ f_loc.isChecked()*4+ f_rem.isChecked()*5;//+ both.isChecked()*6 ;
2244 } 2244 }
2245 2245
2246} 2246}
2247 2247
2248void CalendarView::slotSelectPickerDate( QDate d) 2248void CalendarView::slotSelectPickerDate( QDate d)
2249{ 2249{
2250 mDateFrame->hide(); 2250 mDateFrame->hide();
2251 if ( mDatePickerMode == 1 ) { 2251 if ( mDatePickerMode == 1 ) {
2252 mNavigator->slotDaySelect( d ); 2252 mNavigator->slotDaySelect( d );
2253 } else if ( mDatePickerMode == 2 ) { 2253 } else if ( mDatePickerMode == 2 ) {
2254 if ( mMoveIncidence->type() == "Todo" ) { 2254 if ( mMoveIncidence->type() == "Todo" ) {
2255 Todo * to = (Todo *) mMoveIncidence; 2255 Todo * to = (Todo *) mMoveIncidence;
2256 QTime tim; 2256 QTime tim;
2257 if ( to->hasDueDate() ) 2257 if ( to->hasDueDate() )
2258 tim = to->dtDue().time(); 2258 tim = to->dtDue().time();
2259 else { 2259 else {
2260 tim = QTime ( 0,0,0 ); 2260 tim = QTime ( 0,0,0 );
2261 to->setFloats( true ); 2261 to->setFloats( true );
2262 to->setHasDueDate( true ); 2262 to->setHasDueDate( true );
2263 } 2263 }
2264 QDateTime dt ( d,tim ); 2264 QDateTime dt ( d,tim );
2265 to->setDtDue( dt ); 2265 to->setDtDue( dt );
2266 todoChanged( to ); 2266 todoChanged( to );
2267 } else { 2267 } else {
2268 QTime tim = mMoveIncidence->dtStart().time(); 2268 QTime tim = mMoveIncidence->dtStart().time();
2269 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd()); 2269 int secs = mMoveIncidence->dtStart().secsTo( mMoveIncidence->dtEnd());
2270 QDateTime dt ( d,tim ); 2270 QDateTime dt ( d,tim );
2271 mMoveIncidence->setDtStart( dt ); 2271 mMoveIncidence->setDtStart( dt );
2272 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) ); 2272 ((Event*)mMoveIncidence)->setDtEnd( dt.addSecs( secs ) );
2273 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED); 2273 changeEventDisplay((Event*)mMoveIncidence, KOGlobals::EVENTEDITED);
2274 } 2274 }
2275 2275
2276 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 ); 2276 mMoveIncidence->setRevision( mMoveIncidence->revision()+1 );
2277 } 2277 }
2278} 2278}
2279 2279
2280void CalendarView::removeCategories() 2280void CalendarView::removeCategories()
2281{ 2281{
2282 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 2282 QPtrList<Incidence> incList = mCalendar->rawIncidences();
2283 QStringList catList = KOPrefs::instance()->mCustomCategories; 2283 QStringList catList = KOPrefs::instance()->mCustomCategories;
2284 QStringList catIncList; 2284 QStringList catIncList;
2285 QStringList newCatList; 2285 QStringList newCatList;
2286 Incidence* inc = incList.first(); 2286 Incidence* inc = incList.first();
2287 int i; 2287 int i;
2288 int count = 0; 2288 int count = 0;
2289 while ( inc ) { 2289 while ( inc ) {
2290 newCatList.clear(); 2290 newCatList.clear();
2291 catIncList = inc->categories() ; 2291 catIncList = inc->categories() ;
2292 for( i = 0; i< catIncList.count(); ++i ) { 2292 for( i = 0; i< catIncList.count(); ++i ) {
2293 if ( catList.contains (catIncList[i])) 2293 if ( catList.contains (catIncList[i]))
2294 newCatList.append( catIncList[i] ); 2294 newCatList.append( catIncList[i] );
2295 } 2295 }
2296 newCatList.sort(); 2296 newCatList.sort();
2297 inc->setCategories( newCatList.join(",") ); 2297 inc->setCategories( newCatList.join(",") );
2298 inc = incList.next(); 2298 inc = incList.next();
2299 } 2299 }
2300} 2300}
2301 2301
2302int CalendarView::addCategories() 2302int CalendarView::addCategories()
2303{ 2303{
2304 QPtrList<Incidence> incList = mCalendar->rawIncidences(); 2304 QPtrList<Incidence> incList = mCalendar->rawIncidences();
2305 QStringList catList = KOPrefs::instance()->mCustomCategories; 2305 QStringList catList = KOPrefs::instance()->mCustomCategories;
2306 QStringList catIncList; 2306 QStringList catIncList;
2307 Incidence* inc = incList.first(); 2307 Incidence* inc = incList.first();
2308 int i; 2308 int i;
2309 int count = 0; 2309 int count = 0;
2310 while ( inc ) { 2310 while ( inc ) {
2311 catIncList = inc->categories() ; 2311 catIncList = inc->categories() ;
2312 for( i = 0; i< catIncList.count(); ++i ) { 2312 for( i = 0; i< catIncList.count(); ++i ) {
2313 if ( !catList.contains (catIncList[i])) { 2313 if ( !catList.contains (catIncList[i])) {
2314 catList.append( catIncList[i] ); 2314 catList.append( catIncList[i] );
2315 //qDebug("add cat %s ", catIncList[i].latin1()); 2315 //qDebug("add cat %s ", catIncList[i].latin1());
2316 ++count; 2316 ++count;
2317 } 2317 }
2318 } 2318 }
2319 inc = incList.next(); 2319 inc = incList.next();
2320 } 2320 }
2321 catList.sort(); 2321 catList.sort();
2322 KOPrefs::instance()->mCustomCategories = catList; 2322 KOPrefs::instance()->mCustomCategories = catList;
2323 return count; 2323 return count;
2324} 2324}
2325 2325
2326void CalendarView::manageCategories() 2326void CalendarView::manageCategories()
2327{ 2327{
2328 KOCatPrefs* cp = new KOCatPrefs(); 2328 KOCatPrefs* cp = new KOCatPrefs();
2329 cp->show(); 2329 cp->show();
2330 int w =cp->sizeHint().width() ; 2330 int w =cp->sizeHint().width() ;
2331 int h = cp->sizeHint().height() ; 2331 int h = cp->sizeHint().height() ;
2332 int dw = QApplication::desktop()->width(); 2332 int dw = QApplication::desktop()->width();
2333 int dh = QApplication::desktop()->height(); 2333 int dh = QApplication::desktop()->height();
2334 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2334 cp->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2335 if ( !cp->exec() ) { 2335 if ( !cp->exec() ) {
2336 delete cp; 2336 delete cp;
2337 return; 2337 return;
2338 } 2338 }
2339 int count = 0; 2339 int count = 0;
2340 if ( cp->addCat() ) { 2340 if ( cp->addCat() ) {
2341 count = addCategories(); 2341 count = addCategories();
2342 if ( count ) { 2342 if ( count ) {
2343 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! ")); 2343 topLevelWidget()->setCaption(QString::number( count )+ i18n(" Categories added to list! "));
2344 writeSettings(); 2344 writeSettings();
2345 } 2345 }
2346 } else { 2346 } else {
2347 removeCategories(); 2347 removeCategories();
2348 updateView(); 2348 updateView();
2349 } 2349 }
2350 delete cp; 2350 delete cp;
2351} 2351}
2352 2352
2353void CalendarView::beamIncidence(Incidence * Inc) 2353void CalendarView::beamIncidence(Incidence * Inc)
2354{ 2354{
2355 QPtrList<Incidence> delSel ; 2355 QPtrList<Incidence> delSel ;
2356 delSel.append(Inc); 2356 delSel.append(Inc);
2357 beamIncidenceList( delSel ); 2357 beamIncidenceList( delSel );
2358} 2358}
2359void CalendarView::beamCalendar() 2359void CalendarView::beamCalendar()
2360{ 2360{
2361 QPtrList<Incidence> delSel = mCalendar->rawIncidences(); 2361 QPtrList<Incidence> delSel = mCalendar->rawIncidences();
2362 //qDebug("beamCalendar() "); 2362 //qDebug("beamCalendar() ");
2363 beamIncidenceList( delSel ); 2363 beamIncidenceList( delSel );
2364} 2364}
2365void CalendarView::beamFilteredCalendar() 2365void CalendarView::beamFilteredCalendar()
2366{ 2366{
2367 QPtrList<Incidence> delSel = mCalendar->incidences(); 2367 QPtrList<Incidence> delSel = mCalendar->incidences();
2368 //qDebug("beamFilteredCalendar() "); 2368 //qDebug("beamFilteredCalendar() ");
2369 beamIncidenceList( delSel ); 2369 beamIncidenceList( delSel );
2370} 2370}
2371void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel ) 2371void CalendarView::beamIncidenceList(QPtrList<Incidence> delSel )
2372{ 2372{
2373 if ( beamDialog->exec () == QDialog::Rejected ) 2373 if ( beamDialog->exec () == QDialog::Rejected )
2374 return; 2374 return;
2375 2375
2376 QString fn = "/tmp/kopibeamfile"; 2376 QString fn = "/tmp/kopibeamfile";
2377 QString mes; 2377 QString mes;
2378 bool createbup = true; 2378 bool createbup = true;
2379 if ( createbup ) { 2379 if ( createbup ) {
2380 QString description = "\n"; 2380 QString description = "\n";
2381 CalendarLocal* cal = new CalendarLocal(); 2381 CalendarLocal* cal = new CalendarLocal();
2382 if ( beamDialog->beamLocal() ) 2382 if ( beamDialog->beamLocal() )
2383 cal->setLocalTime(); 2383 cal->setLocalTime();
2384 else 2384 else
2385 cal->setTimeZoneId(KOPrefs::instance()->mTimeZoneId); 2385 cal->setTimeZoneId(KOPrefs::instance()->mTimeZoneId);
2386 Incidence *incidence = delSel.first(); 2386 Incidence *incidence = delSel.first();
2387 bool addText = false; 2387 bool addText = false;
2388 if ( delSel.count() < 10 ) 2388 if ( delSel.count() < 10 )
2389 addText = true; 2389 addText = true;
2390 else { 2390 else {
2391 description.sprintf(i18n(" %d items?"),delSel.count() ); 2391 description.sprintf(i18n(" %d items?"),delSel.count() );
2392 } 2392 }
2393 while ( incidence ) { 2393 while ( incidence ) {
2394 Incidence *in = incidence->clone(); 2394 Incidence *in = incidence->clone();
2395 if ( addText ) 2395 if ( addText )
2396 description += in->summary() + "\n"; 2396 description += in->summary() + "\n";
2397 cal->addIncidence( in ); 2397 cal->addIncidence( in );
2398 incidence = delSel.next(); 2398 incidence = delSel.next();
2399 } 2399 }
2400 if ( beamDialog->beamVcal() ) { 2400 if ( beamDialog->beamVcal() ) {
2401 fn += ".vcs"; 2401 fn += ".vcs";
2402 FileStorage storage( cal, fn, new VCalFormat ); 2402 FileStorage storage( cal, fn, new VCalFormat );
2403 storage.save(); 2403 storage.save();
2404 } else { 2404 } else {
2405 fn += ".ics"; 2405 fn += ".ics";
2406 FileStorage storage( cal, fn, new ICalFormat( ) ); 2406 FileStorage storage( cal, fn, new ICalFormat( ) );
2407 storage.save(); 2407 storage.save();
2408 } 2408 }
2409 delete cal; 2409 delete cal;
2410 mes = i18n("KO/Pi: Ready for beaming"); 2410 mes = i18n("KO/Pi: Ready for beaming");
2411 setCaption(mes); 2411 setCaption(mes);
2412 2412
2413#ifndef DESKTOP_VERSION 2413#ifndef DESKTOP_VERSION
2414 Ir *ir = new Ir( this ); 2414 Ir *ir = new Ir( this );
2415 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) ); 2415 connect( ir, SIGNAL( done( Ir * ) ), this, SLOT( beamDone( Ir * ) ) );
2416 ir->send( fn, description, "text/x-vCalendar" ); 2416 ir->send( fn, description, "text/x-vCalendar" );
2417#endif 2417#endif
2418 } 2418 }
2419} 2419}
2420void CalendarView::beamDone( Ir *ir ) 2420void CalendarView::beamDone( Ir *ir )
2421{ 2421{
2422#ifndef DESKTOP_VERSION 2422#ifndef DESKTOP_VERSION
2423 delete ir; 2423 delete ir;
2424#endif 2424#endif
2425} 2425}
2426 2426
2427void CalendarView::moveIncidence(Incidence * inc ) 2427void CalendarView::moveIncidence(Incidence * inc )
2428{ 2428{
2429 if ( !inc ) return; 2429 if ( !inc ) return;
2430 // qDebug("showDatePickerForIncidence( ) "); 2430 // qDebug("showDatePickerForIncidence( ) ");
2431 if ( mDateFrame->isVisible() ) 2431 if ( mDateFrame->isVisible() )
2432 mDateFrame->hide(); 2432 mDateFrame->hide();
2433 else { 2433 else {
2434 int w =mDatePicker->sizeHint().width()+2*mDateFrame->lineWidth() ; 2434 int w =mDatePicker->sizeHint().width()+2*mDateFrame->lineWidth() ;
2435 int h = mDatePicker->sizeHint().height()+2*mDateFrame->lineWidth() ; 2435 int h = mDatePicker->sizeHint().height()+2*mDateFrame->lineWidth() ;
2436 int dw = QApplication::desktop()->width(); 2436 int dw = QApplication::desktop()->width();
2437 int dh = QApplication::desktop()->height(); 2437 int dh = QApplication::desktop()->height();
2438 mDateFrame->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 2438 mDateFrame->setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
2439 mDateFrame->show(); 2439 mDateFrame->show();
2440 } 2440 }
2441 mDatePickerMode = 2; 2441 mDatePickerMode = 2;
2442 mMoveIncidence = inc ; 2442 mMoveIncidence = inc ;
2443 QDate da; 2443 QDate da;
2444 if ( mMoveIncidence->type() == "Todo" ) { 2444 if ( mMoveIncidence->type() == "Todo" ) {
2445 Todo * to = (Todo *) mMoveIncidence; 2445 Todo * to = (Todo *) mMoveIncidence;
2446 if ( to->hasDueDate() ) 2446 if ( to->hasDueDate() )
2447 da = to->dtDue().date(); 2447 da = to->dtDue().date();
2448 else 2448 else
2449 da = QDate::currentDate(); 2449 da = QDate::currentDate();
2450 } else { 2450 } else {
2451 da = mMoveIncidence->dtStart().date(); 2451 da = mMoveIncidence->dtStart().date();
2452 } 2452 }
2453 mDatePicker->setDate( da ); 2453 mDatePicker->setDate( da );
2454} 2454}
2455void CalendarView::showDatePicker( ) 2455void CalendarView::showDatePicker( )
2456{ 2456{
2457 //qDebug("CalendarView::showDatePicker( ) "); 2457 //qDebug("CalendarView::showDatePicker( ) ");
2458 if ( mDateFrame->isVisible() ) 2458 if ( mDateFrame->isVisible() )
2459 mDateFrame->hide(); 2459 mDateFrame->hide();
2460 else { 2460 else {
2461 int w =mDatePicker->sizeHint().width() ; 2461 int w =mDatePicker->sizeHint().width() ;
2462 int h = mDatePicker->sizeHint().height() ; 2462 int h = mDatePicker->sizeHint().height() ;
2463 int dw = QApplication::desktop()->width(); 2463 int dw = QApplication::desktop()->width();
2464 int dh = QApplication::desktop()->height(); 2464 int dh = QApplication::desktop()->height();