summaryrefslogtreecommitdiffabout
path: root/korganizer
Unidiff
Diffstat (limited to 'korganizer') (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/kolistview.cpp22
1 files changed, 21 insertions, 1 deletions
diff --git a/korganizer/kolistview.cpp b/korganizer/kolistview.cpp
index b378330..192f8c0 100644
--- a/korganizer/kolistview.cpp
+++ b/korganizer/kolistview.cpp
@@ -385,1054 +385,1074 @@ KOListView::KOListView(Calendar *calendar, QWidget *parent,
385 QObject::connect(mListView,SIGNAL(showIncidence(Incidence *)), 385 QObject::connect(mListView,SIGNAL(showIncidence(Incidence *)),
386 SIGNAL(showIncidenceSignal(Incidence *)) ); 386 SIGNAL(showIncidenceSignal(Incidence *)) );
387 387
388 readSettings(KOGlobals::config(),"KOListView Layout"); 388 readSettings(KOGlobals::config(),"KOListView Layout");
389} 389}
390 390
391KOListView::~KOListView() 391KOListView::~KOListView()
392{ 392{
393 delete mPopupMenu; 393 delete mPopupMenu;
394#if QT_VERSION >= 0x030000 394#if QT_VERSION >= 0x030000
395 395
396#else 396#else
397 delete mKOListViewWhatsThis; 397 delete mKOListViewWhatsThis;
398#endif 398#endif
399} 399}
400 400
401void KOListView::catChanged( Incidence* inc) 401void KOListView::catChanged( Incidence* inc)
402{ 402{
403 KOListViewItem* item = getItemForEvent(inc); 403 KOListViewItem* item = getItemForEvent(inc);
404 if (item) { 404 if (item) {
405 ListItemVisitor v(item, mStartDate ); 405 ListItemVisitor v(item, mStartDate );
406 inc->accept(v); 406 inc->accept(v);
407 } 407 }
408} 408}
409QString KOListView::getWhatsThisText(QPoint p) 409QString KOListView::getWhatsThisText(QPoint p)
410{ 410{
411 KOListViewItem* item = ( KOListViewItem* ) mListView->itemAt( p ); 411 KOListViewItem* item = ( KOListViewItem* ) mListView->itemAt( p );
412 if ( item ) 412 if ( item )
413 return KIncidenceFormatter::instance()->getFormattedText( item->data(), 413 return KIncidenceFormatter::instance()->getFormattedText( item->data(),
414 KOPrefs::instance()->mWTshowDetails, 414 KOPrefs::instance()->mWTshowDetails,
415 KOPrefs::instance()->mWTshowCreated, 415 KOPrefs::instance()->mWTshowCreated,
416 KOPrefs::instance()->mWTshowChanged); 416 KOPrefs::instance()->mWTshowChanged);
417 return i18n("That is the list view" ); 417 return i18n("That is the list view" );
418 418
419} 419}
420 420
421void KOListView::setCalendar( int c ) 421void KOListView::setCalendar( int c )
422{ 422{
423 int result = QMessageBox::warning( this, i18n("KO/Pi: Information!"), 423 int result = QMessageBox::warning( this, i18n("KO/Pi: Information!"),
424 i18n("This adds the selected\nitems to the calendar\n%1\nand removes them from\ntheir current calendar!").arg( KOPrefs::instance()->calName( c ) ), 424 i18n("This adds the selected\nitems to the calendar\n%1\nand removes them from\ntheir current calendar!").arg( KOPrefs::instance()->calName( c ) ),
425 i18n("Continue"), i18n("Cancel"), 0, 425 i18n("Continue"), i18n("Cancel"), 0,
426 0, 1 ); 426 0, 1 );
427 if ( result != 0 ) { 427 if ( result != 0 ) {
428 return; 428 return;
429 } 429 }
430 430
431 QPtrList<Incidence> delSel = getSelectedIncidences() ; 431 QPtrList<Incidence> delSel = getSelectedIncidences() ;
432 int icount = delSel.count(); 432 int icount = delSel.count();
433 if ( icount ) { 433 if ( icount ) {
434 Incidence *incidence = delSel.first(); 434 Incidence *incidence = delSel.first();
435 while ( incidence ) { 435 while ( incidence ) {
436 incidence->setCalID( c ); 436 incidence->setCalID( c );
437 KOListViewItem * item = getItemForEvent( incidence ); 437 KOListViewItem * item = getItemForEvent( incidence );
438 if ( item ) { 438 if ( item ) {
439 ListItemVisitor v(item, mStartDate ); 439 ListItemVisitor v(item, mStartDate );
440 incidence->accept(v); 440 incidence->accept(v);
441 } 441 }
442 incidence = delSel.next(); 442 incidence = delSel.next();
443 } 443 }
444 } 444 }
445 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars; 445 QPtrList<KopiCalendarFile> calendars = KOPrefs::instance()->mCalendars;
446 KopiCalendarFile * cal = calendars.first(); 446 KopiCalendarFile * cal = calendars.first();
447 while ( cal ) { 447 while ( cal ) {
448 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled ); 448 mCalendar->setCalendarEnabled( cal->mCalNumber,cal->isEnabled );
449 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled ); 449 mCalendar->setAlarmEnabled( cal->mCalNumber, cal->isAlarmEnabled );
450 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly ); 450 mCalendar->setReadOnly( cal->mCalNumber, cal->isReadOnly );
451 if ( cal->isStandard ) 451 if ( cal->isStandard )
452 mCalendar->setDefaultCalendar( cal->mCalNumber ); 452 mCalendar->setDefaultCalendar( cal->mCalNumber );
453 cal = calendars.next(); 453 cal = calendars.next();
454 } 454 }
455 mCalendar->setSyncEventsReadOnly(); 455 mCalendar->setSyncEventsReadOnly();
456 mCalendar->reInitAlarmSettings(); 456 mCalendar->reInitAlarmSettings();
457 457
458} 458}
459void KOListView::populateCalPopup() 459void KOListView::populateCalPopup()
460{ 460{
461 mCalPopup->clear(); 461 mCalPopup->clear();
462 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first(); 462 KopiCalendarFile * kkf = KOPrefs::instance()->mCalendars.first();
463 while ( kkf ) { 463 while ( kkf ) {
464 int index = mCalPopup->insertItem( kkf->mName+"...", kkf->mCalNumber); 464 int index = mCalPopup->insertItem( kkf->mName+"...", kkf->mCalNumber);
465 if ( kkf->mErrorOnLoad || kkf->isReadOnly ) 465 if ( kkf->mErrorOnLoad || kkf->isReadOnly )
466 mCalPopup->setItemEnabled( index, false ); 466 mCalPopup->setItemEnabled( index, false );
467 kkf = KOPrefs::instance()->mCalendars.next(); 467 kkf = KOPrefs::instance()->mCalendars.next();
468 } 468 }
469} 469}
470void KOListView::updateList() 470void KOListView::updateList()
471{ 471{
472 // qDebug(" KOListView::updateList() "); 472 // qDebug(" KOListView::updateList() ");
473 473
474} 474}
475 475
476void KOListView::clearList() 476void KOListView::clearList()
477{ 477{
478 clear (); 478 clear ();
479} 479}
480 480
481void KOListView::setCat() 481void KOListView::setCat()
482{ 482{
483 483
484 bool set = true; 484 bool set = true;
485 int result = KMessageBox::warningYesNoCancel(this, 485 int result = KMessageBox::warningYesNoCancel(this,
486 i18n("Do you want to <b>add</b> categories to the selected items or <b>reset</b> the list (i.e. remove current categories)?"), 486 i18n("Do you want to <b>add</b> categories to the selected items or <b>reset</b> the list (i.e. remove current categories)?"),
487 i18n("Set categories"), 487 i18n("Set categories"),
488 i18n("Add"), 488 i18n("Add"),
489 i18n("Reset")); 489 i18n("Reset"));
490 if (result == KMessageBox::Cancel) return; 490 if (result == KMessageBox::Cancel) return;
491 if (result == KMessageBox::Yes) set = false; 491 if (result == KMessageBox::Yes) set = false;
492 setCategories( set ); 492 setCategories( set );
493} 493}
494 494
495void KOListView::setAlarm() 495void KOListView::setAlarm()
496{ 496{
497 KOAlarmPrefs kap( this); 497 KOAlarmPrefs kap( this);
498 if ( !kap.exec() ) 498 if ( !kap.exec() )
499 return; 499 return;
500 QPtrList<Incidence> delSel = getSelectedIncidences( true, true, false, true ); // no journals, only due todos 500 QPtrList<Incidence> delSel = getSelectedIncidences( true, true, false, true ); // no journals, only due todos
501 Incidence* inc = delSel.first(); 501 Incidence* inc = delSel.first();
502 int count = 0; 502 int count = 0;
503 while ( inc ) { 503 while ( inc ) {
504 ++count; 504 ++count;
505 if (kap.mAlarmButton->isChecked()) { 505 if (kap.mAlarmButton->isChecked()) {
506 if (inc->alarms().count() == 0) 506 if (inc->alarms().count() == 0)
507 inc->newAlarm(); 507 inc->newAlarm();
508 Alarm *alarm = inc->alarms().first(); 508 Alarm *alarm = inc->alarms().first();
509 alarm->setEnabled(true); 509 alarm->setEnabled(true);
510 int j = kap.mAlarmTimeEdit->value()* -60; 510 int j = kap.mAlarmTimeEdit->value()* -60;
511 if (kap.mAlarmIncrCombo->currentItem() == 1) 511 if (kap.mAlarmIncrCombo->currentItem() == 1)
512 j = j * 60; 512 j = j * 60;
513 else if (kap.mAlarmIncrCombo->currentItem() == 2) 513 else if (kap.mAlarmIncrCombo->currentItem() == 2)
514 j = j * (60 * 24); 514 j = j * (60 * 24);
515 alarm->setStartOffset( j ); 515 alarm->setStartOffset( j );
516 516
517 if (!kap.mAlarmProgram.isEmpty() && kap.mAlarmProgramButton->isOn()) { 517 if (!kap.mAlarmProgram.isEmpty() && kap.mAlarmProgramButton->isOn()) {
518 alarm->setProcedureAlarm(kap.mAlarmProgram); 518 alarm->setProcedureAlarm(kap.mAlarmProgram);
519 } 519 }
520 else if (!kap.mAlarmSound.isEmpty() && kap.mAlarmSoundButton->isOn()) 520 else if (!kap.mAlarmSound.isEmpty() && kap.mAlarmSoundButton->isOn())
521 alarm->setAudioAlarm(kap.mAlarmSound); 521 alarm->setAudioAlarm(kap.mAlarmSound);
522 else 522 else
523 alarm->setType(Alarm::Invalid); 523 alarm->setType(Alarm::Invalid);
524 } else { 524 } else {
525 QPtrList<Alarm> alarms = inc->alarms(); 525 QPtrList<Alarm> alarms = inc->alarms();
526 Alarm *alarm; 526 Alarm *alarm;
527 for (alarm = alarms.first(); alarm; alarm = alarms.next() ) { 527 for (alarm = alarms.first(); alarm; alarm = alarms.next() ) {
528 alarm->setEnabled(false); 528 alarm->setEnabled(false);
529 alarm->setType(Alarm::Invalid); 529 alarm->setType(Alarm::Invalid);
530 } 530 }
531 } 531 }
532 KOListViewItem* item = getItemForEvent(inc); 532 KOListViewItem* item = getItemForEvent(inc);
533 if (item) { 533 if (item) {
534 ListItemVisitor v(item, mStartDate ); 534 ListItemVisitor v(item, mStartDate );
535 inc->accept(v); 535 inc->accept(v);
536 } 536 }
537 inc = delSel.next(); 537 inc = delSel.next();
538 } 538 }
539 topLevelWidget()->setCaption( i18n("Changed alarm for %1 items").arg( count ) ); 539 topLevelWidget()->setCaption( i18n("Changed alarm for %1 items").arg( count ) );
540 qDebug("KO: Set alarm for %d items", count); 540 qDebug("KO: Set alarm for %d items", count);
541 calendar()->reInitAlarmSettings(); 541 calendar()->reInitAlarmSettings();
542 QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); 542 QTimer::singleShot( 1, this, SLOT ( resetFocus() ) );
543} 543}
544void KOListView::setCategories( bool removeOld ) 544void KOListView::setCategories( bool removeOld )
545{ 545{
546 546
547 KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 ); 547 KPIM::CategorySelectDialog* csd = new KPIM::CategorySelectDialog( KOPrefs::instance(), 0 );
548 csd->setColorEnabled(); 548 csd->setColorEnabled();
549 if (! csd->exec()) { 549 if (! csd->exec()) {
550 delete csd; 550 delete csd;
551 return; 551 return;
552 } 552 }
553 QStringList catList = csd->selectedCategories(); 553 QStringList catList = csd->selectedCategories();
554 delete csd; 554 delete csd;
555 QPtrList<Incidence> delSel = getSelectedIncidences(); // all inc allowed; 555 QPtrList<Incidence> delSel = getSelectedIncidences(); // all inc allowed;
556 Incidence* inc = delSel.first(); 556 Incidence* inc = delSel.first();
557 while ( inc ) { 557 while ( inc ) {
558 if ( removeOld ) { 558 if ( removeOld ) {
559 inc->setCategories( catList, false ); 559 inc->setCategories( catList, false );
560 } else { 560 } else {
561 inc->addCategories( catList, false ); 561 inc->addCategories( catList, false );
562 } 562 }
563 KOListViewItem* item = getItemForEvent(inc); 563 KOListViewItem* item = getItemForEvent(inc);
564 if (item) { 564 if (item) {
565 ListItemVisitor v(item, mStartDate ); 565 ListItemVisitor v(item, mStartDate );
566 inc->accept(v); 566 inc->accept(v);
567 } 567 }
568 inc = delSel.next(); 568 inc = delSel.next();
569 } 569 }
570 QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); 570 QTimer::singleShot( 1, this, SLOT ( resetFocus() ) );
571} 571}
572 572
573void KOListView::beamSelected() 573void KOListView::beamSelected()
574{ 574{
575 QPtrList<Incidence> delSel = getSelectedIncidences() ; 575 QPtrList<Incidence> delSel = getSelectedIncidences() ;
576 if ( delSel.count() ) 576 if ( delSel.count() )
577 emit beamIncidenceList( delSel ); 577 emit beamIncidenceList( delSel );
578} 578}
579 579
580void KOListView::saveDescriptionToFile() 580void KOListView::saveDescriptionToFile()
581{ 581{
582 582
583 int result = QMessageBox::warning( this, i18n("KO/Pi: Information!"), 583 int result = QMessageBox::warning( this, i18n("KO/Pi: Information!"),
584 i18n("This saves the text/details of selected\nJournals and Events/Todos\nto a text file."), 584 i18n("This saves the text/details of selected\nJournals and Events/Todos\nto a text file."),
585 i18n("Continue"), i18n("Cancel"), 0, 585 i18n("Continue"), i18n("Cancel"), 0,
586 0, 1 ); 586 0, 1 );
587 if ( result != 0 ) { 587 if ( result != 0 ) {
588 return; 588 return;
589 } 589 }
590 QPtrList<Incidence> delSel = getSelectedIncidences() ; 590 QPtrList<Incidence> delSel = getSelectedIncidences() ;
591 int icount = delSel.count(); 591 int icount = delSel.count();
592 if ( icount ) { 592 if ( icount ) {
593 QString fn = KOPrefs::instance()->mLastSaveFile; 593 QString fn = KOPrefs::instance()->mLastSaveFile;
594 fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this ); 594 fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this );
595 595
596 if ( fn == "" ) 596 if ( fn == "" )
597 return; 597 return;
598 QFileInfo info; 598 QFileInfo info;
599 info.setFile( fn ); 599 info.setFile( fn );
600 QString mes; 600 QString mes;
601 bool createbup = true; 601 bool createbup = true;
602 if ( info. exists() ) { 602 if ( info. exists() ) {
603 mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); 603 mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) );
604 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, 604 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
605 i18n("Overwrite!"), i18n("Cancel"), 0, 605 i18n("Overwrite!"), i18n("Cancel"), 0,
606 0, 1 ); 606 0, 1 );
607 if ( result != 0 ) { 607 if ( result != 0 ) {
608 createbup = false; 608 createbup = false;
609 } 609 }
610 } 610 }
611 if ( createbup ) { 611 if ( createbup ) {
612 QString text = i18n("KO/Pi Description/Journal save file.\nSave date: ") + 612 QString text = i18n("KO/Pi Description/Journal save file.\nSave date: ") +
613 KGlobal::locale()->formatDateTime(QDateTime::currentDateTime(), false); 613 KGlobal::locale()->formatDateTime(QDateTime::currentDateTime(), false);
614 Incidence *incidence = delSel.first(); 614 Incidence *incidence = delSel.first();
615 icount = 0; 615 icount = 0;
616 while ( incidence ) { 616 while ( incidence ) {
617 if ( incidence->typeID() == journalID ) { 617 if ( incidence->typeID() == journalID ) {
618 text += "\n************************************\n"; 618 text += "\n************************************\n";
619 if ( !incidence->summary().isEmpty() ) 619 if ( !incidence->summary().isEmpty() )
620 text += i18n("Journal: %1 from ").arg( incidence->summary() ) +incidence->dtStartDateStr( false ); 620 text += i18n("Journal: %1 from ").arg( incidence->summary() ) +incidence->dtStartDateStr( false );
621 else 621 else
622 text += i18n("Journal from: ") +incidence->dtStartDateStr( false ); 622 text += i18n("Journal from: ") +incidence->dtStartDateStr( false );
623 if ( !incidence->location().isEmpty() ) 623 if ( !incidence->location().isEmpty() )
624 text +="\n(" + i18n("Location: ") + incidence->location()+ ")"; 624 text +="\n(" + i18n("Location: ") + incidence->location()+ ")";
625 text +="\n" + i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false); 625 text +="\n" + i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false);
626 text +="\n" + i18n("Description: ") + "\n"+ incidence->description(); 626 text +="\n" + i18n("Description: ") + "\n"+ incidence->description();
627 ++icount; 627 ++icount;
628 628
629 } else { 629 } else {
630 if ( !incidence->description().isEmpty() ) { 630 if ( !incidence->description().isEmpty() ) {
631 text += "\n************************************\n"; 631 text += "\n************************************\n";
632 if ( incidence->typeID() == todoID ) 632 if ( incidence->typeID() == todoID )
633 text += i18n("To-Do: "); 633 text += i18n("To-Do: ");
634 text += incidence->summary(); 634 text += incidence->summary();
635 if ( !incidence->location().isEmpty() ) 635 if ( !incidence->location().isEmpty() )
636 text +="\n(" + i18n("Location: ") + incidence->location()+ ")"; 636 text +="\n(" + i18n("Location: ") + incidence->location()+ ")";
637 if ( incidence->hasStartDate() ) 637 if ( incidence->hasStartDate() )
638 text +="\n"+ i18n("Start Date: ") + incidence->dtStartStr( false ); 638 text +="\n"+ i18n("Start Date: ") + incidence->dtStartStr( false );
639 text +="\n"+ i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false); 639 text +="\n"+ i18n("Last modified: ") +KGlobal::locale()->formatDateTime(incidence->lastModified(), false);
640 text += "\n" + i18n("Description: ") + "\n" + incidence->description(); 640 text += "\n" + i18n("Description: ") + "\n" + incidence->description();
641 ++icount; 641 ++icount;
642 642
643 } 643 }
644 } 644 }
645 incidence = delSel.next(); 645 incidence = delSel.next();
646 } 646 }
647 QFile file( fn ); 647 QFile file( fn );
648 if (!file.open( IO_WriteOnly ) ) { 648 if (!file.open( IO_WriteOnly ) ) {
649 topLevelWidget()->setCaption(i18n("File open error - nothing saved!") ); 649 topLevelWidget()->setCaption(i18n("File open error - nothing saved!") );
650 return; 650 return;
651 } 651 }
652 QTextStream ts( &file ); 652 QTextStream ts( &file );
653 ts << text; 653 ts << text;
654 file.close(); 654 file.close();
655 //qDebug("%s ", text.latin1()); 655 //qDebug("%s ", text.latin1());
656 mes = i18n("KO/Pi:Saved %1 descriptions/journals").arg(icount ); 656 mes = i18n("KO/Pi:Saved %1 descriptions/journals").arg(icount );
657 KOPrefs::instance()->mLastSaveFile = fn; 657 KOPrefs::instance()->mLastSaveFile = fn;
658 topLevelWidget()->setCaption(mes); 658 topLevelWidget()->setCaption(mes);
659 } 659 }
660 } 660 }
661} 661}
662void KOListView::saveToFileVCS() 662void KOListView::saveToFileVCS()
663{ 663{
664 writeToFile( false ); 664 writeToFile( false );
665} 665}
666void KOListView::saveToFile() 666void KOListView::saveToFile()
667{ 667{
668 writeToFile( true ); 668 writeToFile( true );
669} 669}
670QPtrList<Incidence> KOListView::getSelectedIncidences( bool includeEvents, bool includeTodos, bool includeJournals, bool onlyDueTodos ) 670QPtrList<Incidence> KOListView::getSelectedIncidences( bool includeEvents, bool includeTodos, bool includeJournals, bool onlyDueTodos )
671{ 671{
672 QPtrList<Incidence> delSel ; 672 QPtrList<Incidence> delSel ;
673 bool addSubTodos = false; 673 bool addSubTodos = false;
674 bool askSubTodos = true; 674 bool askSubTodos = true;
675 QListViewItem *item = mListView->firstChild (); 675 QListViewItem *item = mListView->firstChild ();
676 while ( item ) { 676 while ( item ) {
677 if ( item->isSelected() ) { 677 if ( item->isSelected() ) {
678 Incidence* inc = ((KOListViewItem *)item)->data(); 678 Incidence* inc = ((KOListViewItem *)item)->data();
679 if ( ( addSubTodos && delSel.findRef( inc ) == -1) || !addSubTodos ) { 679 if ( ( addSubTodos && delSel.findRef( inc ) == -1) || !addSubTodos ) {
680 if ( (inc->typeID() == todoID && includeTodos) || 680 if ( (inc->typeID() == todoID && includeTodos) ||
681 (inc->typeID() == eventID && includeEvents) || 681 (inc->typeID() == eventID && includeEvents) ||
682 (inc->typeID() == journalID && includeJournals) ) { 682 (inc->typeID() == journalID && includeJournals) ) {
683 if ( inc->typeID() == todoID && onlyDueTodos ) { 683 if ( inc->typeID() == todoID && onlyDueTodos ) {
684 if ( ((Todo*)inc)->hasDueDate() ) 684 if ( ((Todo*)inc)->hasDueDate() )
685 delSel.append( inc ); 685 delSel.append( inc );
686 } else 686 } else
687 delSel.append( inc ); 687 delSel.append( inc );
688 688
689 } 689 }
690 } 690 }
691 if ( inc->typeID() == todoID ) { 691 if ( inc->typeID() == todoID ) {
692 Todo * todo = (Todo*) inc; 692 Todo * todo = (Todo*) inc;
693 if ( todo->relations().count() ) { 693 if ( todo->relations().count() ) {
694 if ( askSubTodos ) { 694 if ( askSubTodos ) {
695 int result = KMessageBox::warningYesNoCancel(this, 695 int result = KMessageBox::warningYesNoCancel(this,
696 i18n("One (or more) selected\ntodo has subtodos!\nDo you want to select\nall subtodos of all\nselected todos as well?"), 696 i18n("One (or more) selected\ntodo has subtodos!\nDo you want to select\nall subtodos of all\nselected todos as well?"),
697 i18n("Todo has subtodos"), 697 i18n("Todo has subtodos"),
698 i18n("Yes"), 698 i18n("Yes"),
699 i18n("No")); 699 i18n("No"));
700 if ( result == KMessageBox::Cancel ) { 700 if ( result == KMessageBox::Cancel ) {
701 delSel.clear(); 701 delSel.clear();
702 return delSel; 702 return delSel;
703 } 703 }
704 if (result == KMessageBox::Yes) 704 if (result == KMessageBox::Yes)
705 addSubTodos = true; 705 addSubTodos = true;
706 askSubTodos = false; 706 askSubTodos = false;
707 } 707 }
708 if ( addSubTodos ) { 708 if ( addSubTodos ) {
709 QPtrList<Incidence> tempSel ; 709 QPtrList<Incidence> tempSel ;
710 inc->addRelationsToList( &tempSel ); 710 inc->addRelationsToList( &tempSel );
711 Incidence* tempinc = tempSel.first(); 711 Incidence* tempinc = tempSel.first();
712 while ( tempinc ) { 712 while ( tempinc ) {
713 if ( delSel.findRef( tempinc ) == -1 ) { 713 if ( delSel.findRef( tempinc ) == -1 ) {
714 if ( tempinc->typeID() == todoID && onlyDueTodos ) { 714 if ( tempinc->typeID() == todoID && onlyDueTodos ) {
715 if ( ((Todo*)tempinc)->hasDueDate() ) 715 if ( ((Todo*)tempinc)->hasDueDate() )
716 delSel.append( tempinc ); 716 delSel.append( tempinc );
717 } else 717 } else
718 delSel.append( tempinc ); 718 delSel.append( tempinc );
719 } 719 }
720 tempinc = tempSel.next(); 720 tempinc = tempSel.next();
721 } 721 }
722 } 722 }
723 } 723 }
724 } 724 }
725 } 725 }
726 item = item->nextSibling(); 726 item = item->nextSibling();
727 } 727 }
728 return delSel; 728 return delSel;
729} 729}
730 730
731void KOListView::writeToFile( bool iCal ) 731void KOListView::writeToFile( bool iCal )
732{ 732{
733 QPtrList<Incidence> delSel = getSelectedIncidences(); // all inc allowed; 733 QPtrList<Incidence> delSel = getSelectedIncidences(); // all inc allowed;
734 if ( !iCal ) { 734 if ( !iCal ) {
735 bool journal = false; 735 bool journal = false;
736 Incidence *incidence = delSel.first(); 736 Incidence *incidence = delSel.first();
737 while ( incidence ) { 737 while ( incidence ) {
738 if ( incidence->typeID() == journalID ) { 738 if ( incidence->typeID() == journalID ) {
739 journal = true; 739 journal = true;
740 break; 740 break;
741 } 741 }
742 incidence = delSel.next(); 742 incidence = delSel.next();
743 } 743 }
744 if ( journal ) { 744 if ( journal ) {
745 int result = KMessageBox::warningContinueCancel(this, 745 int result = KMessageBox::warningContinueCancel(this,
746 i18n("The journal entries can not be\nexported to a vCalendar file."), 746 i18n("The journal entries can not be\nexported to a vCalendar file."),
747 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"), 747 i18n("Data Loss Warning"),i18n("Proceed"),i18n("Cancel"),
748 true); 748 true);
749 if (result != KMessageBox::Continue) return; 749 if (result != KMessageBox::Continue) return;
750 } 750 }
751 } 751 }
752 if ( delSel.count() ) { 752 if ( delSel.count() ) {
753 QString fn = KOPrefs::instance()->mLastSaveFile; 753 QString fn = KOPrefs::instance()->mLastSaveFile;
754 QString extension; 754 QString extension;
755 if ( iCal ) { 755 if ( iCal ) {
756 if ( fn.right( 4 ).lower() == ".vcs" ) { 756 if ( fn.right( 4 ).lower() == ".vcs" ) {
757 fn = fn.left( fn.length() -3) + "ics"; 757 fn = fn.left( fn.length() -3) + "ics";
758 } 758 }
759 } else { 759 } else {
760 if ( fn.right( 4 ).lower() == ".ics" ) { 760 if ( fn.right( 4 ).lower() == ".ics" ) {
761 fn = fn.left( fn.length() -3) + "vcs"; 761 fn = fn.left( fn.length() -3) + "vcs";
762 } 762 }
763 } 763 }
764 fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this ); 764 fn = KFileDialog::getSaveFileName( fn, i18n("Save filename"), this );
765 765
766 if ( fn == "" ) 766 if ( fn == "" )
767 return; 767 return;
768 QFileInfo info; 768 QFileInfo info;
769 info.setFile( fn ); 769 info.setFile( fn );
770 QString mes; 770 QString mes;
771 bool createbup = true; 771 bool createbup = true;
772 if ( info. exists() ) { 772 if ( info. exists() ) {
773 mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) ); 773 mes = i18n("File already exists!\nOld file from:\n%1\nOverwrite?\n").arg (KGlobal::locale()->formatDateTime(info.lastModified (), true, false ) );
774 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes, 774 int result = QMessageBox::warning( this, i18n("KO/Pi: Warning!"),mes,
775 i18n("Overwrite!"), i18n("Cancel"), 0, 775 i18n("Overwrite!"), i18n("Cancel"), 0,
776 0, 1 ); 776 0, 1 );
777 if ( result != 0 ) { 777 if ( result != 0 ) {
778 createbup = false; 778 createbup = false;
779 } 779 }
780 } 780 }
781 if ( createbup ) { 781 if ( createbup ) {
782 CalendarLocal cal; 782 CalendarLocal cal;
783 cal.setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId); 783 cal.setTimeZoneId(KPimGlobalPrefs::instance()->mTimeZoneId);
784 Incidence *incidence = delSel.first(); 784 Incidence *incidence = delSel.first();
785 while ( incidence ) { 785 while ( incidence ) {
786 cal.addIncidence( incidence->clone() ); 786 cal.addIncidence( incidence->clone() );
787 incidence = delSel.next(); 787 incidence = delSel.next();
788 } 788 }
789 if ( iCal ) { 789 if ( iCal ) {
790 ICalFormat format; 790 ICalFormat format;
791 format.save( &cal, fn ); 791 format.save( &cal, fn );
792 } else { 792 } else {
793 793
794 VCalFormat format; 794 VCalFormat format;
795 format.save( &cal, fn ); 795 format.save( &cal, fn );
796 } 796 }
797 mes = i18n("KO/Pi:Saved %1").arg(fn ); 797 mes = i18n("KO/Pi:Saved %1").arg(fn );
798 KOPrefs::instance()->mLastSaveFile = fn; 798 KOPrefs::instance()->mLastSaveFile = fn;
799 topLevelWidget()->setCaption(mes); 799 topLevelWidget()->setCaption(mes);
800 } 800 }
801 } 801 }
802 QTimer::singleShot( 1, this, SLOT ( resetFocus() ) ); 802 QTimer::singleShot( 1, this, SLOT ( resetFocus() ) );
803} 803}
804void KOListView::hideAll() 804void KOListView::hideAll()
805{ 805{
806 QPtrList<QListViewItem> delSel ; 806 QPtrList<QListViewItem> delSel ;
807 QListViewItem *item = mListView->firstChild (); 807 QListViewItem *item = mListView->firstChild ();
808 while ( item ) { 808 while ( item ) {
809 if ( item->isSelected() ) { 809 if ( item->isSelected() ) {
810 delSel.append(item); 810 delSel.append(item);
811 } 811 }
812 item = item->nextSibling(); 812 item = item->nextSibling();
813 } 813 }
814 item = delSel.first() ; 814 item = delSel.first() ;
815 while ( item ) { 815 while ( item ) {
816 QListViewItem * del = item; 816 QListViewItem * del = item;
817 item = delSel.next(); 817 item = delSel.next();
818 delete del; 818 delete del;
819 } 819 }
820} 820}
821void KOListView::printList() 821void KOListView::printList()
822{ 822{
823 mListView->printList(); 823 mListView->printList();
824} 824}
825void KOListView::deleteAll() 825void KOListView::deleteAll()
826{ 826{
827 QPtrList<Incidence> delSel = getSelectedIncidences(); // all inc allowed;; 827 QPtrList<Incidence> delSel = getSelectedIncidences(); // all inc allowed;;
828 if ( delSel.count() ) { 828 if ( delSel.count() ) {
829 int icount = delSel.count(); 829 int icount = delSel.count();
830 Incidence *incidence = delSel.first(); 830 Incidence *incidence = delSel.first();
831 Incidence *toDelete; 831 Incidence *toDelete;
832 KOPrefs *p = KOPrefs::instance(); 832 KOPrefs *p = KOPrefs::instance();
833 bool confirm = p->mConfirm; 833 bool confirm = p->mConfirm;
834 QString mess; 834 QString mess;
835 mess = mess.sprintf( i18n("You have %d item(s) selected.\n"), icount ); 835 mess = mess.sprintf( i18n("You have %d item(s) selected.\n"), icount );
836 if ( KMessageBox::Continue == KMessageBox::warningContinueCancel(this, mess + i18n("All selected items will be\npermanently deleted.\n(Deleting items will take\nsome time on a PDA)\n"), i18n("KO/Pi Confirmation"),i18n("Delete")) ) { 836 if ( KMessageBox::Continue == KMessageBox::warningContinueCancel(this, mess + i18n("All selected items will be\npermanently deleted.\n(Deleting items will take\nsome time on a PDA)\n"), i18n("KO/Pi Confirmation"),i18n("Delete")) ) {
837 p->mConfirm = false; 837 p->mConfirm = false;
838 int delCounter = 0; 838 int delCounter = 0;
839 QDialog dia ( this, "p-dialog", true ); 839 QDialog dia ( this, "p-dialog", true );
840 QLabel lab (i18n("Close dialog to abort deletion!"), &dia ); 840 QLabel lab (i18n("Close dialog to abort deletion!"), &dia );
841 QVBoxLayout lay( &dia ); 841 QVBoxLayout lay( &dia );
842 lay.setMargin(7); 842 lay.setMargin(7);
843 lay.setSpacing(7); 843 lay.setSpacing(7);
844 lay.addWidget( &lab); 844 lay.addWidget( &lab);
845 QProgressBar bar( icount, &dia ); 845 QProgressBar bar( icount, &dia );
846 lay.addWidget( &bar); 846 lay.addWidget( &bar);
847 int w = 220; 847 int w = 220;
848 int h = 50; 848 int h = 50;
849 int dw = QApplication::desktop()->width(); 849 int dw = QApplication::desktop()->width();
850 int dh = QApplication::desktop()->height(); 850 int dh = QApplication::desktop()->height();
851 dia.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h ); 851 dia.setGeometry( (dw-w)/2, (dh - h )/2 ,w,h );
852 //dia.resize( 240,50 ); 852 //dia.resize( 240,50 );
853 dia.show(); 853 dia.show();
854 KOPrefs::instance()->mGlobalUpdateDisabled = true; 854 KOPrefs::instance()->mGlobalUpdateDisabled = true;
855 while ( incidence ) { 855 while ( incidence ) {
856 bar.setProgress( delCounter ); 856 bar.setProgress( delCounter );
857 mess = mess.sprintf( i18n("Deleting item %d ..."), ++delCounter ); 857 mess = mess.sprintf( i18n("Deleting item %d ..."), ++delCounter );
858 dia.setCaption( mess ); 858 dia.setCaption( mess );
859 qApp->processEvents(); 859 qApp->processEvents();
860 toDelete = (incidence); 860 toDelete = (incidence);
861 incidence = delSel.next(); 861 incidence = delSel.next();
862 emit deleteIncidenceSignal(toDelete ); 862 emit deleteIncidenceSignal(toDelete );
863 if ( dia.result() != 0 ) 863 if ( dia.result() != 0 )
864 break; 864 break;
865 865
866 } 866 }
867 KOPrefs::instance()->mGlobalUpdateDisabled = false; 867 KOPrefs::instance()->mGlobalUpdateDisabled = false;
868 emit deleteIncidenceSignal( 0 ); 868 emit deleteIncidenceSignal( 0 );
869 mess = mess.sprintf( i18n("%d items remaining in list."), count() ); 869 mess = mess.sprintf( i18n("%d items remaining in list."), count() );
870 topLevelWidget ()->setCaption( mess ); 870 topLevelWidget ()->setCaption( mess );
871 p->mConfirm = confirm; 871 p->mConfirm = confirm;
872 } 872 }
873 } 873 }
874 874
875 875
876} 876}
877int KOListView::maxDatesHint() 877int KOListView::maxDatesHint()
878{ 878{
879 return 0; 879 return 0;
880} 880}
881 881
882int KOListView::currentDateCount() 882int KOListView::currentDateCount()
883{ 883{
884 return 0; 884 return 0;
885} 885}
886 886
887QPtrList<Incidence> KOListView::selectedIncidences() 887QPtrList<Incidence> KOListView::selectedIncidences()
888{ 888{
889 QPtrList<Incidence> eventList; 889 QPtrList<Incidence> eventList;
890 QListViewItem *item = mListView->firstChild (); 890 QListViewItem *item = mListView->firstChild ();
891 while ( item ) { 891 while ( item ) {
892 if ( item->isSelected() ) { 892 if ( item->isSelected() ) {
893 eventList.append(((KOListViewItem *)item)->data()); 893 eventList.append(((KOListViewItem *)item)->data());
894 } 894 }
895 895
896 item = item->nextSibling(); 896 item = item->nextSibling();
897 } 897 }
898 898
899 // // QListViewItem *item = mListView->selectedItem(); 899 // // QListViewItem *item = mListView->selectedItem();
900 //if (item) eventList.append(((KOListViewItem *)item)->data()); 900 //if (item) eventList.append(((KOListViewItem *)item)->data());
901 901
902 return eventList; 902 return eventList;
903} 903}
904 904
905DateList KOListView::selectedDates() 905DateList KOListView::selectedDates()
906{ 906{
907 DateList eventList; 907 DateList eventList;
908 return eventList; 908 return eventList;
909} 909}
910 910
911void KOListView::showDates(bool show) 911void KOListView::showDates(bool show)
912{ 912{
913 // Shouldn't we set it to a value greater 0? When showDates is called with 913 // Shouldn't we set it to a value greater 0? When showDates is called with
914 // show == true at first, then the columnwidths are set to zero. 914 // show == true at first, then the columnwidths are set to zero.
915 static int oldColWidth1 = 0; 915 static int oldColWidth1 = 0;
916 static int oldColWidth3 = 0; 916 static int oldColWidth3 = 0;
917 917
918 if (!show) { 918 if (!show) {
919 oldColWidth1 = mListView->columnWidth(1); 919 oldColWidth1 = mListView->columnWidth(1);
920 oldColWidth3 = mListView->columnWidth(3); 920 oldColWidth3 = mListView->columnWidth(3);
921 mListView->setColumnWidth(1, 0); 921 mListView->setColumnWidth(1, 0);
922 mListView->setColumnWidth(3, 0); 922 mListView->setColumnWidth(3, 0);
923 } else { 923 } else {
924 mListView->setColumnWidth(1, oldColWidth1); 924 mListView->setColumnWidth(1, oldColWidth1);
925 mListView->setColumnWidth(3, oldColWidth3); 925 mListView->setColumnWidth(3, oldColWidth3);
926 } 926 }
927 mListView->repaint(); 927 mListView->repaint();
928} 928}
929 929
930void KOListView::printPreview(CalPrinter *calPrinter, const QDate &fd, 930void KOListView::printPreview(CalPrinter *calPrinter, const QDate &fd,
931 const QDate &td) 931 const QDate &td)
932{ 932{
933#ifndef KORG_NOPRINTER 933#ifndef KORG_NOPRINTER
934 calPrinter->preview(CalPrinter::Day, fd, td); 934 calPrinter->preview(CalPrinter::Day, fd, td);
935#endif 935#endif
936} 936}
937 937
938void KOListView::showDates() 938void KOListView::showDates()
939{ 939{
940 showDates(true); 940 showDates(true);
941} 941}
942 942
943void KOListView::hideDates() 943void KOListView::hideDates()
944{ 944{
945 showDates(false); 945 showDates(false);
946} 946}
947 947
948void KOListView::resetFocus() 948void KOListView::resetFocus()
949{ 949{
950 topLevelWidget()->setActiveWindow(); 950 topLevelWidget()->setActiveWindow();
951 topLevelWidget()->raise(); 951 topLevelWidget()->raise();
952 mListView->setFocus(); 952 mListView->setFocus();
953} 953}
954void KOListView::updateView() 954void KOListView::updateView()
955{ 955{
956 mListView->setFocus(); 956 mListView->setFocus();
957 if ( mListView->firstChild () ) { 957 if ( mListView->firstChild () ) {
958 mListView->setCurrentItem( mListView->firstChild () ); 958 mListView->setCurrentItem( mListView->firstChild () );
959 } 959 }
960 processSelectionChange( mListView->firstChild () ); 960 processSelectionChange( mListView->firstChild () );
961} 961}
962void KOListView::updateConfig() 962void KOListView::updateConfig()
963{ 963{
964 964
965 mListView->setFont ( KOPrefs::instance()->mListViewFont ); 965 mListView->setFont ( KOPrefs::instance()->mListViewFont );
966 updateView(); 966 updateView();
967 967
968} 968}
969void KOListView::setStartDate(const QDate &start) 969void KOListView::setStartDate(const QDate &start)
970{ 970{
971 mStartDate = start; 971 mStartDate = start;
972} 972}
973 973
974void KOListView::showDates(const QDate &start, const QDate &end) 974void KOListView::showDates(const QDate &start, const QDate &end)
975{ 975{
976 clear(); 976 clear();
977 mStartDate = start; 977 mStartDate = start;
978 QDate date = start; 978 QDate date = start;
979 while( date <= end ) { 979 while( date <= end ) {
980 addEvents(calendar()->events(date)); 980 addEvents(calendar()->events(date));
981 addTodos(calendar()->todos(date)); 981 addTodos(calendar()->todos(date));
982 addJournals( calendar()->journals4Date(date) ); 982 addJournals( calendar()->journals4Date(date) );
983 date = date.addDays( 1 ); 983 date = date.addDays( 1 );
984 } 984 }
985 //emit incidenceSelected( 0 ); 985 //emit incidenceSelected( 0 );
986 updateView(); 986 updateView();
987 987
988} 988}
989 989
990void KOListView::addEvents(QPtrList<Event> eventList) 990void KOListView::addEvents(QPtrList<Event> eventList)
991{ 991{
992 992
993 Event *ev; 993 Event *ev;
994 for(ev = eventList.first(); ev; ev = eventList.next()) { 994 for(ev = eventList.first(); ev; ev = eventList.next()) {
995 addIncidence(ev); 995 addIncidence(ev);
996 } 996 }
997 if ( !mListView->currentItem() ){ 997 if ( !mListView->currentItem() ){
998 updateView(); 998 updateView();
999 } 999 }
1000} 1000}
1001 1001
1002void KOListView::addTodos(QPtrList<Todo> eventList) 1002void KOListView::addTodos(QPtrList<Todo> eventList)
1003{ 1003{
1004 Todo *ev; 1004 Todo *ev;
1005 for(ev = eventList.first(); ev; ev = eventList.next()) { 1005 for(ev = eventList.first(); ev; ev = eventList.next()) {
1006 addIncidence(ev); 1006 addIncidence(ev);
1007 } 1007 }
1008 if ( !mListView->currentItem() ){ 1008 if ( !mListView->currentItem() ){
1009 updateView(); 1009 updateView();
1010 } 1010 }
1011} 1011}
1012void KOListView::addJournals(QPtrList<Journal> eventList) 1012void KOListView::addJournals(QPtrList<Journal> eventList)
1013{ 1013{
1014 Journal *ev; 1014 Journal *ev;
1015 for(ev = eventList.first(); ev; ev = eventList.next()) { 1015 for(ev = eventList.first(); ev; ev = eventList.next()) {
1016 addIncidence(ev); 1016 addIncidence(ev);
1017 } 1017 }
1018 if ( !mListView->currentItem() ){ 1018 if ( !mListView->currentItem() ){
1019 updateView(); 1019 updateView();
1020 } 1020 }
1021} 1021}
1022 1022
1023void KOListView::showCompletedTodos() 1023void KOListView::showCompletedTodos()
1024{ 1024{
1025 mForceShowCompletedTodos = true; 1025 mForceShowCompletedTodos = true;
1026} 1026}
1027void KOListView::addIncidence(Incidence *incidence) 1027void KOListView::addIncidence(Incidence *incidence)
1028{ 1028{
1029 if ( mUidDict.find( incidence->uid() ) ) return; 1029 if ( mUidDict.find( incidence->uid() ) ) return;
1030 1030
1031 // mListView->setFont ( KOPrefs::instance()->mListViewFont ); 1031 // mListView->setFont ( KOPrefs::instance()->mListViewFont );
1032 if ( incidence->typeID() == todoID ) { 1032 if ( incidence->typeID() == todoID ) {
1033 if ( ! mForceShowCompletedTodos ) { 1033 if ( ! mForceShowCompletedTodos ) {
1034 if ( !KOPrefs::instance()->mShowCompletedTodo && ((Todo*)incidence)->isCompleted() ) 1034 if ( !KOPrefs::instance()->mShowCompletedTodo && ((Todo*)incidence)->isCompleted() )
1035 return; 1035 return;
1036 } 1036 }
1037 } 1037 }
1038 mUidDict.insert( incidence->uid(), incidence ); 1038 mUidDict.insert( incidence->uid(), incidence );
1039 KOListViewItem *item = new KOListViewItem( incidence, mListView ); 1039 KOListViewItem *item = new KOListViewItem( incidence, mListView );
1040 ListItemVisitor v(item, mStartDate ); 1040 ListItemVisitor v(item, mStartDate );
1041 if (incidence->accept(v)) { 1041 if (incidence->accept(v)) {
1042 return; 1042 return;
1043 } 1043 }
1044 else delete item; 1044 else delete item;
1045} 1045}
1046 1046
1047void KOListView::showEvents(QPtrList<Event> eventList) 1047void KOListView::showEvents(QPtrList<Event> eventList)
1048{ 1048{
1049 clear(); 1049 clear();
1050 1050
1051 addEvents(eventList); 1051 addEvents(eventList);
1052 1052
1053 // After new creation of list view no events are selected. 1053 // After new creation of list view no events are selected.
1054 emit incidenceSelected( 0 ); 1054 emit incidenceSelected( 0 );
1055} 1055}
1056int KOListView::count() 1056int KOListView::count()
1057{ 1057{
1058 return mListView->childCount(); 1058 return mListView->childCount();
1059} 1059}
1060 1060
1061void KOListView::changeEventDisplay(Event *event, int action) 1061void KOListView::changeEventDisplay(Event *event, int action)
1062{ 1062{
1063 KOListViewItem *item; 1063 KOListViewItem *item;
1064 1064
1065 switch(action) { 1065 switch(action) {
1066 case KOGlobals::EVENTADDED: 1066 case KOGlobals::EVENTADDED:
1067 addIncidence( event ); 1067 addIncidence( event );
1068 break; 1068 break;
1069 case KOGlobals::EVENTEDITED: 1069 case KOGlobals::EVENTEDITED:
1070 item = getItemForEvent(event); 1070 item = getItemForEvent(event);
1071 if (item) { 1071 if (item) {
1072 ListItemVisitor v(item, mStartDate ); 1072 ListItemVisitor v(item, mStartDate );
1073 ((Incidence*)event)->accept(v); 1073 ((Incidence*)event)->accept(v);
1074 } 1074 }
1075 break; 1075 break;
1076 case KOGlobals::EVENTDELETED: 1076 case KOGlobals::EVENTDELETED:
1077 item = getItemForEvent(event); 1077 item = getItemForEvent(event);
1078 if (item) { 1078 if (item) {
1079 mUidDict.remove( event->uid() ); 1079 mUidDict.remove( event->uid() );
1080 delete item; 1080 delete item;
1081 } 1081 }
1082 break; 1082 break;
1083 default: 1083 default:
1084 ; 1084 ;
1085 } 1085 }
1086} 1086}
1087 1087
1088KOListViewItem *KOListView::getItemForEvent(Incidence *event) 1088KOListViewItem *KOListView::getItemForEvent(Incidence *event)
1089{ 1089{
1090 KOListViewItem *item = (KOListViewItem *)mListView->firstChild(); 1090 KOListViewItem *item = (KOListViewItem *)mListView->firstChild();
1091 while (item) { 1091 while (item) {
1092 if (item->data() == event) return item; 1092 if (item->data() == event) return item;
1093 item = (KOListViewItem *)item->nextSibling(); 1093 item = (KOListViewItem *)item->nextSibling();
1094 } 1094 }
1095 return 0; 1095 return 0;
1096} 1096}
1097 1097
1098void KOListView::defaultItemAction(QListViewItem *i) 1098void KOListView::defaultItemAction(QListViewItem *i)
1099{ 1099{
1100 KOListViewItem *item = static_cast<KOListViewItem *>( i ); 1100 KOListViewItem *item = static_cast<KOListViewItem *>( i );
1101 if ( item ) defaultAction( item->data() ); 1101 if ( item ) defaultAction( item->data() );
1102 1102
1103} 1103}
1104 1104
1105void KOListView::popupMenu(QListViewItem *item,const QPoint &,int) 1105void KOListView::popupMenu(QListViewItem *item,const QPoint &,int)
1106{ 1106{
1107 mActiveItem = (KOListViewItem *)item; 1107 mActiveItem = (KOListViewItem *)item;
1108 if (mActiveItem) { 1108 if (mActiveItem) {
1109 Incidence *incidence = mActiveItem->data(); 1109 Incidence *incidence = mActiveItem->data();
1110 mPopupMenu->enableDefault( !mListView->hasMultiSelection( item ) ); 1110 mPopupMenu->enableDefault( !mListView->hasMultiSelection( item ) );
1111 mPopupMenu->showIncidencePopup(incidence); 1111 mPopupMenu->showIncidencePopup(incidence);
1112 1112
1113 /* 1113 /*
1114 if ( incidence && incidence->type() == "Event" ) { 1114 if ( incidence && incidence->type() == "Event" ) {
1115 Event *event = static_cast<Event *>( incidence ); 1115 Event *event = static_cast<Event *>( incidence );
1116 mPopupMenu->showEventPopup(event); 1116 mPopupMenu->showEventPopup(event);
1117 } 1117 }
1118 */ 1118 */
1119 } 1119 }
1120} 1120}
1121 1121
1122void KOListView::readSettings(KConfig *config, QString setting) 1122void KOListView::readSettings(KConfig *config, QString setting)
1123{ 1123{
1124 // qDebug("KOListView::readSettings "); 1124 // qDebug("KOListView::readSettings ");
1125 mListView->restoreLayout(config,setting); 1125 mListView->restoreLayout(config,setting);
1126} 1126}
1127 1127
1128void KOListView::writeSettings(KConfig *config, QString setting) 1128void KOListView::writeSettings(KConfig *config, QString setting)
1129{ 1129{
1130 // qDebug("KOListView::writeSettings "); 1130 // qDebug("KOListView::writeSettings ");
1131 mListView->saveLayout(config, setting); 1131 mListView->saveLayout(config, setting);
1132} 1132}
1133 1133
1134void KOListView::processSelectionChange(QListViewItem *) 1134void KOListView::processSelectionChange(QListViewItem *)
1135{ 1135{
1136 1136
1137 KOListViewItem *item = 1137 KOListViewItem *item =
1138 static_cast<KOListViewItem *>( mListView->currentItem() ); 1138 static_cast<KOListViewItem *>( mListView->currentItem() );
1139 1139
1140 if ( !item ) { 1140 if ( !item ) {
1141 emit incidenceSelected( 0 ); 1141 emit incidenceSelected( 0 );
1142 } else { 1142 } else {
1143 emit incidenceSelected( item->data() ); 1143 emit incidenceSelected( item->data() );
1144 } 1144 }
1145} 1145}
1146 1146
1147void KOListView::clearSelection() 1147void KOListView::clearSelection()
1148{ 1148{
1149 mListView->selectAll( false ); 1149 mListView->selectAll( false );
1150} 1150}
1151void KOListView::allSelection() 1151void KOListView::allSelection()
1152{ 1152{
1153 mListView->selectAll( true ); 1153 mListView->selectAll( true );
1154} 1154}
1155 1155
1156void KOListView::clear() 1156void KOListView::clear()
1157{ 1157{
1158 mListView->clear(); 1158 mListView->clear();
1159 mUidDict.clear(); 1159 mUidDict.clear();
1160} 1160}
1161 1161
1162Incidence* KOListView::currentItem() 1162Incidence* KOListView::currentItem()
1163{ 1163{
1164 if ( mListView->currentItem() ) 1164 if ( mListView->currentItem() )
1165 return ((KOListViewItem*) mListView->currentItem())->data(); 1165 return ((KOListViewItem*) mListView->currentItem())->data();
1166 return 0; 1166 return 0;
1167} 1167}
1168void KOListView::keyPressEvent ( QKeyEvent *e) 1168void KOListView::keyPressEvent ( QKeyEvent *e)
1169{ 1169{
1170 1170
1171 if ( e->key() == Qt::Key_Delete || e->key() == Qt::Key_Backspace ) { 1171 if ( e->key() == Qt::Key_Delete || e->key() == Qt::Key_Backspace ) {
1172 deleteAll(); 1172 deleteAll();
1173 return; 1173 return;
1174 } 1174 }
1175 1175
1176 e->ignore(); 1176 e->ignore();
1177} 1177}
1178void KOListViewListView::keyPressEvent ( QKeyEvent *e) 1178void KOListViewListView::keyPressEvent ( QKeyEvent *e)
1179{ 1179{
1180 1180
1181 switch ( e->key() ) { 1181 switch ( e->key() ) {
1182 case Qt::Key_Down: 1182 case Qt::Key_Down:
1183 if ( e->state() == ShiftButton ) { 1183 if ( e->state() == ShiftButton ) {
1184 QListViewItem* cn = currentItem(); 1184 QListViewItem* cn = currentItem();
1185 if ( !cn ) 1185 if ( !cn )
1186 cn = firstChild(); 1186 cn = firstChild();
1187 if ( !cn ) 1187 if ( !cn )
1188 return; 1188 return;
1189 while ( cn->nextSibling() ) 1189 while ( cn->nextSibling() )
1190 cn = cn->nextSibling(); 1190 cn = cn->nextSibling();
1191 setCurrentItem ( cn ); 1191 setCurrentItem ( cn );
1192 ensureItemVisible ( cn ); 1192 ensureItemVisible ( cn );
1193 1193
1194 e->accept(); 1194 e->accept();
1195 return; 1195 return;
1196 } 1196 }
1197 if ( e->state() == ControlButton ) { 1197 if ( e->state() == ControlButton ) {
1198 int count = childCount (); 1198 int count = childCount ();
1199 int jump = count / 5; 1199 int jump = count / 5;
1200 QListViewItem* cn; 1200 QListViewItem* cn;
1201 cn = currentItem(); 1201 cn = currentItem();
1202 if ( ! cn ) 1202 if ( ! cn )
1203 return; 1203 return;
1204 if ( jump == 0 ) 1204 if ( jump == 0 )
1205 jump = 1; 1205 jump = 1;
1206 while ( jump && cn->nextSibling() ) { 1206 while ( jump && cn->nextSibling() ) {
1207 cn = cn->nextSibling(); 1207 cn = cn->nextSibling();
1208 --jump; 1208 --jump;
1209 } 1209 }
1210 setCurrentItem ( cn ); 1210 setCurrentItem ( cn );
1211 ensureItemVisible ( cn ); 1211 ensureItemVisible ( cn );
1212 1212
1213 } else 1213 } else
1214 QListView::keyPressEvent ( e ) ; 1214 QListView::keyPressEvent ( e ) ;
1215 e->accept(); 1215 e->accept();
1216 break; 1216 break;
1217 1217
1218 case Qt::Key_Up: 1218 case Qt::Key_Up:
1219 if ( e->state() == ShiftButton ) { 1219 if ( e->state() == ShiftButton ) {
1220 QListViewItem* cn = firstChild(); 1220 QListViewItem* cn = firstChild();
1221 if ( cn ) { 1221 if ( cn ) {
1222 setCurrentItem ( cn ); 1222 setCurrentItem ( cn );
1223 ensureItemVisible ( cn ); 1223 ensureItemVisible ( cn );
1224 } 1224 }
1225 e->accept(); 1225 e->accept();
1226 return; 1226 return;
1227 } 1227 }
1228 if ( e->state() == ControlButton ) { 1228 if ( e->state() == ControlButton ) {
1229 int count = childCount (); 1229 int count = childCount ();
1230 int jump = count / 5; 1230 int jump = count / 5;
1231 QListViewItem* cn; 1231 QListViewItem* cn;
1232 cn = currentItem(); 1232 cn = currentItem();
1233 if ( ! cn ) 1233 if ( ! cn )
1234 return; 1234 return;
1235 if ( jump == 0 ) 1235 if ( jump == 0 )
1236 jump = 1; 1236 jump = 1;
1237 while ( jump && cn->itemAbove ()) { 1237 while ( jump && cn->itemAbove ()) {
1238 cn = cn->itemAbove (); 1238 cn = cn->itemAbove ();
1239 --jump; 1239 --jump;
1240 } 1240 }
1241 setCurrentItem ( cn ); 1241 setCurrentItem ( cn );
1242 ensureItemVisible ( cn ); 1242 ensureItemVisible ( cn );
1243 } else 1243 } else
1244 QListView::keyPressEvent ( e ) ; 1244 QListView::keyPressEvent ( e ) ;
1245 e->accept(); 1245 e->accept();
1246 break; 1246 break;
1247 case Qt::Key_I: { 1247 case Qt::Key_I: {
1248 QListViewItem* cn; 1248 QListViewItem* cn;
1249 cn = currentItem(); 1249 cn = currentItem();
1250 if ( cn ) { 1250 if ( cn ) {
1251 KOListViewItem* ci = (KOListViewItem*)( cn ); 1251 KOListViewItem* ci = (KOListViewItem*)( cn );
1252 if ( ci ){ 1252 if ( ci ){
1253 //emit showIncidence( ci->data()); 1253 //emit showIncidence( ci->data());
1254 cn = cn->nextSibling(); 1254 cn = cn->nextSibling();
1255 if ( cn ) { 1255 if ( cn ) {
1256 setCurrentItem ( cn ); 1256 setCurrentItem ( cn );
1257 ensureItemVisible ( cn ); 1257 ensureItemVisible ( cn );
1258 } 1258 }
1259 emit showIncidence( ci->data()); 1259 emit showIncidence( ci->data());
1260 } 1260 }
1261 } 1261 }
1262 e->accept(); 1262 e->accept();
1263 } 1263 }
1264 break; 1264 break;
1265 case Qt::Key_Return: 1265 case Qt::Key_Return:
1266 case Qt::Key_Enter: 1266 case Qt::Key_Enter:
1267 { 1267 {
1268 QListViewItem* cn; 1268 QListViewItem* cn;
1269 cn = currentItem(); 1269 cn = currentItem();
1270 if ( cn ) { 1270 if ( cn ) {
1271 KOListViewItem* ci = (KOListViewItem*)( cn ); 1271 KOListViewItem* ci = (KOListViewItem*)( cn );
1272 if ( ci ){ 1272 if ( ci ){
1273 if ( e->state() == ShiftButton ) 1273 if ( e->state() == ShiftButton )
1274 ci->setSelected( false ); 1274 ci->setSelected( false );
1275 else 1275 else
1276 ci->setSelected( true ); 1276 ci->setSelected( true );
1277 cn = cn->nextSibling(); 1277 cn = cn->nextSibling();
1278 if ( cn ) { 1278 if ( cn ) {
1279 setCurrentItem ( cn ); 1279 setCurrentItem ( cn );
1280 ensureItemVisible ( cn ); 1280 ensureItemVisible ( cn );
1281 } else { 1281 } else {
1282 emit currentChanged( ci ); 1282 emit currentChanged( ci );
1283 } 1283 }
1284 } 1284 }
1285 } 1285 }
1286 e->accept(); 1286 e->accept();
1287 } 1287 }
1288 break; 1288 break;
1289 default: 1289 default:
1290 e->ignore(); 1290 e->ignore();
1291 } 1291 }
1292} 1292}
1293KOListViewListView::KOListViewListView(KOListView * lv ) 1293KOListViewListView::KOListViewListView(KOListView * lv )
1294 : KListView( lv, "kolistlistview", false ) 1294 : KListView( lv, "kolistlistview", false )
1295{ 1295{
1296 mYMousePos = 0; 1296 mYMousePos = 0;
1297 setAllColumnsShowFocus( true ); 1297 setAllColumnsShowFocus( true );
1298 mPopupTimer = new QTimer(this); 1298 mPopupTimer = new QTimer(this);
1299 connect(mPopupTimer , SIGNAL(timeout()), this, SLOT(popupMenu())); 1299 connect(mPopupTimer , SIGNAL(timeout()), this, SLOT(popupMenu()));
1300#ifndef DESKTOP_VERSION 1300#ifndef DESKTOP_VERSION
1301 //QPEApplication::setStylusOperation(viewport(), QPEApplication::RightOnHold ); 1301 //QPEApplication::setStylusOperation(viewport(), QPEApplication::RightOnHold );
1302#endif 1302#endif
1303 setSelectionMode( QListView::Multi ); 1303 setSelectionMode( QListView::Multi );
1304 setMultiSelection( true); 1304 setMultiSelection( true);
1305} 1305}
1306bool KOListViewListView::hasMultiSelection(QListViewItem* item) 1306bool KOListViewListView::hasMultiSelection(QListViewItem* item)
1307{ 1307{
1308 QListViewItem *qitem = firstChild (); 1308 QListViewItem *qitem = firstChild ();
1309 while ( qitem ) { 1309 while ( qitem ) {
1310 if ( qitem->isSelected() && item != qitem ) 1310 if ( qitem->isSelected() && item != qitem )
1311 return true; 1311 return true;
1312 qitem = qitem->nextSibling(); 1312 qitem = qitem->nextSibling();
1313 } 1313 }
1314 return false; 1314 return false;
1315} 1315}
1316void KOListViewListView::contentsMouseDoubleClickEvent(QMouseEvent *e) 1316void KOListViewListView::contentsMouseDoubleClickEvent(QMouseEvent *e)
1317{ 1317{
1318 if (!e) return; 1318 if (!e) return;
1319 QPoint vp = contentsToViewport(e->pos()); 1319 QPoint vp = contentsToViewport(e->pos());
1320 QListViewItem *item = itemAt(vp); 1320 QListViewItem *item = itemAt(vp);
1321 if (!item) { 1321 if (!item) {
1322 emit newEvent(); 1322 emit newEvent();
1323 return; 1323 return;
1324 } 1324 }
1325 KListView::contentsMouseDoubleClickEvent(e); 1325 KListView::contentsMouseDoubleClickEvent(e);
1326} 1326}
1327#if 0 1327#if 0
1328void KOListViewListView::contentsMousePressEvent(QMouseEvent *e) 1328void KOListViewListView::contentsMousePressEvent(QMouseEvent *e)
1329{ 1329{
1330 //qDebug("contentsMousePressEvent++++ "); 1330 //qDebug("contentsMousePressEvent++++ ");
1331 KListView::contentsMousePressEvent( e ); 1331 KListView::contentsMousePressEvent( e );
1332 if ( e->button() == RightButton ) { 1332 if ( e->button() == RightButton ) {
1333 QListViewItem* ci = currentItem(); 1333 QListViewItem* ci = currentItem();
1334 clearSelection () ; 1334 clearSelection () ;
1335 if ( ci ) 1335 if ( ci )
1336 ci->setSelected( true ); 1336 ci->setSelected( true );
1337 } 1337 }
1338} 1338}
1339void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e) 1339void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e)
1340{ 1340{
1341 KListView::contentsMouseReleaseEvent(e); 1341 KListView::contentsMouseReleaseEvent(e);
1342} 1342}
1343void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e) 1343void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e)
1344{ 1344{
1345 KListView::contentsMouseMoveEvent(e); 1345 KListView::contentsMouseMoveEvent(e);
1346} 1346}
1347#endif 1347#endif
1348void KOListViewListView::popupMenu() 1348void KOListViewListView::popupMenu()
1349{ 1349{
1350 mPopupTimer->stop(); 1350 mPopupTimer->stop();
1351 QMouseEvent* e = new QMouseEvent( QEvent::MouseButtonPress, mEventPos ,mEventGlobalPos, RightButton , RightButton ); 1351 QMouseEvent* e = new QMouseEvent( QEvent::MouseButtonPress, mEventPos ,mEventGlobalPos, RightButton , RightButton );
1352 QApplication::postEvent( this->viewport(), e ); 1352 QApplication::postEvent( this->viewport(), e );
1353 1353
1354} 1354}
1355void KOListViewListView::contentsMousePressEvent(QMouseEvent *e) 1355void KOListViewListView::contentsMousePressEvent(QMouseEvent *e)
1356{ 1356{
1357 //qDebug("contentsMousePressEvent++++ %d %d", e->pos().y(), e->globalPos().y()); 1357 //qDebug("contentsMousePressEvent++++ %d %d", e->pos().y(), e->globalPos().y());
1358 mYMousePos = mapToGlobal( (e->pos())).y(); 1358 mYMousePos = mapToGlobal( (e->pos())).y();
1359 if ( e->button() == LeftButton ) { 1359 if ( e->button() == LeftButton ) {
1360 mPopupTimer->start( 600 ); 1360 mPopupTimer->start( 600 );
1361 mEventPos = contentsToViewport(e->pos()); 1361 mEventPos = contentsToViewport(e->pos());
1362 mEventGlobalPos = e->globalPos(); 1362 mEventGlobalPos = e->globalPos();
1363 } 1363 }
1364 KListView::contentsMousePressEvent( e ); 1364 KListView::contentsMousePressEvent( e );
1365 if ( e->button() == RightButton ) { 1365 if ( e->button() == RightButton ) {
1366 QListViewItem* ci = currentItem(); 1366 QListViewItem* ci = currentItem();
1367 //clearSelection(); 1367 //clearSelection();
1368 if ( ci ) 1368 if ( ci )
1369 ci->setSelected( true ); 1369 ci->setSelected( true );
1370 } 1370 }
1371} 1371}
1372void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e) 1372void KOListViewListView::contentsMouseReleaseEvent(QMouseEvent *e)
1373{ 1373{
1374 mPopupTimer->stop(); 1374 mPopupTimer->stop();
1375 KListView::contentsMouseReleaseEvent(e); 1375 KListView::contentsMouseReleaseEvent(e);
1376} 1376}
1377void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e) 1377void KOListViewListView::contentsMouseMoveEvent(QMouseEvent *e)
1378{ 1378{
1379 // qDebug("contentsMouseMoveEv....... "); 1379 // qDebug("contentsMouseMoveEv....... ");
1380 // qDebug("start: %d current %d ",mYMousePos , mapToGlobal( (e->pos())).y() ); 1380 // qDebug("start: %d current %d ",mYMousePos , mapToGlobal( (e->pos())).y() );
1381 int diff = mYMousePos - mapToGlobal( (e->pos())).y(); 1381 int diff = mYMousePos - mapToGlobal( (e->pos())).y();
1382 if ( diff < 0 ) diff = -diff; 1382 if ( diff < 0 ) diff = -diff;
1383 if ( diff > 15 ) 1383 if ( diff > 15 )
1384 mPopupTimer->stop(); 1384 mPopupTimer->stop();
1385 else { 1385 else {
1386 mEventPos = contentsToViewport(e->pos()); 1386 mEventPos = contentsToViewport(e->pos());
1387 mEventGlobalPos = e->globalPos(); 1387 mEventGlobalPos = e->globalPos();
1388 } 1388 }
1389 KListView::contentsMouseMoveEvent(e); 1389 KListView::contentsMouseMoveEvent(e);
1390} 1390}
1391 1391
1392#define protected public 1392#define protected public
1393#include <qheader.h> 1393#include <qheader.h>
1394#undef protected 1394#undef protected
1395void KOListViewListView::printList() 1395void KOListViewListView::printList()
1396{ 1396{
1397#ifdef DESKTOP_VERSION 1397#ifdef DESKTOP_VERSION
1398 KOPrintPrefs pp ( this ); 1398 KOPrintPrefs pp ( this );
1399 if (!pp.exec() ) 1399 if (!pp.exec() )
1400 return; 1400 return;
1401 int scaleval = pp.printMode() ; 1401 int scaleval = pp.printMode() ;
1402 1402
1403 QPrinter printer; 1403 QPrinter printer;
1404 if (!printer.setup() ) 1404 if (!printer.setup() )
1405 return; 1405 return;
1406 clearSelection (); 1406 clearSelection ();
1407 QPainter p; 1407 QPainter p;
1408 p.begin ( &printer ); 1408 p.begin ( &printer );
1409 p.setFont(font());
1409 QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer ); 1410 QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer );
1410 float dx, dy; 1411 float dx, dy;
1411 int wid = (m.width() * 9)/10; 1412 int wid = (m.width() * 9)/10;
1412 dx = (float) wid/(float)contentsWidth (); 1413 dx = (float) wid/(float)contentsWidth ();
1413 dy = (float)(m.height()) / (float)contentsHeight (); 1414 dy = (float)(m.height()) / (float)contentsHeight ();
1414 float scale; 1415 float scale;
1415 // scale to fit the width or height of the paper 1416 // scale to fit the width or height of the paper
1416 if ( dx < dy ) 1417 if ( dx < dy )
1417 scale = dx; 1418 scale = dx;
1418 else 1419 else
1419 scale = dy; 1420 scale = dy;
1420 1421
1421 p.translate( m.width()/10,m.width()/10 ); 1422 p.translate( m.width()/10,m.width()/10 );
1422 if ( scaleval == 2 || scaleval == 1 && scale < 1.0 ) { 1423 if ( scaleval == 2 || scaleval == 1 && scale < 1.0 ) {
1423 p.scale( scale, scale ); 1424 p.scale( scale, scale );
1424 } 1425 }
1425 1426
1426 int cou = header()->count(); 1427 int cou = header()->count();
1427 int iii; 1428 int iii;
1428 QRect rect ( 0,0,0, header()->height()); 1429 QRect rect ( 0,0,0, header()->height());
1429 for ( iii = 0; iii < cou; ++iii ) { 1430 for ( iii = 0; iii < cou; ++iii ) {
1430 rect.setLeft ( header()->sectionPos( iii ) ); 1431 rect.setLeft ( header()->sectionPos( iii ) );
1431 rect.setRight ( header()->sectionPos( iii ) + header()->sectionSize (iii)); 1432 rect.setRight ( header()->sectionPos( iii ) + header()->sectionSize (iii));
1432 header()->paintSection ( & p, header()->mapToIndex (iii), rect ); 1433 header()->paintSection ( & p, header()->mapToIndex (iii), rect );
1433 } 1434 }
1434 p.translate( 0, header()->height()); 1435 p.translate( 0, header()->height());
1435 drawContentsOffset ( &p, 0,0, 0,0, contentsWidth (), contentsHeight () ); 1436 //drawContentsOffset ( &p, 0,0, 0,0, contentsWidth (), contentsHeight () );
1437
1438 const QColorGroup &cg = colorGroup();
1439 KOListViewItem* item = (KOListViewItem* )firstChild();
1440 int yOff = 0;
1441 while ( item ) {
1442 p.translate( 0, yOff );
1443 p.save();
1444 for ( iii = 0; iii < cou; ++iii ) {
1445 int align = columnAlignment( iii );
1446 if ( align == AlignAuto ) align = AlignLeft;
1447 p.restore();
1448 p.save();
1449 p.translate( header()->sectionPos( iii ), 0);
1450 item->paintCell( &p, cg, iii, header()->sectionSize (iii), align );
1451 }
1452 yOff = item->height();
1453 item = (KOListViewItem* )(item->itemBelow());
1454 p.restore();
1455 }
1436 p.end(); 1456 p.end();
1437#endif 1457#endif
1438} 1458}